{"version":3,"sources":["components/Navigation.jsx","components/images/youtube-logo.png","components/Footer.jsx","components/images/splash02.png","components/images/Upload-Play.gif","pages/Home.jsx","pages/blog/Blog.jsx","components/images/webpage.png","pages/blog/Posts.js","pages/blog/Post.js","pages/Profile.js","components/EntryCard/style.js","components/EntryCard/EntryCard.js","components/InputGroup/style.js","components/InputGroup/InputGroup.js","components/Input/style.js","components/Input/Input.js","components/Button/style.js","components/Button/Button.js","pages/Login.js","pages/PasswordReset.js","pages/NewPassword.js","pages/Logout.jsx","pages/Newuser.js","pages/Register.js","App.js","index.js"],"names":["Navigation","props","className","Navbar","collapseOnSelect","variant","bg","expand","Container","Brand","href","Toggle","aria-controls","Collapse","id","Nav","to","Link","target","rel","firstname","NavDropdown","title","Item","Divider","Footer","Row","Col","data-show-count","src","youtubelogo","width","Home","useState","products","setProducts","useEffect","axios","process","headers","sessionStorage","then","response","data","error","console","log","Promise","reject","Carousel","pause","interval","splash02","alt","uploadplay","filename","Blog","class","Posts","Post01img","Post","PayPalButton","window","paypal","Buttons","driver","React","ReactDOM","Profile","userProfile","setUserProfile","loading","setLoading","loginok","setLoginok","update","setUpdate","LicenseForm","deviceid","setDeviceid","devicevalidation","setDevicevalidation","paymentError","setPaymentError","disableAdd","setDisableAdd","invoice","Form","type","name","onChange","e","value","toUpperCase","length","startsWith","checkDeviceID","placeholder","pattern","size","disabled","onClick","preventDefault","body","post","addLicense","htmlFor","align","LicenseRow","index","license","active","lastcheckin","moment","format","deleteLicense","InvoiceTableRow","product","sku","qty","price","Number","toFixed","orderID","licenses","colSpan","Table","striped","bordered","hover","map","totalActive","OrderLine","selectedProduct","setSelectedProduct","setqty","lineTotal","setLineTotal","a","getProducts","Select","aria-label","prod","description","maxLength","min","max","createOrder","actions","order","create","purchase_units","amount","currency_code","breakdown","item_total","items","quantity","unit_amount","onApprove","payerID","billingToken","paymentID","removeItem","capture","get","firstnameUpdate","Spinner","animation","role","user","surname","email","invoices","redirect","StyledEntryCard","styled","div","EntryCard","children","StyledInputGroup","InputGroup","StyledInput","input","Input","StyledButton","button","full","Button","Login","setEmail","password","setPassword","loginerror","setLoginerror","submit","fetch","method","JSON","stringify","json","content","user_authentication","setItem","auth_token","replace","onSubmit","PasswordReset","tokCreated","setTokCreated","status","WaitForEmail","NewPassword","passok","setpassok","result","setResult","passReset","setPassReset","tokenResult","setTokenResult","token","useParams","checkToken","pass2","len","Logout","Newuser","emailError","SetEmailError","notvalid","setNotvalid","validator","isEmail","validateEmail","style","fontWeight","color","marginTop","Register","setFirstname","setSurname","userCreated","setUserCreated","App","path","element","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.7bb5fbac.chunk.js","sourcesContent":["import React from \"react\";\nimport Navbar from 'react-bootstrap/Navbar';\nimport { Nav, NavDropdown } from 'react-bootstrap';\nimport Container from 'react-bootstrap/Container'\nimport { Link } from \"react-router-dom\";\n\nfunction Navigation(props) {\n\n return (\n
\n \n \n PiDeck\n \n \n \n \n \n \n \n\n
\n );\n}\n\nexport default Navigation;","export default __webpack_public_path__ + \"static/media/youtube-logo.d8016aee.png\";","import React from \"react\";\nimport { Container, Row, Col } from 'react-bootstrap';\nimport youtubelogo from '../components/images/youtube-logo.png';\n\nfunction Footer() {\n return (\n
\n \n
\n );\n}\n\nexport default Footer;","export default __webpack_public_path__ + \"static/media/splash02.45fc581f.png\";","export default __webpack_public_path__ + \"static/media/Upload-Play.4de2e527.gif\";","import React from \"react\";\nimport Carousel from 'react-bootstrap/Carousel';\nimport splash02 from '../components/images/splash02.png';\nimport uploadplay from '../components/images/Upload-Play.gif';\nimport { Link } from 'react-router-dom';\nimport { useState, useEffect } from 'react';\nimport axios from 'axios';\n\nfunction Home() {\n const [products, setProducts] = useState();\n\n function getProducts() {\n axios(`${process.env.REACT_APP_API}/api/v1/products.json`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'auth_token ' + sessionStorage['token']\n }\n }).then((response) => { setProducts(response.data['products']) }, (error) => {\n console.log(\"ERROR\", error);\n return Promise.reject(error);\n })\n }\n\n useEffect(() => {\n getProducts();\n }, [])\n\n return (\n
\n
\n
\n
\n \n \n \"\"\n \n \n \"\"\n \n \n
\n
\n

PiDeck

\n

PiDeck is an HDMI Video playback device.

\n

Turn any Raspberry Pi into a full functional HDMI video playback device.

\n
    \n
  • Play video clips using any Raspberry Pi from Pi-Zero and up.
  • \n
  • Liven up your streams using animated titles, bugs, etc without tying up a laptop or buying other expensive devices.
  • \n
  • Control from Blackmagic ATEM devices
  • \n
  • Simple Web GUI
  • \n
  • Software license £45.95 for each Pi
  • \n
\n Create an account to order, payments via PayPal.\n

\n

Download a fully functional demo.

\n {products ? Download : \"\" }\n \n
\n
\n
\n
\n );\n}\n\nexport default Home;","import React from \"react\";\nimport { Outlet } from \"react-router-dom\";\n\nfunction Blog() {\n return (\n
\n
\n

News

\n \n
\n
\n );\n}\n\nexport default Blog;","export default __webpack_public_path__ + \"static/media/webpage.c9b760a7.png\";","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport Post01img from '../../components/images/webpage.png';\n\nfunction Posts() {\n return (\n
\n
\n \n
\n
\n \n
\n
\n

PiDeck Version 1.1.2 Released

\n

\n We are pleased to announce the release of Version 1.1.2 of PiDeck, the low cost HDMI video playback device.\n\n

\n
\n
\n \n
\n
\n );\n}\n\nexport default Posts;","// import React, { useEffect } from \"react\";\n// import { useParams } from \"react-router\";\nimport { Container } from 'react-bootstrap';\n\n\nfunction Post() {\n// let { postSlug } = useParams();\n\n// useEffect(() => {\n // Fetch post using the postSlug\n// }, [postSlug]);\n\n return (\n
\n \n

PiDeck Version 1.1.2 released

\n

\n PiDeck is a low cost solution to adding videos to your live streams.\n

\n

New Features

\n \n\n

For more details on setting up and using PiDeck please review our support pages

\n

PiDeck boots in under a minute and is ready to playback your clips, can be controlled natively from Blackmagic ATEM devices.

\n

PiDeck is designed for the low cost Raspberry Pi single board computers. In fact it will run on any of them from the Pi Zero and up.

\n

Download a demo version now and test it out.

\n
\n
\n );\n}\n\nexport default Post;\n","import axios from 'axios';\nimport React from 'react';\nimport ReactDOM from \"react-dom\";\nimport { useState, useEffect } from \"react\";\nimport Spinner from 'react-bootstrap/Spinner';\nimport { Form, Table, Col, Row, Container } from 'react-bootstrap';\nimport { Input } from 'reactstrap';\nimport { Navigate } from 'react-router-dom';\nimport { BsFillTrashFill } from \"react-icons/bs\";\nimport moment from 'moment';\n\n\n\nconst PayPalButton = window.paypal.Buttons.driver(\"react\", { React, ReactDOM });\n\nfunction Profile(props) {\n const [userProfile, setUserProfile] = useState('');\n const [loading, setLoading] = useState(false);\n const [loginok, setLoginok] = useState(true);\n const [update, setUpdate] = useState(false);\n\n\n\n\n function LicenseForm(props) {\n const [deviceid, setDeviceid] = useState('')\n const [devicevalidation, setDevicevalidation] = useState('');\n const [paymentError, setPaymentError] = useState('');\n\n const [disableAdd, setDisableAdd] = useState(true);\n const { invoice } = props;\n\n function addLicense(e, invoice, deviceid) {\n // validate deviceid\n e.preventDefault();\n const body = {\n 'license': {\n 'deviceid': deviceid,\n 'invoice_id': invoice\n }\n }\n if (sessionStorage['token']) {\n axios.post(`${process.env.REACT_APP_API}/api/v1/licenses.json`, body, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'auth_token ' + sessionStorage['token']\n }\n }).then((response) => {\n if (response.data.error || response.data.deviceid) {\n if (response.data.error) {\n setPaymentError(response.data.error);\n }\n if (response.data.deviceid) {\n if (response.data.deviceid === deviceid) {\n setUpdate(true);\n } else {\n setDevicevalidation(response.data.deviceid);\n }\n }\n setUpdate(false);\n } else {\n setPaymentError('');\n setUpdate(true);\n }\n }, (error) => {\n console.log(\"ERROR\", error);\n return Promise.reject(error);\n })\n }\n }\n\n function checkDeviceID(e) {\n setDeviceid(e.target.value.toUpperCase());\n if (e.target.value.length === 17) {\n if (e.target.value.startsWith(\"B8:27:EB:\") || e.target.value.startsWith(\"DC:A6:32:\") || e.target.value.startsWith(\"E4:5F:01:\") || e.target.value.startsWith(\"D8:3A:\")) {\n setDevicevalidation(\"DeviceID OK\");\n setDisableAdd(false);\n }\n } else {\n setDevicevalidation(\"DeviceID is not valid\");\n setDisableAdd(true);\n }\n }\n return [\n \n
checkDeviceID(e)} value={deviceid} placeholder=\"AA:BB:CC:DD:EE\" pattern=\"/^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$/\" size=\"20\" />\n \n \n \n
\n {devicevalidation ? : \"\"}\n {paymentError ? : \"\"}\n \n \n \n \n ];\n }\n\n function LicenseRow(props) {\n function deleteLicense(e, deviceid) {\n e.preventDefault();\n const body = {\n 'license': {\n 'deviceid': deviceid\n }\n }\n if (sessionStorage['token']) {\n axios.post(`${process.env.REACT_APP_API}/api/v1/license/delete.json`, body, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'auth_token ' + sessionStorage['token']\n }\n }).then((response) => {\n setUpdate(true);\n }, (error) => {\n console.log(\"ERROR\", error);\n return Promise.reject(error);\n })\n }\n }\n const { index, license } = props;\n return [\n \n {license.deviceid}\n {license.active ? \"Active\" : \"Revoked\"}\n {license.lastcheckin ? moment(license.lastcheckin).format('YYYY-MM-DD HH:MM') : \"Never \"}\n {!license.lastcheckin ? : \"\"}\n \n ];\n }\n\n function InvoiceTableRow(props) {\n const { index, invoice } = props;\n return [\n <>\n \n {index + 1}\n {invoice.product.sku}\n {invoice.product.name}\n {invoice.qty}\n £{invoice.price}\n £{Number(invoice.qty * invoice.price).toFixed(2)}\n {invoice.orderID}\n {invoice.licenses.length}/{invoice.qty}\n \n \n \n
\n \n

Licensed Devices

\n \n \n \n \n \n {invoice.licenses\n ? invoice.licenses.map((license, index) =>\n \n ) : \"\"}\n {invoice.totalActive < invoice.qty ? : \"\"}\n \n
Device IDKeyCheckin
\n
\n
\n \n \n \n ];\n }\n\n\n function getProfile() {\n\n if (sessionStorage['token']) {\n axios.get(`${process.env.REACT_APP_API}/api/v1/profile.json`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'auth_token ' + sessionStorage['token']\n }\n }).then((response) => { setUserProfile(response.data); props.firstnameUpdate(); }, (error) => {\n console.log(\"ERROR\", error);\n sessionStorage.removeItem('token');\n sessionStorage.removeItem('firstname');\n setLoginok(false);\n return Promise.reject(error);\n })\n } else {\n setLoginok(false);\n }\n }\n\n useEffect(() => {\n setLoading(true);\n setUserProfile('');\n getProfile();\n setLoading(false);\n setUpdate(false);\n }, [loading, update]);\n\n function OrderLine() {\n const [selectedProduct, setSelectedProduct] = useState(0);\n const [products, setProducts] = useState();\n const [qty, setqty] = useState(1);\n const [lineTotal, setLineTotal] = useState(0);\n\n const createOrder = (data, actions) => {\n return actions.order.create({\n purchase_units: [{\n description: \"PiDeck HDMI Playback\",\n amount: {\n value: lineTotal,\n currency_code: \"GBP\",\n breakdown: {\n item_total: {\n currency_code: \"GBP\",\n value: lineTotal\n }\n }\n },\n items: [\n {\n name: products[selectedProduct - 1].sku,\n quantity: qty,\n unit_amount: {\n currency_code: \"GBP\",\n value: products[selectedProduct - 1].price\n }\n }\n ]\n },\n ],\n });\n };\n\n const onApprove = (data, actions) => {\n const body = {\n 'invoice': {\n 'qty': qty,\n 'price': products[selectedProduct - 1].price,\n 'product_id': products[selectedProduct - 1].id,\n 'orderID': data.orderID,\n 'payerID': data.payerID,\n 'billingToken': data.billingToken,\n 'paymentID': data.paymentID\n }\n }\n axios.post(`${process.env.REACT_APP_API}/api/v1/invoices.json`, body, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'auth_token ' + sessionStorage['token']\n }\n }).then((response) => {\n setUpdate(true);\n }, (error) => {\n console.log(\"ERROR\", error);\n sessionStorage.removeItem('token');\n sessionStorage.removeItem('firstname');\n return Promise.reject(error);\n })\n\n return actions.order.capture();\n };\n\n useEffect(() => {\n getProducts();\n }, []);\n\n useEffect(() => {\n if (selectedProduct > 0) {\n setLineTotal(Number(products[selectedProduct - 1].price * qty).toFixed(2));\n }\n }, [selectedProduct, qty, products]\n );\n\n\n async function getProducts() {\n await axios(`${process.env.REACT_APP_API}/api/v1/products.json`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': 'auth_token ' + sessionStorage['token']\n }\n }).then((response) => { setProducts(response.data['products']) }, (error) => {\n console.log(\"ERROR\", error);\n return Promise.reject(error);\n })\n }\n\n return (\n <>{products ? <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n
ProductDescriptionUnit priceQuantityTotal
\n { setSelectedProduct(a.target.value) }}>\n \n {products.map((prod, index) =>\n \n )}\n \n {selectedProduct > 0 ? products[selectedProduct - 1].description : \"\"}£{selectedProduct > 0 ? products[selectedProduct - 1].price : \"\"} { setqty(a.target.value) }} value={qty} maxLength=\"3\" size=\"10\" min=\"1\" max=\"200\" />£{lineTotal > 0 ? lineTotal : \"\"}
\n createOrder(data, actions)}\n onApprove={(data, actions) => onApprove(data, actions)}\n />\n
\n
\n \n : \"\"}\n\n \n\n )\n }\n\n if (!loginok) {\n return ();\n }\n\n return (\n
\n {loading ?\n <>\n \n Loading...\n \n : \"\"\n }\n\n {!loading && userProfile ?\n <>\n\n \n

User Profile

\n \n \n \n \n\n
Firstname{userProfile.user.firstname}
Surname{userProfile.user.surname}
E-Mail{userProfile.user.email}

\n\n\n
\n\n {userProfile.invoices.length > 0 ?\n <>\n \n

Orders

\n \n \n \n \n \n \n \n \n \n \n \n \n \n {userProfile.invoices\n ? userProfile.invoices.map((invoice, index) =>\n \n )\n : \"\"\n }\n \n
\n SKUProductQtyUnit PriceTotalPayment ReferenceActive Licenses
\n
\n \n : \"\"}\n \n : \"\"}\n
\n )\n}\n\nexport default Profile;\n\n","import styled from 'styled-components';\n\nexport const StyledEntryCard = styled.div`\n width: 100%;\n max-width: 450px;\n margin-left: auto;\n margin-right: auto;\n border-radius: 5px;\n padding: 50px;\n margin-bottom: 40px;\n margin-top: 40px;\n background-color: #ffffff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);\n text-align: center;\n h2 {\n font-weight: 500;\n margin-bottom: 50px;\n }\n span {\n display: block;\n margin-top: 40px;\n color: #888888;\n font-size: 14px;\n }\n a {\n margin-left: 4px;\n color: #2f8bfd;\n }\n`;","import React from 'react'\nimport { StyledEntryCard } from './style';\n\nfunction EntryCard({ children }) {\n return (\n \n {children}\n \n );\n}\n\nexport default EntryCard;\n","import styled from 'styled-components';\n\nexport const StyledInputGroup = styled.div`\n margin-bottom: 24px;\n text-align: left;\n label {\n display: inline-block;\n margin-bottom: 0.5rem;\n color: #888888;\n }\n`;","import React from 'react'\nimport { StyledInputGroup } from './style'\n\nfunction InputGroup({ children }) {\n return (\n \n {children}\n \n );\n}\n\nexport default InputGroup;\n","import styled from 'styled-components';\n\nexport const StyledInput = styled.input`\n width: 100%;\n outline: none;\n padding: 8px 16px;\n border: 1px solid #e0e6e8;\n border-radius: 4px;\n font-size: 1rem;\n color: #888888;\n transition: box-shadow 0.2s;\n &::placeholder {\n color: #dedede;\n }\n &:focus {\n box-shadow: 0 0 0 2px rgb(169, 172, 255,0.5);\n }\n`;","import React from 'react'\nimport { StyledInput } from './style';\n\nfunction Input({ ...props }) {\n return (\n \n );\n}\n\nexport default Input;\n\n","import styled from 'styled-components';\n\nexport const StyledButton = styled.button`\n width: ${props => props.full ? '100%' : null};\n min-width: 64px;\n border: 0;\n border-radius: 4px;\n padding: 8px 16px;\n outline: none;\n background-color: #2f8bfd;\n color: #ffffff;\n font-size: 0.875rem;\n font-weight: 500;\n line-height: 1.5;\n letter-spacing: 0.02857rem;\n cursor: pointer;\n transition: all 0.2s;\n &:hover { background-color: #0072ff; }\n `;\n","import React from 'react';\nimport { StyledButton } from './style';\n\nfunction Button({ children, ...props }) {\n return (\n \n {children}\n \n );\n}\n\nexport default Button;","import React from 'react'\nimport { useState, SyntheticEvent } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Navigate } from \"react-router-dom\";\nimport EntryCard from '../components/EntryCard/EntryCard';\nimport InputGroup from '../components/InputGroup/InputGroup';\nimport Input from '../components/Input';\nimport Button from '../components/Button';\n\nfunction Login(props) {\n\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [loginerror, setLoginerror] = useState('');\n const [loginok, setLoginok] = useState(false);\n\n const submit = async (e: SyntheticEvent) => {\n e.preventDefault();\n const response = await fetch(`${process.env.REACT_APP_API}/authenticate`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n email,\n password\n })\n });\n\n const content = await response.json();\n if (content.error) {\n setLoginerror(content.error.user_authentication)\n setLoginok(false);\n } else {\n setLoginerror('');\n window.sessionStorage.setItem('token', content.auth_token);\n window.sessionStorage.setItem('firstname', content.firstname);\n setLoginok(true);\n\n }\n }\n\n if (loginok) {\n return ();\n }\n\n return (\n \n

Log in

\n
\n \n \n setEmail(e.target.value)} placeholder=\"E-mail address\" id=\"email\" />\n \n \n \n setPassword(e.target.value)} placeholder=\"Password\" id=\"password\" />\n \n {loginerror ? : ''}\n \n
\n \n Don't yet have an account?\n Sign up\n \n Forgotten your password? Reset Password\n
\n )\n}\n\n\nexport default Login;\n","import React, { SyntheticEvent } from 'react'\nimport { useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport EntryCard from '../components/EntryCard/EntryCard';\nimport InputGroup from '../components/InputGroup/InputGroup';\nimport Input from '../components/Input';\nimport Button from '../components/Button';\n\nfunction PasswordReset() {\n const [email, setEmail] = useState('');\n const [tokCreated, setTokCreated] = useState(false);\n\n const submit = async (e: SyntheticEvent) => {\n e.preventDefault();\n const response = await fetch(`${process.env.REACT_APP_API}/api/v1/user/reset_password`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n user: {\n email\n }\n })\n });\n\n const content = await response.json();\n if (content.status === \"ok\") {\n setTokCreated(true);\n console.log(\"Token created\")\n }\n }\n\n function WaitForEmail() {\n return (\n \n

E-Mail Sent

\n

If your e-mail address is in our database then a reset link has been sent. Please check your mail and follow the link to reset your password

\n
\n )\n }\n\n return (\n <>\n { tokCreated ? :\n \n

Reset Password

\n
\n \n \n setEmail(e.target.value)} placeholder=\"E-mail address\" id=\"email\" />\n \n\n \n
\n Trying to Login? Login \n Don't yet have an account? Sign up \n\n
\n }\n \n )\n}\n\nexport default PasswordReset;\n","import React, { SyntheticEvent } from 'react'\nimport { useState, useEffect } from 'react';\nimport EntryCard from '../components/EntryCard/EntryCard';\nimport InputGroup from '../components/InputGroup/InputGroup';\nimport Input from '../components/Input';\nimport Button from '../components/Button';\nimport { Navigate, useParams } from 'react-router-dom';\n\nfunction NewPassword() {\n const [password, setPassword] = useState('');\n const [passok, setpassok] = useState(false);\n const [result, setResult] = useState('');\n const [passReset, setPassReset] = useState(false);\n const [tokenResult, setTokenResult] = useState();\n\n let { token } = useParams();\n\n const submit = async (e: SyntheticEvent) => {\n e.preventDefault();\n const response = await fetch(`${process.env.REACT_APP_API}/api/v1/user/new_pass`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n user: {\n password,\n token\n }\n })\n });\n\n const content = await response.json();\n setResult(content);\n // check the user was created\n if (content.status === 'password updated') {\n setPassReset(true);\n }\n }\n\n function checkPasswordMatch(pass2) {\n if (pass2 === password && pass2.len >= 8) {\n setpassok(true);\n } else {\n setpassok(false);\n }\n }\n\n useEffect(() => {\n // Check if token is valid and return the e-mail address\n async function checkToken() {\n let response = await fetch(`${process.env.REACT_APP_API}/api/v1/user/pass_token`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token\n })\n });\n const content = await response.json();\n setTokenResult(content);\n }\n checkToken();\n // check the user was created\n }, [token]);\n\n if ((tokenResult && tokenResult.email === false) || token === \"\" || passReset) {\n return \n }\n\n\n return (\n \n

Password Reset

\n
\n \n
\n \n
\n\n \n \n setPassword(e.target.value)} placeholder=\"Password\" id=\"password\" />\n {result.password ? : ''}\n \n \n \n checkPasswordMatch(e.target.value)} placeholder=\"Password\" id=\"password\" />\n {!passok && password.len > 0 ? : ''}\n \n\n \n
\n
\n )\n}\n\nexport default NewPassword;\n","import React from 'react'\nimport { Navigate } from \"react-router-dom\";\n\nfunction Logout() {\n sessionStorage.removeItem('token');\n sessionStorage.removeItem('firstname');\n return ();\n}\n\n\nexport default Logout;\n","import React, { SyntheticEvent } from 'react'\nimport { useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport EntryCard from '../components/EntryCard/EntryCard';\nimport InputGroup from '../components/InputGroup/InputGroup';\nimport Input from '../components/Input';\nimport Button from '../components/Button';\nimport validator from 'validator';\n\n\nfunction Newuser() {\n const [email, setEmail] = useState('');\n const [tokCreated, setTokCreated] = useState(false);\n const [emailError, SetEmailError] = useState('');\n const [notvalid, setNotvalid] = useState(true);\n\n\n const validateEmail = (e) => {\n var email = e.target.value\n if (validator.isEmail(email) ) {\n SetEmailError('');\n setNotvalid(false);\n setEmail(email);\n } else {\n SetEmailError('Email not valid');\n setNotvalid(true);\n }\n }\n\n const submit = async (e: SyntheticEvent) => {\n e.preventDefault();\n const response = await fetch(`${process.env.REACT_APP_API}/api/v1/user/register`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n user: {\n email\n }\n })\n })\n\n const content = await response.json();\n if (content.status === false) {\n SetEmailError('E-Mail already Registered');\n }\n // check the user was created\n if (content.status === \"ok\") {\n setTokCreated(true);\n }\n }\n\n function WaitForEmail() {\n return (\n \n

E-Mail Sent

\n

Thank you for requesting an account. An E-Mail has been sent with a link to create your account. Please check your e-mail and follow the instructions to complete your registration.

\n
\n )\n }\n\n return (\n <>\n { tokCreated ? :\n \n

Signup

\n
\n \n \n validateEmail(e)} placeholder=\"E-mail address\" id=\"email\"/>\n {emailError}\n \n\n \n
\n \n Already have an account?\n Login\n \n
\n }\n \n )\n}\n\nexport default Newuser;\n","import React, { SyntheticEvent } from 'react'\nimport { useState, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport EntryCard from '../components/EntryCard/EntryCard';\nimport InputGroup from '../components/InputGroup/InputGroup';\nimport Input from '../components/Input';\nimport Button from '../components/Button';\nimport { Navigate, useParams } from 'react-router-dom';\n\nfunction Register() {\n const [firstname, setFirstname] = useState('');\n const [surname, setSurname] = useState('');\n const [password, setPassword] = useState('');\n const [passok, setpassok] = useState(false);\n const [result, setResult] = useState('');\n const [userCreated, setUserCreated] = useState(false);\n const [tokenResult, setTokenResult] = useState();\n\n let { token } = useParams();\n\n const submit = async (e: SyntheticEvent) => {\n e.preventDefault();\n const response = await fetch(`${process.env.REACT_APP_API}/api/v1/users`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n user: {\n firstname,\n surname,\n password,\n token\n }\n })\n });\n\n const content = await response.json();\n console.log(content);\n setResult(content);\n // check the user was created\n if (content.user) {\n setUserCreated(true);\n }\n }\n\n function checkPasswordMatch(pass2) {\n if (pass2 === password && pass2.len >= 8) {\n setpassok(true);\n } else {\n setpassok(false);\n }\n }\n\n useEffect(() => {\n // Check if token is valid and return the e-mail address\n async function checkToken() {\n let response = await fetch(`${process.env.REACT_APP_API}/api/v1/user/token`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token\n })\n });\n const content = await response.json();\n setTokenResult(content);\n }\n checkToken();\n // check the user was created\n }, [token]);\n\n if ((tokenResult && tokenResult.email === false) || token === \"\" || userCreated) {\n return \n }\n\n\n return (\n \n

Register

\n
\n \n
\n \n
\n \n \n setFirstname(e.target.value)} placeholder=\"Firstname\" id=\"firstname\" />\n {result.firstname ? : ''}\n \n \n \n setSurname(e.target.value)} placeholder=\"Surname\" id=\"surname\" />\n {result.surname ? : ''}\n \n\n \n \n setPassword(e.target.value)} placeholder=\"Password\" id=\"password\" />\n {result.password ? : ''}\n \n \n \n checkPasswordMatch(e.target.value)} placeholder=\"Password\" id=\"password\" />\n {!passok && password.len > 0 ? : ''}\n \n\n \n
\n \n Already have an account?\n Login\n \n
\n )\n}\n\nexport default Register;\n","import './App.css';\n// import React, { useEffect } from \"react\";\nimport { useState } from 'react';\n\nimport { BrowserRouter as Router, Route, Routes } from \"react-router-dom\";\n\nimport {\n Navigation,\n Footer,\n Home,\n Blog,\n Posts,\n Post,\n Login,\n PasswordReset,\n NewPassword,\n Logout,\n Newuser,\n Register,\n Profile\n} from \"./pages\";\n\nfunction App() {\n const [firstname, setFirstname] = useState('');\n\n const firstnameUpdate = () => {\n setFirstname(sessionStorage['firstname'])\n }\n\n return (\n
\n \n \n \n } />\n }>\n } />\n } />\n \n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n } />\n \n
\n
\n \n
\n );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\n// import * as serviceWorker from \"./serviceWorker\";\n\n\nimport App from './App';\n\nReactDOM.render(\n \n \n,\ndocument.getElementById(\"root\")\n);\n"],"sourceRoot":""}