{"version":3,"sources":["components/episode.js","components/feed.js","components/social.js","components/splash.js","App.js","serviceWorker.js","index.js","assets/logo.jpeg"],"names":["EpisodeCard","props","setTrack","bind","this","url","className","onClick","title","Date","parse","date","toDateString","description","Component","Feed","state","items","currentTrack","autoplay","stickyPlayer","episodeFeedRef","React","createRef","loadRssFeed","then","length","setState","guid","window","addEventListener","e","boundingBox","current","getBoundingClientRect","y","Promise","resolve","reject","Parser","parseURL","now","err","feed","setTimeout","document","getElementsByTagName","play","episodes","i","forEach","item","push","pubDate","content","playing","key","ref","src","controls","SocialLinks","socialLinks","links","Splash","navigateToFeed","navigateToPage","style","maxWidth","height","width","padding","logo","alt","App","page","Boolean","location","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","error","console","message","module","exports"],"mappings":"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","file":"static/js/main.adda7feb.chunk.js","sourcesContent":["import React, { Component } from 'react';\r\n\r\nimport logo from '../assets/logo.jpeg';\r\n\r\nclass EpisodeCard extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.setTrack = this.setTrack.bind(this);\r\n\r\n }\r\n setTrack(){\r\n this.props.setTrack(this.props.url, true);\r\n }\r\n\r\n render() {\r\n return (\r\n
  • \r\n \r\n
  • \r\n )\r\n\r\n }\r\n}\r\nexport default EpisodeCard; ","\r\nimport EpisodeCard from './episode';\r\nimport ReactAudioPlayer from 'react-audio-player';\r\nimport React, { Component } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport Parser from 'rss-parser';\r\nimport { Row, Col } from 'react-bootstrap';\r\n\r\nimport logo from '../assets/logo.jpeg';\r\n\r\nclass Feed extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n items: [],\r\n currentTrack: \"\",\r\n autoplay: false,\r\n stickyPlayer:false,\r\n\r\n }\r\n this.setTrack = this.setTrack.bind(this);\r\n this.episodeFeedRef = React.createRef();\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.loadRssFeed().then(\r\n (items) => {\r\n let currentTrack = \"\"\r\n if (items.length > 0) {\r\n currentTrack = items[0]\r\n }\r\n this.setState({\r\n items: items,\r\n });\r\n this.setTrack(currentTrack.guid);\r\n }\r\n )\r\n\r\n\r\n window.addEventListener('scroll', (e) => {\r\n let boundingBox = this.episodeFeedRef.current.getBoundingClientRect(); //outputs

    coordinates\r\n if(this.state.stickyPlayer && boundingBox.y > 0){\r\n this.setState({stickyPlayer:false});\r\n }else if(!this.state.stickyPlayer && boundingBox.y < 0){\r\n this.setState({stickyPlayer:true});\r\n }\r\n });\r\n\r\n }\r\n\r\n loadRssFeed() {\r\n return new Promise((resolve, reject) => {\r\n let parser = new Parser();\r\n parser.parseURL('/feed.xml?' + Date.now(), (err, feed) => {\r\n resolve(feed.items);\r\n });\r\n })\r\n }\r\n\r\n setTrack(url, autoplay = false) {\r\n if(this.state.currentTrack !== \"\"){\r\n setTimeout(()=>{\r\n let audioPlayer = document.getElementsByTagName(\"AUDIO\")[0];\r\n audioPlayer.play();\r\n \r\n }, 500)\r\n }\r\n this.setState({\r\n currentTrack: url,\r\n autoplay: autoplay\r\n }) \r\n \r\n }\r\n\r\n render() {\r\n let episodes = []\r\n let i = 0;\r\n this.state.items.forEach((item) => {\r\n episodes.push()\r\n });\r\n\r\n let playerContainerClassname = ( \"sticky\" )\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n
      \r\n {episodes}\r\n
    \r\n
    \r\n )\r\n\r\n }\r\n}\r\nexport default Feed; ","\r\nimport React, { Component } from 'react';\r\nimport { SocialIcon } from 'react-social-icons';\r\n//\r\nclass SocialLinks extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n socialLinks: [\r\n \"https://open.spotify.com/show/0SXl1MguXWA5flAgvWb2in\",\r\n \"https://twitter.com/BluffDouble\",\r\n \"https://www.facebook.com/Double-Bluff-108169080922286\",\r\n \"https://www.instagram.com/doublebluffpod\"\r\n ],\r\n }\r\n\r\n }\r\n\r\n render() {\r\n let links = [];\r\n this.state.socialLinks.forEach((url) => {\r\n links.push(\r\n
    \r\n \r\n
    \r\n )\r\n });\r\n\r\n return (\r\n
    \r\n {links}\r\n
    \r\n )\r\n\r\n }\r\n}\r\nexport default SocialLinks; ","import React, { Component } from 'react';\r\nimport Feed from './feed';\r\nimport SocialLinks from './social';\r\n\r\nimport logo from '../assets/logo.jpeg';\r\n\r\nclass Splash extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.navigateToFeed = this.navigateToFeed.bind(this);\r\n }\r\n\r\n navigateToFeed() {\r\n this.props.navigateToPage(\"feed\");\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \"logo\"\r\n

    The comedy podcast where we teach a lot and lie a little

    \r\n

    Join us each week as Charissa or Renee teach the other everything about a topic — with just one complete and total lie

    \r\n \r\n \r\n
    \r\n )\r\n }\r\n}\r\nexport default Splash; ","import Splash from \"./components/splash\";\nimport Feed from \"./components/feed\";\n\nimport React, {Component} from 'react';\n\nimport './App.css';\n\nclass App extends Component {\n\n constructor(props){\n super(props);\n\n this.state = {\n page:\"home\"\n }\n\n this.navigateToPage = this.navigateToPage.bind(this);\n }\n\n navigateToPage(page){\n this.setState({page});\n }\n\n render(){\n let content = [];\n switch(this.state.page){\n case \"home\":\n content.push()\n break;\n case \"feed\":\n content.push();\n break;\n default:\n content.push()\n break;\n }\n\n\n return (\n
    \n {content}\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","module.exports = __webpack_public_path__ + \"static/media/logo.f3a60fc1.jpeg\";"],"sourceRoot":""}