{"version":3,"sources":["Error.js","Balance.js","Loading.js","App.js","serviceWorker.js","index.js"],"names":["Error","props","style","color","fontWeight","fontSize","className","children","Balance","padding","amount","Loading","StyledSpinner","styled","div","App","useState","card","setCard","balance","setBalance","error","setError","statusMsg","setStatusMsg","loading","setLoading","submit","e","a","async","preventDefault","url","fetch","then","resp","json","result","data","status","cardNumberError","StyledBalanceLookup","Paper","CardHeader","title","subheader","onSubmit","TextField","required","type","onChange","value","target","label","id","height","Button","variant","onClick","backgroundColor","marginTop","width","display","formData","FormData","append","method","mode","cache","credentials","redirect","referrerPolicy","body","Boolean","window","location","hostname","match","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.f23b48d9.chunk.js","sourcesContent":["import React from \"react\";\n\nconst Error = props => {\n return (\n \n Error: {props.children}\n \n );\n};\n\nexport default Error;\n","import React from \"react\";\n\nconst Balance = props => {\n return (\n \n Your Balance: ${props.amount}\n \n );\n};\n\nexport default Balance;\n","import React from \"react\";\nimport styled from \"styled-components\";\n\nconst Loading = () => {\n return (\n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Loading;\n\nconst StyledSpinner = styled.div`\n display: inline-block;\n position: relative;\n width: 40px;\n height: 20px;\n\n div {\n position: absolute;\n top: calc(20px - 8px);\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #333;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n }\n div:nth-child(1) {\n left: 4px;\n animation: lds-ellipsis1 0.6s infinite;\n }\n div:nth-child(2) {\n left: 6px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n div:nth-child(3) {\n left: 20px;\n animation: lds-ellipsis2 0.6s infinite;\n }\n div:nth-child(4) {\n left: 32px;\n animation: lds-ellipsis3 0.6s infinite;\n }\n @keyframes lds-ellipsis1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n }\n @keyframes lds-ellipsis3 {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0);\n }\n }\n @keyframes lds-ellipsis2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(12px, 0);\n }\n }\n`;\n\n// const StyledSpinner = styled.div`\n// display: inline-block;\n// position: relative;\n// width: 80px;\n// height: 80px;\n\n// div {\n// box-sizing: border-box;\n// display: block;\n// position: absolute;\n// width: 64px;\n// height: 64px;\n// margin: 8px;\n// border: 8px solid #fff;\n// border-radius: 50%;\n// animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n// border-color: #000 transparent transparent transparent;\n// }\n\n// div:nth-child(1) {\n// animation-delay: -0.45s;\n// }\n\n// div:nth-child(2) {\n// animation-delay: -0.3s;\n// }\n\n// div:nth-child(3) {\n// animation-delay: -0.15s;\n// }\n\n// @keyframes lds-ring {\n// 0% {\n// transform: rotate(0deg);\n// }\n// 100% {\n// transform: rotate(360deg);\n// }\n// }\n// `;\n","import React, { useState } from \"react\";\nimport styled from \"styled-components\";\nimport { Paper, TextField, Button, CardHeader } from \"@material-ui/core\";\nimport \"./App.css\";\nimport Error from \"./Error\";\nimport Balance from \"./Balance\";\nimport Loading from \"./Loading\";\n\nfunction App() {\n const [card, setCard] = useState(\"\");\n const [balance, setBalance] = useState(false);\n const [error, setError] = useState(false);\n const [statusMsg, setStatusMsg] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const updateTextField = e => {\n const value = e.target.value;\n setCard(value);\n };\n\n const submit = async e => {\n e.preventDefault();\n setStatusMsg(\"\");\n setError(false);\n setLoading(true);\n\n if (card === \"\") {\n setError(\"cardNumber\");\n setLoading(false);\n setStatusMsg(\"Card number is required\");\n return;\n }\n\n let url = \"https://www.firsttowndowntown.org/giftcards/index.php/balance\";\n if (card) {\n url = url + `/${card}`;\n }\n\n const result = await fetch(url).then(resp => resp.json());\n\n if (result.data.status === \"error\") {\n setError(\"cardNumber\");\n setStatusMsg(\"Invalid Card Number\");\n setLoading(false);\n return;\n }\n\n if (result.data.status === \"success\") {\n setBalance(result.data.balance);\n setLoading(false);\n }\n };\n\n const addFundsTen = async e => {\n let url = \"http://localhost:8000/action/add\";\n url = \"https://www.firsttowndowntown.org/giftcards/index.php/action/add\";\n\n let formData = new FormData();\n formData.append(\"amount\", \"10\");\n formData.append(\"account\", \"913418251599407\");\n\n const result = await fetch(url, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n redirect: \"follow\", // manual, *follow, error\n referrerPolicy: \"no-referrer\", // no-referrer, *client\n body: formData\n }).then(resp => resp.json());\n return result;\n };\n\n const addFundsTwentyFive = async e => {\n let url = \"http://localhost:8000/action/add\";\n url = \"https://www.firsttowndowntown.org/giftcards/index.php/action/add\";\n\n let formData = new FormData();\n formData.append(\"amount\", \"25\");\n formData.append(\"account\", \"913418251599407\");\n\n const result = await fetch(url, {\n method: \"POST\", // *GET, POST, PUT, DELETE, etc.\n mode: \"cors\", // no-cors, *cors, same-origin\n cache: \"no-cache\", // *default, no-cache, reload, force-cache, only-if-cached\n credentials: \"same-origin\", // include, *same-origin, omit\n redirect: \"follow\", // manual, *follow, error\n referrerPolicy: \"no-referrer\", // no-referrer, *client\n body: formData\n }).then(resp => resp.json());\n return result;\n };\n\n let cardNumberError = false;\n if (error === \"cardNumber\") {\n cardNumberError = true;\n }\n\n return (\n \n \n \n
\n \n {error === \"cardNumber\" && statusMsg && {statusMsg}}\n {error === false &&
}\n
\n \n {loading === true && }\n
\n \n {error === false && loading === false && balance && (\n \n )}\n
\n \n

Debug:

\n 913418251599407\n
\n \n     \n \n
\n \n
\n );\n}\n\nexport default App;\n\nconst StyledBalanceLookup = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n /* 92363B */\n padding-top: 40px;\n\n .MuiCardHeader-title {\n margin-bottom: 8px;\n }\n\n .MuiCardHeader-subheader {\n line-height: 1.1;\n font-size: 14px;\n }\n\n .lookup-container {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n padding: 20px;\n width: 350px;\n border-top: 10px solid #92363b;\n }\n\n form {\n display: flex;\n flex-direction: column;\n width: 100%;\n padding: 0 30px;\n box-sizing: border-box;\n }\n\n .submit {\n width: 150px;\n margin: 15px auto;\n margin-right: 20px;\n }\n`;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(, document.getElementById(\"balance-lookup\"));\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://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}