{"version":3,"sources":["componentes/display/display.jsx","componentes/botoes/botoes.jsx","componentes/calculadora/Calculadora.jsx","App.js","index.js"],"names":["Display","props","className","numero1","operador","numero2","resultado","onClick","e","console","log","target","value","calcula","Botoes","Calculadora","useState","numeroDisplay1","setNumeroDisplay1","numeroDisplay2","setNumeroDisplay2","operadorClicado","setOperadorClicado","setResultado","setOperador","operador2","setOperador2","primeiroClique","setPrimeiroClique","primeiroCalculo","setPrimeiroCalculo","calculo","setCalculo","limpaValores","num","calculaDnv","primeiroNum","segundoNum","isNaN","ultimoNumero","recebeOperador","custom_random","discrepency","Math","floor","random","result","num1","num2","parseFloat","fazOperacao","slice","recebeValores","App","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.53f55a3e.chunk.js","sourcesContent":["import React from 'react'\nimport './style.css'\n\nfunction Display(props){\n return (\n
\n

{props.numero1} {props.operador} {props.numero2}

\n

{props.resultado}

\n
\n )\n}\n\nexport default Display","import React from \"react\"\nimport './style.css'\n\nimport {\n IoBackspaceOutline, \n} from \"react-icons/io5\"\n\nconst onClick = (props) => (e) => {\n console.log(e.target.value)\n props.calcula(e.target.value)\n}\n\nfunction Botoes(props){\n\n return(\n
\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n
\n )\n}\n\nexport default Botoes","import React, { useState } from 'react'\nimport './style.css'\n\nimport Display from '../display/display'\nimport Botoes from '../botoes/botoes'\n\nfunction Calculadora() {\n //States para o Display\n const [numeroDisplay1, setNumeroDisplay1] = useState('')\n const [numeroDisplay2, setNumeroDisplay2] = useState('')\n const [operadorClicado, setOperadorClicado] = useState('')\n const [resultado, setResultado] = useState('')\n\n // States usados para verificar situações\n const [operador, setOperador] = useState(false)\n const [operador2, setOperador2] = useState(true)\n const [primeiroClique, setPrimeiroClique] = useState(false)\n const [primeiroCalculo, setPrimeiroCalculo] = useState(false)\n\n // State que recebe o Primeiro valor, o operador, o segundo valor e faz a operação\n // 'ultimoNumero' é o resultado da ultima operação\n const [calculo, setCalculo] = useState({\n 'primeiroNum': '',\n 'operador': '',\n 'segundoNum': '',\n 'ultimoNumero': ''\n })\n\n // Função para receber os valores pra exibir no Display e guardar no state Calculo\n const recebeValores = (num) => {\n if (operador === false) {\n // Esse IF vai verificar se ja tiver um resultado na tela e clicar em um número, ele vai limpar e colocar o numero digitado\n if (primeiroCalculo) {\n limpaValores(num, true)\n setPrimeiroCalculo(false)\n } if (num === '.') {\n // Adicionando ponto para valor Float\n calculo.primeiroNum += num\n setNumeroDisplay1(numeroDisplay1 + num)\n calculo.ultimoNumero = ''\n } else if (num === 'backspace') {\n // Exclui o último valor da chave 'primeiroNum' do state calculo\n setCalculo({\n 'primeiroNum': calculo?.primeiroNum ? calculo.primeiroNum.slice(0, -1) : '',\n 'operador': '',\n 'segundoNum': ''\n })\n setNumeroDisplay1(numeroDisplay1)\n } else {\n // Adiciona o numero na tela/objeto\n calculo.primeiroNum += num\n setNumeroDisplay1(numeroDisplay1 + num)\n calculo.ultimoNumero = ''\n }\n } else {\n if (num === '.') {\n // Adicionando ponto para valor Float\n calculo.segundoNum += num\n setNumeroDisplay2(numeroDisplay2 + num)\n } else if (num === 'backspace') {\n // Exclui o último valor da chave 'segundoNum' do state calculo e mantem os outros\n setCalculo({\n 'primeiroNum': calculo.primeiroNum,\n 'operador': calculo.operador,\n 'segundoNum': calculo.segundoNum.slice(0, -1),\n })\n } else {\n // Adiciona o numero na tela/objeto\n calculo.segundoNum += num\n setNumeroDisplay2(numeroDisplay2 + num)\n }\n }\n }\n\n // Função para receber o operador clicado\n const recebeOperador = (num) => {\n calculo['operador'] = num\n setOperadorClicado(num)\n setOperador(true)\n setOperador2(false)\n\n // Verifica se ja houve o primeiro clique no '=', se tiver, ele vai adicionar o ultimo numero e a operação\n // para fazer outro cálculo.\n if (primeiroClique) {\n setCalculo({\n 'primeiroNum': calculo.ultimoNumero,\n 'operador': calculo.operador,\n 'segundoNum': '',\n })\n setNumeroDisplay1(calculo.ultimoNumero)\n setNumeroDisplay2('')\n }\n\n setPrimeiroClique(true)\n }\n\n // Função para fazer o calculo com os valores recebidos\n const fazOperacao = (num) => {\n const custom_random = (discrepency) => {\n // return 0\n return Math.floor(Math.random() * 2) === 0 ? discrepency : 0\n }\n // Objeto com as funções respectivas de cada tipo de operação\n const operacoes = {\n '+': (num1, num2) => (parseFloat(num1) + parseFloat(num2)),\n '-': (num1, num2) => (parseFloat(num1) - parseFloat(num2) + custom_random(3)),\n '/': (num1, num2) => (parseFloat(num1) / parseFloat(num2) + custom_random(4)),\n '%': (num1, num2) => (parseFloat(num1) % parseFloat(num2) + custom_random(5)),\n '*': (num1, num2) => (parseFloat(num1) * parseFloat(num2) + custom_random(6)),\n }\n\n // Jogando o resultado da operação na tela\n let result = operacoes[calculo['operador']](calculo.primeiroNum, calculo.segundoNum)\n calculo.ultimoNumero = result\n setResultado(result)\n\n // Ajustando os states de verificação\n setOperador2(true)\n setOperador(false)\n setPrimeiroCalculo(true)\n }\n\n // Função para limpar o display e valores do objeto, para a próxima operação\n const limpaValores = (num, calculaDnv) => {\n // Esse IF vai verificar se ja tiver um resultado na tela e clicar em um número, ele vai limpar e colocar o numero digitado\n if (calculaDnv) {\n setCalculo({\n 'primeiroNum': num,\n 'operador': calculo.operador,\n 'segundoNum': '',\n })\n\n setPrimeiroClique(false)\n setResultado('')\n setNumeroDisplay1('')\n setNumeroDisplay2('')\n setOperadorClicado('')\n } else {\n setCalculo({\n 'primeiroNum': '',\n 'operador': calculo.operador,\n 'segundoNum': '',\n })\n\n setPrimeiroClique(false)\n setResultado('')\n setNumeroDisplay1('')\n setNumeroDisplay2('')\n setOperadorClicado('')\n }\n }\n\n // Função para mostrar mensagem de erro\n const mostraError = () => {\n setResultado('Error')\n }\n\n // Função geral responsavel por suportar as outras funções e fazer as verificações necessárias para executar cada função de acordo com o clique do botão\n const calcula = (num) => {\n if (!isNaN(num) || num === '.' || num === 'backspace') {\n recebeValores(num)\n } else if ((num === '+' || num === '-' || num === '/' || num === '*' || num === '%') & operador2) {\n recebeOperador(num)\n } else if (num === 'C') {\n limpaValores()\n } else if (num === '=') {\n if (calculo.segundoNum !== '') {\n fazOperacao(num)\n } else {\n mostraError()\n }\n }\n }\n\n return (\n
\n \n \n
\n )\n}\n\nexport default Calculadora","import React from 'react'\nimport './App.css'\n\nimport Calculadora from './componentes/calculadora/Calculadora'\n\nfunction App(){\n return(\n
\n \n
\n )\n}\n\nexport default App","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n"],"sourceRoot":""}