CINXE.COM
Today, Explained
<!DOCTYPE html> <html> <head> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'> <meta content='width=device-width, initial-scale=1.0' name='viewport'> <meta content='noindex' name='robots'> <title>Today, Explained</title> <meta name="description" content="Today, Explained聽is Vox's daily news explainer podcast. Hosts聽Sean Rameswaram聽and聽Noel King聽will guide you through the most important stories of the day. Part of the Vox Media Podcast Network."> <meta property="og:title" content="Today, Explained"> <meta property="og:description" content="Today, Explained聽is Vox's daily news explainer podcast. Hosts聽Sean Rameswaram聽and聽Noel King聽will guide you through the most important stories of the day. Part of the Vox Media Podcast Network."> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@ChartableDotCom"> <meta name="twitter:title" content="Today, Explained"> <meta name="twitter:description" content="Today, Explained聽is Vox's daily news explainer podcast. Hosts聽Sean Rameswaram聽and聽Noel King聽will guide you through the most important stories of the day. Part of the Vox Media Podcast Network."> <link rel="shortcut icon" type="image/x-icon" href="/assets/chartable-favicon-147fa2a780e77ea3bc97719e343e8d733b2e8487f7c8a78b3d496aae5555dd05.png" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="0qUC7Bot57OogKDQVXCK3RXMLwkW2SBuiQ/w2gKxzSYx9ijBQ4nIn/fwgrKenUX4fkh9Iysf2IMmgdbhTkfwpg==" /> <link rel="stylesheet" media="all" href="/assets/application-e6e1be4b0c45d8370f449baa0ce082ab5ebb54dca77b6f98a462fff73a0e4037.css" /> <link href='https://fonts.gstatic.com' rel='preconnect'> <script src="/assets/application-e14f81bc94951128bb2d2dc4f233fd48cdc83e337ef2a6de694aeb11401a7c70.js"></script> <link href='//cdnjs.cloudflare.com/ajax/libs/tachyons/4.11.1/tachyons.min.css' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Cabin:500|Open+Sans&display=swap' rel='stylesheet'><link href='https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap' rel='stylesheet'><script src='https://unpkg.com/axios@1.0.0/dist/axios.min.js'></script> </head> <body style='background: #FFFFFF'> <div class='w-100 flex justify-center' style='background: #FFFFFF'> <div class='content-container inline-flex w7' style='gap: 2rem;'> <div> <img class="br4 cover-art" src="https://megaphone.imgix.net/podcasts/23d52a2a-1c5f-11ea-9a0e-b70170f2a827/image/uploads_2F1588357113366-jjsdfzx6x4m-c0339c10f9b113a5fcc93436e66e5ef4_2FTodayExplained+V2_Tile_3000x3000+_281_29.png?ixlib=rails-4.3.1&max-w=3000&max-h=3000&fit=crop&auto=format,compress" /> <div class='tc h2 mb2 current-episode-title ph2 mt4 f3 b' style='color: #333333; width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis'> - </div> <div class='webview-audio-player-controls'> <div class='mt3 relative'> <div class='progress-bar pointer'> <div class='w-100 bg-moon-gray br3 o-50' style='height: 6px'></div> <div class='percent-complete pointer absolute top-0 br3 bg-dark-gray' style='height: 6px;'></div> </div> <div class='flex justify-between w-100 mt2'> <div class='f6 current-time' style='color: #333333'> 0:00 </div> <div class='f6 total-duration' style='color: #333333'> -:-- </div> </div> </div> <div class='flex flex-row items-center mt2 justify-around'> <img class="dim pointer skip-back" style="height: 2.75rem; width: 2.75rem;" src="/assets/back15-dark-b158f49dddc83bc68d2c14ab3d7b42385c6daa4b734144f47713fe9448e8d454.svg" /> <img class="dim pointer play-pause-button" style="height: 3rem; width: 3rem" src="/assets/play-dark-56667b8f98046775503abb0472cd646104248c49d9dd4d8ab6389d63b8faadca.svg" /> <img class="dim pointer skip-forward" style="height: 2.75rem; width: 2.75rem;" src="/assets/forward30-dark-8b3e55d318fbad3cdb2985e11b65e725b1613b4fb73bf81bc142d7411968667d.svg" /> </div> </div> <audio id='player' preload='none'></audio> </div> <div class='w-100' style='flex: 1'> <div class='fw-700 lh-title title ph4' style='color: #333333; font-family: Inter, sans-serif;'>Today, Explained</div> <div class='content flex'> <div class='pt4 links'> <div class='f6 fw-700 o-80 lh-title mb3 tl-ns ph4 ttu tracked link-header' style='color: #333333; font-family: Inter'>Listen now on</div> <div class='flex flex-wrap player-list'> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=itunes'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/itunes-73427b4e2f5057e639ad354810c97669b18463e9fef23d6a96e6b0760d853069.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Apple Podcasts </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=spotify'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/spotify-ec5bca5b8fbca78b5b0acb04314c079a40240c9b57370518f83ac1e56302c933.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Spotify </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=google_podcasts'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/google_podcasts-73950d24121a87af14f1dafd8e89dd61ba0ded991e0b9d4807a9a135b70b0548.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Google Podcasts </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=overcast'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/overcast-a72bc55e75006c4efbd9bc3562f3891a896c93373c671e8f2f72f0a76215837e.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Overcast </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=castbox'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/castbox-92db9a5111905ddce5a40cc77185ec56f2acb50b623cb0e8dd91131c725c908f.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Castbox </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=pocket_casts'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/pocket_casts-a6bbed9f96f0781fec812463802e5a727d13a73dd216d3452dfeb97f0709ca0b.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Pocket Casts </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=radio_public'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/radio_public-d9fd5d9abdea96007143dece5fd1153c9a445d2995a06025e238d4a1558c520b.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> RadioPublic </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=breaker'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/breaker-79c73c4e126f43f554361a74ebf12fd6889f6ef98681fea3cba9164f354e66a2.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> Breaker </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> <a class='no-underline player-list-item flex flex-row items-center' href='https://link.chtbl.com/todayexplainedpod?id=todayexplainedpod&platform=rss'> <div class='relative flex items-center justify-center' style='height: 60px; width: 60px; padding: 4px;'> <div class='br4 absolute bg-white top-0 right-0 left-0 bottom-0' style='opacity: 0.15;'></div> <img class="relative grow-large" src="/assets/rss-5d61fa90548266c6296cb95aa758ef418ccf45deb59d2610a7d52cb4b4835c4f.svg" /> </div> <div class='hidden-player-content flex-row items-center justify-between ml3' style='flex: 1; font-family: Inter'> <div class='dark-gray o-80 fw-600'> RSS feed </div> <div class='ph3 pv2 br2 ba fw-700' style='border-color: #282828'> <div class='mid-gray o-80'>Play</div> </div> </div> </a> </div> </div> <div class='mt4 ph4'> <div class='lh-copy mb4 w-100' style='color: #333333; font-weight: 400; font-family: Inter, sans-serif;'> <span class='description'> Today, Explained聽is Vox's daily news explainer podcast. Hosts聽Sean Rameswaram聽and聽Noel King聽will guide you through the most important stories of the day. Part of the Vox Media Podcast Network. </span> <span class='link pointer dn no-underline text-button o-70' style='color: #333333'>Show more</span> <div class='mt5 f6 fw-700 o-80 lh-title tl-ns ttu tracked link-header web' style='color: #333333; font-family: Inter'>Episodes</div> <div class='episode-feed-container web' style='color: #333333'></div> </div> </div> </div> </div> </div> </div> <div class='f7 tc w-100 o-70 mt5 out-links pb5' style='color: #333333'> <div class='pb4'> Powered by <a class="link underline" style="color: inherit" href="https://chartable.com/smartlinks?utm_source=smartlink">Chartable SmartLinks</a> · <a class="link" style="color: inherit" href="https://chartable.com/privacy?utm_source=smartlink">Privacy & Terms</a> </div> </div> <div class='w-100 fixed bottom-0 mobile-player'> <div class='maximized-content' style='display: none;'> <div class='w-100 flex justify-center pt2 pointer minimize-button' style='height: 60px'> <div class='bg-moon-gray w2 br3' style='width: 40px; height: 5px'></div> </div> <div class='h-100 w-100 center tc' style='max-width: 550px'> <img class="w-70 br4" style="max-width: 270px; box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px;" src="https://megaphone.imgix.net/podcasts/23d52a2a-1c5f-11ea-9a0e-b70170f2a827/image/uploads_2F1588357113366-jjsdfzx6x4m-c0339c10f9b113a5fcc93436e66e5ef4_2FTodayExplained+V2_Tile_3000x3000+_281_29.png?ixlib=rails-4.3.1&max-w=3000&max-h=3000&fit=crop&auto=format,compress" /> <p class='ph4 mt4 f3 b dark-gray current-episode-title-2' style='width: 100%; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-family: Inter;'> </p> <div class='mobile-audio-player-controls ph4'> <div class='mt3 relative'> <div class='progress-bar-2 pointer'> <div class='w-100 bg-moon-gray br3 o-50' style='height: 6px'></div> <div class='percent-complete-2 bg-dark-gray pointer absolute top-0 br3' style='height: 6px;'></div> </div> <div class='flex justify-between w-100 mt2'> <div class='f6 current-time-2 dark-gray'> 0:00 </div> <div class='f6 total-duration-2 dark-gray'> </div> </div> </div> <div class='flex flex-row items-center justify-around w-60 center mt2'> <img class="dim pointer skip-back-2" style="height: 2.75rem; width: 2.75rem;" src="/assets/back15-dark-b158f49dddc83bc68d2c14ab3d7b42385c6daa4b734144f47713fe9448e8d454.svg" /> <img class="dim pointer play-pause-button-3" style="height: 2.85rem; width: 2.75rem" src="/assets/play-dark-56667b8f98046775503abb0472cd646104248c49d9dd4d8ab6389d63b8faadca.svg" /> <img class="dim pointer skip-forward-2" style="height: 2.75rem; width: 2.75rem;" src="/assets/forward30-dark-8b3e55d318fbad3cdb2985e11b65e725b1613b4fb73bf81bc142d7411968667d.svg" /> </div> <div class='description-container mt5'> <div class='f5 fw-700 o-80 lh-title mb2 tl-ns ttu tracked link-header dark-gray' style='font-family: Inter'> Description </div> <div class='f6 mid-gray tl lh-copy current-episode-description' style='font-family: Inter'> - </div> </div> <div class='mt5 f6 fw-700 o-80 lh-title tl-ns ttu tracked link-header mobile dark-gray' style='font-family: Inter'>Episodes</div> <div class='episode-feed-container mobile' style='color: #333; font-family: Inter;'></div> </div> </div> </div> <div class='pointer minimized-content relative' style='height: 55px;'> <div class='flex flex-row justify-between w-100 fade-display items-center blurred-content'> <div class='w3 pa2'> <img class="" style="width: 100%;" src="https://megaphone.imgix.net/podcasts/23d52a2a-1c5f-11ea-9a0e-b70170f2a827/image/uploads_2F1588357113366-jjsdfzx6x4m-c0339c10f9b113a5fcc93436e66e5ef4_2FTodayExplained+V2_Tile_3000x3000+_281_29.png?ixlib=rails-4.3.1&max-w=3000&max-h=3000&fit=crop&auto=format,compress" /> </div> <div class='w-100 f5 dark-gray current-episode-title-3' style='flex: 1; text-overflow: ellipsis; font-family: Inter; overflow: hidden; white-space: nowrap;'> </div> <img class="dim ph2 pv2 pointer play-pause-button-2" style="height: 1.5rem; width: 1.5rem;" src="/assets/play-dark-56667b8f98046775503abb0472cd646104248c49d9dd4d8ab6389d63b8faadca.svg" /> <img class="dim ph2 pv2 pointer skip-forward-3" style="height: 1.8rem; width: 1.8rem;" src="/assets/forward30-dark-8b3e55d318fbad3cdb2985e11b65e725b1613b4fb73bf81bc142d7411968667d.svg" /> </div> <div class='absolute top-0 bottom-0 left-0 right-0 o-40 bg-white' style='z-index: -1;'></div> <div class='maximize-button absolute left-0 bottom-0 top-0' style='width: calc(100% - 5.5rem);'></div> </div> </div> <noscript> <a href="">Click here if you are not automatically redirected</a> </noscript> </body> <script> var mobilePlayerIsShowing = false; let loadingIndicator = document.createElement("div"); loadingIndicator.classList = "lds-ellipsis"; for (let i = 0; i < 4; i++) { loadingIndicator.appendChild(document.createElement("div")); } let playDarkImagePath = "/assets/play-dark-56667b8f98046775503abb0472cd646104248c49d9dd4d8ab6389d63b8faadca.svg"; let playLightImagePath = "/assets/play-light-44e957ca417b16db805a9b7a569bf6a9baf0864fda92660c48999eadb06a21b7.svg"; let pauseDarkImagePath = "/assets/pause-dark-2b02da7a704af33108488e4b734d012a19b77f0bf542639284667225e353e59c.svg"; let pauseLightImagePath = "/assets/pause-light-5f6c22366e0556614d5ba30a0531b92b569fd9b8bd83146c384ff77c81c55855.svg"; let lightMode = true; if (!lightMode) { loadingIndicator.classList += " dark-mode"; } // MARKER - Description Text toggle let descriptionTextLimit = 150; let description = document.querySelector('.description'); let descriptionText = description.innerText; let button = document.querySelector('.text-button'); var textIsHidden = true; function hideDescription() { let truncatedText = descriptionText.substr(0, descriptionTextLimit) + '...'; description.innerText = truncatedText; } function toggleText() { if (textIsHidden) { button.innerHTML = 'Show Less'; description.innerText = descriptionText; } else { button.innerHTML = 'Show More'; hideDescription(); } textIsHidden = !textIsHidden; } if (descriptionText.length > descriptionTextLimit) { button.style.display = "inline"; button.addEventListener('click', toggleText); hideDescription(); } let player = document.getElementById('player'); let聽source = document.getElementById('source'); // MARKER - Audio controls var playPauseButton = document.querySelector('.play-pause-button'); var playPauseButton2 = document.querySelector('.play-pause-button-2'); var playPauseButton3 = document.querySelector('.play-pause-button-3'); var isPlaying = false; function togglePlayPause() { if (!currentEpisode) { return; } if (isPlaying) { player.pause(); playPauseButton.src = lightMode ? playDarkImagePath : playLightImagePath; playPauseButton2.src = playDarkImagePath; playPauseButton3.src = playDarkImagePath; } else { player.play(); playPauseButton.src = lightMode ? pauseDarkImagePath : pauseLightImagePath; playPauseButton2.src = pauseDarkImagePath; playPauseButton3.src = pauseDarkImagePath; } isPlaying = !isPlaying; renderEpisodeFeed(); } // MARKER - Audio time management let totalDuration = document.querySelector('.total-duration'); let currentTime = document.querySelector('.current-time'); let totalDuration2 = document.querySelector('.total-duration-2'); let currentTime2 = document.querySelector('.current-time-2'); let percentComplete = document.querySelector('.percent-complete'); let percentComplete2 = document.querySelector('.percent-complete-2'); let progressBar = document.querySelector('.progress-bar'); let progressBar2 = document.querySelector('.progress-bar-2'); let skipBack = document.querySelector('.skip-back'); let skipBack2 = document.querySelector('.skip-back-2'); let skipForward = document.querySelector('.skip-forward'); let skipForward2 = document.querySelector('.skip-forward-2'); let skipForward3 = document.querySelector('.skip-forward-3'); function secondsToHHMMSS(s) { var h = Math.floor(s / 3600); var m = Math.floor(s % 3600 / 60); var s = Math.floor(s % 3600 % 60); var hours = h > 0 ? `${h}:` : ""; var minutes = h > 0 && m > 9 ? `0${m}` : `${m}`; var seconds = s > 9 ? `${s}` : `0${s}`; return `${hours}${minutes}:${seconds}`; } function percentAudioComplete(curr) { return (curr / player.duration) * 100; } function onTimeUpdate(e) { curr = player.currentTime; currentTime.innerHTML = secondsToHHMMSS(curr); currentTime2.innerHTML = secondsToHHMMSS(curr); percentComplete.style.width = `${percentAudioComplete(curr)}%`; percentComplete2.style.width = `${percentAudioComplete(curr)}%`; } function seek(e) { var percent = e.offsetX / this.offsetWidth; var time = percent * player.duration; currentTime.innerHTML = secondsToHHMMSS(time); currentTime2.innerHTML = secondsToHHMMSS(time); percentComplete.style.width = `${percent * 100}%`; percentComplete2.style.width = `${percent * 100}%`; player.currentTime = time; } function handleSkipBack() { player.currentTime -= 15; } function handleSkipForward() { player.currentTime += 30; } // MARKER - Bottom player let mobilePlayer = document.querySelector('.mobile-player'); let minimizedContent = document.querySelector('.minimized-content'); let maximizedContent = document.querySelector('.maximized-content'); let maximizeButton = document.querySelector('.maximize-button'); let minimizeButton = document.querySelector('.minimize-button'); function showMobilePlayer() { mobilePlayerIsShowing = true; mobilePlayer.classList.add("maximized"); minimizedContent.classList.add("maximized"); maximizedContent.style.display = "block"; document.querySelector('body').style.overflow = "hidden"; renderEpisodeFeed(); loadingIndicator.classList.remove("dark-mode"); } function hideMobilePlayer() { mobilePlayerIsShowing = false; mobilePlayer.classList.remove("maximized"); minimizedContent.classList.remove("maximized"); maximizedContent.style.display = "none"; document.querySelector('body').style.overflow = "auto"; if (!lightMode) { loadingIndicator.classList += " dark-mode"; } } // Setting Episode var currentEpisode = null; if (JSON.stringify({"cid":"cb20e595-47b9-442a-8eec-a6c3b0c03560","id":197841614,"title":"Breaking up with your parents","description":"Writer Emi Nietfeld says she felt relief when she cut her mom out of her life. Clinical psychologist Joshua Coleman explains why family estrangement is on the rise.\nThis episode was produced by Victoria Chamberlin, edited by Matt Collette and Miranda Kennedy, engineered by Rob Byers and Andrea Kristinsdottir, fact checked by Laura Bullard, and hosted by Sean Rameswaram.\nTranscript at vox.com/today-explained-podcast\nSupport Today, Explained by becoming a Vox Member today: http://www.vox.com/members\nA 1970's 3-generation family turkey dinner. Photo by H. Armstrong Roberts/ClassicStock/Getty Images.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices","url":"https://www.podtrac.com/pts/redirect.mp3/pdst.fm/e/chrt.fm/track/524GE/traffic.megaphone.fm/VMP6363425276.mp3?updated=1732300923","published_at":"2024-11-22T19:00:00.000Z"}) !== JSON.stringify({})) { currentEpisode = {"cid":"cb20e595-47b9-442a-8eec-a6c3b0c03560","id":197841614,"title":"Breaking up with your parents","description":"Writer Emi Nietfeld says she felt relief when she cut her mom out of her life. Clinical psychologist Joshua Coleman explains why family estrangement is on the rise.\nThis episode was produced by Victoria Chamberlin, edited by Matt Collette and Miranda Kennedy, engineered by Rob Byers and Andrea Kristinsdottir, fact checked by Laura Bullard, and hosted by Sean Rameswaram.\nTranscript at vox.com/today-explained-podcast\nSupport Today, Explained by becoming a Vox Member today: http://www.vox.com/members\nA 1970's 3-generation family turkey dinner. Photo by H. Armstrong Roberts/ClassicStock/Getty Images.\nLearn more about your ad choices. Visit podcastchoices.com/adchoices","url":"https://www.podtrac.com/pts/redirect.mp3/pdst.fm/e/chrt.fm/track/524GE/traffic.megaphone.fm/VMP6363425276.mp3?updated=1732300923","published_at":"2024-11-22T19:00:00.000Z"}; } let currentEpisodeTitleLabel = document.querySelector('.current-episode-title'); let currentEpisodeTitleLabel2 = document.querySelector('.current-episode-title-2'); let currentEpisodeTitleLabel3 = document.querySelector('.current-episode-title-3'); let currentEpisodeDescriptionLabel = document.querySelector('.current-episode-description'); let descriptionContainer = document.querySelector('.description-container'); function setEpisode(newEpisode) { if (newEpisode) { currentEpisodeTitleLabel.innerText = newEpisode.title; currentEpisodeTitleLabel2.innerText = newEpisode.title; currentEpisodeTitleLabel3.innerText = newEpisode.title; if (newEpisode.description) { descriptionContainer.style.display = "block"; currentEpisodeDescriptionLabel.innerText = newEpisode.description; } else { descriptionContainer.style.display = "none"; } player.src = encodeURI(newEpisode.url); currentEpisode = newEpisode; } } // MARK - Episode feed var loadMoreButton = document.createElement("div"); loadMoreButton.classList = `br2 pa2 f5 ba tc pointer dim mw4 mt4 center ${lightMode ? 'b--dark-gray' : 'bg--white'}`; loadMoreButton.addEventListener('click', getEpisodes); var mobileLoadMoreButton = document.createElement("div"); mobileLoadMoreButton.classList = "br2 pa2 f5 ba tc pointer dim mw4 mt4 center b--dark-gray" mobileLoadMoreButton.addEventListener('click', getEpisodes); var episodeFeedContainer = document.querySelector('.episode-feed-container.web'); var mobileEpisodeFeedContainer = document.querySelector('.episode-feed-container.mobile'); var page = 1; var episodes = []; var requestInProgress = false; function handleEpisodeFeedShowMoreClick(i) { episodes[i].expanded = !episodes[i].expanded; renderEpisodeFeed(); } function handleEpisodeFeedPlayClick(i) { if (!!currentEpisode && currentEpisode.url === episodes[i].url) { togglePlayPause(); } else { currentTime.innerHTML = secondsToHHMMSS(0); currentTime2.innerHTML = secondsToHHMMSS(0); percentComplete.style.width = `${percentAudioComplete(0)}%`; percentComplete2.style.width = `${percentAudioComplete(0)}%`; setEpisode(episodes[i]); if (!isPlaying) { togglePlayPause(); } else { player.play(); renderEpisodeFeed(); } } } function generateEpisodeDiv(episode, index, isMobile) { if (!episode.url || !episode.title) { return null; } var episodeDiv = document.createElement("div"); episodeDiv.classList = "flex flex-row pv4 bb b--light-gray items-start"; let pauseImage = isMobile || lightMode ? pauseDarkImagePath : pauseLightImagePath; let playImage = isMobile || lightMode ? playDarkImagePath : playLightImagePath; var imageTag = document.createElement("img"); imageTag.src = !!currentEpisode && episode.url === currentEpisode.url && isPlaying ? pauseImage : playImage; imageTag.style.width = "1.5rem"; imageTag.classList = "mr3 pointer dim"; imageTag.addEventListener('click', function() { handleEpisodeFeedPlayClick(index); }); var titleDiv = document.createElement("div"); titleDiv.classList = "f5 b mb1 tl"; titleDiv.innerText = episode.title; var textContainerDiv = document.createElement("div"); var descriptionDiv = document.createElement("div"); var showMoreSpan = document.createElement("div"); if (episode.description) { descriptionDiv.classList = "f5 lh-copy tl"; descriptionDiv.innerText = !episode.expanded && episode.description.length > descriptionTextLimit ? episode.description.substr(0, descriptionTextLimit) + '...' : episode.description; showMoreSpan.classList = `${episode.description.length > descriptionTextLimit ? '' : 'dn'} tl no-underline text-button o-70 pointer mt1`; showMoreSpan.innerHTML = `Show ${episode.expanded ? 'less' : 'more'}`; showMoreSpan.addEventListener("click", function() { handleEpisodeFeedShowMoreClick(index); }); } textContainerDiv.appendChild(titleDiv); textContainerDiv.appendChild(descriptionDiv); textContainerDiv.appendChild(showMoreSpan); episodeDiv.appendChild(imageTag); episodeDiv.appendChild(textContainerDiv); return episodeDiv; } function getEpisodes() { if (requestInProgress) { return; } requestInProgress = true; loadMoreButton.innerHTML = ""; loadMoreButton.appendChild(loadingIndicator); mobileLoadMoreButton.innerHTML = loadMoreButton.innerHTML; let host = "https://chartable.com"; axios(`${host}/api/episodes/feed?podcast_id=today-explained&page=${page}&token=ab5d92470d76c4d03776`) .then(res => { res.data.forEach(episode => { episode.expanded = false; episodes.push(episode); }); loadMoreButton.innerHTML = "Load more"; mobileLoadMoreButton.innerHTML = loadMoreButton.innerHTML page += 1; renderEpisodeFeed(); }) .catch(err => { loadMoreButton.innerHTML = "Retry" mobileLoadMoreButton.innerHTML = loadMoreButton.innerHTML }) .finally(() => requestInProgress = false); } function renderEpisodeFeed() { episodeFeedContainer.innerHTML = ''; mobileEpisodeFeedContainer.innerHTML = ''; for (let i = 0; i < episodes.length; i++) { let episodeDiv = generateEpisodeDiv(episodes[i], i, false); if (episodeDiv) { episodeFeedContainer.appendChild(episodeDiv); } if (mobilePlayerIsShowing && episodeDiv) { mobileEpisodeFeedContainer.appendChild(generateEpisodeDiv(episodes[i], i, true)); } } loadMoreButton.innerHTML = "Load more"; mobileLoadMoreButton.innerHTML = loadMoreButton.innerHTML; episodeFeedContainer.appendChild(loadMoreButton); mobileEpisodeFeedContainer.appendChild(mobileLoadMoreButton) } if (true) { minimizeButton.addEventListener("click", hideMobilePlayer); maximizeButton.addEventListener("click", showMobilePlayer); player.addEventListener('timeupdate', onTimeUpdate); progressBar.addEventListener("click", seek); progressBar2.addEventListener("click", seek); skipBack.addEventListener("click", handleSkipBack); skipBack2.addEventListener("click", handleSkipBack); skipForward.addEventListener("click", handleSkipForward); skipForward2.addEventListener("click", handleSkipForward); skipForward3.addEventListener("click", handleSkipForward); playPauseButton.addEventListener('click', togglePlayPause); playPauseButton2.addEventListener('click', togglePlayPause); playPauseButton3.addEventListener('click', togglePlayPause); player.onloadedmetadata = function() { let time = player.duration; totalDuration.innerHTML = secondsToHHMMSS(time); totalDuration2.innerHTML = secondsToHHMMSS(time); } if (currentEpisode) { setEpisode(currentEpisode); } episodeFeedContainer.classList += lightMode ? " dark-gray" : " white"; renderEpisodeFeed(); } getEpisodes(); </script> </html>