{"version":3,"sources":["components/Header/Header.module.css","components/Spinner/Spinner.module.css","components/Header/Header.js","images/tireman_belletire.svg","components/Layout.js","components/Spinner/Spinner.js","components/MessagesContext.js","images/Blue_Admin.svg","components/EditDialog/EditDialog.js","images/send_arrow.svg","images/Blue_Arrow.svg","images/White_Arrow.svg","components/Home.js","App.js","serviceWorkerRegistration.js","reportWebVitals.js","index.js"],"names":["module","exports","Header","props","className","styles","header","titleBar","alt","navLogo","src","image","Layout","logo","Container","this","children","Component","displayName","name","Spinner","style","SpinnerIcon","MessagesContext","React","createContext","MessageProvider","useState","type","text","messages","setMessages","Provider","value","EditDialog","google","setGoogle","facebook","setFacebook","yelp","setYelp","isLoading","setIsLoading","canSubmit","setCanSubmit","useContext","handleUrlsUpdate","a","fetch","unitNum","method","headers","body","JSON","stringify","facebookUrl","googleUrl","yelpUrl","status","concat","onComplete","console","log","useEffect","isNew","response","json","data","error","onComponentLoad","htmlFor","id","onChange","event","target","onClick","adminIcon","Home","isUpdate","setIsUpdate","setIsNew","showEditDialog","setShowEditDialog","setUnitNum","showButtons","setShowButtons","showUnitNumInput","setShowUnitNumInput","showSendIcon","setShowSendIcon","showDropdown","setShowDropdown","newStores","setNewStores","showStores","setShowStores","selectedStore","setSelectedStore","reset","showNewStoreOptions","handleUnitNumSubmit","some","store","parseInt","fetchNewStores","onNewMessage","placeholder","onKeyPress","key","onFocus","sendArrow","whiteArrow","blueArrow","map","handleAddNewStore","updateNewStoreList","filteredStoreList","filter","App","exact","path","component","Boolean","window","location","hostname","match","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","navigator","serviceWorker","ready","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.6cc10b52.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"navLogo\":\"Header_navLogo__5eXK_\",\"titleBar\":\"Header_titleBar__38zhL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Spinner\":\"Spinner_Spinner__3Tybm\",\"SpinnerIcon\":\"Spinner_SpinnerIcon__2zQOK\",\"spin\":\"Spinner_spin__30V3C\"};","import styles from \"./Header.module.css\";\r\n\r\nconst Header = (props) => {\r\n return (\r\n
\r\n
\r\n
\r\n \"Belle\r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport default Header;\r\n","export default __webpack_public_path__ + \"static/media/tireman_belletire.29c8ab19.svg\";","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport Header from './Header/Header';\r\nimport logo from \"../images/tireman_belletire.svg\";\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render () {\r\n return (\r\n
\r\n
\r\n \r\n {this.props.children}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import style from './Spinner.module.css'\r\nconst Spinner = () => {\r\n return(\r\n
\r\n
\r\n
\r\n )\r\n}\r\nexport default Spinner;","import React, { useState } from \"react\";\r\n\r\nexport const MessagesContext = React.createContext(null);\r\n\r\nconst MessageProvider = ({ children }) => {\r\n const [messages, setMessages] = useState([\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `Hello! Welcome to the Social Reviews Admin Page!`,\r\n },\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: \"What would you like to do today?\",\r\n },\r\n ]);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default MessageProvider;\r\n","export default __webpack_public_path__ + \"static/media/Blue_Admin.17bda537.svg\";","import { useState, useEffect, useContext } from \"react\";\r\nimport Spinner from \"../Spinner/Spinner.js\";\r\nimport \"../EditDialog/EditDialog.css\";\r\nimport { MessagesContext } from \"../MessagesContext.js\";\r\nimport adminIcon from \"../../images/Blue_Admin.svg\"\r\n\r\nconst EditDialog = (props) => {\r\n const [google, setGoogle] = useState();\r\n const [facebook, setFacebook] = useState();\r\n const [yelp, setYelp] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [canSubmit, setCanSubmit] = useState(false);\r\n\r\n const { messages, setMessages } = useContext(MessagesContext);\r\n\r\n const handleUrlsUpdate = async () => {\r\n //show spinner\r\n setIsLoading(true);\r\n try {\r\n const response = await fetch(`/stores/${props.unitNum}/urls`, {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n facebookUrl: facebook,\r\n googleUrl: google,\r\n yelpUrl: yelp,\r\n }),\r\n });\r\n if (response.status >= 400) {\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `Well, this is embarrassing! I am experiencing issues with updating store #${props.unitNum}! Please make sure all of the urls are less than 200 characters. If this issue persists, then contact K-TEAM.`,\r\n },\r\n ])\r\n );\r\n } else {\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `I updated store #${props.unitNum}! Anything else?`,\r\n },\r\n ])\r\n );\r\n props.onComplete(true);\r\n }\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n //show spinner\r\n setIsLoading(false);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n const handleCancel = () => {\r\n //push new message\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 0,\r\n image: adminIcon,\r\n text: `Never mind!`,\r\n },\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `Had a change of heart? What's next?`,\r\n },\r\n ])\r\n );\r\n //reset\r\n props.onComplete(false);\r\n };\r\n useEffect(() => {\r\n setCanSubmit(facebook && google && yelp);\r\n }, [facebook, google, yelp])\r\n useEffect(() => {\r\n const onComponentLoad = async () => {\r\n if (!props.isNew) {\r\n //show spinner\r\n setIsLoading(true);\r\n try {\r\n const response = await fetch(`/stores/${props.unitNum}/urls`);\r\n const data = await response.json();\r\n setGoogle(data.googleUrl);\r\n setFacebook(data.facebookUrl);\r\n setYelp(data.yelpUrl);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n //hide spinner\r\n setIsLoading(false);\r\n }\r\n };\r\n onComponentLoad();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n return (\r\n
\r\n {isLoading && }\r\n {!isLoading && (\r\n
\r\n
\r\n \r\n setGoogle(event.target.value)}\r\n >\r\n
\r\n
\r\n \r\n setFacebook(event.target.value)}\r\n >\r\n
\r\n
\r\n \r\n setYelp(event.target.value)}\r\n >\r\n
\r\n
\r\n \r\n Submit\r\n \r\n \r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};\r\nexport default EditDialog;\r\n","export default __webpack_public_path__ + \"static/media/send_arrow.f764596b.svg\";","export default __webpack_public_path__ + \"static/media/Blue_Arrow.e9871e57.svg\";","export default __webpack_public_path__ + \"static/media/White_Arrow.d1012291.svg\";","import ChatBubble from \"react-chat-bubble\";\r\nimport { useState, useContext, useEffect } from \"react\";\r\nimport EditDialog from \"./EditDialog/EditDialog\";\r\nimport { MessagesContext } from \"./MessagesContext\";\r\nimport sendArrow from \"../images/send_arrow.svg\";\r\nimport adminIcon from \"../images/Blue_Admin.svg\";\r\nimport blueArrow from \"../images/Blue_Arrow.svg\";\r\nimport whiteArrow from \"../images/White_Arrow.svg\";\r\nimport \"./Home.css\";\r\n\r\nconst Home = () => {\r\n const [isUpdate, setIsUpdate] = useState(false);\r\n const [isNew, setIsNew] = useState(false);\r\n const [showEditDialog, setShowEditDialog] = useState(false);\r\n const [unitNum, setUnitNum] = useState();\r\n const [showButtons, setShowButtons] = useState(true);\r\n const [showUnitNumInput, setShowUnitNumInput] = useState(true);\r\n const { messages, setMessages } = useContext(MessagesContext);\r\n const [showSendIcon, setShowSendIcon] = useState(false);\r\n const [showDropdown, setShowDropdown] = useState(false);\r\n const [newStores, setNewStores] = useState([]);\r\n const [showStores, setShowStores] = useState(false);\r\n const [selectedStore, setSelectedStore] = useState();\r\n\r\n const handleKeyPress = (event) => {\r\n if (event.key === \"Enter\") {\r\n //show Edit dialog\r\n handleUnitNumSubmit();\r\n }\r\n };\r\n const showUpdateDialog = () => {\r\n setIsUpdate(true);\r\n setShowUnitNumInput(true);\r\n setShowButtons(false);\r\n setShowDropdown(false);\r\n setShowStores(false);\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 0,\r\n image: adminIcon,\r\n text: `I want to update a store's urls`,\r\n },\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `Okay! Please enter the unit num.`,\r\n },\r\n ])\r\n );\r\n };\r\n const reset = () => {\r\n setShowButtons(true);\r\n setIsUpdate(false);\r\n setIsNew(false);\r\n setShowUnitNumInput(false);\r\n setShowEditDialog(false);\r\n };\r\n const resetFromAdd = (updateNewStoreList) => {\r\n reset();\r\n //reset the select store so the dropdown can reset\r\n setSelectedStore();\r\n //remove updated store from \"Stores with no urls\" array\r\n if (updateNewStoreList){\r\n var filteredStoreList = newStores.filter(\r\n (store) => store.unitNum !== parseInt(unitNum)\r\n );\r\n setNewStores(filteredStoreList);\r\n }\r\n };\r\n const showNewStoreOptions = async () => {\r\n setIsNew(true);\r\n setShowDropdown(true);\r\n setShowButtons(false);\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 0,\r\n image: adminIcon,\r\n text: `I want to add new urls`,\r\n },\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `For which store? Check out your options below!`,\r\n },\r\n ])\r\n );\r\n };\r\n const handleAddNewStore = (unitNum, name) => {\r\n setSelectedStore(`#${unitNum} - ${name}`);\r\n setUnitNum(unitNum);\r\n setShowEditDialog(true);\r\n setShowDropdown(false);\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 0,\r\n image: adminIcon,\r\n text: `For store # ${unitNum}`,\r\n },\r\n ])\r\n );\r\n };\r\n const handleUnitNumChange = (value) => {\r\n setUnitNum(value);\r\n value ? setShowSendIcon(true) : setShowSendIcon(false);\r\n };\r\n const handleUnitNumSubmit = () => {\r\n setShowEditDialog(true);\r\n setShowUnitNumInput(false);\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 0,\r\n image: adminIcon,\r\n text: `Let's update store #${unitNum}`,\r\n },\r\n ])\r\n );\r\n //check to see if unitNum is in the new store list\r\n const found = newStores.some(\r\n (store) => store.unitNum === parseInt(unitNum)\r\n );\r\n\r\n //if so, set isUpdate to false ++ isNew to true ++\r\n //show a new message\r\n if (found) {\r\n setIsUpdate(false);\r\n setIsNew(true);\r\n setMessages(\r\n messages.concat([\r\n {\r\n type: 1,\r\n image: \"favicon.ico\",\r\n text: `It looks like store #${unitNum} is new! You can add its information below`,\r\n },\r\n ])\r\n );\r\n }\r\n };\r\n const handleDropdown = () => {\r\n let toggledValue = !showStores;\r\n setShowStores(toggledValue);\r\n };\r\n useEffect(() => {\r\n const fetchNewStores = async () => {\r\n const response = await fetch(\"stores/no-urls\");\r\n const data = await response.json();\r\n setNewStores(data);\r\n };\r\n fetchNewStores();\r\n }, []);\r\n return (\r\n
\r\n console.log(\"I'm here so I won't get fined\")}\r\n />\r\n {showButtons && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n {isUpdate && showUnitNumInput && (\r\n
\r\n handleUnitNumChange(event.target.value)}\r\n onFocus={() => setShowButtons(false)}\r\n >\r\n {showSendIcon && (\r\n \r\n )}\r\n \r\n
\r\n )}\r\n {isUpdate && showEditDialog && (\r\n \r\n )}\r\n {isNew && showDropdown && (\r\n
\r\n \r\n
{selectedStore ? selectedStore : `Select a store`}
\r\n \r\n
\r\n
\r\n {showStores && (\r\n
    \r\n {newStores.map((store) => (\r\n {\r\n handleAddNewStore(store.unitNum, store.name);\r\n }}\r\n >\r\n #{store.unitNum} - {store.name}\r\n \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n )}\r\n {isNew && showEditDialog && (\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\nexport default Home;\r\n","import { Route } from \"react-router\";\r\nimport { Layout } from \"./components/Layout\";\r\nimport Home from \"./components/Home\";\r\nimport \"./global.css\";\r\nimport MessageProvider from \"./components/MessagesContext\";\r\n\r\nconst App = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default App;\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 https://cra.link/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.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\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 https://cra.link/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 https://cra.link/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 headers: { 'Service-Worker': 'script' },\r\n })\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('No internet connection found. App is running in offline mode.');\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then((registration) => {\r\n registration.unregister();\r\n })\r\n .catch((error) => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","const reportWebVitals = (onPerfEntry) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://cra.link/PWA\r\nserviceWorkerRegistration.unregister();\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}