{"version":3,"sources":["css/post.module.css","components/layout.js","components/create-post.js","components/post.js","pages/feed.js","pages/about.js","App.js","reportWebVitals.js","index.js","css/feed.module.css","css/about.module.css"],"names":["module","exports","Layout","props","class","Group","align","Alignment","LEFT","Heading","to","Divider","RIGHT","this","children","React","Component","defaultState","name","title","content","error","errorText","loading","textMode","url_regex","PostCreator","reset","setState","toggleOverlay","changeMode","state","handleNameChange","response","text","target","value","length","handleTitleChange","handleContentChange","submitContent","a","test","console","log","controller","AbortController","timeoutId","setTimeout","abort","post","id","Date","getTime","type","date","toDateString","fetch","signal","method","headers","body","JSON","stringify","ok","addPost","statusText","clearTimeout","cancelButtonText","confirmButtonText","isOpen","open","onCancel","onConfirm","inline","style","position","left","marginBottom","marginLeft","large","checked","label","onChange","labelFor","labelInfo","helperText","placeholder","intent","Intent","DANGER","growVertically","fill","className","Classes","FILL","color","Post","submitVotes","new_votes","votes","incrementVotes","voted","decrementVotes","submitted","toggleOpen","cardText","cardImage","interactive","elevation","Elevation","TWO","onClick","cardContent","postTitle","contentBox","postImage","src","alt","postFooter","buttonBox","disabled","icon","votesContainer","onClose","canEscapeKeyClose","canOutsideClickClose","minWidth","cardOpenContent","postTitleOpen","contentBoxOpen","postImageOpen","postFooterOpen","buttonBoxOpen","Feed","overlay","posts","push","json","sort","b","feed","postButtonBox","map","Number","spinnerBox","About","aboutContainer","href","App","path","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.64a9c555.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"cardText\":\"post_cardText__3_5_T\",\"cardImage\":\"post_cardImage__J5Vai\",\"cardContent\":\"post_cardContent__Us0Y-\",\"cardOpenContent\":\"post_cardOpenContent__2IqdJ\",\"contentBox\":\"post_contentBox__2Hk6n\",\"contentBoxOpen\":\"post_contentBoxOpen__2mgIL\",\"buttonBox\":\"post_buttonBox__nbm4C\",\"buttonBoxOpen\":\"post_buttonBoxOpen__2K_uo\",\"votesContainer\":\"post_votesContainer__1yq4m\",\"postTitle\":\"post_postTitle__2Q3D1\",\"postTitleOpen\":\"post_postTitleOpen__3McyN\",\"postImage\":\"post_postImage__1PkI-\",\"postImageOpen\":\"post_postImageOpen__26obr\",\"postFooter\":\"post_postFooter__2Zaj5\",\"postFooterOpen\":\"post_postFooterOpen__pVUBU\"};","import React from 'react';\nimport { Link } from \"@reach/router\";\nimport { Navbar, Alignment} from \"@blueprintjs/core\";\n\nclass Layout extends React.Component {\n\tconstructor({props}) {\n\t\tsuper(props);\n\t}\n\n\trender() {\n return (\n\t \t
\n\t \t \n\t \t \n\t \t \n\t\t\t Media Social\n \n\t \t \n\t \t \n\t \t \n\t \t \n\t \t \n\t\t\t About\n\t\t\t \n\t \t \n\t \t \n\t \t {this.props.children}\n\t \t
\n\t );\n\t}\n};\n\nexport default Layout;\n","import React from \"react\";\nimport { \n\tAlert, \n\tFormGroup, \n\tInputGroup, \n\tClasses, \n\tTextArea, \n\tIntent, \n\tSwitch \n} from \"@blueprintjs/core\";\n\nimport \"../css/post-creator.css\";\n\nconst kNameCharLimit = 20;\nconst kTitleCharLimit = 40;\nconst kContentCharLimit = 200;\n\nconst defaultState = {\n\t\t\tname: \"\",\n\t\t\ttitle: \"\",\n\t\t\tcontent: \"\",\n\t\t\terror: false,\n\t\t\terrorText: \"\",\n \t\t loading: false,\n\t textMode: true\n\t\t};\n\n// From https://stackoverflow.com/questions/8834813/regex-to-match-image-url\nconst url_regex = /^https?:\\/\\/(?:[a-z-]+\\.)+[a-z]{2,6}(?:\\/[^/#?]+)+\\.(?:jpe?g|gif|png)$/g;\n\nclass PostCreator extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = defaultState;\n\t}\n\n\treset = () => {\n this.setState(defaultState);\n\t\tthis.props.toggleOverlay();\n\t}\n\n\tchangeMode = () => {\n\t\tthis.setState({ textMode: !this.state.textMode });\n\t}\n\n handleNameChange = response => {\n\t\tlet text = response.target.value;\n this.setState({ \n\t\t\tname: text.length <= kNameCharLimit ? text : this.state.name\n\t\t});\n };\n\n\thandleTitleChange = response => {\n\t\tlet text = response.target.value;\n\t\tthis.setState({ \n\t\t\ttitle: text.length <= kTitleCharLimit ? text : this.state.title\n\t\t});\n\t};\n\n\thandleContentChange = response => {\n\t\tlet text = response.target.value;\n\t\tthis.setState({ \n\t\t\tcontent: text.length <= kContentCharLimit ? text : this.state.content,\n\t\t});\n\t};\n\n\tsubmitContent = async () => {\n\t\tif (!this.state.name || !this.state.title || !this.state.content) {\n\t\t\tthis.setState({ error: true, errorText: \"Error: fill required fields\" });\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.state.textMode && !url_regex.test(this.state.content)) {\n\t\t\tthis.setState({ error: true, errorText: \"Invalid image URL\" });\n\t\t\tconsole.log(\"HERE\");\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({ loading: true });\n\t\t// from https://stackoverflow.com/questions/46946380/fetch-api-request-timeout\n\t\tconst controller = new AbortController();\n\t\tconst timeoutId = setTimeout(() => controller.abort(), 5000);\n\n\t\tconst post = {\n\t\t id: (new Date()).getTime(),\n\t\t\ttype: this.state.textMode,\n\t\t name: this.state.name,\n\t\t title: this.state.title,\n\t\t content: this.state.content,\n\t\t\tdate: (new Date()).toDateString(),\n\t };\n\n\t\tlet response;\n\t\ttry {\n\t\t response = await fetch(\n\t \"https://backend.andreworals5548.workers.dev/posts\",\n\t\t {signal: controller.signal,\n\t\t \t method: \"POST\", \n\t\t\t\t // mode: \"no-cors\",\n\t\t headers: {\"Content-Type\": \"text/plain\"},\n\t\t \t body: JSON.stringify(post)}\n\t\t );\n\t\t} catch (err) {\n\t\t\tthis.setState({ error: true, loading: false, errorText: \"Error\" });\n\t\t\treturn;\n\t\t}\n\n\t\tif (!response.ok) {\n\t\t console.log(response.statusText);\n\t\t this.setState({ error: true, errorText: `Error: ${response.statusText}` });\n\t\t} else {\n\t\t\tthis.props.addPost(post);\n\t\t this.reset();\n\t\t}\n\n\t\tclearTimeout(timeoutId);\n\t\tthis.setState({ loading: false });\n\t};\n \n render() {\n return (\n\t\t\t \n\t\t\t
\n\t\t\t \n \t\t \n \t\t \n \t\t \n \t\t \n \t\t \n\t\t\t \n \t\t \n \t\t \n\t\t\t \n\t\t\t
{this.state.errorText}
\n
\n\t\t\t
\n \t);\n }\n\n}\n\nexport default PostCreator;\n","import React from \"react\";\n\nimport { \n\tCard, \n\tElevation, \n\tButton, \n\tDialog \n} from \"@blueprintjs/core\";\n\nimport { \n\tcardText, \n\tcardImage,\n\tcardContent, \n\tcontentBox, \n\tpostImage,\n\tbuttonBox,\n\tvotesContainer,\n\tpostTitle,\n\tpostFooter,\n\tcardOpenContent,\n\tcontentBoxOpen,\n\tbuttonBoxOpen,\n\tpostImageOpen,\n\tpostTitleOpen,\n\tpostFooterOpen\n} from \"../css/post.module.css\";\n\nclass Post extends React.Component {\n constructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { \n\t\t\tvotes: props.votes, \n\t\t\tvoted: false,\n\t\t open: false\n\t\t};\n\t}\n\n\tsubmitVotes = async (new_votes) => {\n\t\tthis.setState({ votes: new_votes });\n\t\tconst controller = new AbortController();\n\t\tconst timeoutId = setTimeout(() => controller.abort(), 5000);\n \n\t\tconst base_url = \"https://backend.andreworals5548.workers.dev/posts/\";\n\t\t\n\t\tlet response;\n\t\ttry {\n\t\t response = await fetch(\n\t base_url + this.props.id + \"?votes=\" + (new_votes),\n\t\t {signal: controller.signal,\n\t\t \t method: \"POST\"}\n\t\t );\n\t\t} catch (err) {\n\t\t\tthis.setState({ votes: this.props.votes });\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!response.ok) {\n\t\t\tthis.setState({ votes: this.props.votes });\n\t\t\treturn false;\n\t\t}\n\n\t\tclearTimeout(timeoutId);\n\t\treturn true;\n\t};\n\n\tincrementVotes = () => {\n\t\tif (!this.state.voted) {\n\t\t\tlet submitted;\n\t\t const new_votes = this.state.votes + 1;\n\t\t submitted = this.submitVotes(new_votes);\n\t\t\tif (submitted) {\n\t\t\t\tthis.setState({ voted: true });\n\t\t\t}\n\t\t}\n\t}\n\n\tdecrementVotes = () => {\n\t\tif (!this.state.voted) {\n\t\t\tlet submitted;\n\t\t const new_votes = this.state.votes - 1;\n\t\t if (new_votes >= 0) {\n\t\t submitted = this.submitVotes(new_votes);\n\t\t }\n\t\t\tif (submitted) {\n\t\t\t\tthis.setState({ voted: true });\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOpen = () => {\n\t\tconsole.log(\"CALLED!!!!\");\n\t\tthis.setState({ open: !this.state.open });\n\t}\n\n\trender() {\n\t\treturn (\n\t\t
\n\t \n\t\t\t
\n\t\t \t

{this.props.title}

\n\t\t\t
\n\t\t\t {this.props.type ? \n\t\t \t

{this.props.content}

\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t{this.props.content}/\n\t\t\t\t\t\t\t}\n\t\t\t
\n\t\t\t
\n\t\t \t

Posted by {this.props.name} on {this.props.date}

\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\t this.setState({ open: false })}\n\t\t\t canEscapeKeyClose={true}\n\t\t\t canOutsideClickClose={true}\n\t\t\t style={{minWidth: \"70%\"}}\n\t\t\t >\n\t\t\t
\n\t\t \t

{this.props.title}

\n\t\t\t
\n\t\t\t {this.props.type ? \n\t\t \t

{this.props.content}

\n\t\t\t \t\t\t\t:\n\t\t\t \t\t\t\t{this.props.content}/\n\t\t\t \t\t\t}\n\t\t\t
\n\t\t\t
\n\t\t \t

Posted by {this.props.name} on {this.props.date}

\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t
\n\t
\n\n\t\t);\n\t}\n}\n\nexport default Post;\n","import React from \"react\";\nimport { Button, Spinner } from \"@blueprintjs/core\";\n\nimport Layout from \"../components/layout.js\";\nimport PostCreator from \"../components/create-post.js\";\nimport Post from \"../components/post.js\";\nimport { feed, postButtonBox, spinnerBox } from \"../css/feed.module.css\";\n\nclass Feed extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { posts: [], overlay: false };\n\t}\n\n async componentDidMount() {\n\t\t\tconst response = await fetch(\n\t\t\t\t \"https://backend.andreworals5548.workers.dev/posts\",\n\t\t\t\t{method: \"GET\", \n\t\t\t // mode: \"no-cors\",\n\t\t\t\t headers: {\"Content-Type\": \"text/plain\"}}\n\t\t );\n\t\t let content = await response.json();\n\t\t content.sort((a, b) => { \n\t\t\t\tconst a_votes = a.votes ? a.votes : 0;\n\t\t\t\tconst b_votes = b.votes ? b.votes : 0;\n\t\t\t\treturn a_votes < b_votes;\n\t\t\t});\n\t\t\tthis.setState({ posts: content });\n\t}\n\n\ttoggleOverlay = () => {\n\t\tthis.setState({ overlay: !this.state.overlay });\n\t}\n\n\taddPost = (post) => {\n\t\tthis.state.posts.push(post);\n\t}\n\n\trender() {\n return (\n\t\t\t\n\t\t\t
\n\t\t\t
\n\t \t
\n\t\t\t {this.state.posts.length > 0 ? this.state.posts.map((post) => (\n ))\n\t\t\t\t\t:\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t
\n\t\t\t \n\t\t\t
\n\t\t);\n\t}\n}\n\nexport default Feed;\n","import React from \"react\";\n\nimport { Card } from \"@blueprintjs/core\";\n\nimport Layout from \"../components/layout.js\";\n\nimport { aboutContainer } from \"../css/about.module.css\";\n\nconst About = () => {\n return (\n \n\t\t \n\t\t

Cloudflare Recruiting Project

\n\t\t

\n\t\t This is a fun little React project I made using Cloudflare Pages and Cloudflare Workers. You can find the source on Github. Also, huge shoutout to Blueprint. Thanks for stopping by!\n\t\t
\n\t\t
\n\t\t ~Andrew\n\t\t

\n\t\t
\n\t\t
\n\t);\n};\n\nexport default About;\n","import { Router } from \"@reach/router\";\n\nimport Feed from \"./pages/feed\";\nimport About from \"./pages/about\";\n\nfunction App() {\n return (\n \n \n\t\t \n \n );\n}\n\nexport default App;\n","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","// extracted by mini-css-extract-plugin\nmodule.exports = {\"feed\":\"feed_feed__2QZKV\",\"postButtonBox\":\"feed_postButtonBox__2izlc\",\"spinnerBox\":\"feed_spinnerBox___Kd0J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"aboutContainer\":\"about_aboutContainer__1Duy1\"};"],"sourceRoot":""}