{"version":3,"sources":["ui/dragAndDrop.js","ui/slider.js","ui/advancedOptions.jsx","ui/dropDown.jsx","ui/frontpage.jsx","App.js","serviceWorker.js","index.js"],"names":["Container","styled","div","props","isDragAccept","isDragReject","isDragActive","getColor","StyledDropzone","useDropzone","accept","onDrop","acceptedFiles","rejectedFiles","length","size","alert","setFile","maxSize","maxFiles","getRootProps","getInputProps","file","map","className","path","align","PrettoSlider","withStyles","root","color","height","thumb","width","backgroundColor","border","marginTop","marginLeft","boxShadow","active","valueLabel","left","track","borderRadius","rail","Slider","CustomizedSlider","handleChange","bind","e","value","this","onChange","aria-label","defaultValue","valueLabelDisplay","step","min","max","React","Component","AdvancedOptions","state","hF","roomScale","stereoDepth","preDelay","wetGain","handleHF","handleRoomScale","handleStereoDepth","handlePreDelay","handleWetGain","setState","onChangeHF","onChangeRoomScale","onChangeStereoDepth","onChangePreDelay","onChangeWetGain","Box","mb","p","Typography","style","fontFamily","fontWeight","m","useStyles","makeStyles","theme","formControl","minWidth","selectEmpty","spacing","SelectBitrate","classes","useState","bitrate","FormControl","InputLabel","htmlFor","Select","native","event","name","target","console","log","inputProps","id","speed","reverb","songName","download","require","formData","FormData","eventNum","donateButton","action","method","type","src","title","alt","FrontPage","sendFileToServer","a","append","reverbChecked","ReactGA","category","inProgress","fetch","body","res","status","blob","blobUrl","URL","createObjectURL","showControls","json","message","speedMessage","reverbMessage","undefined","reverbCheckbox","handleSpeedSliderChange","handleReverbSliderChange","setDropzoneFile","handleHFChange","handleRoomScaleChange","handleStereoDepthChange","handlePreDelayChange","handleWetGainChange","handleDropdownChange","initialize","pageview","checked","setChecked","FormControlLabel","control","Checkbox","label","variant","gutterBottom","Card","opacity","paddingTop","alignItems","CardContent","mt","Button","disabled","onClick","Divider","controls","fontSize","LinearProgress","Link","href","underline","backgroundImages","backgroundIndex","App","callBackendAPI","response","Error","background","handleClick","document","backgroundImage","backgroundPosition","overflowY","backgroundRepeat","backgroundSize","backgroundAttachment","Boolean","window","location","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error"],"mappings":"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","file":"static/js/main.1448c39d.chunk.js","sourcesContent":["import React from \"react\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport styled from \"styled-components\";\r\n\r\nconst audioFileMaxSize = 300000000; // bytes\r\n\r\n// This is the file object that will be sent to the server\r\nvar currFile = undefined;\r\n\r\nconst getColor = (props) => {\r\n if (props.isDragAccept) {\r\n return \"#00e676\";\r\n }\r\n if (props.isDragReject) {\r\n return \"#ff1744\";\r\n }\r\n if (props.isDragActive) {\r\n return \"#2196f3\";\r\n }\r\n return \"#eeeeee\";\r\n};\r\n\r\nconst Container = styled.div`\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 20px;\r\n border-width: 8px;\r\n border-radius: 8px;\r\n border-color: ${(props) => getColor(props)};\r\n border-style: dashed;\r\n background-color: #fafafa;\r\n color: #bdbdbd;\r\n outline: none;\r\n transition: border 0.24s ease-in-out;\r\n margin: 20px;\r\n opacity: 0.9;\r\n`;\r\n\r\nfunction StyledDropzone(props) {\r\n const {\r\n getRootProps,\r\n getInputProps,\r\n isDragActive,\r\n isDragAccept,\r\n isDragReject,\r\n acceptedFiles,\r\n } = useDropzone({\r\n accept: [\"audio/mpeg\", \"audio/ogg\", \"audio/wav\", \"image/*\"],\r\n onDrop: onDrop,\r\n maxSize: audioFileMaxSize,\r\n maxFiles: 1,\r\n });\r\n\r\n const file = acceptedFiles.map((file) => (\r\n

{file.path}

\r\n ));\r\n\r\n function onDrop(acceptedFiles, rejectedFiles) {\r\n if (\r\n rejectedFiles &&\r\n rejectedFiles.length > 0 &&\r\n rejectedFiles[0].size > audioFileMaxSize\r\n ) {\r\n alert(\"File is too big (max 300 megabytes)\");\r\n }\r\n if (acceptedFiles && acceptedFiles.length > 0) {\r\n currFile = acceptedFiles[0];\r\n //this.setFile(acceptedFiles[0]);\r\n props.setFile(acceptedFiles[0]);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n

Drop your song file here, or click to choose your file

\r\n {file}\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport { StyledDropzone, currFile };\r\n","import { withStyles } from \"@material-ui/core/styles\";\r\nimport Slider from \"@material-ui/core/Slider\";\r\nimport React from \"react\";\r\n\r\nconst PrettoSlider = withStyles({\r\n root: {\r\n color: \"#8c2fa8\",\r\n height: 8,\r\n },\r\n thumb: {\r\n height: 24,\r\n width: 24,\r\n backgroundColor: \"#fff\",\r\n border: \"2px solid currentColor\",\r\n marginTop: -8,\r\n marginLeft: -12,\r\n \"&:focus, &:hover, &$active\": {\r\n boxShadow: \"inherit\",\r\n },\r\n },\r\n active: {},\r\n valueLabel: {\r\n left: \"calc(-50% + 4px)\",\r\n },\r\n track: {\r\n height: 8,\r\n borderRadius: 4,\r\n },\r\n rail: {\r\n height: 8,\r\n borderRadius: 4,\r\n },\r\n})(Slider);\r\n\r\n//const classes = useStyles();\r\n\r\nexport class CustomizedSlider extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleChange = this.handleChange.bind(this);\r\n }\r\n\r\n handleChange(e, value) {\r\n this.props.onChange(value);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport \"../App.css\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport { CustomizedSlider } from \"./slider\";\r\nimport Box from \"@material-ui/core/Box\";\r\n\r\nexport class AdvancedOptions extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hF: 50,\r\n roomScale: 100,\r\n stereoDepth: 100,\r\n preDelay: 0,\r\n wetGain: 0,\r\n };\r\n this.handleHF = this.handleHF.bind(this);\r\n this.handleRoomScale = this.handleRoomScale.bind(this);\r\n this.handleStereoDepth = this.handleStereoDepth.bind(this);\r\n this.handlePreDelay = this.handlePreDelay.bind(this);\r\n this.handleWetGain = this.handleWetGain.bind(this);\r\n }\r\n\r\n handleHF(value) {\r\n this.setState({ hF: value });\r\n this.props.onChangeHF(value);\r\n }\r\n\r\n handleRoomScale(value) {\r\n this.setState({ roomScale: value });\r\n this.props.onChangeRoomScale(value);\r\n }\r\n\r\n handleStereoDepth(value) {\r\n this.setState({ stereoDepth: value });\r\n this.props.onChangeStereoDepth(value);\r\n }\r\n\r\n handlePreDelay(value) {\r\n this.setState({ preDelay: value });\r\n this.props.onChangePreDelay(value);\r\n }\r\n\r\n handleWetGain(value) {\r\n this.setState({ wetGain: value });\r\n this.props.onChangeWetGain(value);\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n \r\n \r\n HF Damping: {this.state.hF}%\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Room Scale: {this.state.roomScale}%\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Stereo Depth: {this.state.stereoDepth}%\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Pre-Delay: {this.state.preDelay}ms\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n Wet Gain: {this.state.wetGain}dB\r\n \r\n \r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport NativeSelect from \"@material-ui/core/NativeSelect\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n marginTop: 0,\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport function SelectBitrate(props) {\r\n const classes = useStyles();\r\n const [state, setState] = React.useState({\r\n bitrate: 128,\r\n });\r\n\r\n const handleChange = (event) => {\r\n const name = event.target.name;\r\n console.log(event.target.bitrate);\r\n console.log(event.target);\r\n setState({\r\n ...state,\r\n [name]: event.target.value,\r\n });\r\n props.onChange(event.target.value);\r\n };\r\n\r\n return (\r\n \r\n bitrate\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport \"../App.css\";\r\nimport { StyledDropzone } from \"./dragAndDrop\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport CardContent from \"@material-ui/core/CardContent\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\r\nimport { CustomizedSlider } from \"./slider\";\r\nimport LinearProgress from \"@material-ui/core/LinearProgress\";\r\nimport Box from \"@material-ui/core/Box\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Link from \"@material-ui/core/Link\";\r\nimport ReactGA from \"react-ga\";\r\nimport { AdvancedOptions } from \"./advancedOptions\";\r\nimport { SelectBitrate } from \"./dropDown\";\r\n\r\nvar download = require(\"downloadjs\");\r\n\r\nlet formData = new FormData();\r\n\r\nlet eventNum = 1;\r\n\r\nvar speed;\r\nvar reverb;\r\nvar songName;\r\n\r\nlet donateButton = (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nclass FrontPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n speedMessage: \"Slow it down some\",\r\n reverbMessage: \"None\",\r\n speed: 1,\r\n reverb: 0,\r\n hF: 50,\r\n roomScale: 100,\r\n stereoDepth: 100,\r\n preDelay: 0,\r\n wetGain: 0,\r\n bitrate: 128,\r\n reverbChecked: false,\r\n file: undefined,\r\n blob: undefined,\r\n blobUrl: undefined,\r\n inProgress: false,\r\n showControls: true,\r\n };\r\n this.sendFileToServer = this.sendFileToServer.bind(this);\r\n this.reverbCheckbox = this.reverbCheckbox.bind(this);\r\n this.handleSpeedSliderChange = this.handleSpeedSliderChange.bind(this);\r\n this.handleReverbSliderChange = this.handleReverbSliderChange.bind(this);\r\n this.setDropzoneFile = this.setDropzoneFile.bind(this);\r\n this.handleHFChange = this.handleHFChange.bind(this);\r\n this.handleRoomScaleChange = this.handleRoomScaleChange.bind(this);\r\n this.handleStereoDepthChange = this.handleStereoDepthChange.bind(this);\r\n this.handlePreDelayChange = this.handlePreDelayChange.bind(this);\r\n this.handleWetGainChange = this.handleWetGainChange.bind(this);\r\n this.handleDropdownChange = this.handleDropdownChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n // Set up Google Analytics\r\n ReactGA.initialize(\"UA-166259701-1\");\r\n ReactGA.pageview(\"/\");\r\n }\r\n\r\n reverbCheckbox() {\r\n const [checked, setChecked] = React.useState(false);\r\n const handleChange = (event) => {\r\n setChecked(event.target.checked);\r\n this.setState({ reverbChecked: !checked });\r\n };\r\n\r\n return (\r\n \r\n }\r\n label=\"Advanced Options\"\r\n />\r\n );\r\n }\r\n\r\n // Sends HTTP request for drag and dropped file\r\n sendFileToServer = async () => {\r\n // add file and options to form data\r\n formData.append(\"song\", this.state.file);\r\n formData.append(\"speed\", this.state.speed);\r\n formData.append(\"reverb\", this.state.reverb);\r\n formData.append(\"advancedChecked\", this.state.reverbChecked);\r\n formData.append(\"hFDamping\", this.state.hF);\r\n console.log(this.state.roomScale);\r\n formData.append(\"roomScale\", this.state.roomScale);\r\n formData.append(\"stereoDepth\", this.state.stereoDepth);\r\n formData.append(\"preDelay\", this.state.preDelay);\r\n formData.append(\"wetGain\", this.state.wetGain);\r\n formData.append(\"bitrate\", this.state.bitrate);\r\n formData.append(\"fileType\", this.state.file.type);\r\n\r\n // Save event\r\n ReactGA.event({\r\n category: \"Slow Button\",\r\n action: `Song: ${this.state.file.path} Speed: ${this.state.speed} Reverb: ${this.state.reverb} Advanced: ${this.state.reverbChecked}`,\r\n value: eventNum,\r\n });\r\n eventNum++;\r\n\r\n this.setState({ inProgress: true });\r\n const res = await fetch(\"/upload-song\", {\r\n method: \"POST\",\r\n body: formData,\r\n });\r\n this.setState({ inProgress: false });\r\n if (res.status === 200) {\r\n speed = this.state.speed;\r\n reverb = this.state.reverb;\r\n songName = this.state.file.path;\r\n const blob = await res.blob();\r\n this.setState({ blob: blob });\r\n this.setState({ blobUrl: URL.createObjectURL(blob) });\r\n this.setState({ showControls: false });\r\n formData = new FormData();\r\n } else {\r\n let body = await res.json();\r\n alert(body.message);\r\n formData = new FormData();\r\n }\r\n };\r\n\r\n handleSpeedSliderChange(value) {\r\n this.setState({ speed: value });\r\n if (value >= 0.93) {\r\n this.setState({ speedMessage: \"Slow it down some\" });\r\n } else if (value >= 0.8) {\r\n this.setState({ speedMessage: \"Recommended\" });\r\n } else {\r\n this.setState({ speedMessage: \"Hypnotizing\" });\r\n }\r\n }\r\n\r\n handleReverbSliderChange(value) {\r\n this.setState({ reverb: value });\r\n if (value >= 100) {\r\n this.setState({ reverbMessage: \"Max\" });\r\n } else if (value >= 70) {\r\n this.setState({ reverbMessage: \"A lot\" });\r\n } else if (value >= 40) {\r\n this.setState({ reverbMessage: \"Recommended\" });\r\n } else if (value >= 1) {\r\n this.setState({ reverbMessage: \"A Little\" });\r\n } else {\r\n this.setState({ reverbMessage: \"None\" });\r\n }\r\n }\r\n\r\n setDropzoneFile(file) {\r\n this.setState({ file: file });\r\n }\r\n\r\n // handle bitrate drop down\r\n handleDropdownChange(value) {\r\n this.setState({ bitrate: value });\r\n }\r\n\r\n // advanced options slider callbacks\r\n handleHFChange(value) {\r\n this.setState({ hF: value });\r\n }\r\n handleRoomScaleChange(value) {\r\n this.setState({ roomScale: value });\r\n }\r\n handleStereoDepthChange(value) {\r\n this.setState({ stereoDepth: value });\r\n }\r\n handlePreDelayChange(value) {\r\n this.setState({ preDelay: value });\r\n }\r\n handleWetGainChange(value) {\r\n this.setState({ wetGain: value });\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n
\r\n
\r\n {/* Ezoic - sidebar - sidebar */}\r\n
\r\n {/* End Ezoic - sidebar - sidebar */}\r\n {/* Ezoic - sidebar_bottom - sidebar_bottom */}\r\n
\r\n {/* End Ezoic - sidebar_bottom - sidebar_bottom */}\r\n\r\n
\r\n\r\n
\r\n {/* Ezoic - top_of_page - top_of_page */}\r\n
\r\n {/* End Ezoic - top_of_page - top_of_page */}\r\n
\r\n \r\n Slow + Reverb Generator\r\n \r\n
\r\n \r\n Add high quality Slow + Reverb effects to any song, and try it out\r\n before downloading\r\n \r\n {/* Ezoic - under_page_title - under_page_title */}\r\n
\r\n {/* End Ezoic - under_page_title - under_page_title */}\r\n
\r\n \r\n
\r\n {/* Ezoic - under_first_paragraph - under_first_paragraph */}\r\n
\r\n {/* End Ezoic - under_first_paragraph - under_first_paragraph */}\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Speed: {this.state.speed * 100}%\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {this.state.speedMessage}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Reverb: {this.state.reverb}%\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {this.state.reverbMessage}\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {this.state.reverbChecked && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n this.sendFileToServer()}\r\n >\r\n Slow it Down\r\n \r\n \r\n
\r\n
\r\n {this.state.blob && (\r\n <>\r\n \r\n
\r\n \r\n \r\n download(\r\n this.state.blob,\r\n \"Slowed \" + this.state.file.path\r\n )\r\n }\r\n >\r\n Download\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n Help me cover server costs so I can keep the site up\r\n \r\n
{donateButton}
\r\n
\r\n \r\n
\r\n {this.state.inProgress && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n \r\n Add song to your \r\n \r\n Spotify\r\n \r\n  or \r\n \r\n Apple Music\r\n \r\n \r\n
\r\n {this.state.blob && (\r\n <>\r\n
\r\n \r\n {songName}\r\n \r\n
\r\n
\r\n \r\n Speed: {speed * 100}% Reverb: {reverb}%\r\n \r\n
\r\n {/* Ezoic - bottom_of_page - bottom_of_page */}\r\n
\r\n {/* End Ezoic - bottom_of_page - bottom_of_page */}\r\n \r\n )}\r\n
\r\n
\r\n {/* Ezoic - sidebar_middle - sidebar_middle */}\r\n
\r\n {/* End Ezoic - sidebar_middle - sidebar_middle */}\r\n {/* Ezoic - sidebar_floating_1 - sidebar_floating_1 */}\r\n
\r\n {/* End Ezoic - sidebar_floating_1 - sidebar_floating_1 */}\r\n
\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FrontPage;\r\n","import React from \"react\";\nimport \"./App.css\";\nimport Button from \"@material-ui/core/Button\";\n\nimport FrontPage from \"./ui/frontpage\";\n\nconst backgroundImages = [\n \"https://cdnb.artstation.com/p/assets/images/images/014/665/033/original/yargon-kerman-webp-net-gifmaker-39.gif?1544919451\",\n \"https://thumbs.gfycat.com/TeemingCleanBellsnake-size_restricted.gif\",\n \"https://cdn140.picsart.com/309995500237201.gif?to=min&r=1024\",\n \"https://i.pinimg.com/originals/ae/0d/3d/ae0d3d761ef0df692bf0b98b1ac35ca2.gif\",\n \"https://media.giphy.com/media/tVwYkNyossifS/giphy.gif\",\n \"https://66.media.tumblr.com/0508d47b68152c95ffdfbf862ab6a887/tumblr_pk86geOgIX1rhk4rn_540.gif\",\n \"https://24.media.tumblr.com/62e106b03d4c0c009494e6dac50716fe/tumblr_mvspw99lHS1sul5vzo1_500.gif\",\n \"https://data.whicdn.com/images/316698273/original.gif\",\n \"https://66.media.tumblr.com/dfc796e8192bfde5864b6611daa568bf/tumblr_osev3lVly21qaaytso2_500.gifv\",\n \"https://media1.giphy.com/media/k7NJ5Yf81LxSg/source.gif\",\n \"https://media3.giphy.com/media/10YNiJcgMZZUly/source.gif\",\n \"https://i.pinimg.com/originals/f6/21/b6/f621b606f99a3abec1c4f07e2532aba0.gif\",\n \"https://media.giphy.com/media/10CDnY301bkUb6/giphy.gif\",\n \"https://66.media.tumblr.com/b1e8563fe4af770e856427e9d5caeacc/tumblr_olris8r38g1w05w8zo1_400.gifv\",\n \"https://media1.tenor.com/images/64e0334d77b0976b808147bd160b8534/tenor.gif?itemid=12379724\",\n \"https://i.pinimg.com/originals/29/90/54/29905476b7a794ab136d34edfe279318.gif\",\n \"https://media0.giphy.com/media/GK8yc7ueaCB32/source.gif\",\n \"https://i.pinimg.com/originals/ae/c9/7d/aec97db7a3fc771a5155d98fc96e7a3b.gif\",\n \"https://66.media.tumblr.com/891cad00332405f986fb8bbcb1fa0456/tumblr_pqkoiuhAVM1vk9tw4_540.gif\",\n \"https://i.pinimg.com/originals/6e/13/80/6e138032944a57d65ca997887c9c6717.gif\",\n \"https://66.media.tumblr.com/72e6aa414f2797e0cd6080ac26fd85bb/tumblr_pcsvexSuDs1x0j068o1_400.gifv\",\n \"https://78.media.tumblr.com/9e52d32dacd35cea3c53d0a340935ef2/tumblr_otgmitCHhk1viiyyio1_500.gif\",\n \"https://i.pinimg.com/originals/d3/5a/4c/d35a4c8bfe826e69fff9b668e23df31e.gif\",\n \"https://media3.giphy.com/media/1ojbJNlEYHdHW/source.gif\",\n \"https://media2.giphy.com/media/z7hasBhVc2Og8/source.gif\",\n \"https://media.giphy.com/media/rX0VO4YJcrjqw/giphy.gif\",\n \"https://media.giphy.com/media/DBWfOnlvqhElw4ONPi/giphy.gif\",\n \"https://media0.giphy.com/media/4Z3ViBtgYKHhG50kO9/giphy.gif\",\n \"https://media.giphy.com/media/b29IZK1dP4aWs/giphy.gif\",\n \"https://i.pinimg.com/originals/35/53/16/3553165251286a865a2de425261c1a45.gif\",\n \"https://media1.giphy.com/media/cPQC8FMOiILlK/source.gif\",\n \"https://i.pinimg.com/originals/5f/49/ac/5f49ac12c3164c3bf7385cd2a2bb80d1.gif\",\n \"https://data.whicdn.com/images/331719619/original.gif\",\n \"https://i.pinimg.com/originals/bc/71/a5/bc71a530c3e62a4a19d1df1b73f8b13d.gif\",\n \"https://giffiles.alphacoders.com/907/90728.gif\",\n \"https://i.pinimg.com/originals/bb/57/27/bb5727b7dc3493b86e6140906c58ddf5.gif\",\n \"https://thumbs.gfycat.com/UnequaledRemarkableIriomotecat-small.gif\",\n \"https://cdn0.tnwcdn.com/wp-content/blogs.dir/1/files/2015/07/tumblr_nmvrs6ubl71qze3hdo1_r1_500.gif\",\n \"https://thumbs.gfycat.com/ImpossibleFrightenedAmericancrow-size_restricted.gif\",\n];\nvar backgroundIndex = 0;\n\nclass App extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n background: backgroundImages[0],\n };\n this.handleClick = this.handleClick.bind(this);\n }\n\n // Fetches our GET route from the Express server. (Note the route we are fetching matches the GET route from server.js\n callBackendAPI = async () => {\n const response = await fetch(\"/express_backend\");\n const body = await response.json();\n\n if (response.status !== 200) {\n throw Error(body.message);\n }\n return body;\n };\n\n handleClick() {\n if (backgroundIndex >= backgroundImages.length - 1) {\n backgroundIndex = 0;\n } else {\n backgroundIndex++;\n }\n this.setState({\n background: backgroundImages[backgroundIndex],\n });\n console.log(this.state.background);\n }\n\n render() {\n document.title = \"Slow + Reverb Generator\";\n return (\n <>\n \n \n Change Background Gif\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.0/8 are 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 headers: { 'Service-Worker': 'script' },\n })\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\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\n\nReactDOM.render(\n \n \n ,\n document.getElementById(\"root\")\n);\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":""}