\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\n\r\n/**\r\n * @returns Componente com o botão de informações.\r\n * @description Classe responsável pela renderização e comportamentos do botão de informações, que abre uma modal com o texto enviado.\r\n */\r\nexport default class TituloResultado extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n modalVisivel: false\r\n }\r\n\r\n this.toggleModal = this.toggleModal.bind(this);\r\n }\r\n\r\n /**\r\n * @description Método que renderiza a Modal com o texto enviado pela props 'textoModal'. A Modal é renderizada apenas se o state 'modalVisivel' for true,\r\n * alterado pelo método toggleModal() chamado no onClick do Botao de Ajuda.\r\n */\r\n renderModal() {\r\n if (this.state.modalVisivel) {\r\n return (\r\n
\r\n );\r\n }\r\n}\r\n","\r\nvar diaAtual = new Date().getDate();\r\nvar mesAtual = new Date().getMonth();\r\nmesAtual++; // getMonth() retorna o mês atual entre 0 e 11. Com o incremento o valor fica entre 1 e 12.\r\nvar anoAtual = new Date().getFullYear();\r\n\r\n/** \r\n * @param {Object} data - Objeto do tipo 'date' que representa a data de nascimento.\r\n * @return {object} - objeto com os valores da idade em anos, meses e dias.\r\n * @description - cálculo da idade em anos, meses e dias.\r\n */\r\nexport default function CalculaIdade(data) {\r\n var diaNascimento = data.getDate();\r\n var mesNascimento = data.getMonth() + 1;\r\n var anoNascimento = data.getFullYear();\r\n\r\n var ultimoDiaMes = VerificaQuantidadeDiasMes(data); // Variável que armazena a quantidade de dias do mês atual.\r\n var anosIdade = anoAtual - anoNascimento;\r\n var mesesIdade = 0;\r\n var diasIdade = 0;\r\n var mesesCorridosAno = mesAtual - 1;\r\n\r\n // Condicional caso 1: antes do mês de aniversário.\r\n if(mesAtual < mesNascimento) {\r\n anosIdade--;\r\n // Caso 1.1: antes do dia do aniversário.\r\n if(diaAtual < diaNascimento) {\r\n mesesIdade = mesesCorridosAno + (12 - mesNascimento);\r\n diasIdade = (ultimoDiaMes - diaNascimento + diaAtual);\r\n // Caso 1.2: dia do aniversário (onde faltam meses exatos para o aniversário).\r\n } else if(diaAtual === diaNascimento) {\r\n mesesIdade = (12 - mesNascimento) + mesesCorridosAno + 1;\r\n diasIdade = 0;\r\n } else if(diaAtual > diaNascimento) {\r\n mesesIdade = mesesCorridosAno + (12 - mesNascimento) + 1;\r\n diasIdade = diaAtual - diaNascimento;\r\n } else {\r\n }\r\n\r\n // Caso 2: mês de aniversário.\r\n } else if(mesAtual === mesNascimento) {\r\n // Caso 2.1: antes do dia de aniversário.\r\n if(diaAtual < diaNascimento) {\r\n anosIdade--;\r\n mesesIdade = 11;\r\n diasIdade = (ultimoDiaMes - diaNascimento + diaAtual) + 1;\r\n // Caso 2.2: dia do aniversário ou superior, onde os dias de idade são diaAtual menos o diaNascimento ou zero (caso seja o data do aniversário).\r\n } else {\r\n mesesIdade = 0;\r\n diasIdade = diaAtual - diaNascimento;\r\n }\r\n\r\n // Caso 3: passado o mês de aniverário.\r\n } else if(mesAtual > mesNascimento) {\r\n // Caso 3.1: antes do dia do aniversário.\r\n if(diaAtual < diaNascimento) {\r\n mesesIdade = mesesCorridosAno - mesNascimento;\r\n diasIdade = (ultimoDiaMes - diaNascimento + diaAtual) + 1;\r\n // Caso 3.2: dia do aniversário.\r\n } else if(diaAtual === diaNascimento) {\r\n mesesIdade = mesesCorridosAno - mesNascimento + 1;\r\n diasIdade = diaAtual - diaNascimento;\r\n // Caso 3.3: passado o dia de aniversário.\r\n } else if(diaAtual > diaNascimento) {\r\n mesesIdade = mesesCorridosAno - mesNascimento + 1;\r\n diasIdade = diaAtual - diaNascimento;\r\n }\r\n } else {\r\n }\r\n\r\n if(anosIdade < 0 || isNaN(anosIdade))\r\n anosIdade = 0;\r\n\r\n var idadeAnosMesesDias = { anos: anosIdade, meses: mesesIdade, dias: diasIdade};\r\n return idadeAnosMesesDias;\r\n}\r\n\r\n/**\r\n * @param {Object} dataObjeto - objeto do tipo 'date'.\r\n * @return {number} - quantidade de dias que o mês da data recebida tem.\r\n * @description - função que retorna a quantidade de dias que o mês da data recebida tem.\r\n */\r\nfunction VerificaQuantidadeDiasMes(dataObjeto) {\r\n var data = new Date();\r\n \r\n data.setMonth(dataObjeto.getMonth() + 1);\r\n data.setDate(1);\r\n data.setDate(data.getDate() - 1);\r\n return(data.getDate());\r\n}\r\n","\r\nvar diaAtual = new Date().getDate();\r\nvar mesAtual = new Date().getMonth();\r\nmesAtual++; // getMonth() retorna o mês atual entre 0 e 11. Com o incremento o valor fica entre 1 e 12.\r\nvar anoAtual = new Date().getFullYear();\r\n\r\n/** \r\n * @param {Object} dataObjeto - objeto do tipo 'date' com a data a ser verificada.\r\n * @param {string} dataString - string com a mesma data a ser comparada.\r\n * @return {boolean} - data válida ou não.\r\n * @description verificar se a data de nascimento não ultrapassa a data atual e está dentro dos limites.\r\n */\r\nexport default function DataInvalida(dataObjeto, dataString) {\r\n var dia = dataObjeto.getDate();\r\n var mes = dataObjeto.getMonth() + 1;\r\n var ano = dataObjeto.getFullYear();\r\n \r\n if(dataString.length < 10)\r\n return true;\r\n\r\n var dataInvalida = VerificaLimitesData(dataObjeto, dataString);\r\n if(dataInvalida)\r\n return true;\r\n\r\n // Verifica se a data é superior à data atual.\r\n if(ano > anoAtual)\r\n return true;\r\n\r\n if(ano === anoAtual)\r\n {\r\n if(mes > mesAtual)\r\n return true;\r\n \r\n if(mes === mesAtual) {\r\n if(dia > diaAtual)\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\n/**\r\n * @param {Object} dataObjeto - objeto do tipo 'date' com a data a ser verificada.\r\n * @param {string} dataString - string com a mesma data a ser comparada.\r\n * @return {boolean} - data válida ou não\r\n * @description Verificar se a data recebida está com os dias, meses e anos dentro do limite.\r\n */\r\nfunction VerificaLimitesData(dataObjeto, dataString) {\r\n var dia = dataObjeto.getDate();\r\n var mes = dataObjeto.getMonth() + 1;\r\n var ano = dataObjeto.getFullYear();\r\n\r\n var diaReal = parseInt(dataString.substring(0, 2), 10);\r\n var mesReal = parseInt(dataString.substring(3, 5), 10);\r\n var anoReal = parseInt(dataString.substring(6), 10);\r\n\r\n // Verifica se os dias e meses estão dentro dos valores limites (1-30 e 1-12) comparando a data recebida como string (valor fixo) com a data como Objeto (que incrementa valores caso supere os limites).\r\n if(dia === diaReal && mes === mesReal && ano === anoReal) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { CampoTexto, Combo, Row, Col, Botao } from './componentes';\r\nimport { DataInvalida, CalculaIdade } from './utils';\r\nimport { SimuladorService } from '@intechprev/advanced-service';\r\n\r\nconst service = new SimuladorService();\r\n\r\nclass Informacoes extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\r\n this.listaCampos = [];\r\n this.erros = [];\r\n\r\n\t\tthis.state = this.props.state;\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tsetTimeout(() => this.calcularIdadeMinima(), 5000)\r\n\t}\r\n\r\n onVisible(state) {\r\n this.setState(state);\r\n }\r\n\r\n limparErros = async () => {\r\n this.erros = [];\r\n await this.setState({ erros: this.erros });\r\n }\r\n\r\n adicionarErro = async (mensagem) => {\r\n this.erros.push(mensagem);\r\n await this.setState({ erros: this.erros });\r\n }\r\n\r\n\tcontinuar = async () => { \r\n\t\ttry {\r\n\t\t\tif(this.state.percentualSaque === '')\r\n\t\t\t\tawait this.setState({ percentualSaque: 0 });\r\n\t\r\n\t\t\tawait this.limparErros();\r\n\t\t\tfor(var i = 0; i < this.listaCampos.length; i++) {\r\n var campo = this.listaCampos[i];\r\n\t\r\n\t\t\t\tawait campo.validar();\r\n\t\r\n\t\t\t\tif(campo.possuiErros)\r\n\t\t\t\t\tawait this.adicionarErro(campo.erros);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.state.nascimentoConjuge.length <= 0)\r\n\t\t\t\tawait this.setState({ erroNascimentoConjuge: false });\t\r\n\t\r\n\t\t\tif(this.state.nascimentoFilhoInvalido.length <= 0)\r\n\t\t\t\tawait this.setState({ erroNascimentoFilhoInvalido: false });\t\r\n\t\r\n\t\t\tif(this.state.nascimentoFilhoMaisNovo.length <= 0)\r\n await this.setState({ erroNascimentoFilhoMaisNovo: false });\r\n \r\n if(this.state.possuiFilhoInvalido === \"N\") {\r\n await this.setState({ \r\n nascimentoFilhoInvalido: null, \r\n sexoFilhoInvalido: null\r\n });\r\n }\r\n \r\n if(this.state.possuiFilhos === \"N\") {\r\n await this.setState({ \r\n nascimentoFilhoMaisNovo: null, \r\n sexoFilhoMaisNovo: null\r\n });\r\n }\r\n\t\r\n\t\t\tvar errosData = this.state.erroDataNascimento || this.state.erroNascimentoConjuge || this.state.erroNascimentoFilhoInvalido \r\n\t\t\t\t\t\t|| this.state.erroNascimentoFilhoMaisNovo;\r\n\t\r\n\t\t\tvar contribBasica = this.converteStringFloat(this.state.remuneracaoInicial) * (this.state.percentualContribuicao / 100);\r\n\t\t\tvar contribFacultativa = this.converteStringFloat(this.state.contribuicaoFacultativa);\r\n var aporteInicial = this.state.aporte === \"\" ? 0 : this.converteStringFloat(this.state.aporte);\r\n\t\t\tvar taxaJuros = this.converteStringFloat(this.state.taxaJuros);\r\n \r\n var sexo = this.state.sexo === \"\" ? \"M\" : this.state.sexo;\r\n\r\n\t\t\tvar nascimentoConjuge = this.state.nascimentoConjuge === \"\" ? null : this.state.nascimentoConjuge;\r\n var nascimentoFilhoInvalido = this.state.nascimentoFilhoInvalido === \"\" ? null : this.state.nascimentoFilhoInvalido;\r\n var sexoFilhoInvalido = this.state.sexoFilhoInvalido === \"\" ? \"M\" : this.state.sexoFilhoInvalido;\r\n var nascimentoFilhoMaisNovo = this.state.nascimentoFilhoMaisNovo === \"\" ? null : this.state.nascimentoFilhoMaisNovo;\r\n var sexoFilhoMaisNovo = this.state.sexoFilhoMaisNovo === \"\" ? \"M\" : this.state.sexoFilhoMaisNovo;\r\n\r\n\t\t\tif(this.erros.length === 0 && !errosData) {\r\n\t\t\t\tvar { data: resultadoSimulacao } = await service.SimularNaoParticipante(contribBasica, contribFacultativa, aporteInicial,\r\n\t\t\t\t\tthis.state.idadeAposentadoria, this.state.percentualSaque, this.state.dataNascimento, sexo, nascimentoConjuge, \r\n\t\t\t\t\tnascimentoFilhoInvalido, sexoFilhoInvalido, nascimentoFilhoMaisNovo, sexoFilhoMaisNovo, taxaJuros);\r\n\t\r\n\t\t\t\tawait this.setState({\r\n\t\t\t\t\tvalorFuturo: resultadoSimulacao.valorFuturo,\r\n\t\t\t\t\tdataAposentadoria: resultadoSimulacao.dataAposentadoria,\r\n\t\t\t\t\tvalorSaque: resultadoSimulacao.valorSaque,\r\n\t\t\t\t\tidadeDependente: resultadoSimulacao.idadeDependente,\r\n\t\t\t\t\tfatorAtuarialPensaoMorte: resultadoSimulacao.fatorAtuarialPensaoMorte,\r\n\t\t\t\t\tfatorAtuarialSemPensaoMorte: resultadoSimulacao.fatorAtuarialSemPensaoMorte,\r\n\t\t\t\t\trendaPrazoIndeterminadoPensaoMorte: resultadoSimulacao.rendaPrazoIndeterminadoPensaoMorte,\r\n\t\t\t\t\trendaPrazoIndeterminadoSemPensaoMorte: resultadoSimulacao.rendaPrazoIndeterminadoSemPensaoMorte,\r\n\t\t\t\t\tlistaPrazos: resultadoSimulacao.listaPrazos,\r\n\t\t\t\t\tlistaSaldoPercentuais: resultadoSimulacao.listaSaldoPercentuais\r\n\t\t\t\t});\r\n\t\r\n\t\t\t\tawait this.formatarValorBrasileiro(resultadoSimulacao);\r\n\t\t\t\tthis.props.setPaginaAtiva(\"resultado\", this.state);\r\n\t\t\t}\r\n\t\t\t\t\r\n\t\t} catch(err) {\r\n\t\t\tif(err.response) {\r\n\t\t\t\tconsole.error(err.response.data)\r\n\t\t\t\tthis.adicionarErro(err.response.data);\r\n\t\t\t} else\r\n\t\t\t\tconsole.error(err);\r\n\t\t}\r\n\t}\r\n\r\n converteStringFloat = (valor) => {\r\n\t\tif(typeof(valor) !== 'string')\r\n\t\t\treturn valor;\r\n\r\n\t\tif(valor.match(/./))\r\n\t\t\tvalor = valor.replace(/\\./g, ''); // Troca todos os pontos por espaços vazios (pontos que separam os milhares).\r\n\t\t\t\r\n valor = valor.replace(',', '.'); // Troca a única vírgula por ponto.\r\n\t\tvalor = parseFloat(valor);\r\n return valor;\r\n\t}\r\n\r\n\tformatarValorBrasileiro = async (resultados) => {\r\n\t\tfor (const resultado in resultados) {\r\n\t\t\tif(typeof(resultados[resultado]) === \"number\") {\r\n\t\t\t\tresultados[resultado] = parseFloat(resultados[resultado]);\r\n\t\t\t\tresultados[resultado] = resultados[resultado].toFixed(2).split('.');\r\n\t\t\t\tresultados[resultado][0] = resultados[resultado][0].split(/(?=(?:...)*$)/).join('.'); // Regex utilizada para colocar um (.) a cada 3 casas decimais antes da vírgula, para separar os milhares.\r\n\t\t\t\tresultados[resultado] = resultados[resultado].join(',');\r\n\r\n\t\t\t} else if (typeof(resultados[resultado]) === \"object\") {\r\n\t\t\t\tfor (const valorPrazo in resultados[resultado]) {\r\n\t\t\t\t\tresultados[resultado][valorPrazo].Value= parseFloat(resultados[resultado][valorPrazo].Value);\r\n\t\t\t\t\tresultados[resultado][valorPrazo].Value= resultados[resultado][valorPrazo].Value.toFixed(2).split('.');\r\n\t\t\t\t\tresultados[resultado][valorPrazo].Value[0] = resultados[resultado][valorPrazo].Value[0].split(/(?=(?:...)*$)/).join('.'); // Regex utilizada para colocar um (.) a cada 3 casas decimais antes da vírgula, para separar os milhares.\r\n\t\t\t\t\tresultados[resultado][valorPrazo].Value= resultados[resultado][valorPrazo].Value.join(',');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tawait this.setState({ [resultado]: resultados[resultado] });\r\n\t\t}\r\n\t}\r\n\r\n\tonBlurCampoMonetario = async () => { \r\n\t}\r\n\r\n\tvalidarData = async (campoErro, valor) => {\r\n\t\tvar dataPartes = valor.split(\"/\");\r\n\t\tvar dataObjeto = new Date(dataPartes[2], dataPartes[1] - 1, dataPartes[0]);\r\n\t\t\r\n\t\tvar dataInvalida = DataInvalida(dataObjeto, valor);\r\n\t\tif(valor !== \"\")\r\n\t\t\tawait this.setState({ [campoErro]: dataInvalida })\r\n\r\n\t\tthis.calcularIdadeMinima();\r\n\t}\r\n\r\n\tcalcularIdadeMinima = () => {\r\n\t\tvar dataNascimento = new Date(this.converteData(this.state.dataNascimento));\r\n\t\tvar idade = CalculaIdade(dataNascimento).anos;\r\n\t\t\r\n\t\tif(idade < 48)\r\n\t\t\treturn 48;\r\n\t\telse if(idade >= 48 && idade <= 70)\r\n\t\t\treturn idade;\r\n\t\telse if(idade === isNaN(idade))\r\n\t\t\treturn 48;\r\n\t\telse if(idade > 70)\r\n\t\t\treturn 70;\r\n\t}\r\n\r\n\tconverteData = (dataString) => {\r\n var dataPartes = dataString.split(\"/\");\r\n return new Date(dataPartes[2], dataPartes[1] - 1, dataPartes[0]);\r\n\t}\r\n\t\r\n\trender() {\r\n\t\treturn (\r\n
\r\n\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
Para começar, precisamos de algumas informações sobre você e sua contribuição para o plano CEBPREV!
\r\n\t\t\t\t\t\t \r\n\r\n\t\t\t\t\t\t this.listaCampos[0] = input } tipo=\"text\" nome=\"nome\" \r\n\t\t\t\t\t\t\t\t\tvalor={this.state.nome} label={\"Digite seu nome\"} max=\"50\" obrigatorio />\r\n\r\n\t\t\t\t\t\t this.listaCampos[1] = input } tipo=\"data\" nome=\"dataNascimento\" \r\n\t\t\t\t\t\t\t\t\tvalor={this.state.dataNascimento} label={\"Digite sua data de nascimento\"} mascara={\"99/99/9999\"} obrigatorio \r\n\t\t\t\t\t\t\t\t\tonBlur={() => this.validarData('erroDataNascimento', this.state.dataNascimento)} erro={this.state.erroDataNascimento} />\r\n \r\n \r\n\r\n\t\t\t\t\t\t this.listaCampos[2] = input } tipo=\"text\" nome=\"remuneracaoInicial\" className=\"money\"\r\n\t\t\t\t\t\t\t\t\tvalor={this.state.remuneracaoInicial} label={\"Digite seu salário bruto\"} max={10} obrigatorio onBlur={this.onBlurCampoMonetario} />\r\n\r\n\t\t\t\t\t\t this.listaCampos[3] = input } nome=\"percentualContribuicao\" valor={this.state.percentualContribuicao}\r\n\t\t\t\t\t\t\t label={\"Escolha o percentual de contribuição entre 5% e 10%\"} labelSecundaria={\"(a patrocinadora também contribuirá com o mesmo % para você!)\"} \r\n\t\t\t\t\t\t\t min={5} max={10} incremento={1} padrao={10} obrigatorio sufixo={\"%\"} />\r\n\r\n\t\t\t\t\t\t this.listaCampos[4] = input } tipo=\"text\" nome=\"contribuicaoFacultativa\" \r\n\t\t\t\t\t\t\t\t\tvalor={this.state.contribuicaoFacultativa} obrigatorio className=\"money\" max={10} onBlur={this.onBlurCampoMonetario}\r\n\t\t\t\t\t\t\t\t\tlabel={\"Deseja realizar contribuições facultativas?\"} labelSecundaria={\"(Contribuição exclusiva do participante)\"} />\r\n\r\n\t\t\t\t\t\t this.listaCampos[5] = input } tipo=\"text\" nome=\"aporte\" \r\n\t\t\t\t\t\t\t\t\tvalor={this.state.aporte} className=\"money\" max={10} label={\"Deseja realizar um aporte inicial?\"} />\r\n\r\n\t\t\t\t\t\t
Composição Familiar
\r\n\r\n\t\t\t\t\t\t this.listaCampos[6] = input } nome=\"nascimentoConjuge\" mascara={\"99/99/9999\"}\r\n\t\t\t\t\t\t\t\t\tvalor={this.state.nascimentoConjuge} tipo=\"data\" label={\"Data de nascimento do cônjuge ou companheiro\"} \r\n\t\t\t\t\t\t\t\t\tonBlur={() => this.validarData('erroNascimentoConjuge', this.state.nascimentoConjuge)} erro={this.state.erroNascimentoConjuge} />\r\n\r\n
\r\n \t);\r\n \t}\r\n}\r\n\r\nexport default MasterPage;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read http://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport MasterPage from './pages/MasterPage';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}