{"version":3,"sources":["components/imageLinkForm/imageLinkForm.js","components/FaceRecognition/FaceRecognition.js","components/Modal/modal.js","components/rank/rank.js","App.js","serviceWorker.js","index.js"],"names":["ImageLinkForm","props","onInputChange","onSubmit","closeModal","inputValue","react_default","a","createElement","id","className","value","onChange","type","placeholder","onClick","FaceRecognition","_ref","imageUrl","alt","src","width","heigh","Modal","modalState","title","age","components_FaceRecognition_FaceRecognition","map","event","index","key","name","Math","round","Rank","gender","concepts","Fragment","Modal_modal","displayData","app","Clarifai","App","apiKey","state","input","toggleModal","_this","setState","prev","target","models","predict","then","response","outputs","data","err","console","log","catch","imageLinkForm_imageLinkForm","this","rank","Component","Boolean","window","location","hostname","match","ReactDOM","render","src_App_0","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e0223381.chunk.js","sourcesContent":["import React from \"react\";\nimport \"./imageLinkForm.css\";\nimport * as PropTypes from \"prop-types\";\n\nconst ImageLinkForm = (props) => {\n let { onInputChange, onSubmit, closeModal, inputValue } = props;\n\n return (\n
\n
\n
\n
\n
\n
\n
\n \n \n \n
\n

\n AI FaceBot\n

\n
\n
\n
\n
\n

\n \n

\n

\n {\n onSubmit();\n closeModal();\n }}\n >\n \n \n \n Smack\n \n

\n
\n
\n
\n
\n\n
\n \n
\n
\n
\n );\n};\n\nImageLinkForm.propTypes = {\n onInputChange: PropTypes.any,\n onSubmit: PropTypes.any,\n closeModal: PropTypes.any,\n};\n\nexport default ImageLinkForm;\n","import React from 'react';\nimport './FaceRecognition.css';\n\nconst FaceRecognition = ({ imageUrl }) => {\n return (\n
\n\n\n {/*\"\"*/}\n \n\n\n\n\n
\n );\n}\n\nexport default FaceRecognition;","import React from \"react\";\nimport \"./modal.css\";\nimport FaceRecognition from \"../FaceRecognition/FaceRecognition\";\n\nconst Modal = ({ closeModal, modalState, title, age, imageUrl }) => {\n if (!modalState) {\n return null;\n }\n\n return (\n
\n
\n
\n
\n

{title}

\n
\n
\n
\n \n \n \n \n \n \n \n \n \n {age.map((event, index) => {\n return (\n \n \n \n \n );\n })}\n \n
\n {\" \"}\n Ethnicity{\" \"}\n \n \n \n Likelihood
{event.name}{Math.round(event.value * 100)}%
\n
\n
\n
\n \n
\n
\n
\n );\n};\n\nexport default Modal;\n","import React from \"react\";\nimport Modal from \"../Modal/modal\";\n\nconst displayData = (\n age,\n gender,\n type,\n closeModal,\n concepts,\n modalState,\n imageUrl\n) => {\n if (age) {\n return (\n
\n
\n \n {\" \"}\n \n
\n
\n );\n }\n};\n\nconst Rank = ({\n age,\n gender,\n type,\n concepts,\n closeModal,\n modalState,\n imageUrl,\n}) => {\n return (\n \n {displayData(\n age,\n gender,\n type,\n concepts,\n closeModal,\n modalState,\n imageUrl\n )}\n \n );\n};\n\nexport default Rank;\n","import React, { Component } from \"react\";\nimport \"./App.css\";\n//import Navigation from \"./components/navigation/navigation\";\nimport ImageLinkForm from \"./components/imageLinkForm/imageLinkForm\";\nimport Rank from \"./components/rank/rank\";\nimport Clarifai from \"clarifai\";\n//clarifai api key\nconst app = new Clarifai.App({\n apiKey: \"0a9858bc9d9844bf9585b670c2866098\",\n});\n\nclass App extends Component {\n state = {\n input: \"\",\n imageUrl: \"\",\n age: \"\",\n gender: \"\",\n type: \"\",\n concepts: \"\",\n modalState: false,\n };\n\n toggleModal = () => {\n this.setState((prev, props) => {\n const newState = !prev.modalState;\n\n return { modalState: newState };\n });\n };\n\n onInputChange = (event) => {\n this.setState({ input: event.target.value });\n };\n\n onSubmit = () => {\n this.setState({ imageUrl: this.state.input });\n app.models\n .predict(\"93c277ec3940fba661491fda4d3ccfa0\", this.state.input)\n .then(\n (response) => {\n // const api_data = response.outputs[0].data.regions[0].data.face;\n\n const concepts = response.outputs[0].data.concepts;\n\n \n\n this.setState({ age: concepts });\n\n // this.setState({ age: api_data.age_appearance.concepts[0].name });\n // this.setState({\n // gender: api_data.gender_appearance.concepts[0].name,\n // });\n // this.setState({\n // type: api_data.multicultural_appearance.concepts[0].name,\n // });\n },\n function (err) {\n console.log(\"Err\", err);\n // there was an error\n }\n )\n .then(() => {\n this.setState({ input: \"\" });\n })\n .catch((err) => {\n console.log(\"Err\", err);\n });\n };\n render() {\n return (\n
\n \n \n
\n );\n }\n}\n\nexport default App;\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.1/8 is 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 .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';\n// import './index.css';\nimport App from './App';\nimport 'bulma';\n// import 'tachyons';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\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":""}