{"version":3,"sources":["App.js","reportWebVitals.js","index.js"],"names":["useState","React","API","TextPost","props","Card","style","width","Body","Title","title","Subtitle","className","user","marginBottom","text","ImagePost","Img","variant","src","img","PlaceholderPost","Placeholder","as","animation","xs","Text","readFileAsync","file","Promise","resolve","reject","reader","FileReader","onload","result","split","onerror","console","log","readAsDataURL","NewPost","show","setShow","setTitle","setUser","body","setBody","validated","setValidated","handleClose","onBodyInput","target","isText","value","files","onSubmit","event","a","preventDefault","form","currentTarget","checkValidity","data","fetch","method","headers","JSON","stringify","postType","then","response","error","Button","onClick","Modal","onHide","centered","Header","closeButton","Form","noValidate","Group","controlId","Control","type","placeholder","onChange","required","InputGroup","hasValidation","id","aria-describedby","rows","accept","Footer","App","state","posts","lastUpdated","isLoading","refresh","bind","this","setState","res","json","map","post","comp","Date","toLocaleTimeString","hour","minute","Container","margin","Row","Col","sm","Stack","gap","disabled","fontStyle","Component","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.ffd4150f.chunk.js","sourcesContent":["import { Card, Container, Row, Col, Stack, Button, Placeholder, Modal, Form, InputGroup } from 'react-bootstrap'\nimport React from 'react'\nimport ReactMarkdown from 'react-markdown'\n\nimport 'bootstrap/dist/css/bootstrap.min.css';\n\nconst { useState } = React\nconst API = \"https://cloudflare-app.robinsonz.workers.dev\"\n\nfunction TextPost(props) {\n return (\n \n \n {props.title}\n {props.user}\n {props.text}\n \n \n )\n}\n\nfunction ImagePost(props) {\n return (\n \n \n \n {props.title}\n {props.user}\n \n \n )\n}\n\nfunction PlaceholderPost(props) {\n return (\n \n \n \n \n \n \n {' '}\n \n \n \n \n )\n}\n\nfunction readFileAsync(file) {\n return new Promise((resolve, reject) => {\n let reader = new FileReader();\n\n reader.onload = () => {\n resolve(reader.result.split(',')[1]);\n };\n\n reader.onerror = reject;\n\n console.log(file)\n\n reader.readAsDataURL(file);\n })\n}\n\nfunction NewPost(props) {\n const [show, setShow] = useState(false);\n const [title, setTitle] = useState(\"\")\n const [user, setUser] = useState(\"\")\n const [body, setBody] = useState(\"\")\n const [validated, setValidated] = useState(false)\n\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n const onTitleInput = ({ target: { value } }) => setTitle(value)\n const onUserInput = ({ target: { value } }) => setUser(value)\n const onBodyInput = ({ target }) => setBody(props.isText ? target.value : target.files[0])\n\n const onSubmit = async event => {\n event.preventDefault()\n\n const form = event.currentTarget\n\n setValidated(true);\n if (form.checkValidity() === false) {\n return\n }\n\n let data = props.isText ? body : await readFileAsync(body)\n\n // send Poast request\n fetch(`${API}/posts`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n title: title,\n user: `@${user}`,\n postType: props.isText ? 'text' : 'img',\n data: data\n })\n }).then(response => {\n setShow(false)\n setTitle(\"\")\n setUser(\"\")\n setBody(\"\")\n props.onSubmit()\n },\n error => console.error(error))\n }\n\n return (\n <>\n New {props.isText ? \"Text\" : \"Image\"} Post\n\n \n \n Create a New {props.isText ? \"Text\" : \"Image\"} Post\n \n
\n \n\n \n \n \n\n \n \n @\n \n \n \n \n {props.isText ? (\n <>\n \n You can use Markdown in body text. Try **bold** or *italics.*\n \n ) : (\n \n )}\n \n \n \n \n \n \n
\n
\n \n );\n}\n\nclass App extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n posts: [, , ],\n lastUpdated: \"\",\n isLoading: true\n }\n\n this.refresh = this.refresh.bind(this)\n }\n\n componentDidMount() {\n this.refresh()\n }\n\n refresh() {\n console.log(\"getting new posts\")\n\n this.setState({ isLoading: true })\n\n fetch(`${API}/posts`)\n .then(res => res.json())\n .then(\n (result) => {\n this.setState({\n posts: result.map(post => {\n let comp = null\n switch (post.postType) {\n case \"text\":\n comp = \n break;\n case \"img\":\n comp = \n break;\n default:\n console.error(\"Unknown post type: \" + post.postType)\n comp = \n }\n return comp\n }),\n lastUpdated: (\"Last updated at \" + new Date().toLocaleTimeString([], { hour: 'numeric', minute: '2-digit' })),\n isLoading: false\n });\n },\n (error) => {\n console.error(\"Error fetching posts: \", error)\n this.setState({\n lastUpdated: \"Error fetching new results\",\n isLoading: false\n });\n }\n )\n }\n\n render() {\n return (\n \n \n \n \n

SocialMediaApp™

\n \n \n {this.state.isLoading ? 'Refreshing...' : 'Refresh'}\n

{this.state.lastUpdated}

\n
\n \n \n \n {this.state.posts}\n \n \n
\n
\n );\n }\n}\n\nexport default App;","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}