{"version":3,"sources":["webpack://@podlove/player/webpack/runtime/chunk loaded","webpack://@podlove/player/webpack/runtime/load script","webpack://@podlove/player/../packages/player/sagas/index.js","webpack://@podlove/player/../packages/player/actions/runtime.js","webpack://@podlove/player/../packages/player/sagas/runtime.js","webpack://@podlove/player/../packages/player/actions/lifecycle.js","webpack://@podlove/player/../packages/utils/request.js","webpack://@podlove/player/../packages/player/sagas/helper.js","webpack://@podlove/player/../packages/player/sagas/lifecycle.js","webpack://@podlove/player/../packages/player/actions/error.js","webpack://@podlove/player/../packages/player/sagas/player.js","webpack://@podlove/player/../packages/player/actions/components.js","webpack://@podlove/player/../packages/player/sagas/components.js","webpack://@podlove/player/../packages/player/sagas/chapters.js","webpack://@podlove/player/../packages/player/actions/quantiles.js","webpack://@podlove/player/../packages/player/sagas/quantiles.js","webpack://@podlove/player/../packages/utils/search.js","webpack://@podlove/player/../packages/player/sagas/transcripts.js","webpack://@podlove/player/../packages/player/sagas/stepper.js","webpack://@podlove/player/../packages/player/sagas/error.js","webpack://@podlove/player/../packages/utils/keyboard.js","webpack://@podlove/player/../packages/player/actions/keyboard.js","webpack://@podlove/player/../packages/player/sagas/keyboard.js","webpack://@podlove/player/../packages/player/sagas/playlist.js","webpack://@podlove/player/../packages/player/sagas/media-session.js","webpack://@podlove/player/../packages/player/state/lifecycle.js","webpack://@podlove/player/./src/store/reducers.js","webpack://@podlove/player/../packages/player/state/last-action/reducer.js","webpack://@podlove/player/../packages/player/actions/init.js","webpack://@podlove/player/./src/store/actions.js","webpack://@podlove/player/./src/store/index.js","webpack://@podlove/player/./lang/index.js","webpack://@podlove/player/./src/components/root/index.js","webpack://@podlove/player/./src/components/episode-title/index.js","webpack://@podlove/player/./src/components/episode-subtitle/index.js","webpack://@podlove/player/./src/components/show-title/index.js","webpack://@podlove/player/./src/components/publication-date/index.js","webpack://@podlove/player/./src/components/poster/index.js","webpack://@podlove/player/./src/components/step-forward/index.js","webpack://@podlove/player/./src/components/step-backward/index.js","webpack://@podlove/player/./src/components/play-button/index.js","webpack://@podlove/player/./src/components/progress-bar/index.js","webpack://@podlove/player/./src/components/timer-current/index.js","webpack://@podlove/player/./src/components/timer-duration/index.js","webpack://@podlove/player/./src/components/timer-live/index.js","webpack://@podlove/player/./src/components/current-chapter/index.js","webpack://@podlove/player/./src/components/chapter-previous/index.js","webpack://@podlove/player/./src/components/chapter-next/index.js","webpack://@podlove/player/./src/components/play-state/index.js","webpack://@podlove/player/./src/components/volume-control/index.js","webpack://@podlove/player/./src/components/speed-control/index.js","webpack://@podlove/player/./src/components/tab/index.js","webpack://@podlove/player/./src/components/subscribe-button/index.js","webpack://@podlove/player/./src/components/tab-trigger/index.js","webpack://@podlove/player/./src/components/tab-overflow/index.js","webpack://@podlove/player/./src/components/error/index.js","webpack://@podlove/player/./src/components/index.js","webpack://@podlove/player/./bootstrap.js","webpack://@podlove/player/./src/components/divider/index.js","webpack://@podlove/player/./src/store/selectors/root.js","webpack://@podlove/player/./src/store/selectors/theme.js","webpack://@podlove/player/./src/store/selectors/runtime.js","webpack://@podlove/player/./src/store/selectors/timepiece.js","webpack://@podlove/player/./src/store/selectors/show.js","webpack://@podlove/player/./src/store/selectors/episode.js","webpack://@podlove/player/./src/store/selectors/chapters.js","webpack://@podlove/player/./src/store/selectors/header.js","webpack://@podlove/player/./src/store/selectors/driver.js","webpack://@podlove/player/./src/store/selectors/transcripts.js","webpack://@podlove/player/./src/store/selectors/accessibility.js","webpack://@podlove/player/./src/store/selectors/media.js","webpack://@podlove/player/./src/store/selectors/components.js","webpack://@podlove/player/./src/store/selectors/ghost.js","webpack://@podlove/player/./src/store/selectors/network.js","webpack://@podlove/player/./src/store/selectors/quantiles.js","webpack://@podlove/player/./src/store/selectors/tabs.js","webpack://@podlove/player/./src/store/selectors/contributors.js","webpack://@podlove/player/./src/store/selectors/files.js","webpack://@podlove/player/./src/store/selectors/reference.js","webpack://@podlove/player/./src/store/selectors/share.js","webpack://@podlove/player/./src/store/selectors/audio.js","webpack://@podlove/player/./src/store/selectors/error.js","webpack://@podlove/player/./src/store/selectors/playstate.js","webpack://@podlove/player/./src/store/selectors/playlist.js","webpack://@podlove/player/./src/store/selectors/subscribe-button.js","webpack://@podlove/player/./src/store/selectors/channels.js","webpack://@podlove/player/./src/store/selectors/index.js","webpack://@podlove/player/../packages/button/actions/types.js","webpack://@podlove/player/../packages/button/actions/overlay.js","webpack://@podlove/player/../packages/components/src/components/chapter-button/index.js","webpack://@podlove/player/../packages/components/src/components/divider/index.js","webpack://@podlove/player/../packages/components/src/components/font/index.js","webpack://@podlove/player/../packages/components/src/components/icons/index.js","webpack://@podlove/player/../packages/components/src/components/icons/types.js","webpack://@podlove/player/../packages/components/src/components/image/index.js","webpack://@podlove/player/../packages/components/src/components/input-slider/index.js","webpack://@podlove/player/../packages/components/src/components/play-button/index.js","webpack://@podlove/player/../packages/components/src/components/progress-bar/index.js","webpack://@podlove/player/../packages/components/src/components/stepper-button/index.js","webpack://@podlove/player/../packages/components/src/components/tab/index.js","webpack://@podlove/player/../packages/components/src/components/timer/index.js","webpack://@podlove/player/../packages/player/actions/audio.js","webpack://@podlove/player/../packages/player/actions/chapters.js","webpack://@podlove/player/../packages/player/actions/play.js","webpack://@podlove/player/../packages/player/actions/playlist.js","webpack://@podlove/player/../packages/player/actions/progress.js","webpack://@podlove/player/../packages/player/actions/stepper.js","webpack://@podlove/player/../packages/player/actions/tabs.js","webpack://@podlove/player/../packages/player/actions/timepiece.js","webpack://@podlove/player/../packages/player/actions/transcripts.js","webpack://@podlove/player/../packages/player/actions/types.js","webpack://@podlove/player/../packages/player/config/index.js","webpack://@podlove/player/../packages/player/state/audio/selectors.js","webpack://@podlove/player/../packages/player/state/audio/reducer.js","webpack://@podlove/player/../packages/player/state/channels/selectors.js","webpack://@podlove/player/../packages/player/state/channels/reducer.js","webpack://@podlove/player/../packages/player/state/chapters/selectors.js","webpack://@podlove/player/../packages/player/state/chapters/reducer.js","webpack://@podlove/player/../packages/player/state/components/selectors.js","webpack://@podlove/player/../packages/player/state/components/reducer.js","webpack://@podlove/player/../packages/player/state/content/selectors.js","webpack://@podlove/player/../packages/player/state/content/reducer.js","webpack://@podlove/player/../packages/player/state/contributors/selectors.js","webpack://@podlove/player/../packages/player/state/contributors/reducer.js","webpack://@podlove/player/../packages/player/state/driver/selectors.js","webpack://@podlove/player/../packages/player/state/driver/reducer.js","webpack://@podlove/player/../packages/player/state/embed/selectors.js","webpack://@podlove/player/../packages/player/state/embed/reducer.js","webpack://@podlove/player/../packages/player/state/episode/selectors.js","webpack://@podlove/player/../packages/player/state/episode/reducer.js","webpack://@podlove/player/../packages/player/state/error/selectors.js","webpack://@podlove/player/../packages/player/state/error/reducer.js","webpack://@podlove/player/../packages/player/state/files/selectors.js","webpack://@podlove/player/../packages/player/state/files/reducer.js","webpack://@podlove/player/../packages/player/state/ghost/selectors.js","webpack://@podlove/player/../packages/player/state/ghost/reducer.js","webpack://@podlove/player/../packages/player/state/media/selectors.js","webpack://@podlove/player/../packages/player/state/media/reducer.js","webpack://@podlove/player/../packages/player/state/network/selectors.js","webpack://@podlove/player/../packages/player/state/network/reducer.js","webpack://@podlove/player/../packages/player/state/playlist/selectors.js","webpack://@podlove/player/../packages/player/state/playlist/reducer.js","webpack://@podlove/player/../packages/player/state/playstate/selectors.js","webpack://@podlove/player/../packages/player/state/playstate/reducer.js","webpack://@podlove/player/../packages/player/state/quantiles/selectors.js","webpack://@podlove/player/../packages/player/state/quantiles/reducer.js","webpack://@podlove/player/../packages/player/state/reference/selectors.js","webpack://@podlove/player/../packages/player/state/reference/reducer.js","webpack://@podlove/player/../packages/player/state/runtime/selectors.js","webpack://@podlove/player/../packages/player/state/runtime/reducer.js","webpack://@podlove/player/../packages/player/state/show/selectors.js","webpack://@podlove/player/../packages/player/state/show/reducer.js","webpack://@podlove/player/../packages/player/state/subscribe-button/selectors.js","webpack://@podlove/player/../packages/player/state/subscribe-button/reducer.js","webpack://@podlove/player/../packages/player/state/tabs/selectors.js","webpack://@podlove/player/../packages/player/state/tabs/reducer.js","webpack://@podlove/player/../packages/player/state/theme/selectors.js","webpack://@podlove/player/../packages/player/state/theme/reducer.js","webpack://@podlove/player/../packages/player/state/timepiece/selectors.js","webpack://@podlove/player/../packages/player/state/timepiece/reducer.js","webpack://@podlove/player/../packages/player/state/transcripts/selectors.js","webpack://@podlove/player/../packages/player/state/transcripts/reducer.js","webpack://@podlove/player/../packages/utils/chapters.js","webpack://@podlove/player/../packages/utils/color.js","webpack://@podlove/player/../packages/utils/detect.js","webpack://@podlove/player/../packages/utils/dom.js","webpack://@podlove/player/../packages/utils/helper.js","webpack://@podlove/player/../packages/utils/math.js","webpack://@podlove/player/../packages/utils/predicates.js","webpack://@podlove/player/../packages/utils/time.js","webpack://@podlove/player/../packages/utils/url.js","webpack://@podlove/player/webpack/bootstrap","webpack://@podlove/player/webpack/runtime/amd define","webpack://@podlove/player/webpack/runtime/compat get default export","webpack://@podlove/player/webpack/runtime/define property getters","webpack://@podlove/player/webpack/runtime/ensure chunk","webpack://@podlove/player/webpack/runtime/get javascript chunk filename","webpack://@podlove/player/webpack/runtime/get mini-css chunk filename","webpack://@podlove/player/webpack/runtime/global","webpack://@podlove/player/webpack/runtime/harmony module decorator","webpack://@podlove/player/webpack/runtime/hasOwnProperty shorthand","webpack://@podlove/player/webpack/runtime/make namespace object","webpack://@podlove/player/webpack/runtime/publicPath","webpack://@podlove/player/webpack/runtime/jsonp chunk loading","webpack://@podlove/player/webpack/startup"],"names":["deferred","inProgress","dataWebpackPrefix","middleware","createSagaMiddleware","run","sagas","forEach","saga","setLanguage","createAction","SET_LANGUAGE","setRuntime","SET_RUNTIME","setVersion","SET_VERSION","setMode","SET_MODE","runtimeSaga","browser","detect","locale","navigator","language","userLanguage","put","name","version","platform","isMobile","head","split","init","INIT","ready","READY","constructed","RESTORE","CONSTRUCTED","json","url","fetch","response","status","headers","get","includes","console","warn","takeOnce","channel","host","eventChannel","emitter","args","mediaControl","event","cb","mediaSession","setActionHandler","matchAction","matchType","matchPayload","type","payload","equals","pattern","fork","once","done","take","action","call","concat","lifeCycleSaga","takeEvery","Promise","all","propOr","chapters","transcripts","lifecycle","errorPosterLoad","ERROR_POSTER_LOAD","showError","SHOW_ERROR","hideError","HIDE_ERROR","errorMissingMedia","ERROR_CONFIG_MEDIA","errorConfigMissing","ERROR_CONFIG_MISSING","initPlayer","play","pause","restart","load","playtime","rate","volume","mute","unmute","onReady","onPlay","onPause","onEnd","onPlaytimeUpdate","onDurationChange","onLiveSyncUpdate","onBuffering","onBufferChange","onError","onStop","driver","syncAttributes","selectMedia","selectTitle","selectPoster","connector","select","mediaFiles","length","actions","selectPlaytime","setPlaytime","millisecondsToSeconds","setRate","setVolume","backendLoadingEnd","backendPlay","backendPause","backendEnd","backendPlaytime","secondsToMilliseconds","duration","backendDuration","sync","backendLiveSync","backendLoadingStart","buffers","map","start","stop","backendBuffer","backendError","requestPause","requestPlaytime","REQUEST_PLAY","REQUEST_PAUSE","REQUEST_RESTART","REQUEST_LOAD","REQUEST_PLAYTIME","REQUEST_STOP","SET_RATE","SET_VOLUME","MUTE","UNMUTE","events","readyEvent","playEvent","pauseEvent","endEvent","playtimeEvent","durationEvent","liveSyncEvent","bufferingEvent","bufferChangeEvent","errorEvent","title","poster","mediaElement","setAttributes","showShowTitle","SHOW_COMPONENT_INFO","SHOW_COMPONENT_SHOW_TITLE","showEpisodeTitle","SHOW_COMPONENT_EPISODE_TITLE","showSubtitle","SHOW_COMPONENT_SUBTITLE","showInfoPoster","SHOW_COMPONENT_PROGRESSBAR","SHOW_COMPONENT_INFO_POSTER","showChapterControls","SHOW_COMPONENT_CONTROLS_CHAPTERS","showSteppersControls","SHOW_COMPONENT_CONTROLS_STEPPERS","showLoadingButton","SHOW_COMPONENT_CONTROLS_BUTTON","SHOW_COMPONENT_CONTROLS_BUTTON_LOADING","showReplayButton","SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY","showPlayingButton","SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING","SHOW_COMPONENT_CONTROLS_BUTTON_DURATION","SHOW_COMPONENT_CONTROLS_BUTTON_RETRY","SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING","showPauseButton","SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE","showComponentTab","SHOW_COMPONENT_TAB","showVolumeSlider","SHOW_COMPONENT_VOLUME_SLIDER","showRateSlider","SHOW_COMPONENT_RATE_SLIDER","hideInfoPoster","SHOW_COMPONENT_CHANNELS","HIDE_COMPONENT_INFO","HIDE_COMPONENT_ERROR","HIDE_COMPONENT_PROGRESSBAR","HIDE_COMPONENT_INFO_POSTER","hideShowTitle","HIDE_COMPONENT_SHOW_TITLE","hideEpisodeTitle","HIDE_COMPONENT_EPISODE_TITLE","hideSubtitle","HIDE_COMPONENT_SUBTITLE","hideChapterControls","HIDE_COMPONENT_CONTROLS_CHAPTERS","hideComponentTab","HIDE_COMPONENT_CONTROLS_STEPPERS","HIDE_COMPONENT_CONTROLS_BUTTON","HIDE_COMPONENT_TAB","hideVolumeSlider","HIDE_COMPONENT_VOLUME_SLIDER","HIDE_COMPONENT_RATE_SLIDER","HIDE_COMPONENT_CHANNELS","loading","loaded","replay","selectFiles","selectPlaylist","selectEpisodeCover","selectEpisodeTitle","selectEpisodeSubtitle","selectShowCover","selectRuntimeMode","selectRuntimePlatform","selectShowTitle","selectChannels","selectEmbedLink","files","playlist","showCover","episodeCover","episodeTitle","subtitle","showTitle","mode","channels","embedLink","isEmpty","selectTranscripts","selectChapters","paused","chapterUpdate","setChapter","resetChapter","previousChapter","nextChapter","initChapters","chapter","selectCurrentChapter","current","index","selectChapterList","selectDuration","config","state","reduce","result","end","href","trim","toPlayerTime","prop","image","linkTitle","hostname","setQuantiles","SET_QUANTILE","LOAD_QUANTILES","quantilesSaga","updateQuantiles","time","NEXT_CHAPTER","resetTime","PREVIOUS_CHAPTER","UPDATE_PLAYTIME","BACKEND_PLAYTIME","binarySearch","curry","list","search","currentIndex","currentElement","minIndex","maxIndex","textSearch","input","query","queryExpr","RegExp","results","item","match","push","update","debouncedUpdate","resetToPlaytime","transformTime","is","Number","transformTranscript","chunk","lastChunk","last","undefined","differentSpeaker","speaker","text","texts","endOfSentence","endsWith","isNewChunk","slice","transformChapters","mapSpeakers","speakers","transcript","find","propEq","selectSpeakers","delay","assignSpeakers","compose","sortBy","getTranscripts","searchIndex","searchText","join","setTranscriptsTimeline","timeline","hasTranscripts","SIMULATE_PLAYTIME","DISABLE_GHOST_MODE","debounce","SEARCH_TRANSCRIPTS","searchFn","isDefinedAndNotNull","updateTranscripts","setTranscriptsSearchResults","stepForward","stepBackward","selectLivesync","livesync","upperLimit","targetPlaytime","min","max","errorSaga","retryPlay","networkError","configMediaError","configMissingError","BACKEND_ERROR","RETRY_PLAY","requestPlay","message","retry","filterGlobal","callback","evt","target","parseKey","key","keycode","ctrl","shift","meta","alt","keydown","document","addEventListener","keyup","keyDown","KEY_DOWN","keyUp","KEY_UP","scrubForward","scrubBackward","playPause","dispatchKeyUp","dispatchKeyDown","selectPlaystate","changeVolume","modifier","selectVolume","audio","parseFloat","changeRate","selectRate","selectMuted","loadEpisode","nextEpisode","episodeEnd","resetMeta","setActiveEntry","selectEpisodeConfig","muted","player","BACKEND_LOADING_START","findIndex","active","next","selectReference","entries","reference","entry","setMetadata","selectShow","selectChapterTitle","cover","show","chapterTitle","metadata","MediaMetadata","album","artist","artwork","src","media","timepiece","reducer","handleActions","combineReducers","runtime","theme","episode","components","ghost","network","quantiles","tabs","contributors","share","content","embed","lastAction","_","error","playstate","subscribeButton","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","store","createStore","reducers","applyMiddleware","selectors","SET_TRANSCRIPTS_TIMELINE","SET_CHAPTERS_LIST","BACKEND_PLAY","SELECT_PLAYLIST_ENTRY","BACKEND_PAUSE","BACKEND_LOADING_END","BACKEND_END","SET_CHAPTER","chaptersSaga","UPDATE_CHAPTER","playerSaga","transcriptsSaga","STEP_FORWARD","STEP_BACKWARDS","stepperSaga","keyboard","onKeyDown","onKeyUp","keyboardSaga","NEXT_PLAYLIST_ENTRY","playlistSaga","stepBackwardEvent","stepForwardEvent","previousChapterEvent","nextChapterEvent","mediaSessionSaga","en","require","de","eo","fr","cs","Root","EpisodeTitle","EpisodeSubtitle","ShowTitle","PublicationDate","Poster","StepForward","StepBackward","PlayButton","ProgressBar","TimerCurrent","TimerDuration","TimerLive","CurrentChapter","ChapterPrevious","ChapterNext","PlayState","VolumeControl","SpeedControl","Tab","TabTrigger","TabOverflow","Divider","Error","SubscribeButton","TabChapters","defineAsyncComponent","TabTranscripts","TabFiles","TabShare","TabPlaylist","TabShownotes","ProgressBarLive","Icon","__webpack_public_path__","resourceBaseUrl","PODLOVE_STORE","i18n","createI18n","fallbackLocale","messages","translations","app","createApp","provideStore","use","mount","visibleComponents","fontStyle","weight","family","font","scope","root","fonts","fontRegular","fontBold","fontCi","fixed","summary","link","publicationDate","previous","posterSrc","playing","either","follow","searchQuery","searchSelected","searchResults","searching","translation","attr","chapterNext","chapterPrevious","currentChapter","playButtonPause","playButtonDuration","hours","calcHours","minutes","calcMinutes","seconds","calcSeconds","playButtonReplay","playButtonPlay","playButtonError","stepperBackwards","stepperForward","progressBar","closeTab","tab","toUpperCase","tabTrigger","tabPanel","chapterPlay","chapterTimerRemaining","left","timerCurrent","timerDuration","timerLive","live","chapterList","transcriptsSearch","clearTranscriptsSearch","previousTranscriptsSearchResult","nextTranscriptsSearchResult","followTranscripts","episodeList","episodePlay","episodeDuration","shareChannel","embedCode","copyShareLink","copyEmbedLink","volumeButton","volumeControl","speedControl","speed","playButton","chapterButtons","stepperButtons","rateControl","shownotesTab","chaptersTab","transcriptTab","shareTab","filesTab","playlistTab","nextChapterDisabled","previousChapterDisabled","chaptersChannel","lt","sharePlaytime","currentChapterByPlaytime","buffer","createObject","shownotes","groups","values","contributor","group","existing","pathOr","id","origin","contentSlice","embedSlice","embedSize","availableEmbedSizes","hasLink","hasEmbedLink","addQueryParameter","t","toHumanTime","code","parameters","icon","header","accessibility","SHOW_OVERLAY","HIDE_OVERLAY","types","PlayIcon","PlusIcon","PauseIcon","RestartIcon","LoadingIcon","NextIcon","PreviousIcon","ForwardIcon","BackwardsIcon","InfoIcon","CloseIcon","ClockIcon","CalendarIcon","LinkIcon","ChapterIcon","DownloadIcon","AudioFileIcon","ImageFileIcon","PdfFileIcon","TextFileIcon","VideoFileIcon","EmbedIcon","TwitterIcon","RedditIcon","PinterestIcon","MailIcon","LinkedinIcon","FacebookIcon","ContentShowIcon","ContentPlaytimeIcon","ContentChapterIcon","ContentEpisodeIcon","ShareIcon","CopyIcon","Speaker0Icon","Speaker25Icon","Speaker50Icon","Speaker75Icon","PodloveIcon","PodlovePlayerIcon","TranscriptsIcon","SearchClearIcon","SearchNextIcon","SearchPreviousIcon","MissingConnectionIcon","InvalidConfigurationIcon","SubscribeIcon","ArrowToRightIcon","ArrowToLeftIcon","Speed050Icon","Speed075Icon","Speed100Icon","Speed125Icon","Speed150Icon","Speed175Icon","Speed200Icon","ActiveTabIcon","PlaylistIcon","SearchIcon","MenuPlayIcon","MenuPauseIcon","MenuEmptyIcon","MessengerIcon","CheckMarkIcon","ChevronRightIcon","ChevronLeftIcon","XingIcon","WhatsAppIcon","Header","HeaderItem","Body","setChapters","updateChapter","requestRestart","BACKEND_BUFFER","selectEpisode","markActive","MARK_PLAYLIST_ENTRY_ACTIVE","enableGhost","ENABLE_GHOST_MODE","disableGhost","stepBackwards","toggleTab","TOGGLE_TAB","simulatePlaytime","BACKEND_DURATION","BACKEND_LIVESYNC","UPDATE_TRANSCRIPTS","TOGGLE_FOLLOW_TRANSCRIPTS","searchTranscripts","resetSearchTranscription","RESET_SEARCH_TRANSCRIPTS","SET_SEARCH_TRANSCRIPTS_RESULTS","NEXT_SEARCH_RESULT","PREVIOUS_SEARCH_RESULT","SHOW_SHARE_PLAYTIME","HIDE_SHARE_PLAYTIME","SELECT_CONTENT","SELECT_CHANNEL","SELECT_EMBED_SIZE","SET_THEME","FILE_HOVER","FILE_SELECT","size","mimeType","tokens","brand","shareReference","originReference","episodeReference","ref","configReference","filter","some","INITIAL_STATE","inVolumeRange","inRange","toFloat","inRateRange","identity","generateState","getCurrentChapter","getNextChapter","getPreviousChapter","setActiveByIndex","setActiveByPlaytime","currentChapterIndex","info","available","sanitize","parseDate","file","hover","toInt","quantile","findQuantile","currentQuantile","newQuantile","updateQuantile","display","change","themeColors","brandDark","brandDarkest","brandLightest","shadeDark","shadeBase","contrast","themeFonts","TOKENS","FONTS","ci","regular","bold","normalizeFont","path","extractFonts","getTokens","extractTokens","selected","emptyChapter","getChapterByIndex","fallbackTo","defaultTo","add","inactiveChapter","activeChapter","chapterIndex","isNegative","gt","color","luminosity","light","dark","MobileDetect","userAgent","mobile","tablet","getClasses","node","child","appendChild","tag","value","attributes","Object","keys","attribute","attrs","el","property","style","removeProperty","className","classes","uniq","indexOf","purify","DOMPurify","addHook","tagName","setAttribute","ALLOWED_TAGS","ALLOWED_ATTR","element","MutationObserver","observe","childList","asyncAnimation","func","resolve","requestAnimationFrame","apply","isNaN","parseInt","fallback","isUndefinedOrNull","specification","f","context","startsWith","q","str","stripl","stripr","juxt","toUpper","tail","round","Math","ceil","interpolate","num","relativePosition","maximum","lower","upper","toMegabyte","p1","p2","p","x","isNil","timeRegex","matches","exec","milliseconds","fallbackToZero","leadingZero","utcDate","Date","getTime","URL","e","replace","additionalParameters","parser","createElement","existingParameters","queryString","assign","queryParameter","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","amdD","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","chunkId","promises","u","miniCssF","g","globalThis","this","Function","hmd","create","children","set","obj","prototype","hasOwnProperty","l","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","setTimeout","bind","Symbol","toStringTag","scriptUrl","importScripts","location","currentScript","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","chunkLoadingGlobal","self","__webpack_exports__"],"mappings":"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A3C,UAAerH,OAAQ6H,QAAoBsF,EAAKzS,U,ykBCwBhD,SAAe,YACV2L,GACAJ,GAFL,IAGElC,SACA9T,WACA2jB,SACArN,UACAf,OACAc,QACAuN,gBACA7N,QACAQ,aACAC,QACAC,UACAC,YACAC,OACAC,gBACA3M,SACA4M,SACA5W,cACAiX,SACAhV,SACAiV,aACAjN,YACAkN,mBACA3M,YACAwK,gB,gDCpDIjW,EAAO,SAACrC,GAAD,gBAFS,SAET,YAAuBA,IAOvBknB,GALO7kB,EAAK,QAEAA,EAAK,aACLA,EAAK,aAEFA,EAAK,iBACpB8kB,EAAe9kB,EAAK,gBCNpBuW,GDQmBvW,EAAK,oBACLA,EAAK,oBAEVA,EAAK,eACJA,EAAK,gBACNA,EAAK,gBCdZrD,OAAamoB,IACbnoB,OAAakoB,K,iCCJjC,QAAerK,SAAf,G,iCCAA,QAAeA,SAAf,G,iCCAA,QAAeA,SAAf,G,8CCAA,QAAeA,SAAf,G,6xBCqEauK,GAAQ,CACnB,OACA,OACA,QACA,UACA,UACA,UACA,OACA,WACA,UACA,YACA,OACA,QACA,QACA,WACA,OACA,UACA,WACA,aACA,aACA,WACA,YACA,aACA,QACA,UACA,SACA,YACA,OACA,WACA,WACA,eACA,mBACA,kBACA,kBACA,QACA,OACA,YACA,aACA,aACA,aACA,UACA,iBACA,cACA,eACA,kBACA,cACA,qBACA,wBACA,YACA,iBACA,gBACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,aACA,WACA,SACA,YACA,aACA,aACA,YACA,aACA,eACA,gBACA,YACA,QAGWxN,GAAa,CACxByN,aACAC,aACAC,cACAC,gBACAC,gBACAC,aACAC,iBACAC,gBACAC,kBACAC,aACAC,cACAC,cACAC,iBACAC,aACAC,gBACAC,iBACAC,kBACAC,kBACAC,gBACAC,iBACAC,kBACAC,cACAC,gBACAC,eACAC,kBACAC,aACAC,iBACAC,iBACAC,oBACAC,wBACAC,uBACAC,uBACAC,cACAC,aACAC,iBACAC,kBACAC,kBACAC,kBACAC,gBACAC,sBACAC,oBACA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","file":"bootstrap.js","sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"@podlove/player:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import createSagaMiddleware from 'redux-saga'\n\nconst middleware = createSagaMiddleware()\nconst run = (...sagas) => {\n sagas.forEach((saga) => middleware.run(saga))\n}\n\nexport default {\n middleware,\n run\n}\n","import { createAction } from 'redux-actions'\n\nimport { SET_LANGUAGE, SET_RUNTIME, SET_VERSION, SET_MODE } from './types'\n\nexport const setLanguage = createAction(SET_LANGUAGE)\nexport const setRuntime = createAction(SET_RUNTIME)\nexport const setVersion = createAction(SET_VERSION)\nexport const setMode = createAction(SET_MODE)\n","import { put } from 'redux-saga/effects'\nimport { setRuntime } from '@podlove/player-actions/runtime'\nimport { head } from 'ramda'\nimport { detect } from 'detect-browser'\nimport { isMobile } from '@podlove/utils/detect'\n\nexport function* runtimeSaga() {\n const browser = detect()\n const locale = navigator.language || navigator.userLanguage || 'en-us'\n yield put(\n setRuntime({\n browser: `${browser.name}:${browser.version}`,\n platform: isMobile ? 'mobile' : 'desktop',\n language: head(locale.split('-')),\n locale\n })\n )\n}\n","import { createAction } from 'redux-actions'\nimport { INIT, READY, RESTORE, CONSTRUCTED } from './types'\n\nexport const init = createAction(INIT)\nexport const ready = createAction(READY)\nexport const restore = createAction(RESTORE)\nexport const constructed = createAction(CONSTRUCTED)\n","/* eslint no-console: 0 */\nimport fetch from 'unfetch'\n\nexport const json = async (url) => {\n if (!url || typeof url !== 'string') {\n return url\n }\n\n try {\n const response = await fetch(url)\n\n if (response.status !== 200) {\n return null\n }\n\n if (!response.headers.get('content-type').includes('application/json')) {\n return null\n }\n\n return response.json()\n } catch (err) {\n console.warn(err)\n return null\n }\n}\n\nexport const html = async (url) => {\n if (typeof url !== 'string') {\n return url\n }\n\n try {\n const response = await fetch(url)\n\n if (response.status !== 200) {\n return null\n }\n\n if (!response.headers.get('content-type').includes('text/html')) {\n return null\n }\n\n return response.text()\n } catch (err) {\n console.warn(err)\n return null\n }\n}\n","import { equals } from 'ramda'\nimport { eventChannel } from 'redux-saga'\nimport { fork, take, call } from 'redux-saga/effects'\n\nexport const channel = (host) =>\n eventChannel((emitter) => {\n const pipe = (args) => {\n emitter(args || {})\n }\n\n host(pipe)\n\n return () => {}\n })\n\nexport const mediaControl = (event) => (cb) => navigator.mediaSession.setActionHandler(event, cb)\n\nexport const matchAction =\n (matchType, matchPayload) =>\n ({ type, payload }) =>\n type === matchType && equals(matchPayload, payload)\n\nexport function* takeOnce(pattern, saga, ...args) {\n return yield fork(function* once() {\n let done = false\n while (!done) {\n const action = yield take(pattern)\n done = true\n yield call(saga, ...args.concat(action))\n }\n })\n}\n","import { propOr } from 'ramda'\nimport { put, takeEvery } from 'redux-saga/effects'\nimport { INIT } from '@podlove/player-actions/types'\nimport * as lifecycle from '@podlove/player-actions/lifecycle'\nimport { json } from '@podlove/utils/request'\nimport { takeOnce } from './helper'\n\nexport function* lifeCycleSaga() {\n yield takeEvery(INIT, ready)\n yield takeOnce(INIT, constructed)\n}\n\nexport function* ready({ payload }) {\n const [chapters, transcripts] = yield Promise.all([\n json(propOr([], 'chapters', payload)),\n json(propOr([], 'transcripts', payload))\n ])\n\n // TODO: validate config\n yield put(\n lifecycle.ready({\n ...payload,\n chapters,\n transcripts\n })\n )\n}\n\nexport function* constructed({ payload }) {\n yield put(lifecycle.constructed(payload))\n}\n","import { createAction } from 'redux-actions'\n\nimport {\n ERROR_POSTER_LOAD,\n SHOW_ERROR,\n HIDE_ERROR,\n ERROR_CONFIG_MEDIA,\n ERROR_CONFIG_MISSING\n} from './types'\n\nexport const errorPosterLoad = createAction(ERROR_POSTER_LOAD)\nexport const showError = createAction(SHOW_ERROR)\nexport const hideError = createAction(HIDE_ERROR)\nexport const errorMissingMedia = createAction(ERROR_CONFIG_MEDIA)\nexport const errorConfigMissing = createAction(ERROR_CONFIG_MISSING)\n","import { audio } from '@podlove/html5-audio-driver/src/connect'\nimport { select, call, put, takeEvery, fork } from 'redux-saga/effects'\nimport {\n REQUEST_PLAY,\n REQUEST_PAUSE,\n READY,\n REQUEST_RESTART,\n REQUEST_PLAYTIME,\n SET_RATE,\n SET_VOLUME,\n MUTE,\n UNMUTE,\n REQUEST_LOAD,\n UPDATE_CHAPTER,\n SET_CHAPTER,\n REQUEST_STOP\n} from '@podlove/player-actions/types'\nimport { requestPause } from '@podlove/player-actions/play'\nimport { requestPlaytime } from '@podlove/player-actions/timepiece'\nimport {\n backendPlay,\n backendPause,\n backendEnd,\n backendLoadingStart,\n backendLoadingEnd,\n backendBuffer,\n backendError\n} from '@podlove/player-actions/play'\nimport { errorMissingMedia } from '@podlove/player-actions/error'\nimport {\n backendPlaytime,\n backendDuration,\n backendLiveSync\n} from '@podlove/player-actions/timepiece'\nimport { millisecondsToSeconds, secondsToMilliseconds } from '@podlove/utils/time'\nimport { setAttributes } from '@podlove/utils/dom'\n\nimport { channel } from './helper'\n\nexport const playerSaga = ({ selectMedia, selectPlaytime, selectTitle, selectPoster }) =>\n function* saga() {\n const connector = audio()\n\n yield takeEvery(READY, initPlayer, { selectMedia, selectTitle, selectPoster, connector })\n yield takeEvery(UPDATE_CHAPTER, syncAttributes, { connector, selectTitle, selectPoster })\n yield takeEvery(SET_CHAPTER, syncAttributes, { connector, selectTitle, selectPoster })\n yield fork(driver, { selectPlaytime, connector })\n }\n\nexport function* initPlayer({ selectMedia, selectTitle, selectPoster, connector }) {\n const mediaFiles = yield select(selectMedia)\n\n if (mediaFiles.length === 0) {\n yield put(errorMissingMedia())\n }\n\n connector.load(mediaFiles)\n\n // AudioAttributes\n yield fork(syncAttributes, { connector, selectTitle, selectPoster })\n}\n\n// Actions\nexport function* play(actions, selectPlaytime) {\n const playtime = yield select(selectPlaytime)\n actions.setPlaytime(millisecondsToSeconds(playtime))\n yield actions.play()\n}\n\nexport function* pause(actions) {\n yield actions.pause()\n}\n\nexport function* restart(actions) {\n actions.setPlaytime(0)\n yield actions.play()\n}\n\nexport function* load(actions) {\n yield actions.load()\n}\n\nexport function* playtime(actions, { payload }) {\n yield actions.setPlaytime(millisecondsToSeconds(payload))\n}\n\nexport function* rate(actions, { payload }) {\n yield actions.setRate(payload)\n}\n\nexport function* volume(actions, { payload }) {\n yield actions.setVolume(payload)\n}\n\nexport function* mute(actions) {\n yield actions.mute()\n}\n\nexport function* unmute(actions) {\n yield actions.unmute()\n}\n\n// Events\nexport function* onReady(payload) {\n yield put(backendLoadingEnd(payload))\n}\n\nexport function* onPlay() {\n yield put(backendPlay())\n}\n\nexport function* onPause() {\n yield put(backendPause())\n}\n\nexport function* onEnd() {\n yield put(backendEnd())\n}\n\nexport function* onPlaytimeUpdate(playtime) {\n const action = backendPlaytime(secondsToMilliseconds(playtime))\n yield put(action)\n}\n\nexport function* onDurationChange(duration) {\n const action = backendDuration(secondsToMilliseconds(duration))\n yield put(action)\n}\n\nexport function* onLiveSyncUpdate(sync) {\n const action = backendLiveSync(secondsToMilliseconds(sync))\n yield put(action)\n}\n\nexport function* onBuffering() {\n yield put(backendLoadingStart())\n}\n\nexport function* onBufferChange(buffers = []) {\n const payload = buffers.map(([start, stop]) => [\n secondsToMilliseconds(start),\n secondsToMilliseconds(stop)\n ])\n yield put(backendBuffer(payload))\n}\n\nexport function* onError(type) {\n yield put(backendError(type))\n}\n\nexport function* onStop() {\n yield put(requestPause())\n yield put(requestPlaytime(0))\n}\n\nexport function* driver({ selectPlaytime, connector }) {\n // AudioActions\n yield takeEvery(REQUEST_PLAY, play, connector.actions, selectPlaytime)\n yield takeEvery(REQUEST_PAUSE, pause, connector.actions)\n yield takeEvery(REQUEST_RESTART, restart, connector.actions)\n yield takeEvery(REQUEST_LOAD, load, connector.actions)\n yield takeEvery(REQUEST_PLAYTIME, playtime, connector.actions)\n yield takeEvery(REQUEST_STOP, onStop)\n yield takeEvery(SET_RATE, rate, connector.actions)\n yield takeEvery(SET_VOLUME, volume, connector.actions)\n yield takeEvery(MUTE, mute, connector.actions)\n yield takeEvery(UNMUTE, unmute, connector.actions)\n\n // AudioEvents\n const readyEvent = yield call(channel, connector.events.onReady)\n const playEvent = yield call(channel, connector.events.onPlay)\n const pauseEvent = yield call(channel, connector.events.onPause)\n const endEvent = yield call(channel, connector.events.onEnd)\n const playtimeEvent = yield call(channel, connector.events.onPlaytimeUpdate)\n const durationEvent = yield call(channel, connector.events.onDurationChange)\n const liveSyncEvent = yield call(channel, connector.events.onLiveSyncUpdate)\n const bufferingEvent = yield call(channel, connector.events.onBuffering)\n const bufferChangeEvent = yield call(channel, connector.events.onBufferChange)\n const errorEvent = yield call(channel, connector.events.onError)\n\n yield takeEvery(readyEvent, onReady)\n yield takeEvery(playEvent, onPlay)\n yield takeEvery(pauseEvent, onPause)\n yield takeEvery(endEvent, onEnd)\n yield takeEvery(playtimeEvent, onPlaytimeUpdate)\n yield takeEvery(durationEvent, onDurationChange)\n yield takeEvery(liveSyncEvent, onLiveSyncUpdate)\n yield takeEvery(bufferChangeEvent, onBufferChange)\n yield takeEvery(bufferingEvent, onBuffering)\n yield takeEvery(errorEvent, onError)\n\n return connector\n}\n\n// Attribute Bindings\nexport function* syncAttributes({ connector, selectTitle, selectPoster }) {\n const title = yield select(selectTitle)\n const poster = yield select(selectPoster)\n\n connector.mediaElement &&\n setAttributes({ title, poster, 'x-webkit-airplay': 'allow' }, connector.mediaElement)\n}\n","import { createAction } from 'redux-actions'\n\nimport {\n SHOW_COMPONENT_INFO,\n SHOW_COMPONENT_INFO_POSTER,\n SHOW_COMPONENT_CONTROLS_BUTTON,\n SHOW_COMPONENT_TAB,\n SHOW_COMPONENT_VOLUME_SLIDER,\n SHOW_COMPONENT_RATE_SLIDER,\n SHOW_COMPONENT_CHANNELS,\n SHOW_COMPONENT_PROGRESSBAR,\n SHOW_COMPONENT_CONTROLS_STEPPERS,\n SHOW_COMPONENT_CONTROLS_CHAPTERS,\n SHOW_COMPONENT_CONTROLS_BUTTON_LOADING,\n SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY,\n SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING,\n SHOW_COMPONENT_CONTROLS_BUTTON_DURATION,\n SHOW_COMPONENT_CONTROLS_BUTTON_RETRY,\n SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING,\n SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE,\n SHOW_COMPONENT_SHOW_TITLE,\n SHOW_COMPONENT_EPISODE_TITLE,\n SHOW_COMPONENT_SUBTITLE,\n HIDE_COMPONENT_INFO,\n HIDE_COMPONENT_INFO_POSTER,\n HIDE_COMPONENT_ERROR,\n HIDE_COMPONENT_CONTROLS_CHAPTERS,\n HIDE_COMPONENT_CONTROLS_STEPPERS,\n HIDE_COMPONENT_CONTROLS_BUTTON,\n HIDE_COMPONENT_PROGRESSBAR,\n HIDE_COMPONENT_TAB,\n HIDE_COMPONENT_VOLUME_SLIDER,\n HIDE_COMPONENT_RATE_SLIDER,\n HIDE_COMPONENT_CHANNELS,\n HIDE_COMPONENT_SHOW_TITLE,\n HIDE_COMPONENT_EPISODE_TITLE,\n HIDE_COMPONENT_SUBTITLE\n} from './types'\n\nexport const showInfo = createAction(SHOW_COMPONENT_INFO)\nexport const showShowTitle = createAction(SHOW_COMPONENT_SHOW_TITLE)\nexport const showEpisodeTitle = createAction(SHOW_COMPONENT_EPISODE_TITLE)\nexport const showSubtitle = createAction(SHOW_COMPONENT_SUBTITLE)\nexport const showProgressBar = createAction(SHOW_COMPONENT_PROGRESSBAR)\nexport const showInfoPoster = createAction(SHOW_COMPONENT_INFO_POSTER)\nexport const showChapterControls = createAction(SHOW_COMPONENT_CONTROLS_CHAPTERS)\nexport const showSteppersControls = createAction(SHOW_COMPONENT_CONTROLS_STEPPERS)\nexport const showButtonControl = createAction(SHOW_COMPONENT_CONTROLS_BUTTON)\nexport const showLoadingButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_LOADING)\nexport const showReplayButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY)\nexport const showRemainingButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING)\nexport const showDurationButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_DURATION)\nexport const showRetryButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_RETRY)\nexport const showPlayingButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING)\nexport const showPauseButton = createAction(SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE)\nexport const showComponentTab = createAction(SHOW_COMPONENT_TAB)\nexport const showVolumeSlider = createAction(SHOW_COMPONENT_VOLUME_SLIDER)\nexport const showRateSlider = createAction(SHOW_COMPONENT_RATE_SLIDER)\nexport const showChannelsSelection = createAction(SHOW_COMPONENT_CHANNELS)\n\nexport const hideInfo = createAction(HIDE_COMPONENT_INFO)\nexport const hideError = createAction(HIDE_COMPONENT_ERROR)\nexport const hideProgressBar = createAction(HIDE_COMPONENT_PROGRESSBAR)\nexport const hideInfoPoster = createAction(HIDE_COMPONENT_INFO_POSTER)\nexport const hideShowTitle = createAction(HIDE_COMPONENT_SHOW_TITLE)\nexport const hideEpisodeTitle = createAction(HIDE_COMPONENT_EPISODE_TITLE)\nexport const hideSubtitle = createAction(HIDE_COMPONENT_SUBTITLE)\nexport const hideChapterControls = createAction(HIDE_COMPONENT_CONTROLS_CHAPTERS)\nexport const hideSteppersControls = createAction(HIDE_COMPONENT_CONTROLS_STEPPERS)\nexport const hideButtonControl = createAction(HIDE_COMPONENT_CONTROLS_BUTTON)\nexport const hideComponentTab = createAction(HIDE_COMPONENT_TAB)\nexport const hideVolumeSlider = createAction(HIDE_COMPONENT_VOLUME_SLIDER)\nexport const hideRateSlider = createAction(HIDE_COMPONENT_RATE_SLIDER)\nexport const hideChannelsSelection = createAction(HIDE_COMPONENT_CHANNELS)\n","import { put, takeEvery, select } from 'redux-saga/effects'\nimport { isEmpty } from 'ramda'\nimport {\n READY,\n BACKEND_PLAY,\n BACKEND_PAUSE,\n BACKEND_LOADING_START,\n BACKEND_LOADING_END,\n BACKEND_END,\n SET_TRANSCRIPTS_TIMELINE,\n SET_CHAPTERS_LIST,\n SELECT_PLAYLIST_ENTRY\n} from '@podlove/player-actions/types'\nimport {\n showPlayingButton,\n showLoadingButton,\n showPauseButton,\n showSteppersControls,\n showChapterControls,\n showReplayButton,\n hideComponentTab,\n showComponentTab,\n hideChapterControls,\n showInfoPoster,\n hideInfoPoster,\n hideEpisodeTitle,\n showSubtitle,\n showEpisodeTitle,\n hideSubtitle,\n showShowTitle,\n hideShowTitle,\n showVolumeSlider,\n hideVolumeSlider,\n showRateSlider\n} from '@podlove/player-actions/components'\n\nexport const componentsSaga = ({\n selectTranscripts,\n selectPlaylist,\n selectChapters,\n selectFiles,\n selectEpisodeCover,\n selectEpisodeTitle,\n selectEpisodeSubtitle,\n selectShowTitle,\n selectShowCover,\n selectRuntimeMode,\n selectRuntimePlatform,\n selectChannels,\n selectEmbedLink\n}) =>\n function* saga() {\n yield takeEvery(READY, init, {\n selectFiles,\n selectPlaylist,\n selectEpisodeCover,\n selectEpisodeTitle,\n selectEpisodeSubtitle,\n selectShowTitle,\n selectShowCover,\n selectRuntimeMode,\n selectRuntimePlatform,\n selectChannels,\n selectEmbedLink\n })\n yield takeEvery(SET_TRANSCRIPTS_TIMELINE, transcripts, { selectTranscripts })\n yield takeEvery(SET_CHAPTERS_LIST, chapters, { selectChapters })\n yield takeEvery(BACKEND_PLAY, play)\n yield takeEvery(SELECT_PLAYLIST_ENTRY, pause)\n yield takeEvery(BACKEND_PAUSE, pause)\n yield takeEvery(BACKEND_LOADING_START, loading)\n yield takeEvery(BACKEND_LOADING_END, loaded)\n yield takeEvery(BACKEND_END, replay)\n }\n\nexport function* init({\n selectFiles,\n selectPlaylist,\n selectEpisodeCover,\n selectEpisodeTitle,\n selectEpisodeSubtitle,\n selectShowCover,\n selectRuntimeMode,\n selectRuntimePlatform,\n selectShowTitle,\n selectChannels,\n selectEmbedLink\n}) {\n const files = yield select(selectFiles)\n const playlist = yield select(selectPlaylist)\n const showCover = yield select(selectShowCover)\n const episodeCover = yield select(selectEpisodeCover)\n const episodeTitle = yield select(selectEpisodeTitle)\n const subtitle = yield select(selectEpisodeSubtitle)\n const showTitle = yield select(selectShowTitle)\n const mode = yield select(selectRuntimeMode)\n const platform = yield select(selectRuntimePlatform)\n const channels = yield select(selectChannels)\n const embedLink = yield select(selectEmbedLink)\n\n // Header\n yield put(!!showCover || !!episodeCover ? showInfoPoster() : hideInfoPoster())\n yield put(episodeTitle ? showEpisodeTitle() : hideEpisodeTitle())\n yield put(subtitle ? showSubtitle() : hideSubtitle())\n yield put(showTitle ? showShowTitle() : hideShowTitle())\n\n // Tabs\n yield put(!isEmpty(files) ? showComponentTab('files') : hideComponentTab('files'))\n yield put(!isEmpty(playlist) ? showComponentTab('playlist') : hideComponentTab('playlist'))\n yield put(showComponentTab('shownotes'))\n yield put(showComponentTab('audio'))\n yield put(!isEmpty(channels) || embedLink ? showComponentTab('share') : hideComponentTab('share'))\n\n // Audio Inputs\n yield put(mode === 'native' && platform === 'desktop' ? showVolumeSlider() : hideVolumeSlider())\n yield put(showRateSlider())\n\n // Steppers\n yield put(showSteppersControls())\n}\n\nexport function* transcripts({ selectTranscripts }) {\n const transcripts = yield select(selectTranscripts)\n yield put(transcripts ? showComponentTab('transcripts') : hideComponentTab('transcripts'))\n}\n\nexport function* chapters({ selectChapters }) {\n const chapters = !isEmpty(yield select(selectChapters))\n\n yield put(chapters ? showChapterControls() : hideChapterControls())\n yield put(chapters ? showComponentTab('chapters') : hideComponentTab('chapters'))\n}\n\nexport function* play() {\n yield put(showPlayingButton())\n}\n\nexport function* pause() {\n yield put(showPauseButton())\n}\n\nexport function* loading() {\n yield put(showLoadingButton())\n}\n\nexport function* loaded({ payload }) {\n if (payload.paused) {\n yield put(showPauseButton())\n } else {\n yield put(showPlayingButton())\n }\n}\n\nexport function* replay() {\n yield put(showReplayButton())\n}\n","import { propOr, prop } from 'ramda'\nimport { takeEvery, select, put } from 'redux-saga/effects'\nimport {\n READY,\n REQUEST_PLAYTIME,\n BACKEND_PLAYTIME,\n SET_CHAPTER,\n DISABLE_GHOST_MODE,\n PREVIOUS_CHAPTER,\n NEXT_CHAPTER\n} from '@podlove/player-actions/types'\nimport * as config from '@podlove/player-config'\nimport * as chapter from '@podlove/player-actions/chapters'\nimport { requestPlaytime } from '@podlove/player-actions/timepiece'\nimport { toPlayerTime } from '@podlove/utils/time'\nimport { hostname } from '@podlove/utils/url'\n\nexport const chaptersSaga = ({\n selectDuration,\n selectPlaytime,\n selectCurrentChapter,\n selectChapterList\n}) =>\n function* saga() {\n yield takeEvery(READY, initChapters, {\n selectDuration\n })\n yield takeEvery(REQUEST_PLAYTIME, chapterUpdate)\n yield takeEvery(BACKEND_PLAYTIME, chapterUpdate)\n yield takeEvery(SET_CHAPTER, setChapter, {\n selectCurrentChapter\n })\n yield takeEvery(DISABLE_GHOST_MODE, resetChapter, {\n selectPlaytime\n })\n yield takeEvery(PREVIOUS_CHAPTER, previousChapter, {\n selectPlaytime,\n selectCurrentChapter\n })\n yield takeEvery(NEXT_CHAPTER, nextChapter, {\n selectCurrentChapter,\n selectChapterList\n })\n }\n\nexport function* chapterUpdate({ payload }) {\n yield put(chapter.updateChapter(payload))\n}\n\nexport function* setChapter({ selectCurrentChapter }) {\n const current = yield select(selectCurrentChapter)\n yield put(requestPlaytime(current.start))\n}\n\nexport function* resetChapter({ selectPlaytime }) {\n const playtime = yield select(selectPlaytime)\n yield put(chapter.updateChapter(playtime))\n}\n\nexport function* previousChapter({ selectPlaytime, selectCurrentChapter }) {\n const playtime = yield select(selectPlaytime)\n const { start, index } = yield select(selectCurrentChapter)\n\n if (playtime - start <= 1000) {\n yield put(chapter.setChapter(index - 2 < 0 ? 0 : index - 2))\n } else {\n yield put(chapter.setChapter(index - 1 < 0 ? 0 : index - 1))\n }\n}\n\nexport function* nextChapter({ selectChapterList, selectCurrentChapter }) {\n const chapters = yield select(selectChapterList)\n const { index } = yield select(selectCurrentChapter)\n\n yield put(chapter.setChapter(index > chapters.length - 1 ? chapters.length - 1 : index))\n}\n\nexport function* initChapters({ selectDuration }, { payload }) {\n const chapters = config.chapters(payload)\n const duration = yield select(selectDuration)\n\n const state = chapters.reduce((result, chapter, index, chapters) => {\n const end = propOr({ start: duration }, index + 1, chapters)\n const href = propOr('', 'href', chapter).trim()\n\n return [\n ...result,\n {\n index: index + 1,\n start: toPlayerTime(chapter.start),\n end: toPlayerTime(end.start),\n title: prop('title', chapter),\n image: prop('image', chapter),\n href,\n linkTitle: href ? hostname(href) : null\n }\n ]\n }, [])\n\n yield put(chapter.setChapters(state))\n}\n","import { createAction } from 'redux-actions'\nimport { SET_QUANTILE, LOAD_QUANTILES } from './types'\n\nexport const setQuantiles = createAction(SET_QUANTILE)\nexport const loadQuantiles = createAction(LOAD_QUANTILES)\n","import { takeEvery, put } from 'redux-saga/effects'\nimport {\n BACKEND_PLAYTIME,\n NEXT_CHAPTER,\n PREVIOUS_CHAPTER,\n UPDATE_PLAYTIME\n} from '@podlove/player-actions/types'\nimport { setQuantiles } from '@podlove/player-actions/quantiles'\n\nlet time = null\n\nexport function* quantilesSaga() {\n yield takeEvery(NEXT_CHAPTER, resetTime)\n yield takeEvery(PREVIOUS_CHAPTER, resetTime)\n yield takeEvery(UPDATE_PLAYTIME, resetTime)\n yield takeEvery(BACKEND_PLAYTIME, updateQuantiles)\n}\n\nexport function* updateQuantiles({ payload }) {\n if (!time) {\n time = payload\n }\n\n yield put(setQuantiles({ start: time, end: payload }))\n}\n\nexport function resetTime() {\n time = null\n}\n","import { curry } from 'ramda'\n\nexport const binarySearch = curry((list, search) => {\n let minIndex = 0\n let maxIndex = list.length - 1\n let currentIndex\n let currentElement\n\n while (minIndex <= maxIndex) {\n currentIndex = ((minIndex + maxIndex) / 2) | 0\n currentElement = list[currentIndex]\n\n if (currentElement < search) {\n minIndex = currentIndex + 1\n } else if (currentElement > search) {\n maxIndex = currentIndex - 1\n } else {\n return currentIndex\n }\n }\n\n return maxIndex\n})\n\nexport const textSearch = curry((input, query) => {\n const queryExpr = new RegExp(query, 'ig')\n\n return input.reduce((results, item, index) => {\n const searchHits = item.match(queryExpr) || []\n\n // add n times the chunk index, for each hit one\n searchHits.forEach(() => {\n results.push(index)\n })\n\n return results\n }, [])\n})\n","import { put, takeEvery, select, debounce } from 'redux-saga/effects'\nimport { delay } from 'redux-saga/effects'\nimport { last, propEq, find, compose, map, is, endsWith, sortBy, prop, reduce, concat } from 'ramda'\n\nimport {\n READY,\n BACKEND_PLAYTIME,\n REQUEST_PLAYTIME,\n DISABLE_GHOST_MODE,\n SIMULATE_PLAYTIME,\n SEARCH_TRANSCRIPTS\n} from '@podlove/player-actions/types'\nimport {\n setTranscriptsTimeline,\n updateTranscripts,\n setTranscriptsSearchResults\n} from '@podlove/player-actions/transcripts'\nimport { secondsToMilliseconds, toPlayerTime } from '@podlove/utils/time'\nimport { transcripts as getTranscripts } from '@podlove/player-config'\nimport { binarySearch, textSearch } from '@podlove/utils/search'\nimport { isDefinedAndNotNull } from '@podlove/utils/predicates'\n\nconst transformTime = (time) =>\n is(Number, time) ? secondsToMilliseconds(time) : toPlayerTime(time)\n\nconst isNewChunk = (current, last) => {\n if (last === undefined) {\n return true\n }\n\n const differentSpeaker = current.speaker !== last.speaker\n const text = last.texts.reduce((result, item) => result + ' ' + item.text, '')\n const endOfSentence = endsWith('.', text) || endsWith('!', text) || endsWith('?', text)\n\n return differentSpeaker || (text.length > 500 && endOfSentence)\n}\n\nconst transformTranscript = reduce((transcripts, chunk) => {\n const lastChunk = last(transcripts)\n\n if (isNewChunk(chunk, lastChunk)) {\n return [\n ...transcripts,\n {\n type: 'transcript',\n start: transformTime(chunk.start),\n end: transformTime(chunk.end),\n speaker: chunk.speaker,\n texts: [\n {\n start: transformTime(chunk.start),\n end: transformTime(chunk.end),\n text: chunk.text\n }\n ]\n }\n ]\n }\n\n return [\n ...transcripts.slice(0, -1),\n {\n ...lastChunk,\n end: transformTime(chunk.end),\n texts: [\n ...lastChunk.texts,\n {\n start: transformTime(chunk.start),\n end: transformTime(chunk.end),\n text: chunk.text\n }\n ]\n }\n ]\n}, [])\n\nconst transformChapters = (chapters) =>\n chapters.map((chapter, index) => ({\n ...chapter,\n type: 'chapter',\n index: index + 1\n }))\n\nconst mapSpeakers = (speakers) =>\n map((transcript) => {\n if (transcript.type === 'chapter') {\n return transcript\n }\n\n const result = find(propEq('id', transcript.speaker), speakers)\n\n return {\n ...transcript,\n speaker: result\n }\n })\n\nexport const transcriptsSaga = ({ selectSpeakers, selectChapters, selectPlaytime }) =>\n function* saga() {\n yield takeEvery(READY, init, { selectSpeakers, selectChapters, selectPlaytime })\n }\n\nexport function* init({ selectSpeakers, selectChapters, selectPlaytime }, { payload }) {\n // Bump one cycle so chapters and speakers are available\n yield delay(0)\n const speakers = yield select(selectSpeakers)\n const chapters = yield select(selectChapters)\n\n const assignSpeakers = mapSpeakers(speakers)\n const transcripts = compose(\n sortBy(prop('start')),\n concat(transformChapters(chapters)),\n assignSpeakers,\n transformTranscript,\n getTranscripts\n )(payload)\n\n // don't run transcripts logic if no transcripts are available\n if (transcripts.length <= chapters.length) {\n return\n }\n\n const searchIndex = binarySearch(transcripts.map(({ start }) => start))\n const searchText = textSearch(\n transcripts.map(({ texts = [] }) => texts.map(({ text }) => text).join(' '))\n )\n\n yield put(\n setTranscriptsTimeline({\n timeline: transcripts,\n hasTranscripts: transcripts.length > chapters.length\n })\n )\n yield takeEvery(BACKEND_PLAYTIME, update, searchIndex)\n yield takeEvery(REQUEST_PLAYTIME, update, searchIndex)\n yield takeEvery(SIMULATE_PLAYTIME, debouncedUpdate, searchIndex)\n yield takeEvery(DISABLE_GHOST_MODE, resetToPlaytime, searchIndex, selectPlaytime)\n yield debounce(400, SEARCH_TRANSCRIPTS, search, searchText)\n}\n\nexport function* update(searchFn, { payload }) {\n const index = searchFn(payload)\n\n if (isDefinedAndNotNull(index)) {\n yield put(updateTranscripts(index))\n }\n}\n\nexport function* debouncedUpdate(searchFn, { payload }) {\n const index = searchFn(payload)\n yield delay(200)\n\n if (isDefinedAndNotNull(index)) {\n yield put(updateTranscripts(index))\n }\n}\n\nexport function* resetToPlaytime(searchFn, selectPlaytime) {\n const playtime = yield select(selectPlaytime)\n const index = searchFn(playtime)\n\n if (isDefinedAndNotNull(index)) {\n yield put(updateTranscripts(index))\n }\n}\n\nexport function* search(searchFn, { payload }) {\n const results = searchFn(payload)\n yield put(setTranscriptsSearchResults(results || []))\n}\n","import { takeEvery, select, put } from 'redux-saga/effects'\nimport { STEP_FORWARD, STEP_BACKWARDS } from '@podlove/player-actions/types'\nimport { min, max } from 'ramda'\nimport { requestPlaytime } from '@podlove/player-actions/timepiece'\n\nexport const stepperSaga = ({ selectDuration, selectPlaytime, selectLivesync }) =>\n function* saga() {\n yield takeEvery(STEP_FORWARD, stepForward, { selectDuration, selectPlaytime, selectLivesync })\n yield takeEvery(STEP_BACKWARDS, stepBackward, { selectPlaytime })\n }\n\nexport function* stepForward({ selectDuration, selectPlaytime, selectLivesync }) {\n const duration = yield select(selectDuration)\n const playtime = yield select(selectPlaytime)\n const livesync = yield select(selectLivesync)\n\n const upperLimit = livesync > 0 ? livesync : duration\n\n const targetPlaytime = min(playtime + 30 * 1000, upperLimit)\n yield put(requestPlaytime(targetPlaytime))\n}\n\nexport function* stepBackward({ selectPlaytime }) {\n const playtime = yield select(selectPlaytime)\n const targetPlaytime = max(playtime - 15 * 1000, 0)\n yield put(requestPlaytime(targetPlaytime))\n}\n","import { put, takeEvery } from 'redux-saga/effects'\nimport { delay } from 'redux-saga/effects'\nimport {\n RETRY_PLAY,\n BACKEND_ERROR,\n ERROR_CONFIG_MEDIA,\n ERROR_CONFIG_MISSING\n} from '@podlove/player-actions/types'\nimport { showError, hideError } from '@podlove/player-actions/error'\nimport { requestPlay, requestPause } from '@podlove/player-actions/play'\n\nexport function* errorSaga() {\n yield takeEvery(BACKEND_ERROR, networkError)\n yield takeEvery(RETRY_PLAY, retryPlay)\n yield takeEvery(ERROR_CONFIG_MEDIA, configMediaError)\n yield takeEvery(ERROR_CONFIG_MISSING, configMissingError)\n}\n\nexport function* retryPlay() {\n yield put(hideError())\n yield put(requestPause())\n yield put(requestPlay())\n}\n\nexport function* networkError() {\n yield delay(1000)\n yield put(\n showError({\n title: 'ERROR.NETWORK.TITLE',\n message: 'ERROR.NETWORK.MESSAGE',\n retry: RETRY_PLAY\n })\n )\n}\n\nexport function* configMediaError() {\n yield put(\n showError({\n title: 'ERROR.MEDIA.TITLE',\n message: 'ERROR.MEDIA.MESSAGE'\n })\n )\n}\n\nexport function* configMissingError() {\n yield put(\n showError({\n title: 'ERROR.CONFIG.TITLE',\n message: 'ERROR.CONFIG.MESSAGE'\n })\n )\n}\n","import { compose, propOr, prop } from 'ramda'\nimport keycode from 'keycode'\n\nconst filterGlobal = (callback) => (evt) => {\n const target = prop('nodeName', evt.target)\n\n if (target !== 'BODY') {\n return\n }\n\n callback(evt)\n}\n\nconst parseKey = (evt) => ({\n key: keycode(evt),\n ctrl: propOr(false, 'ctrlKey', evt),\n shift: propOr(false, 'shiftKey', evt),\n meta: propOr(false, 'metaKey', evt),\n alt: propOr(false, 'altKey', evt)\n})\n\nexport const keydown = (callback) =>\n document.addEventListener('keydown', filterGlobal(compose(callback, parseKey)))\nexport const keyup = (callback) =>\n document.addEventListener('keyup', filterGlobal(compose(callback, parseKey)))\n","import { createAction } from 'redux-actions'\nimport { KEY_DOWN, KEY_UP } from './types'\n\nexport const keyDown = createAction(KEY_DOWN)\nexport const keyUp = createAction(KEY_UP)\n","import * as keyboard from '@podlove/utils/keyboard'\nimport { min } from 'ramda'\nimport { channel, matchAction } from './helper'\nimport { call, takeEvery, put, select } from 'redux-saga/effects'\nimport { KEY_DOWN } from '@podlove/player-actions/types'\nimport { keyUp, keyDown } from '@podlove/player-actions/keyboard'\nimport { requestPlaytime } from '@podlove/player-actions/timepiece'\nimport { requestPlay, requestPause } from '@podlove/player-actions/play'\nimport * as chapters from '@podlove/player-actions/chapters'\nimport * as audio from '@podlove/player-actions/audio'\n\nexport function* scrubForward(selectPlaytime, selectDuration) {\n const playtime = yield select(selectPlaytime)\n const duration = yield select(selectDuration)\n\n yield put(requestPlaytime(min(playtime + 2000, duration)))\n}\n\nexport function* scrubBackward(selectPlaytime) {\n const playtime = yield select(selectPlaytime)\n const time = playtime - 2000\n\n yield put(requestPlaytime(time < 0 ? 0 : time))\n}\n\nexport function* playPause(selectPlaystate) {\n const playing = yield select(selectPlaystate)\n\n if (playing) {\n yield put(requestPause())\n } else {\n yield put(requestPlay())\n }\n}\n\nexport function* nextChapter() {\n yield put(chapters.nextChapter())\n}\n\nexport function* previousChapter() {\n yield put(chapters.previousChapter())\n}\n\nexport const changeVolume = (modifier) =>\n function* (selectVolume) {\n const volume = yield select(selectVolume)\n\n yield put(audio.setVolume(parseFloat(volume) + modifier))\n }\n\nexport const changeRate = (modifier) =>\n function* (selectRate) {\n const volume = yield select(selectRate)\n\n yield put(audio.setRate(parseFloat(volume) + modifier))\n }\n\nexport function* mute(selectMuted) {\n const muted = yield select(selectMuted)\n\n if (muted) {\n yield put(audio.unmute())\n } else {\n yield put(audio.mute())\n }\n}\n\nexport function* dispatchKeyUp(input) {\n yield put(keyUp(input))\n}\n\nexport function* dispatchKeyDown(input) {\n yield put(keyDown(input))\n}\n\nexport const keyboardSaga = ({\n selectPlaytime,\n selectDuration,\n selectPlaystate,\n selectVolume,\n selectRate,\n selectMuted\n}) =>\n function* saga() {\n const onKeyDown = yield call(channel, keyboard.keydown)\n const onKeyUp = yield call(channel, keyboard.keyup)\n\n yield takeEvery(onKeyDown, dispatchKeyDown)\n yield takeEvery(onKeyUp, dispatchKeyUp)\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'right', alt: false, shift: false, meta: false, ctrl: false }),\n scrubForward,\n selectPlaytime,\n selectDuration\n )\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'right', alt: true, shift: false, meta: false, ctrl: false }),\n nextChapter\n )\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'left', alt: false, shift: false, meta: false, ctrl: false }),\n scrubBackward,\n selectPlaytime\n )\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'left', alt: true, shift: false, meta: false, ctrl: false }),\n previousChapter\n )\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'space', alt: false, shift: false, meta: false, ctrl: false }),\n playPause,\n selectPlaystate\n )\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'space', alt: false, shift: false, meta: false, ctrl: false }),\n playPause,\n selectPlaystate\n )\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'up', alt: false, shift: true, meta: false, ctrl: false }),\n changeVolume(0.05),\n selectVolume\n )\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'down', alt: false, shift: true, meta: false, ctrl: false }),\n changeVolume(-0.05),\n selectVolume\n )\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'up', alt: true, shift: false, meta: false, ctrl: false }),\n changeRate(0.05),\n selectRate\n )\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'down', alt: true, shift: false, meta: false, ctrl: false }),\n changeRate(-0.05),\n selectRate\n )\n\n yield takeEvery(\n matchAction(KEY_DOWN, { key: 'm', alt: false, shift: false, meta: false, ctrl: false }),\n mute,\n selectMuted\n )\n }\n","import { put, takeEvery, select } from 'redux-saga/effects'\nimport { propOr } from 'ramda'\nimport {\n READY,\n BACKEND_LOADING_START,\n SELECT_PLAYLIST_ENTRY,\n NEXT_PLAYLIST_ENTRY,\n BACKEND_END\n} from '@podlove/player-actions/types'\nimport { init } from '@podlove/player-actions/lifecycle'\nimport * as player from '@podlove/player-actions/play'\nimport * as playlist from '@podlove/player-actions/playlist'\nimport { errorConfigMissing } from '@podlove/player-actions/error'\nimport { json } from '@podlove/utils/request'\nimport { setRate, setVolume, mute, unmute } from '@podlove/player-actions/audio'\n\nimport { takeOnce } from './helper'\n\nexport const playlistSaga = ({\n selectEpisodeConfig,\n selectRate,\n selectVolume,\n selectMuted,\n selectPlaylist,\n selectReference\n}) =>\n function* saga() {\n yield takeEvery(NEXT_PLAYLIST_ENTRY, nextEpisode, { selectPlaylist })\n yield takeEvery(SELECT_PLAYLIST_ENTRY, loadEpisode, {\n selectEpisodeConfig,\n selectRate,\n selectVolume,\n selectMuted\n })\n yield takeEvery(BACKEND_END, episodeEnd)\n yield takeOnce(READY, setActiveEntry, { selectPlaylist, selectReference })\n }\n\nexport function* loadEpisode(\n { selectEpisodeConfig, selectRate, selectVolume, selectMuted },\n { payload: { play } }\n) {\n const url = yield select(selectEpisodeConfig)\n const config = yield json(url)\n\n const rate = yield select(selectRate)\n const volume = yield select(selectVolume)\n const muted = yield select(selectMuted)\n\n if (!config) {\n return yield put(errorConfigMissing())\n }\n\n if (play) {\n yield put(player.requestPause())\n }\n\n yield put(init(config))\n\n if (play) {\n yield takeOnce(READY, requestPlay)\n }\n\n yield takeOnce(BACKEND_LOADING_START, resetMeta, { rate, volume, muted })\n}\n\nexport function* nextEpisode({ selectPlaylist }, { payload: { play } }) {\n const list = yield select(selectPlaylist)\n const current = list.findIndex(({ active }) => active)\n const next = current + 1\n\n if (list.length === 0) {\n return\n }\n\n // nothing selected yet\n if (current < 0) {\n return yield put(playlist.selectEpisode({ index: 0, play }))\n }\n\n // start from beginning\n if (next >= list.length) {\n return yield put(playlist.selectEpisode({ index: 0, play }))\n }\n\n return yield put(playlist.selectEpisode({ index: next, play }))\n}\n\nexport function* episodeEnd() {\n yield put(playlist.nextEpisode({ play: true }))\n}\n\nexport function* resetMeta({ rate, volume, muted }) {\n yield put(setRate(rate))\n yield put(setVolume(volume))\n\n yield put(muted ? mute() : unmute())\n}\n\nexport function* setActiveEntry({ selectPlaylist, selectReference }) {\n const entries = yield select(selectPlaylist)\n const reference = yield select(selectReference)\n\n if (!reference) {\n return\n }\n\n const index = entries.findIndex((entry) => propOr('', 'config', entry).endsWith(reference))\n\n if (index > -1) {\n yield put(playlist.markActive(index))\n }\n}\n\nexport function* requestPlay() {\n yield put(player.requestPlay())\n}\n","/* global MediaMetadata */\n\nimport { takeEvery, put, select, call } from 'redux-saga/effects'\nimport { min, max } from 'ramda'\nimport { READY, UPDATE_CHAPTER, SET_CHAPTER } from '@podlove/player-actions/types'\nimport * as media from '@podlove/player-actions/play'\nimport * as timepiece from '@podlove/player-actions/timepiece'\nimport * as chapters from '@podlove/player-actions/chapters'\nimport { channel, mediaControl } from './helper'\n\nexport const mediaSessionSaga = ({\n selectPoster,\n selectTitle,\n selectShow,\n selectPlaytime,\n selectDuration,\n selectChapterTitle\n}) =>\n function* saga() {\n if (!navigator.mediaSession) {\n return\n }\n\n yield takeEvery(READY, setMetadata, {\n selectPoster,\n selectTitle,\n selectShow,\n selectChapterTitle\n })\n yield takeEvery(UPDATE_CHAPTER, setMetadata, {\n selectPoster,\n selectTitle,\n selectShow,\n selectChapterTitle\n })\n yield takeEvery(SET_CHAPTER, setMetadata, {\n selectPoster,\n selectTitle,\n selectShow,\n selectChapterTitle\n })\n\n const playEvent = yield call(channel, mediaControl('play'))\n const pauseEvent = yield call(channel, mediaControl('pause'))\n const stepBackwardEvent = yield call(channel, mediaControl('seekbackward'))\n const stepForwardEvent = yield call(channel, mediaControl('seekforward'))\n const previousChapterEvent = yield call(channel, mediaControl('previoustrack'))\n const nextChapterEvent = yield call(channel, mediaControl('nexttrack'))\n\n yield takeEvery(playEvent, play)\n yield takeEvery(pauseEvent, pause)\n yield takeEvery(stepBackwardEvent, stepBackward, { selectPlaytime })\n yield takeEvery(stepForwardEvent, stepForward, { selectPlaytime, selectDuration })\n yield takeEvery(previousChapterEvent, previousChapter)\n yield takeEvery(nextChapterEvent, nextChapter)\n }\n\nexport function* setMetadata({ selectPoster, selectTitle, selectShow, selectChapterTitle }) {\n const cover = yield select(selectPoster)\n const title = yield select(selectTitle)\n const show = yield select(selectShow)\n const chapterTitle = yield select(selectChapterTitle)\n\n navigator.mediaSession.metadata = new MediaMetadata({\n title,\n album: chapterTitle,\n artist: show,\n artwork: [{ src: cover }]\n })\n}\n\n/////\nexport function* play() {\n yield put(media.requestPlay())\n}\n\nexport function* pause() {\n yield put(media.requestPause())\n}\n\nexport function* stepForward({ selectPlaytime, selectDuration }) {\n const playtime = yield select(selectPlaytime)\n const duration = yield select(selectDuration)\n\n yield put(timepiece.requestPlaytime(min(playtime + 30000, duration)))\n}\n\nexport function* stepBackward({ selectPlaytime }) {\n const playtime = yield select(selectPlaytime)\n\n yield put(timepiece.requestPlaytime(max(playtime - 15000, 0)))\n}\n\nexport function* nextChapter() {\n yield put(chapters.nextChapter())\n}\n\nexport function* previousChapter() {\n yield put(chapters.previousChapter())\n}\n","import { handleActions } from 'redux-actions'\nimport { READY, CONSTRUCTED, INIT } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = null\n\nexport const reducer = handleActions(\n {\n [CONSTRUCTED]: () => 'constructed',\n [INIT]: () => 'init',\n [READY]: () => 'ready'\n },\n INITIAL_STATE\n)\n","import { combineReducers } from 'redux'\n\nimport { reducer as runtime } from '@podlove/player-state/runtime'\nimport { reducer as theme } from '@podlove/player-state/theme'\nimport { reducer as episode } from '@podlove/player-state/episode'\nimport { reducer as chapters } from '@podlove/player-state/chapters'\nimport { reducer as timepiece } from '@podlove/player-state/timepiece'\nimport { reducer as show } from '@podlove/player-state/show'\nimport { reducer as media } from '@podlove/player-state/media'\nimport { reducer as components } from '@podlove/player-state/components'\nimport { reducer as ghost } from '@podlove/player-state/ghost'\nimport { reducer as network } from '@podlove/player-state/network'\nimport { reducer as quantiles } from '@podlove/player-state/quantiles'\nimport { reducer as tabs } from '@podlove/player-state/tabs'\nimport { reducer as contributors } from '@podlove/player-state/contributors'\nimport { reducer as files } from '@podlove/player-state/files'\nimport { reducer as content } from '@podlove/player-state/content'\nimport { reducer as embed } from '@podlove/player-state/embed'\nimport { reducer as reference } from '@podlove/player-state/reference'\nimport { reducer as audio } from '@podlove/player-state/audio'\nimport { reducer as transcripts } from '@podlove/player-state/transcripts'\nimport { reducer as lastAction } from '@podlove/player-state/last-action'\nimport { reducer as error } from '@podlove/player-state/error'\nimport { reducer as driver } from '@podlove/player-state/driver'\nimport { reducer as playstate } from '@podlove/player-state/playstate'\nimport { reducer as playlist } from '@podlove/player-state/playlist'\nimport { reducer as subscribeButton } from '@podlove/player-state/subscribe-button'\nimport { reducer as channels } from '@podlove/player-state/channels'\nimport { reducer as lifecycle } from '@podlove/player-state/lifecycle'\n\nexport default combineReducers({\n lifecycle,\n runtime,\n theme,\n show,\n episode,\n chapters,\n timepiece,\n media,\n components,\n ghost,\n network,\n quantiles,\n tabs,\n contributors,\n files,\n reference,\n audio,\n transcripts,\n share: combineReducers({\n content,\n embed\n }),\n lastAction,\n error,\n driver,\n playstate,\n playlist,\n subscribeButton,\n channels\n})\n","export const INITIAL_STATE = {\n type: null,\n payload: null\n}\n\nexport const reducer = (_, action) => action\n","import { createAction } from 'redux-actions'\nimport { INIT } from './types'\n\nexport const init = createAction(INIT)\n","import * as runtime from '@podlove/player-actions/runtime'\nimport * as init from '@podlove/player-actions/init'\nimport * as error from '@podlove/player-actions/error'\n\nexport default {\n ...runtime,\n ...init,\n ...error\n}\n","import sagas from '@podlove/player-sagas'\nimport { runtimeSaga } from '@podlove/player-sagas/runtime'\nimport { lifeCycleSaga } from '@podlove/player-sagas/lifecycle'\nimport { playerSaga } from '@podlove/player-sagas/player'\nimport { componentsSaga } from '@podlove/player-sagas/components'\nimport { chaptersSaga } from '@podlove/player-sagas/chapters'\nimport { quantilesSaga } from '@podlove/player-sagas/quantiles'\nimport { transcriptsSaga } from '@podlove/player-sagas/transcripts'\nimport { stepperSaga } from '@podlove/player-sagas/stepper'\nimport { errorSaga } from '@podlove/player-sagas/error'\nimport { keyboardSaga } from '@podlove/player-sagas/keyboard'\nimport { playlistSaga } from '@podlove/player-sagas/playlist'\nimport { mediaSessionSaga } from '@podlove/player-sagas/media-session'\n\nimport { createStore, applyMiddleware, compose } from 'redux'\n\nimport reducers from './reducers'\nimport actions from './actions'\nimport selectors from './selectors'\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\nconst store = createStore(reducers, composeEnhancers(applyMiddleware(sagas.middleware)))\n\n// Connect Sagas\nsagas.run(\n lifeCycleSaga,\n runtimeSaga,\n componentsSaga({\n selectPlaylist: selectors.playlist.list,\n selectChapters: selectors.chapters.list,\n selectTranscripts: selectors.transcripts.hasTranscripts,\n selectFiles: selectors.files.files,\n selectEpisodeCover: selectors.episode.poster,\n selectEpisodeTitle: selectors.episode.title,\n selectEpisodeSubtitle: selectors.episode.subtitle,\n selectShowTitle: selectors.show.title,\n selectShowCover: selectors.show.poster,\n selectRuntimeMode: selectors.mode,\n selectRuntimePlatform: selectors.platform,\n selectChannels: selectors.channels,\n selectEmbedLink: selectors.share.hasEmbedLink\n }),\n quantilesSaga,\n chaptersSaga({\n selectDuration: selectors.duration,\n selectPlaytime: selectors.playtime,\n selectCurrentChapter: selectors.chapters.current,\n selectChapterList: selectors.chapters.list\n }),\n playerSaga({\n selectMedia: selectors.media,\n selectPlaytime: selectors.playtime,\n selectPoster: selectors.driver.image,\n selectTitle: selectors.driver.title\n }),\n transcriptsSaga({\n selectChapters: selectors.chapters.list,\n selectSpeakers: selectors.contributors.list,\n selectPlaytime: selectors.playtime\n }),\n stepperSaga({\n selectDuration: selectors.duration,\n selectPlaytime: selectors.playtime,\n selectLivesync: selectors.livesync\n }),\n errorSaga,\n keyboardSaga({\n selectDuration: selectors.duration,\n selectPlaytime: selectors.playtime,\n selectPlaystate: selectors.driver.playing,\n selectRate: selectors.audio.rate,\n selectVolume: selectors.audio.volume,\n selectMuted: selectors.audio.muted\n }),\n playlistSaga({\n selectEpisodeConfig: selectors.playlist.config,\n selectPlaystate: selectors.driver.playing,\n selectVolume: selectors.audio.volume,\n selectRate: selectors.audio.rate,\n selectMuted: selectors.audio.muted,\n selectPlaylist: selectors.playlist.list,\n selectReference: selectors.reference.episode\n }),\n mediaSessionSaga({\n selectPoster: selectors.driver.image,\n selectDuration: selectors.duration,\n selectPlaytime: selectors.playtime,\n selectShow: selectors.show.title,\n selectTitle: selectors.episode.title,\n selectChapterTitle: selectors.chapters.title\n })\n)\n\nexport { actions, selectors, store }\n","export default {\n en: require('./en.json'),\n de: require('./de.json'),\n eo: require('./eo.json'),\n fr: require('./fr.json'),\n cs: require('./cs.json')\n}\n","export default require('./Root').default\n","export default require('./EpisodeTitle').default\n","export default require('./EpisodeSubtitle').default\n","export default require('./ShowTitle').default\n","export default require('./PublicationDate').default\n","export default require('./Poster').default\n","export default require('./StepForward').default\n","export default require('./StepBackward').default\n","export default require('./PlayButton').default\n","export default require('./ProgressBar').default\n","export default require('./TimerCurrent').default\n","export default require('./TimerDuration').default\n","export default require('./TimerLive').default\n","export default require('./CurrentChapter').default\n","export default require('./ChapterPrevious').default\n","export default require('./ChapterNext').default\n","export default require('./PlayState').default\n","export default require('./VolumeControl').default\n","export default require('./SpeedControl').default\n","export default require('./Tab').default\n","export default require('./SubscribeButton').default\n","export default require('./TabTrigger').default\n","export default require('./TabOverflow').default\n","export default require('./Error').default\n","import 'regenerator-runtime/runtime'\nimport { defineAsyncComponent } from 'vue'\n\nimport Root from './root'\nimport EpisodeTitle from './episode-title'\nimport EpisodeSubtitle from './episode-subtitle'\nimport ShowTitle from './show-title'\nimport PublicationDate from './publication-date'\nimport Poster from './poster'\nimport StepForward from './step-forward'\nimport StepBackward from './step-backward'\nimport PlayButton from './play-button'\nimport ProgressBar from './progress-bar'\nimport TimerCurrent from './timer-current'\nimport TimerDuration from './timer-duration'\nimport TimerLive from './timer-live'\nimport CurrentChapter from './current-chapter'\nimport ChapterPrevious from './chapter-previous'\nimport ChapterNext from './chapter-next'\nimport PlayState from './play-state'\nimport VolumeControl from './volume-control'\nimport SpeedControl from './speed-control'\nimport Tab from './tab'\nimport Divider from './divider'\nimport SubscribeButton from './subscribe-button'\nimport TabTrigger from './tab-trigger'\nimport TabOverflow from './tab-overflow'\nimport Error from './error'\n\nexport default {\n Root,\n EpisodeTitle,\n EpisodeSubtitle,\n ShowTitle,\n PublicationDate,\n Poster,\n StepForward,\n StepBackward,\n PlayButton,\n ProgressBar,\n TimerCurrent,\n TimerDuration,\n TimerLive,\n CurrentChapter,\n ChapterPrevious,\n ChapterNext,\n PlayState,\n VolumeControl,\n SpeedControl,\n Tab,\n TabTrigger,\n TabOverflow,\n Divider,\n Error,\n\n SubscribeButton,\n TabChapters: defineAsyncComponent(() => import('./tab-chapters')),\n TabTranscripts: defineAsyncComponent(() => import('./tab-transcripts')),\n TabFiles: defineAsyncComponent(() => import('./tab-files')),\n TabShare: defineAsyncComponent(() => import('./tab-share')),\n TabPlaylist: defineAsyncComponent(() => import('./tab-playlist')),\n TabShownotes: defineAsyncComponent(() => import('./tab-shownotes')),\n\n ProgressBarLive: defineAsyncComponent(() => import('./progress-bar-live')),\n\n Icon: defineAsyncComponent(() => import('@podlove/components/icons'))\n}\n","/* eslint no-undef: 0 */\nimport { createApp } from 'vue/dist/vue.esm-bundler'\nimport { createI18n } from 'vue-i18n'\nimport { provideStore } from 'redux-vuex'\n\n// Store\nimport { store, actions } from './src/store'\n\n// Translations\nimport translations from './lang'\n\n// Components\nimport components from './src/components'\n\n// Use public path from application\n__webpack_public_path__ = window.resourceBaseUrl || '/'\n\nwindow.PODLOVE_STORE = store\n\nconst i18n = createI18n({\n locale: 'en',\n fallbackLocale: 'en',\n messages: translations\n})\n\nconst app = createApp({\n components\n})\n\nprovideStore({ store, app, actions })\n\napp.use(i18n)\napp.mount('#app')\n","export default require('./Divider').default\n","import { prop } from 'ramda'\n\nexport default {\n runtime: prop('runtime'),\n theme: prop('theme'),\n timepiece: prop('timepiece'),\n episode: prop('episode'),\n show: prop('show'),\n chapters: prop('chapters'),\n media: prop('media'),\n playstate: prop('playstate'),\n components: prop('components'),\n visibleComponents: prop('visibleComponents'),\n ghost: prop('ghost'),\n network: prop('network'),\n quantiles: prop('quantiles'),\n tabs: prop('tabs'),\n contributors: prop('contributors'),\n files: prop('files'),\n share: prop('share'),\n reference: prop('reference'),\n audio: prop('audio'),\n transcripts: prop('transcripts'),\n error: prop('error'),\n driver: prop('driver'),\n playlist: prop('playlist'),\n subscribeButton: prop('subscribeButton'),\n channels: prop('channels')\n}\n","import { compose } from 'ramda'\nimport { scope } from '@podlove/utils/helper'\nimport { selectors as theme } from '@podlove/player-state/theme'\nimport root from './root'\n\nconst fontStyle = ({ weight = 300, family = [] } = {}) => ({\n 'font-family': family.map((font) => `${font}`).join(', '),\n 'font-weight': weight\n})\n\nexport default {\n ...scope(theme, root.theme),\n fonts: compose(\n (state) => [theme.fontRegular(state), theme.fontBold(state), theme.fontCi(state)],\n root.theme\n ),\n fontRegular: compose(fontStyle, theme.fontRegular, root.theme),\n fontBold: compose(fontStyle, theme.fontBold, root.theme),\n fontCi: compose(fontStyle, theme.fontCi, root.theme)\n}\n","import { selectors as runtime } from '@podlove/player-state/runtime'\nimport { compose } from 'ramda'\n\nimport root from './root'\n\nconst target = compose((mode) => (mode === 'native' ? '_parent' : '_blank'), runtime.mode)\n\nconst fixed = compose((mode) => mode === 'embed', runtime.mode)\n\nexport default {\n language: compose(runtime.language, root.runtime),\n platform: compose(runtime.platform, root.runtime),\n mode: compose(runtime.mode, root.runtime),\n locale: compose(runtime.locale, root.runtime),\n version: compose(runtime.version, root.runtime),\n target: compose(target, root.runtime),\n fixed: compose(fixed, root.runtime)\n}\n","import { selectors as timepiece } from '@podlove/player-state/timepiece'\nimport { compose } from 'ramda'\n\nimport root from './root'\n\nexport default {\n playtime: compose(timepiece.playtime, root.timepiece),\n duration: compose(timepiece.duration, root.timepiece),\n livesync: compose(timepiece.livesync, root.timepiece)\n}\n","import { selectors as show } from '@podlove/player-state/show'\nimport { compose } from 'ramda'\n\nimport root from './root'\n\nexport default {\n title: compose(show.title, root.show),\n subtitle: compose(show.subtitle, root.show),\n summary: compose(show.summary, root.show),\n link: compose(show.link, root.show),\n poster: compose(show.poster, root.show)\n}\n","import { compose } from 'ramda'\nimport root from './root'\nimport { selectors as episode } from '@podlove/player-state/episode'\n\nexport default {\n title: compose(episode.title, root.episode),\n subtitle: compose(episode.subtitle, root.episode),\n summary: compose(episode.summary, root.episode),\n link: compose(episode.link, root.episode),\n poster: compose(episode.poster, root.episode),\n publicationDate: compose(episode.publicationDate, root.episode)\n}\n","import { compose } from 'ramda'\nimport root from './root'\nimport { selectors as chapters } from '@podlove/player-state/chapters'\n\nexport default {\n list: compose(chapters.list, root.chapters),\n next: compose(chapters.next, root.chapters),\n previous: compose(chapters.previous, root.chapters),\n current: compose(chapters.current, root.chapters),\n title: compose(chapters.title, root.chapters),\n image: compose(chapters.image, root.chapters)\n}\n","import timepiece from './timepiece'\nimport show from './show'\nimport episode from './episode'\nimport chapters from './chapters'\n\nconst posterSrc = (state) => {\n const playtime = timepiece.playtime(state)\n\n if (playtime === 0) {\n return episode.poster(state) || show.poster(state)\n }\n\n return chapters.image(state) || episode.poster(state) || show.poster(state)\n}\n\nexport default {\n posterSrc\n}\n","import { compose, either } from 'ramda'\nimport { selectors as driver } from '@podlove/player-state/driver'\n\nimport root from './root'\nimport show from './show'\nimport episode from './episode'\nimport chapters from './chapters'\n\nexport default {\n playing: compose(driver.playing, root.driver),\n title: either(episode.title, show.title),\n image: either(chapters.image, episode.poster, show.poster)\n}\n","import { compose } from 'ramda'\nimport { selectors as transcripts } from '@podlove/player-state/transcripts'\n\nimport root from './root'\n\nexport default {\n timeline: compose(transcripts.timeline, root.transcripts),\n active: compose(transcripts.active, root.transcripts),\n follow: compose(transcripts.follow, root.transcripts),\n hasTranscripts: compose(transcripts.hasTranscripts, root.transcripts),\n searchQuery: compose(transcripts.searchQuery, root.transcripts),\n searchSelected: compose(transcripts.searchSelected, root.transcripts),\n searchResults: compose(transcripts.searchResults, root.transcripts),\n searching: compose(transcripts.searching, root.transcripts)\n}\n","import { calcHours, calcMinutes, calcSeconds } from '@podlove/utils/time'\n\nimport chapters from './chapters'\nimport timepiece from './timepiece'\nimport driver from './driver'\nimport transcripts from './transcripts'\n\nconst translation = (key, attr = {}) => ({ key, attr })\n\nexport default {\n chapterNext: (state) => {\n const next = chapters.next(state)\n\n if (!next) {\n return translation('A11Y.PLAYER_CHAPTER_END')\n }\n\n return translation('A11Y.PLAYER_CHAPTER_NEXT', next)\n },\n\n chapterPrevious: (state) => {\n const previous = chapters.previous(state)\n const current = chapters.current(state)\n const playtime = timepiece.playtime(state)\n\n if (!previous) {\n return translation('A11Y.PLAYER_CHAPTER_START')\n }\n\n if (current.start + 2000 > playtime) {\n return translation('A11Y.PLAYER_CHAPTER_CURRENT', current)\n }\n\n return translation('A11Y.PLAYER_CHAPTER_PREVIOUS', previous)\n },\n\n currentChapter: (state) => {\n return translation('A11Y.TIMER_CHAPTER', chapters.current(state))\n },\n\n playButtonPause: (state) => {\n return translation('A11Y.PLAYER_PAUSE', chapters.current(state))\n },\n\n playButtonDuration: (state) => {\n const duration = timepiece.duration(state)\n const playtime = timepiece.playtime(state)\n\n return translation('A11Y.PLAYER_START', {\n hours: calcHours(playtime > 0 ? playtime : duration),\n minutes: calcMinutes(playtime > 0 ? playtime : duration),\n seconds: calcSeconds(playtime > 0 ? playtime : duration)\n })\n },\n\n playButtonReplay: () => {\n return translation('A11Y.PLAYER_LOADING')\n },\n\n playButtonPlay: () => {\n return translation('A11Y.PLAYER_PLAY')\n },\n\n playButtonError: () => {\n return translation('A11Y.PLAYER_ERROR')\n },\n\n stepperBackwards: () => {\n return translation('A11Y.PLAYER_STEPPER_BACK', { seconds: 15 })\n },\n\n stepperForward: () => {\n return translation('A11Y.PLAYER_STEPPER_FORWARD', { seconds: 30 })\n },\n\n progressBar: () => {\n return translation('A11Y.PROGRESSBAR_INPUT')\n },\n\n closeTab: (tab) => () => {\n return translation('A11Y.TAB_CLOSE.' + tab.toUpperCase())\n },\n\n tabTrigger: (tab) => () => {\n return translation('A11Y.TAB_TRIGGER.' + tab.toUpperCase())\n },\n\n tabPanel: (tab) => () => {\n return translation('A11Y.TAB_PANEL.' + tab.toUpperCase())\n },\n\n chapterPlay: (chapter) => (state) => {\n const playing = driver.playing(state)\n const current = chapters.current(state)\n\n if (chapter.index === current.index && playing) {\n return translation('A11Y.CHAPTER_PAUSE')\n }\n\n return translation('A11Y.CHAPTER_PLAY', chapter)\n },\n\n chapterTimerRemaining: (chapter) => (state) => {\n const playtime = timepiece.playtime(state)\n const left = chapter.end - playtime\n\n if (chapter.start > playtime) {\n return translation('A11Y.TIMER_REMAINING', {\n hours: calcHours(chapter.end - chapter.start),\n minutes: calcMinutes(chapter.end - chapter.start),\n seconds: calcSeconds(chapter.end - chapter.start)\n })\n }\n\n return translation('A11Y.TIMER_REMAINING', {\n hours: calcHours(left >= 0 ? left : 0),\n minutes: calcMinutes(left >= 0 ? left : 0),\n seconds: calcSeconds(left >= 0 ? left : 0)\n })\n },\n\n timerCurrent: (state) => {\n const playtime = timepiece.playtime(state)\n\n return translation('A11Y.TIMER_CURRENT', {\n hours: calcHours(playtime),\n minutes: calcMinutes(playtime),\n seconds: calcSeconds(playtime)\n })\n },\n\n timerDuration: (state) => {\n const duration = timepiece.duration(state)\n\n return translation('A11Y.TIMER_REMAINING', {\n hours: calcHours(duration),\n minutes: calcMinutes(duration),\n seconds: calcSeconds(duration)\n })\n },\n\n timerLive: (state) => {\n const live = timepiece.livesync(state) - timepiece.playtime(state)\n\n return translation('A11Y.TIMER_LIVE', {\n hours: calcHours(live),\n minutes: calcMinutes(live),\n seconds: calcSeconds(live)\n })\n },\n\n chapterList: () => {\n return translation('A11Y.CHAPTER_LIST')\n },\n\n transcriptsSearch: () => {\n return translation('A11Y.TRANSCRIPTS_SEARCH')\n },\n\n clearTranscriptsSearch: () => {\n return translation('A11Y.TRANSCRIPTS_SEARCH_CLEAR')\n },\n\n previousTranscriptsSearchResult: () => {\n return translation('A11Y.TRANSCRIPTS_SEARCH_PREVIOUS')\n },\n\n nextTranscriptsSearchResult: () => {\n return translation('A11Y.TRANSCRIPTS_SEARCH_NEXT')\n },\n\n followTranscripts: (state) => {\n if (transcripts.follow(state)) {\n return translation('A11Y.TRANSCRIPTS_UNFOLLOW')\n }\n\n return translation('A11Y.TRANSCRIPTS_FOLLOW')\n },\n\n episodeList: () => {\n return translation('A11Y.EPISODE_LIST')\n },\n\n episodePlay: (episode) => (state) => {\n const playing = driver.playing(state)\n\n if (episode.active && playing) {\n return translation('A11Y.EPISODE_PAUSE', episode)\n }\n\n return translation('A11Y.EPISODE_PLAY', episode)\n },\n\n episodeDuration: (episode) => () => {\n return translation('A11Y.TIMER_DURATION', {\n hours: calcHours(episode.duration),\n minutes: calcMinutes(episode.duration),\n seconds: calcSeconds(episode.duration)\n })\n },\n\n shareChannel: () => (channel) => {\n if (channel === 'link') {\n return translation('A11Y.COPY_SHARE_LINK')\n }\n\n return translation('A11Y.SHARE_CHANNEL', { channel })\n },\n\n embedCode: () => {\n return translation('A11Y.SHARE_EMBED_CODE')\n },\n\n copyShareLink: () => {\n return translation('A11Y.COPY_SHARE_LINK')\n },\n\n copyEmbedLink: () => {\n return translation('A11Y.COPY_EMBED_CODE')\n },\n\n volumeButton: () => {\n return translation('A11Y.VOLUME_CONTROL')\n },\n\n volumeControl: () => {\n return translation('A11Y.SET_VOLUME_IN_PERCENT')\n },\n\n speedControl: () => (speed) => {\n return translation('A11Y.SPEED_CONTROL', { speed })\n },\n\n subscribeButton: () => {\n return translation('A11Y.SUBSCRIBE_BUTTON')\n }\n}\n","import { compose } from 'ramda'\nimport { selectors as media } from '@podlove/player-state/media'\n\nimport root from './root'\n\nexport default compose(media.media, root.media)\n","import { compose, propOr, equals, lt, length } from 'ramda'\nimport root from './root'\nimport { selectors as components } from '@podlove/player-state/components'\nimport timepiece from './timepiece'\nimport chapters from './chapters'\n\nexport default {\n playButton: compose(components.playButton, root.components),\n chapterButtons: compose(components.chapterButtons, root.components),\n stepperButtons: compose(components.stepperButtons, root.components),\n progressBar: compose(components.progressBar, root.components),\n volumeControl: compose(components.volumeControl, root.components),\n rateControl: compose(components.rateControl, root.components),\n poster: compose(components.poster, root.components),\n error: compose(components.error, root.components),\n shownotesTab: compose(components.shownotesTab, root.components),\n chaptersTab: compose(components.chaptersTab, root.components),\n transcriptTab: compose(components.transcriptTab, root.components),\n shareTab: compose(components.shareTab, root.components),\n filesTab: compose(components.filesTab, root.components),\n playlistTab: compose(components.playlistTab, root.components),\n nextChapterDisabled: compose(equals(-1), propOr(-1, 'index'), chapters.next),\n previousChapterDisabled: compose(equals(-1), propOr(-1, 'index'), chapters.previous),\n chaptersChannel: compose(lt(0), length, chapters.list),\n sharePlaytime: compose(components.sharePlaytime, root.components)\n}\n","import { compose } from 'ramda'\nimport root from './root'\nimport { selectors as ghost } from '@podlove/player-state/ghost'\nimport { currentChapterByPlaytime } from '@podlove/utils/chapters'\n\nimport chapters from './chapters'\n\nconst time = compose(ghost.time, root.ghost)\nconst active = compose(ghost.active, root.ghost)\n\nexport default {\n time,\n active,\n chapter: (state) => currentChapterByPlaytime(chapters.list(state), time(state))\n}\n","import { compose } from 'ramda'\nimport { selectors as network } from '@podlove/player-state/network'\n\nimport root from './root'\n\nconst buffer = compose(network.buffer, root.network)\n\nexport default {\n buffer\n}\n","import { compose } from 'ramda'\nimport { selectors as quantiles } from '@podlove/player-state/quantiles'\n\nimport root from './root'\n\nexport default compose(quantiles.quantiles, root.quantiles)\n","import { compose } from 'ramda'\n\nimport root from './root'\nimport { createObject } from '@podlove/utils/helper'\nimport { selectors as tabs } from '@podlove/player-state/tabs'\n\nexport default createObject({\n chapters: compose(tabs.chapters, root.tabs),\n audio: compose(tabs.audio, root.tabs),\n share: compose(tabs.share, root.tabs),\n files: compose(tabs.files, root.tabs),\n shownotes: compose(tabs.shownotes, root.tabs),\n transcripts: compose(tabs.transcripts, root.tabs),\n playlist: compose(tabs.playlist, root.tabs)\n})\n","import { compose, pathOr, values, prop } from 'ramda'\nimport { selectors } from '@podlove/player-state/contributors'\n\nimport root from './root'\n\nconst list = compose(selectors.contributors, root.contributors)\n\nconst groups = (state) => {\n const contributors = list(state)\n\n return values(\n contributors.reduce((result, contributor) => {\n const group = prop('group', contributor)\n const existing = pathOr([], [prop('id', group), 'contributors'], result)\n const id = prop('id', group)\n\n if (!group) {\n return result\n }\n\n return {\n ...result,\n [id]: {\n ...group,\n contributors: [...existing, contributor]\n }\n }\n }, {})\n )\n}\n\nexport default {\n list,\n groups\n}\n","import { compose } from 'ramda'\nimport { selectors as files } from '@podlove/player-state/files'\n\nimport root from './root'\n\nexport default {\n files: compose(files.files, root.files)\n}\n","import { compose } from 'ramda'\nimport { selectors as reference } from '@podlove/player-state/reference'\n\nimport root from './root'\n\nexport default {\n share: compose(reference.share, root.reference),\n config: compose(reference.config, root.reference),\n episode: compose(reference.episode, root.reference),\n origin: compose(reference.origin, root.reference)\n}\n","import { selectors as content } from '@podlove/player-state/content'\nimport { selectors as embed } from '@podlove/player-state/embed'\nimport { toHumanTime } from '@podlove/utils/time'\nimport { addQueryParameter } from '@podlove/utils/url'\nimport { compose, prop } from 'ramda'\n\nimport root from './root'\n\nimport show from './show'\nimport episode from './episode'\nimport chapter from './chapters'\nimport reference from './reference'\nimport timepiece from './timepiece'\n\nconst contentSlice = prop('content')\nconst embedSlice = prop('embed')\nconst type = compose(content.content, contentSlice, root.share)\nconst embedSize = compose(embed.size, embedSlice, root.share)\nconst availableEmbedSizes = compose(embed.available, embedSlice, root.share)\n\nconst hasLink = (state) =>\n (type(state) === 'show' && show.link(state)) || (type(state) !== 'show' && episode.link(state))\n\nconst hasEmbedLink = (state) =>\n !!(\n type(state) !== 'show' &&\n reference.episode(state) &&\n (reference.share(state) || reference.origin(state))\n )\n\nconst link = (state) => {\n switch (type(state)) {\n case 'episode':\n return episode.link(state)\n case 'time':\n return addQueryParameter(episode.link(state), { t: toHumanTime(timepiece.playtime(state)) })\n default:\n return null\n }\n}\n\nconst code = (state) => {\n const showTitle = show.title(state)\n const episodeTitle = episode.title(state)\n const currentChapter = chapter.current(state)\n\n const title = `Podlove Web Player:${showTitle ? ' ' + showTitle : ''}${\n episodeTitle ? ' - ' + episodeTitle : ''\n }`\n\n const parameters = {\n episode: reference.episode(state),\n ...(reference.config(state) ? { config: reference.config(state) } : {}),\n ...(type(state) === 'chapter'\n ? { t: `${toHumanTime(currentChapter.start)},${toHumanTime(currentChapter.end)}` }\n : {}),\n ...(type(state) === 'time' ? { t: toHumanTime(timepiece.playtime(state)) } : {})\n }\n\n return ``\n}\n\nexport default {\n content: type,\n hasLink,\n hasEmbedLink,\n embedSize,\n availableEmbedSizes,\n link,\n code\n}\n","import { compose } from 'ramda'\nimport { selectors as audio } from '@podlove/player-state/audio'\n\nimport root from './root'\n\nconst volume = compose(audio.volume, root.audio)\nconst muted = compose(audio.muted, root.audio)\nconst rate = compose(audio.rate, root.audio)\n\nconst icon = (state) => {\n if (muted(state)) {\n return 'speaker-0'\n }\n\n if (volume(state) >= 0.75) {\n return 'speaker-75'\n }\n\n if (volume(state) >= 0.5) {\n return 'speaker-50'\n }\n\n if (volume(state) > 0) {\n return 'speaker-25'\n }\n\n return 'speaker-0'\n}\n\nexport default {\n volume,\n muted,\n icon,\n rate\n}\n","import { compose } from 'ramda'\nimport { selectors as error } from '@podlove/player-state/error'\nimport root from './root'\n\nexport default {\n active: compose(error.active, root.error),\n icon: compose(error.icon, root.error),\n title: compose(error.title, root.error),\n message: compose(error.message, root.error),\n retry: compose(error.retry, root.error)\n}\n","import { compose } from 'ramda'\nimport { selectors as playstate } from '@podlove/player-state/playstate'\n\nimport root from './root'\n\nexport default compose(playstate.playstate, root.playstate)\n","import { compose } from 'ramda'\nimport { selectors as playlist } from '@podlove/player-state/playlist'\n\nimport root from './root'\n\nexport default {\n list: compose(playlist.list, root.playlist),\n config: compose(playlist.config, root.playlist)\n}\n","import { scope } from '@podlove/utils/helper'\nimport { selectors as subscribeButton } from '@podlove/player-state/subscribe-button'\nimport root from './root'\n\nexport default scope(subscribeButton, root.subscribeButton)\n","import { compose } from 'ramda'\nimport root from './root'\nimport { selectors } from '@podlove/player-state/channels'\n\nexport default compose(selectors.channels, root.channels)\n","// Application Wide Selectors\nimport theme from './theme'\nimport runtime from './runtime'\nimport timepiece from './timepiece'\nimport header from './header'\nimport episode from './episode'\nimport chapters from './chapters'\nimport accessibility from './accessibility'\nimport show from './show'\nimport media from './media'\nimport components from './components'\nimport ghost from './ghost'\nimport network from './network'\nimport quantiles from './quantiles'\nimport tabs from './tabs'\nimport contributors from './contributors'\nimport files from './files'\nimport share from './share'\nimport audio from './audio'\nimport transcripts from './transcripts'\nimport error from './error'\nimport driver from './driver'\nimport playstate from './playstate'\nimport playlist from './playlist'\nimport subscribeButton from './subscribe-button'\nimport channels from './channels'\nimport reference from './reference'\n\nexport default {\n ...runtime,\n ...timepiece,\n audio,\n chapters,\n header,\n episode,\n show,\n theme,\n accessibility,\n media,\n components,\n ghost,\n network,\n quantiles,\n tabs,\n contributors,\n files,\n share,\n transcripts,\n error,\n driver,\n playstate,\n playlist,\n subscribeButton,\n channels,\n reference\n}\n","export const PREFIX = `BUTTON`\n\nconst type = (name) => `${PREFIX}_${name}`\n\nexport const INIT = type('INIT')\n\nexport const SHOW_LIST = type('SHOW_LIST')\nexport const HIDE_LIST = type('HIDE_LIST')\n\nexport const SHOW_OVERLAY = type('SHOW_OVERLAY')\nexport const HIDE_OVERLAY = type('HIDE_OVERLAY')\n\nexport const SHOW_FINISH_CARD = type('SHOW_FINISH_CARD')\nexport const HIDE_FINISH_CARD = type('HIDE_FINISH_CARD')\n\nexport const SET_RUNTIME = type('SET_RUNTIME')\nexport const SET_LANGUAGE = type('SET_LANGUAGE')\nexport const SET_VERSION = type('SET_VERSION')\n","import { createAction } from 'redux-actions'\nimport { HIDE_OVERLAY, SHOW_OVERLAY } from './types'\n\nexport const hide = createAction(HIDE_OVERLAY)\nexport const show = createAction(SHOW_OVERLAY)\n","export default require('./ChapterButton').default\n","export default require('./Divider').default\n","export default require('./Font').default\n","export default require('./Icon').default\n","import PlayIcon from './states/Play'\nimport PlusIcon from './states/Plus'\nimport PauseIcon from './states/Pause'\nimport RestartIcon from './states/Restart'\nimport LoadingIcon from './states/Loading'\nimport NextIcon from './states/Next'\nimport PreviousIcon from './states/Previous'\nimport ForwardIcon from './states/Forward'\nimport BackwardsIcon from './states/Backwards'\nimport InfoIcon from './states/Info'\nimport CloseIcon from './states/Close'\nimport ClockIcon from './states/Clock'\nimport CalendarIcon from './states/Calendar'\nimport LinkIcon from './states/Link'\nimport ChapterIcon from './states/Chapter'\nimport DownloadIcon from './states/Download'\nimport AudioFileIcon from './states/AudioFile'\nimport ImageFileIcon from './states/ImageFile'\nimport PdfFileIcon from './states/PdfFile'\nimport TextFileIcon from './states/TextFile'\nimport VideoFileIcon from './states/VideoFile'\nimport EmbedIcon from './states/Embed'\nimport TwitterIcon from './states/Twitter'\nimport RedditIcon from './states/Reddit'\nimport PinterestIcon from './states/Pinterest'\nimport MailIcon from './states/Mail'\nimport LinkedinIcon from './states/Linkedin'\nimport FacebookIcon from './states/Facebook'\nimport ContentShowIcon from './states/ContentShow'\nimport ContentPlaytimeIcon from './states/ContentPlaytime'\nimport ContentChapterIcon from './states/ContentChapter'\nimport ContentEpisodeIcon from './states/ContentEpisode'\nimport ShareIcon from './states/Share'\nimport CopyIcon from './states/Copy'\nimport Speaker0Icon from './states/Speaker0'\nimport Speaker25Icon from './states/Speaker25'\nimport Speaker50Icon from './states/Speaker50'\nimport Speaker75Icon from './states/Speaker75'\nimport PodloveIcon from './states/Podlove'\nimport PodlovePlayerIcon from './states/PodlovePlayer'\nimport TranscriptsIcon from './states/Transcripts'\nimport SearchClearIcon from './states/SearchClear'\nimport SearchNextIcon from './states/SearchNext'\nimport SearchPreviousIcon from './states/SearchPrevious'\nimport MissingConnectionIcon from './states/MissingConnection'\nimport InvalidConfigurationIcon from './states/InvalidConfiguration'\nimport SubscribeIcon from './states/Subscribe'\nimport ArrowToRightIcon from './states/ArrowToRight'\nimport ArrowToLeftIcon from './states/ArrowToLeft'\nimport Speed050Icon from './states/Speed050'\nimport Speed075Icon from './states/Speed075'\nimport Speed100Icon from './states/Speed100'\nimport Speed125Icon from './states/Speed125'\nimport Speed150Icon from './states/Speed150'\nimport Speed175Icon from './states/Speed175'\nimport Speed200Icon from './states/Speed200'\nimport ActiveTabIcon from './states/ActiveTab'\nimport PlaylistIcon from './states/Playlist'\nimport SearchIcon from './states/Search'\nimport MenuPlayIcon from './states/MenuPlay'\nimport MenuPauseIcon from './states/MenuPause'\nimport MenuEmptyIcon from './states/MenuEmpty'\nimport MessengerIcon from './states/Messenger'\nimport CheckMarkIcon from './states/CheckMark'\nimport ChevronRightIcon from './states/ChevronRight'\nimport ChevronLeftIcon from './states/ChevronLeft'\nimport XingIcon from './states/Xing'\nimport WhatsAppIcon from './states/WhatsApp'\n\nexport const types = [\n 'play',\n 'plus',\n 'pause',\n 'loading',\n 'restart',\n 'loading',\n 'next',\n 'previous',\n 'forward',\n 'backwards',\n 'info',\n 'close',\n 'clock',\n 'calendar',\n 'link',\n 'chapter',\n 'download',\n 'audio-file',\n 'image-file',\n 'pdf-file',\n 'text-file',\n 'video-file',\n 'embed',\n 'twitter',\n 'reddit',\n 'pinterest',\n 'mail',\n 'linkedin',\n 'facebook',\n 'content-show',\n 'content-playtime',\n 'content-chapter',\n 'content-episode',\n 'share',\n 'copy',\n 'speaker-0',\n 'speaker-25',\n 'speaker-50',\n 'speaker-75',\n 'podlove',\n 'podlove-player',\n 'transcripts',\n 'search-clear',\n 'search-previous',\n 'search-next',\n 'missing-connection',\n 'invalid-configuration',\n 'subscribe',\n 'arrow-to-right',\n 'arrow-to-left',\n 'speed-050',\n 'speed-075',\n 'speed-100',\n 'speed-125',\n 'speed-150',\n 'speed-175',\n 'speed-200',\n 'active-tab',\n 'playlist',\n 'search',\n 'menu-play',\n 'menu-pause',\n 'menu-empty',\n 'messenger',\n 'check-mark',\n 'chevron-left',\n 'chevron-right',\n 'whats-app',\n 'xing'\n]\n\nexport const components = {\n PlayIcon,\n PlusIcon,\n PauseIcon,\n RestartIcon,\n LoadingIcon,\n NextIcon,\n PreviousIcon,\n ForwardIcon,\n BackwardsIcon,\n InfoIcon,\n CloseIcon,\n ClockIcon,\n CalendarIcon,\n LinkIcon,\n ChapterIcon,\n DownloadIcon,\n AudioFileIcon,\n ImageFileIcon,\n PdfFileIcon,\n TextFileIcon,\n VideoFileIcon,\n EmbedIcon,\n TwitterIcon,\n RedditIcon,\n PinterestIcon,\n MailIcon,\n LinkedinIcon,\n FacebookIcon,\n ContentShowIcon,\n ContentPlaytimeIcon,\n ContentChapterIcon,\n ContentEpisodeIcon,\n ShareIcon,\n CopyIcon,\n Speaker0Icon,\n Speaker25Icon,\n Speaker50Icon,\n Speaker75Icon,\n PodloveIcon,\n PodlovePlayerIcon,\n TranscriptsIcon,\n SearchClearIcon,\n SearchNextIcon,\n SearchPreviousIcon,\n MissingConnectionIcon,\n InvalidConfigurationIcon,\n SubscribeIcon,\n ArrowToRightIcon,\n ArrowToLeftIcon,\n Speed050Icon,\n Speed075Icon,\n Speed100Icon,\n Speed125Icon,\n Speed150Icon,\n Speed175Icon,\n Speed200Icon,\n ActiveTabIcon,\n PlaylistIcon,\n SearchIcon,\n MenuPlayIcon,\n MenuPauseIcon,\n MenuEmptyIcon,\n MessengerIcon,\n CheckMarkIcon,\n ChevronRightIcon,\n ChevronLeftIcon,\n XingIcon,\n WhatsAppIcon\n}\n","export default require('./Image').default\n","export default require('./InputSlider').default\n","export default require('./PlayButton').default\n","export default require('./ProgressBar').default\n","export default require('./StepperButton').default\n","const Header = require('./Header').default\nconst HeaderItem = require('./HeaderItem').default\nconst Body = require('./Body').default\n\nexport default {\n Header,\n HeaderItem,\n Body\n}\n","export default require('./Timer').default\n","import { createAction } from 'redux-actions'\nimport { SET_VOLUME, MUTE, UNMUTE, SET_RATE } from './types'\n\nexport const setVolume = createAction(SET_VOLUME)\nexport const mute = createAction(MUTE)\nexport const unmute = createAction(UNMUTE)\nexport const setRate = createAction(SET_RATE)\n","import { createAction } from 'redux-actions'\nimport {\n SET_CHAPTERS_LIST,\n NEXT_CHAPTER,\n PREVIOUS_CHAPTER,\n SET_CHAPTER,\n UPDATE_CHAPTER\n} from './types'\n\nexport const setChapters = createAction(SET_CHAPTERS_LIST)\nexport const nextChapter = createAction(NEXT_CHAPTER)\nexport const previousChapter = createAction(PREVIOUS_CHAPTER)\nexport const setChapter = createAction(SET_CHAPTER)\nexport const updateChapter = createAction(UPDATE_CHAPTER)\n","import { createAction } from 'redux-actions'\n\nimport {\n REQUEST_PLAY,\n REQUEST_PAUSE,\n REQUEST_RESTART,\n BACKEND_PLAY,\n BACKEND_PAUSE,\n BACKEND_END,\n BACKEND_LOADING_START,\n BACKEND_LOADING_END,\n BACKEND_BUFFER,\n BACKEND_ERROR\n} from './types'\n\nexport const requestPlay = createAction(REQUEST_PLAY)\nexport const backendPlay = createAction(BACKEND_PLAY)\n\nexport const requestPause = createAction(REQUEST_PAUSE)\nexport const backendPause = createAction(BACKEND_PAUSE)\n\nexport const requestRestart = createAction(REQUEST_RESTART)\n\nexport const backendLoadingStart = createAction(BACKEND_LOADING_START)\nexport const backendLoadingEnd = createAction(BACKEND_LOADING_END)\nexport const backendBuffer = createAction(BACKEND_BUFFER)\nexport const backendEnd = createAction(BACKEND_END)\n\nexport const backendError = createAction(BACKEND_ERROR)\n","import { createAction } from 'redux-actions'\nimport { NEXT_PLAYLIST_ENTRY, SELECT_PLAYLIST_ENTRY, MARK_PLAYLIST_ENTRY_ACTIVE } from './types'\n\nexport const nextEpisode = createAction(NEXT_PLAYLIST_ENTRY)\nexport const selectEpisode = createAction(SELECT_PLAYLIST_ENTRY)\nexport const markActive = createAction(MARK_PLAYLIST_ENTRY_ACTIVE)\n","import { ENABLE_GHOST_MODE, DISABLE_GHOST_MODE } from './types'\nimport { createAction } from 'redux-actions'\n\nexport const enableGhost = createAction(ENABLE_GHOST_MODE)\nexport const disableGhost = createAction(DISABLE_GHOST_MODE)\n","import { createAction } from 'redux-actions'\nimport { STEP_FORWARD, STEP_BACKWARDS } from './types'\n\nexport const stepForward = createAction(STEP_FORWARD)\nexport const stepBackwards = createAction(STEP_BACKWARDS)\n","import { createAction } from 'redux-actions'\n\nimport { TOGGLE_TAB } from './types'\n\nexport const toggleTab = createAction(TOGGLE_TAB)\n","import { createAction } from 'redux-actions'\n\nimport {\n BACKEND_PLAYTIME,\n REQUEST_PLAYTIME,\n SIMULATE_PLAYTIME,\n BACKEND_DURATION,\n BACKEND_LIVESYNC\n} from './types'\n\nexport const backendPlaytime = createAction(BACKEND_PLAYTIME)\nexport const requestPlaytime = createAction(REQUEST_PLAYTIME)\nexport const simulatePlaytime = createAction(SIMULATE_PLAYTIME)\nexport const backendDuration = createAction(BACKEND_DURATION)\nexport const backendLiveSync = createAction(BACKEND_LIVESYNC)\n","import { createAction } from 'redux-actions'\n\nimport {\n SET_TRANSCRIPTS_TIMELINE,\n UPDATE_TRANSCRIPTS,\n TOGGLE_FOLLOW_TRANSCRIPTS,\n SEARCH_TRANSCRIPTS,\n RESET_SEARCH_TRANSCRIPTS,\n SET_SEARCH_TRANSCRIPTS_RESULTS,\n NEXT_SEARCH_RESULT,\n PREVIOUS_SEARCH_RESULT\n} from './types'\n\nexport const setTranscriptsTimeline = createAction(\n SET_TRANSCRIPTS_TIMELINE,\n (transcripts = []) => transcripts\n)\nexport const updateTranscripts = createAction(UPDATE_TRANSCRIPTS, (playtime = 0) => playtime)\nexport const followTranscripts = createAction(TOGGLE_FOLLOW_TRANSCRIPTS, (follow = true) => follow)\nexport const searchTranscripts = createAction(SEARCH_TRANSCRIPTS)\nexport const resetSearchTranscription = createAction(RESET_SEARCH_TRANSCRIPTS)\nexport const setTranscriptsSearchResults = createAction(\n SET_SEARCH_TRANSCRIPTS_RESULTS,\n (results = []) => results\n)\nexport const nextTranscriptsSearchResult = createAction(NEXT_SEARCH_RESULT)\nexport const previousTranscriptsSearchResult = createAction(PREVIOUS_SEARCH_RESULT)\n","export const PREFIX = `PLAYER`\n\nconst type = (name) => `${PREFIX}_${name}`\n\n// Lifecycle\nexport const CONSTRUCTED = type('CONSTRUCTED') // config was parsed\nexport const INIT = type('INIT') // initial config\nexport const READY = type('READY') // config was parsed\nexport const RESTORE = type('RESTORE') // restored\n\n// Chapters\nexport const SET_CHAPTERS_LIST = type('SET_CHAPTERS_LIST')\nexport const NEXT_CHAPTER = type('NEXT_CHAPTER')\nexport const PREVIOUS_CHAPTER = type('PREVIOUS_CHAPTER')\nexport const SET_CHAPTER = type('SET_CHAPTER')\nexport const UPDATE_CHAPTER = type('UPDATE_CHAPTER')\n\n// Steppers\nexport const STEP_FORWARD = type('STEP_FORWARD')\nexport const STEP_BACKWARDS = type('STEP_BACKWARDS')\n\n// Components => internal\nexport const SHOW_COMPONENT_INFO = type('SHOW_COMPONENT_INFO')\nexport const SHOW_COMPONENT_SHOW_TITLE = type('SHOW_COMPONENT_SHOW_TITLE')\nexport const SHOW_COMPONENT_EPISODE_TITLE = type('SHOW_COMPONENT_EPISODE_TITLE')\nexport const SHOW_COMPONENT_SUBTITLE = type('SHOW_COMPONENT_SUBTITLE')\nexport const SHOW_COMPONENT_INFO_POSTER = type('SHOW_COMPONENT_INFO_POSTER')\nexport const SHOW_COMPONENT_CONTROLS_CHAPTERS = type('SHOW_COMPONENT_CONTROLS_CHAPTERS')\nexport const SHOW_COMPONENT_CONTROLS_STEPPERS = type('SHOW_COMPONENT_CONTROLS_STEPPERS')\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_LOADING = type('SHOW_COMPONENT_CONTROLS_BUTTON_LOADING')\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY = type('SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY')\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING = type(\n 'SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING'\n)\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_DURATION = type(\n 'SHOW_COMPONENT_CONTROLS_BUTTON_DURATION'\n)\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_RETRY = type('SHOW_COMPONENT_CONTROLS_BUTTON_RETRY')\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING = type('SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING')\nexport const SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE = type('SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE')\nexport const SHOW_COMPONENT_PROGRESSBAR = type('SHOW_COMPONENT_PROGRESSBAR')\nexport const SHOW_COMPONENT_TAB = type('SHOW_COMPONENT_TAB')\nexport const SHOW_COMPONENT_VOLUME_SLIDER = type('SHOW_COMPONENT_VOLUME_SLIDER')\nexport const SHOW_COMPONENT_RATE_SLIDER = type('SHOW_COMPONENT_RATE_SLIDER')\nexport const SHOW_COMPONENT_CHANNELS = type('SHOW_COMPONENT_CHANNELS')\nexport const SHOW_COMPONENT_CONTROLS_BUTTON = type('SHOW_COMPONENT_CONTROLS_BUTTON')\n\nexport const HIDE_COMPONENT_INFO = type('HIDE_COMPONENT_INFO')\nexport const HIDE_COMPONENT_SHOW_TITLE = type('HIDE_COMPONENT_SHOW_TITLE')\nexport const HIDE_COMPONENT_EPISODE_TITLE = type('HIDE_COMPONENT_EPISODE_TITLE')\nexport const HIDE_COMPONENT_SUBTITLE = type('HIDE_COMPONENT_SUBTITLE')\nexport const HIDE_COMPONENT_INFO_POSTER = type('HIDE_COMPONENT_INFO_POSTER')\nexport const HIDE_COMPONENT_ERROR = type('HIDE_COMPONENT_ERROR')\nexport const HIDE_COMPONENT_CONTROLS_CHAPTERS = type('HIDE_COMPONENT_CONTROLS_CHAPTERS')\nexport const HIDE_COMPONENT_CONTROLS_STEPPERS = type('HIDE_COMPONENT_CONTROLS_STEPPERS')\nexport const HIDE_COMPONENT_CONTROLS_BUTTON = type('HIDE_COMPONENT_CONTROLS_BUTTON')\nexport const HIDE_COMPONENT_PROGRESSBAR = type('HIDE_COMPONENT_PROGRESSBAR')\nexport const HIDE_COMPONENT_TAB = type('HIDE_COMPONENT_TAB')\nexport const HIDE_COMPONENT_VOLUME_SLIDER = type('HIDE_COMPONENT_VOLUME_SLIDER')\nexport const HIDE_COMPONENT_RATE_SLIDER = type('HIDE_COMPONENT_RATE_SLIDER')\nexport const HIDE_COMPONENT_CHANNELS = type('HIDE_COMPONENT_CHANNELS')\n\n// Visible Components => external\nexport const SHOW_VISIBLE_COMPONENTS_TAB_INFO = type('SHOW_VISIBLE_COMPONENTS_TAB_INFO')\nexport const SHOW_VISIBLE_COMPONENTS_TAB_CHAPTERS = type('SHOW_VISIBLE_COMPONENTS_TAB_CHAPTERS')\nexport const SHOW_VISIBLE_COMPONENTS_TAB_FILES = type('SHOW_VISIBLE_COMPONENTS_TAB_FILES')\nexport const SHOW_VISIBLE_COMPONENTS_TAB_AUDIO = type('SHOW_VISIBLE_COMPONENTS_TAB_AUDIO')\nexport const SHOW_VISIBLE_COMPONENTS_TAB_SHARE = type('SHOW_VISIBLE_COMPONENTS_TAB_SHARE')\nexport const SHOW_VISIBLE_COMPONENTS_TAB_TRANSCRIPTS = type(\n 'SHOW_VISIBLE_COMPONENTS_TAB_TRANSCRIPTS'\n)\nexport const SHOW_VISIBLE_COMPONENTS_TAB_PLAYLIST = type('SHOW_VISIBLE_COMPONENTS_TAB_PLAYLIST')\n\nexport const SHOW_VISIBLE_COMPONENTS_HEADER_POSTER = type('SHOW_VISIBLE_COMPONENTS_HEADER_POSTER')\nexport const SHOW_VISIBLE_COMPONENTS_HEADER_TITLE = type('SHOW_VISIBLE_COMPONENTS_HEADER_TITLE')\nexport const SHOW_VISIBLE_COMPONENTS_HEADER_EPISODE = type('SHOW_VISIBLE_COMPONENTS_HEADER_EPISODE')\nexport const SHOW_VISIBLE_COMPONENTS_HEADER_SUBTITLE = type(\n 'SHOW_VISIBLE_COMPONENTS_HEADER_SUBTITLE'\n)\n\nexport const SHOW_VISIBLE_COMPONENTS_CONTROLS_STEPPER = type(\n 'SHOW_VISIBLE_COMPONENTS_CONTROLS_STEPPER'\n)\nexport const SHOW_VISIBLE_COMPONENTS_CONTROLS_CHAPTERS = type(\n 'SHOW_VISIBLE_COMPONENTS_CONTROLS_CHAPTERS'\n)\nexport const SHOW_VISIBLE_COMPONENTS_CONTROLS_PROGRESSBAR = type(\n 'SHOW_VISIBLE_COMPONENTS_CONTROLS_PROGRESSBAR'\n)\n\nexport const SHOW_SHARE_PLAYTIME = type('SHOW_SHARE_PLAYTIME')\n\nexport const HIDE_VISIBLE_COMPONENTS_TAB_INFO = type('HIDE_VISIBLE_COMPONENTS_TAB_INFO')\nexport const HIDE_VISIBLE_COMPONENTS_TAB_CHAPTERS = type('HIDE_VISIBLE_COMPONENTS_TAB_CHAPTERS')\nexport const HIDE_VISIBLE_COMPONENTS_TAB_FILES = type('HIDE_VISIBLE_COMPONENTS_TAB_FILES')\nexport const HIDE_VISIBLE_COMPONENTS_TAB_AUDIO = type('HIDE_VISIBLE_COMPONENTS_TAB_AUDIO')\nexport const HIDE_VISIBLE_COMPONENTS_TAB_SHARE = type('HIDE_VISIBLE_COMPONENTS_TAB_SHARE')\nexport const HIDE_VISIBLE_COMPONENTS_TAB_TRANSCRIPTS = type(\n 'HIDE_VISIBLE_COMPONENTS_TAB_TRANSCRIPTS'\n)\nexport const HIDE_VISIBLE_COMPONENTS_TAB_PLAYLIST = type('HIDE_VISIBLE_COMPONENTS_TAB_PLAYLIST')\n\nexport const HIDE_VISIBLE_COMPONENTS_HEADER_POSTER = type('HIDE_VISIBLE_COMPONENTS_HEADER_POSTER')\nexport const HIDE_VISIBLE_COMPONENTS_HEADER_TITLE = type('HIDE_VISIBLE_COMPONENTS_HEADER_TITLE')\nexport const HIDE_VISIBLE_COMPONENTS_HEADER_EPISODE = type('HIDE_VISIBLE_COMPONENTS_HEADER_EPISODE')\nexport const HIDE_VISIBLE_COMPONENTS_HEADER_SUBTITLE = type(\n 'HIDE_VISIBLE_COMPONENTS_HEADER_SUBTITLE'\n)\n\nexport const HIDE_VISIBLE_COMPONENTS_CONTROLS_STEPPER = type(\n 'HIDE_VISIBLE_COMPONENTS_CONTROLS_STEPPER'\n)\nexport const HIDE_VISIBLE_COMPONENTS_CONTROLS_CHAPTERS = type(\n 'HIDE_VISIBLE_COMPONENTS_CONTROLS_CHAPTERS'\n)\nexport const HIDE_VISIBLE_COMPONENTS_CONTROLS_PROGRESSBAR = type(\n 'HIDE_VISIBLE_COMPONENTS_CONTROLS_PROGRESSBAR'\n)\n\nexport const HIDE_SHARE_PLAYTIME = type('HIDE_SHARE_PLAYTIME')\n\n// Error\nexport const BACKEND_ERROR = type('BACKEND_ERROR')\nexport const NETWORK_EMPTY = type('NETWORK_EMPTY')\nexport const NETWORK_NO_SOURCE = type('NETWORK_NO_SOURCE')\nexport const ERROR_MISSING_AUDIO_FILES = type('ERROR_MISSING_AUDIO_FILES')\nexport const ERROR_POSTER_LOAD = type('ERROR_POSTER_LOAD')\n\n// Progress\nexport const SIMULATE_PLAYTIME = type('SIMULATE_PLAYTIME')\nexport const ENABLE_GHOST_MODE = type('ENABLE_GHOST_MODE')\nexport const DISABLE_GHOST_MODE = type('DISABLE_GHOST_MODE')\n\n// Player\nexport const REQUEST_PLAY = type('REQUEST_PLAY')\nexport const BACKEND_PLAY = type('BACKEND_PLAY')\nexport const REQUEST_PAUSE = type('REQUEST_PAUSE')\nexport const BACKEND_PAUSE = type('BACKEND_PAUSE')\nexport const REQUEST_RESTART = type('REQUEST_RESTART')\nexport const BACKEND_BUFFER = type('BACKEND_BUFFER')\nexport const REQUEST_STOP = type('REQUEST_STOP')\nexport const IDLE = type('IDLE')\nexport const BACKEND_LOADING_START = type('BACKEND_LOADING_START')\nexport const BACKEND_LOADING_END = type('BACKEND_LOADING_END')\nexport const REQUEST_LOAD = type('REQUEST_LOAD')\nexport const LOADED = type('LOADED')\nexport const BACKEND_END = type('BACKEND_END')\n\n// Audio\nexport const MUTE = type('MUTE')\nexport const UNMUTE = type('UNMUTE')\nexport const SET_VOLUME = type('SET_VOLUME')\nexport const SET_RATE = type('SET_RATE')\n\n// Timepiece\nexport const BACKEND_DURATION = type('BACKEND_DURATION')\nexport const BACKEND_PLAYTIME = type('BACKEND_PLAYTIME')\nexport const REQUEST_PLAYTIME = type('REQUEST_PLAYTIME')\nexport const UPDATE_PLAYTIME = type('UPDATE_PLAYTIME')\nexport const BACKEND_LIVESYNC = type('BACKEND_LIVESYNC')\n\n// Quantiles\nexport const LOAD_QUANTILES = type('LOAD_QUANTILES')\nexport const SET_QUANTILE = type('SET_QUANTILE')\n\n// Runtime\nexport const SET_RUNTIME = type('SET_RUNTIME')\nexport const SET_LANGUAGE = type('SET_LANGUAGE')\nexport const SET_VERSION = type('SET_VERSION')\nexport const SET_MODE = type('SET_MODE')\n\n// Share\nexport const SELECT_CONTENT = type('SELECT_CONTENT')\nexport const SELECT_CHANNEL = type('SELECT_CHANNEL')\nexport const SELECT_EMBED_SIZE = type('SELECT_EMBED_SIZE')\n\n// Tabs\nexport const TOGGLE_TAB = type('TOGGLE_TAB')\nexport const SET_TABS = type('SET_TABS')\n\n// Theme\nexport const SET_THEME = type('SET_THEME')\n\n// Transcripts\nexport const SET_TRANSCRIPTS_TIMELINE = type('SET_TRANSCRIPTS_TIMELINE')\nexport const UPDATE_TRANSCRIPTS = type('UPDATE_TRANSCRIPTS')\nexport const TOGGLE_FOLLOW_TRANSCRIPTS = type('TOGGLE_FOLLOW_TRANSCRIPTS')\nexport const SEARCH_TRANSCRIPTS = type('SEARCH_TRANSCRIPTS')\nexport const SET_SEARCH_TRANSCRIPTS_RESULTS = type('SET_SEARCH_TRANSCRIPTS_RESULTS')\nexport const NEXT_SEARCH_RESULT = type('NEXT_SEARCH_RESULT')\nexport const PREVIOUS_SEARCH_RESULT = type('PREVIOUS_SEARCH_RESULT')\nexport const RESET_SEARCH_TRANSCRIPTS = type('RESET_SEARCH_TRANSCRIPTS')\n\n// Error\nexport const SHOW_ERROR = type('SHOW_ERROR')\nexport const HIDE_ERROR = type('HIDE_ERROR')\nexport const RETRY_PLAY = type('RETRY_PLAY')\nexport const ERROR_CONFIG_MEDIA = type('ERROR_CONFIG_MEDIA')\nexport const ERROR_CONFIG_MISSING = type('ERROR_CONFIG_MISSING')\n\n// Keyboard\nexport const KEY_UP = type('KEY_UP')\nexport const KEY_DOWN = type('KEY_DOWN')\n\n// Playlist\nexport const NEXT_PLAYLIST_ENTRY = type('NEXT_PLAYLIST_ENTRY')\nexport const SELECT_PLAYLIST_ENTRY = type('SELECT_PLAYLIST_ENTRY')\nexport const MARK_PLAYLIST_ENTRY_ACTIVE = type('MARK_PLAYLIST_ENTRY_ACTIVE')\n\n// Files\nexport const FILE_HOVER = type('FILE_HOVER')\nexport const FILE_SELECT = type('FILE_SELECT')\n","import { compose, map, prop, propOr } from 'ramda'\nimport { toPlayerTime } from '@podlove/utils/time'\nimport { createObject } from '@podlove/utils/helper'\n\nexport const duration = compose(toPlayerTime, propOr(0, 'duration'))\n\nexport const version = propOr(null, 'version')\n\nexport const playtime = compose(toPlayerTime, propOr(0, 'playtime'))\n\nexport const media = compose(\n map(\n createObject({\n url: propOr(null, 'url'),\n size: propOr(0, 'size'),\n title: propOr(null, 'title'),\n mimeType: propOr(null, 'mimeType')\n })\n ),\n propOr([], 'audio')\n)\n\nexport const chapters = propOr([], 'chapters')\nexport const theme = (config) => {\n const theme = propOr({}, 'theme', config)\n\n if (version(config) === 5) {\n return {\n tokens: propOr({}, 'tokens', theme),\n fonts: propOr({}, 'fonts', theme)\n }\n }\n\n const brand = propOr(null, 'main', theme)\n\n if (brand) {\n return {\n tokens: {\n brand\n },\n fonts: {}\n }\n }\n\n return {\n tokens: {},\n fonts: {}\n }\n}\n\nexport const reference = propOr({}, 'reference')\nexport const transcripts = propOr([], 'transcripts')\nexport const shareReference = compose(propOr(null, 'share'), reference)\n\nexport const originReference = compose(propOr(null, 'origin'), reference)\n\nexport const episodeReference = (config) => {\n const ref = reference(config)\n\n if (version(config) === 5) {\n return propOr(null, 'episode', ref)\n }\n\n return propOr(null, 'config', ref)\n}\n\nexport const configReference = (config) => {\n const ref = reference(config)\n\n if (version(config) === 5) {\n return propOr(null, 'config', ref)\n }\n\n return null\n}\n\nexport const validate = (config) => {\n if (media(config).length === 0) {\n return false\n }\n\n return true\n}\n\nexport const runtime = propOr({}, 'runtime')\n\nexport const language = compose(prop('language'), runtime)\nexport const platform = compose(prop('platform'), runtime)\n\nexport const playlist = propOr([], 'playlist')\n\nexport const files = (config) =>\n propOr(media(config), 'files', config)\n .filter(({ url }) => !!url)\n .reduce(\n (result, item) => [...result, ...(result.some(({ url }) => url === item.url) ? [] : [item])],\n []\n )\n\nexport const activeTab = prop('activeTab')\n\nexport const subscribeButton = prop('subscribe-button')\n\nexport const share = propOr({}, 'share')\n\nexport const channels = compose(propOr([], 'channels'), share)\n\nexport const sharePlaytime = compose(propOr(false, 'sharePlaytime'), share)\n","import { prop } from 'ramda'\n\nexport const volume = prop('volume')\nexport const muted = prop('muted')\nexport const rate = prop('rate')\n","import { handleActions } from 'redux-actions'\nimport { compose } from 'ramda'\n\nimport { inRange } from '@podlove/utils/math'\nimport { toFloat } from '@podlove/utils/helper'\n\nimport { SET_VOLUME, MUTE, UNMUTE, SET_RATE } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n volume: 1,\n muted: false,\n rate: 1\n}\n\nconst inVolumeRange = compose(inRange(0, INITIAL_STATE.volume), toFloat)\nconst inRateRange = compose(inRange(0.5, 4), toFloat)\n\nexport const reducer = handleActions(\n {\n [SET_VOLUME]: (state, { payload }) => ({\n ...state,\n volume: inVolumeRange(payload)\n }),\n\n [MUTE]: (state) => ({\n ...state,\n muted: true\n }),\n\n [UNMUTE]: (state) => ({\n ...state,\n muted: false\n }),\n\n [SET_RATE]: (state, { payload }) => ({\n ...state,\n rate: inRateRange(payload)\n })\n },\n INITIAL_STATE\n)\n","import { identity } from 'ramda'\n\nexport const channels = identity\n","import { handleActions } from 'redux-actions'\nimport { READY } from '@podlove/player-actions/types'\nimport { channels } from '@podlove/player-config'\n\nexport const INITIAL_STATE = [\n 'facebook',\n 'twitter',\n 'whats-app',\n 'linkedin',\n 'pinterest',\n 'xing',\n 'mail',\n 'link'\n]\n\nexport const reducer = handleActions(\n {\n [READY]: (_, { payload }) => channels(payload)\n },\n INITIAL_STATE\n)\n","import { prop, compose } from 'ramda'\n\nexport const list = prop('list')\nexport const next = prop('next')\nexport const previous = prop('previous')\nexport const current = prop('current')\nexport const title = compose(prop('title'), current)\nexport const image = compose(prop('image'), current)\n","import { handleActions } from 'redux-actions'\n\nimport { UPDATE_CHAPTER, SET_CHAPTERS_LIST, SET_CHAPTER } from '@podlove/player-actions/types'\n\nimport {\n currentChapterIndex,\n setActiveByPlaytime,\n setActiveByIndex,\n nextChapter as getNextChapter,\n previousChapter as getPreviousChapter,\n currentChapter as getCurrentChapter\n} from '@podlove/utils/chapters'\n\nconst generateState = (chapters) => ({\n list: chapters,\n current: getCurrentChapter(chapters),\n next: getNextChapter(chapters),\n previous: getPreviousChapter(chapters)\n})\n\nexport const INITIAL_STATE = {\n list: [],\n current: null,\n next: null,\n previous: null\n}\n\nexport const reducer = handleActions(\n {\n [SET_CHAPTERS_LIST]: (_, { payload = [] }) =>\n generateState(payload.map((item, index) => (index === 0 ? { active: true, ...item } : item))),\n\n [SET_CHAPTER]: (state, { payload }) => {\n const chapters = state.list.map(setActiveByIndex(payload))\n return generateState(chapters)\n },\n\n [UPDATE_CHAPTER]: (state, { payload }) => {\n const chapters = state.list.map(setActiveByPlaytime(payload))\n\n if (currentChapterIndex(chapters) === -1) {\n return state\n }\n\n return generateState(chapters)\n }\n },\n INITIAL_STATE\n)\n","import { prop, compose } from 'ramda'\n\nexport const playButton = prop('playButton')\nexport const stepperButtons = prop('stepperButtons')\nexport const chapterButtons = prop('chapterButtons')\nexport const progressBar = prop('progressBar')\nexport const volumeControl = prop('volumeControl')\nexport const rateControl = prop('rateControl')\nexport const poster = prop('poster')\nexport const error = prop('error')\n\nconst tabs = prop('tabs')\n\nexport const shownotesTab = compose(prop('shownotes'), tabs)\nexport const chaptersTab = compose(prop('chapters'), tabs)\nexport const transcriptTab = compose(prop('transcripts'), tabs)\nexport const shareTab = compose(prop('share'), tabs)\nexport const filesTab = compose(prop('files'), tabs)\nexport const playlistTab = compose(prop('playlist'), tabs)\nexport const audioTab = compose(prop('audio'), tabs)\n\nexport const sharePlaytime = prop('sharePlaytime')\n","import { handleActions } from 'redux-actions'\nimport {\n SHOW_COMPONENT_INFO_POSTER,\n SHOW_COMPONENT_TAB,\n SHOW_COMPONENT_VOLUME_SLIDER,\n SHOW_COMPONENT_RATE_SLIDER,\n SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING,\n SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE,\n SHOW_COMPONENT_CONTROLS_BUTTON_DURATION,\n SHOW_COMPONENT_CONTROLS_BUTTON_LOADING,\n SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY,\n SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING,\n SHOW_COMPONENT_CONTROLS_BUTTON_RETRY,\n SHOW_COMPONENT_CONTROLS_CHAPTERS,\n SHOW_COMPONENT_CONTROLS_STEPPERS,\n SHOW_COMPONENT_PROGRESSBAR,\n SHOW_COMPONENT_SHOW_TITLE,\n SHOW_COMPONENT_EPISODE_TITLE,\n SHOW_COMPONENT_SUBTITLE,\n SHOW_SHARE_PLAYTIME,\n HIDE_COMPONENT_INFO_POSTER,\n HIDE_COMPONENT_ERROR,\n HIDE_COMPONENT_CONTROLS_CHAPTERS,\n HIDE_COMPONENT_CONTROLS_STEPPERS,\n HIDE_COMPONENT_CONTROLS_BUTTON,\n HIDE_COMPONENT_PROGRESSBAR,\n HIDE_COMPONENT_TAB,\n HIDE_COMPONENT_VOLUME_SLIDER,\n HIDE_COMPONENT_RATE_SLIDER,\n HIDE_COMPONENT_SHOW_TITLE,\n HIDE_COMPONENT_EPISODE_TITLE,\n HIDE_COMPONENT_SUBTITLE,\n HIDE_SHARE_PLAYTIME\n} from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n playButton: 'duration',\n progressBar: false,\n chapterButtons: false,\n stepperButtons: false,\n volumeControl: false,\n rateControl: false,\n poster: false,\n info: {\n episodeTitle: false,\n showTitle: false,\n subtitle: false\n },\n tabs: {\n shownotes: false,\n chapters: false,\n transcripts: false,\n share: false,\n files: false,\n audio: false,\n playlist: false\n },\n sharePlaytime: true\n}\n\nexport const reducer = handleActions(\n {\n [HIDE_COMPONENT_ERROR]: (state) => ({\n ...state,\n error: false\n }),\n [SHOW_COMPONENT_INFO_POSTER]: (state) => ({\n ...state,\n poster: true\n }),\n [HIDE_COMPONENT_INFO_POSTER]: (state) => ({\n ...state,\n poster: false\n }),\n [HIDE_COMPONENT_CONTROLS_BUTTON]: (state) => ({\n ...state,\n playButton: false\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_PLAYING]: (state) => ({\n ...state,\n playButton: 'playing'\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_DURATION]: (state) => ({\n ...state,\n playButton: 'duration'\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_PAUSE]: (state) => ({\n ...state,\n playButton: 'paused'\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_LOADING]: (state) => ({\n ...state,\n playButton: 'loading'\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_REPLAY]: (state) => ({\n ...state,\n playButton: 'replay'\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_REMAINING]: (state) => ({\n ...state,\n playButton: 'remaining'\n }),\n [SHOW_COMPONENT_CONTROLS_BUTTON_RETRY]: (state) => ({\n ...state,\n playButton: 'retry'\n }),\n [SHOW_COMPONENT_CONTROLS_CHAPTERS]: (state) => ({\n ...state,\n chapterButtons: true\n }),\n [HIDE_COMPONENT_CONTROLS_CHAPTERS]: (state) => ({\n ...state,\n chapterButtons: false\n }),\n [SHOW_COMPONENT_CONTROLS_STEPPERS]: (state) => ({\n ...state,\n stepperButtons: true\n }),\n [HIDE_COMPONENT_CONTROLS_STEPPERS]: (state) => ({\n ...state,\n stepperButtons: false\n }),\n [SHOW_COMPONENT_PROGRESSBAR]: (state) => ({\n ...state,\n progressBar: true\n }),\n [HIDE_COMPONENT_PROGRESSBAR]: (state) => ({\n ...state,\n progressBar: false\n }),\n [SHOW_COMPONENT_VOLUME_SLIDER]: (state) => ({\n ...state,\n volumeControl: true\n }),\n [HIDE_COMPONENT_VOLUME_SLIDER]: (state) => ({\n ...state,\n volumeControl: false\n }),\n [SHOW_COMPONENT_RATE_SLIDER]: (state) => ({\n ...state,\n rateControl: true\n }),\n [HIDE_COMPONENT_RATE_SLIDER]: (state) => ({\n ...state,\n rateControl: false\n }),\n [SHOW_COMPONENT_TAB]: (state, { payload }) => ({\n ...state,\n tabs: {\n ...state.tabs,\n [payload]: true\n }\n }),\n [HIDE_COMPONENT_TAB]: (state, { payload }) => ({\n ...state,\n tabs: {\n ...state.tabs,\n [payload]: false\n }\n }),\n [SHOW_COMPONENT_SHOW_TITLE]: (state) => ({\n ...state,\n info: {\n ...state.info,\n showTitle: true\n }\n }),\n [HIDE_COMPONENT_SHOW_TITLE]: (state) => ({\n ...state,\n info: {\n ...state.info,\n showTitle: false\n }\n }),\n [SHOW_COMPONENT_EPISODE_TITLE]: (state) => ({\n ...state,\n info: {\n ...state.info,\n episodeTitle: true\n }\n }),\n [HIDE_COMPONENT_EPISODE_TITLE]: (state) => ({\n ...state,\n info: {\n ...state.info,\n episodeTitle: false\n }\n }),\n [SHOW_COMPONENT_SUBTITLE]: (state) => ({\n ...state,\n info: {\n ...state.info,\n subtitle: true\n }\n }),\n [HIDE_COMPONENT_SUBTITLE]: (state) => ({\n ...state,\n info: {\n ...state.info,\n subtitle: false\n }\n }),\n [SHOW_SHARE_PLAYTIME]: (state) => ({\n ...state,\n sharePlaytime: true\n }),\n [HIDE_SHARE_PLAYTIME]: (state) => ({\n ...state,\n sharePlaytime: false\n })\n },\n INITIAL_STATE\n)\n","export const content = (root) => root\n","import { handleActions } from 'redux-actions'\n\nimport { SELECT_CONTENT } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = 'episode'\n\nconst update = (state, content) =>\n ['show', 'episode', 'chapter', 'time'].includes(content) ? content : state\n\nexport const reducer = handleActions(\n {\n [SELECT_CONTENT]: (state, { payload }) => update(state, payload)\n },\n INITIAL_STATE\n)\n","export const contributors = (root) => root\n","import { handleActions } from 'redux-actions'\nimport { propOr } from 'ramda'\n\nimport { READY } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = []\n\nexport const reducer = handleActions(\n {\n [READY]: (_, { payload }) => propOr([], 'contributors', payload)\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const playing = prop('playing')\n","import { propOr } from 'ramda'\nimport { handleActions } from 'redux-actions'\n\nimport {\n BACKEND_PAUSE,\n BACKEND_PLAY,\n BACKEND_ERROR,\n BACKEND_LOADING_END\n} from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n playing: false\n}\n\nexport const reducer = handleActions(\n {\n [BACKEND_PAUSE]: (state) => ({\n ...state,\n playing: false\n }),\n [BACKEND_ERROR]: (state) => ({\n ...state,\n playing: false\n }),\n [BACKEND_PLAY]: (state) => ({\n ...state,\n playing: true\n }),\n [BACKEND_LOADING_END]: (state, { payload }) => ({\n ...state,\n playing: propOr(false, 'playing', payload)\n })\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const available = prop('available')\nexport const size = prop('size')\n","import { handleActions } from 'redux-actions'\n\nimport { SELECT_EMBED_SIZE } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n available: ['250x400', '320x400', '375x400', '600x290', '768x290'],\n size: '320x400'\n}\n\nconst update = (state, payload) => (state.available.includes(payload) ? payload : state.size)\n\nexport const reducer = handleActions(\n {\n [SELECT_EMBED_SIZE]: (state, { payload }) => ({\n ...state,\n size: update(state, payload)\n })\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const title = prop('title')\nexport const subtitle = prop('subtitle')\nexport const summary = prop('summary')\nexport const link = prop('link')\nexport const poster = prop('poster')\nexport const publicationDate = prop('publicationDate')\n","import { compose, propOr } from 'ramda'\nimport { handleActions } from 'redux-actions'\n\nimport { parseDate } from '@podlove/utils/time'\nimport { sanitize } from '@podlove/utils/dom'\nimport { createObject } from '@podlove/utils/helper'\nimport { READY } from '@podlove/player-actions/types'\n\nexport const INIT_STATE = {\n title: null,\n subtitle: null,\n summary: null,\n poster: null,\n link: null,\n publicationDate: null\n}\n\nconst update = createObject({\n title: propOr(null, 'title'),\n subtitle: propOr(null, 'subtitle'),\n summary: compose(sanitize, propOr(null, 'summary')),\n link: propOr(null, 'link'),\n poster: propOr(null, 'poster'),\n publicationDate: compose(parseDate, propOr(null, 'publicationDate'))\n})\n\nexport const reducer = handleActions(\n {\n [READY]: (state, { payload }) => ({\n ...state,\n ...update(payload)\n })\n },\n INIT_STATE\n)\n","import { prop } from 'ramda'\n\nexport const active = prop('active')\nexport const icon = prop('icon')\nexport const title = prop('title')\nexport const message = prop('message')\nexport const retry = prop('retry')\n","import { handleActions } from 'redux-actions'\n\nimport { SHOW_ERROR, HIDE_ERROR } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n active: false,\n icon: null,\n title: null,\n message: null,\n retry: false\n}\n\nexport const reducer = handleActions(\n {\n [SHOW_ERROR]: (state, { payload }) => ({\n ...state,\n active: true,\n ...payload\n }),\n [HIDE_ERROR]: () => INITIAL_STATE\n },\n INITIAL_STATE\n)\n","import { identity } from 'ramda'\n\nexport const files = identity\n","import { handleActions } from 'redux-actions'\nimport { prop } from 'ramda'\n\nimport { READY, FILE_HOVER } from '@podlove/player-actions/types'\nimport { files } from '@podlove/player-config'\n\nexport const INITIAL_STATE = []\n\nexport const reducer = handleActions(\n {\n [READY]: (_, { payload }) => files(payload).map((file) => ({ ...file, hover: false })),\n [FILE_HOVER]: (state, { payload }) =>\n state.map((file) => ({ ...file, hover: file.url === prop('url', payload) }))\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const time = prop('time')\nexport const active = prop('active')\n","import { handleActions } from 'redux-actions'\nimport {\n SIMULATE_PLAYTIME,\n ENABLE_GHOST_MODE,\n DISABLE_GHOST_MODE\n} from '@podlove/player-actions/types'\nimport { toInt } from '@podlove/utils/helper'\n\nexport const INITIAL_STATE = {\n active: false,\n time: null\n}\n\nexport const reducer = handleActions(\n {\n [SIMULATE_PLAYTIME]: (state, { payload }) => ({\n ...state,\n time: state.active ? toInt(payload) : null\n }),\n\n [ENABLE_GHOST_MODE]: (state) => {\n return {\n ...state,\n active: true\n }\n },\n\n [DISABLE_GHOST_MODE]: (state) => ({\n ...state,\n active: false,\n time: null\n })\n },\n INITIAL_STATE\n)\n","export const media = (root) => root\n","import { handleActions } from 'redux-actions'\n\nimport { media } from '@podlove/player-config'\nimport { READY } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = []\n\nexport const reducer = handleActions(\n {\n [READY]: (_, { payload }) => media(payload)\n },\n INITIAL_STATE\n)\n","import { propOr } from 'ramda'\n\nexport const buffer = propOr([], 'buffer')\n","import { handleActions } from 'redux-actions'\n\nimport { BACKEND_BUFFER } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n buffer: []\n}\n\nexport const reducer = handleActions(\n {\n [BACKEND_BUFFER]: (state, { payload }) => ({\n ...state,\n buffer: payload\n })\n },\n INITIAL_STATE\n)\n","import { compose, find, prop, identity } from 'ramda'\n\nexport const list = identity\nexport const episode = find(({ active }) => active)\nexport const title = compose(prop('title'), episode)\nexport const config = compose(prop('config'), episode)\n","import { handleActions } from 'redux-actions'\nimport {\n READY,\n SELECT_PLAYLIST_ENTRY,\n MARK_PLAYLIST_ENTRY_ACTIVE\n} from '@podlove/player-actions/types'\nimport { playlist } from '@podlove/player-config'\nimport { toPlayerTime } from '@podlove/utils/time'\n\nconst INITIAL_STATE = null\n\nconst active = (state, payload) =>\n state.map((item, index) => ({ ...item, active: payload === index }))\n\nexport const reducer = handleActions(\n {\n [READY]: (state, { payload }) =>\n state ||\n playlist(payload).map((item) => ({\n ...item,\n duration: toPlayerTime(item.duration),\n active: !!item.active\n })),\n [SELECT_PLAYLIST_ENTRY]: (state, { payload: { index: index } }) =>\n state && active(state, index),\n [MARK_PLAYLIST_ENTRY_ACTIVE]: (state, { payload }) => state && active(state, payload)\n },\n INITIAL_STATE\n)\n","import { identity } from 'ramda'\n\nexport const playstate = identity\n","import { handleActions } from 'redux-actions'\nimport {\n CONSTRUCTED,\n BACKEND_LOADING_END,\n BACKEND_END,\n RESTORE,\n BACKEND_PLAYTIME\n} from '@podlove/player-actions/types'\n\nconst INITIAL_STATE = 'initialized'\n\nexport const reducer = handleActions(\n {\n [CONSTRUCTED]: () => 'initialized',\n [BACKEND_LOADING_END]: () => 'active',\n [BACKEND_PLAYTIME]: () => 'active',\n [RESTORE]: () => 'active',\n [BACKEND_END]: () => 'ended'\n },\n INITIAL_STATE\n)\n","export const quantiles = (root) => root\n","import { handleActions } from 'redux-actions'\nimport { head, findIndex } from 'ramda'\n\nimport { LOAD_QUANTILES, SET_QUANTILE } from '@podlove/player-actions/types'\n\nconst findQuantile = (quantiles = [], start) =>\n findIndex((quantile) => head(quantile) === start, quantiles)\n\nconst newQuantile = (quantiles = [], quantile) => [...quantiles, quantile]\n\nconst updateQuantile = (quantiles = [], index, quantile) => [\n ...quantiles.slice(0, index),\n quantile,\n ...quantiles.slice(index + 1)\n]\n\nexport const INITIAL_STATE = []\n\nexport const reducer = handleActions(\n {\n [LOAD_QUANTILES]: (_, { payload }) => payload,\n [SET_QUANTILE]: (state, { payload }) => {\n const index = findQuantile(state, payload.start)\n const currentQuantile = [payload.start, payload.end]\n\n if (index < 0) {\n return newQuantile(state, currentQuantile)\n }\n\n return updateQuantile(state, index, currentQuantile)\n }\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const share = prop('share')\nexport const config = prop('config')\nexport const episode = prop('episode')\nexport const origin = prop('origin')\n","import { handleActions } from 'redux-actions'\nimport { READY } from '@podlove/player-actions/types'\nimport {\n shareReference,\n originReference,\n episodeReference,\n configReference\n} from '@podlove/player-config'\n\nexport const INITIAL_STATE = {\n config: null,\n share: null,\n origin: null,\n episode: null\n}\n\nexport const reducer = handleActions(\n {\n [READY]: (_, { payload }) => ({\n episode: episodeReference(payload),\n config: configReference(payload),\n share: shareReference(payload),\n origin: originReference(payload)\n })\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const language = prop('language')\nexport const platform = prop('platform')\nexport const locale = prop('locale')\nexport const version = prop('version')\nexport const mode = prop('mode')\n","import { handleActions } from 'redux-actions'\nimport { propOr } from 'ramda'\nimport { language } from '@podlove/player-config'\n\nimport {\n READY,\n SET_LANGUAGE,\n SET_RUNTIME,\n SET_VERSION,\n SET_MODE\n} from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n language: 'en',\n browser: null,\n locale: null,\n platform: null,\n version: null,\n mode: 'native'\n}\n\nexport const reducer = handleActions(\n {\n [SET_LANGUAGE]: (state, { payload }) => ({\n ...state,\n language: payload\n }),\n [SET_RUNTIME]: (state, { payload }) => ({\n ...state,\n display: propOr(null, 'display', payload),\n browser: propOr(null, 'browser', payload),\n locale: propOr(null, 'locale', payload),\n platform: propOr(null, 'platform', payload),\n language: propOr(null, 'language', payload)\n }),\n [SET_VERSION]: (state, { payload }) => ({\n ...state,\n version: payload\n }),\n [SET_MODE]: (state, { payload }) => ({\n ...state,\n mode: ['native', 'embed'].includes(payload) ? payload : state.mode\n }),\n [READY]: (state, { payload }) => ({\n ...state,\n language: language(payload) || state.language\n })\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const title = prop('title')\nexport const subtitle = prop('subtitle')\nexport const summary = prop('summary')\nexport const link = prop('link')\nexport const poster = prop('poster')\n","import { pathOr, compose } from 'ramda'\nimport { handleActions } from 'redux-actions'\nimport { sanitize } from '@podlove/utils/dom'\nimport { createObject } from '@podlove/utils/helper'\n\nimport { READY } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n title: null,\n subtitle: null,\n summary: null,\n poster: null,\n link: null\n}\n\nconst change = createObject({\n title: pathOr(null, ['show', 'title']),\n subtitle: pathOr(null, ['show', 'subtitle']),\n summary: compose(sanitize, pathOr(null, ['show', 'summary'])),\n link: pathOr(null, ['show', 'link']),\n poster: pathOr(null, ['show', 'poster'])\n})\n\nexport const reducer = handleActions(\n {\n [READY]: (state, { payload }) => ({\n ...state,\n ...change(payload)\n })\n },\n INITIAL_STATE\n)\n","import { identity } from 'ramda'\n\nexport const available = identity\n","import { handleActions } from 'redux-actions'\nimport { CONSTRUCTED } from '@podlove/player-actions/types'\nimport * as config from '@podlove/player-config'\n\nexport const INITIAL_STATE = false\n\nexport const reducer = handleActions(\n {\n [CONSTRUCTED]: (_, { payload }) => !!config.subscribeButton(payload)\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const chapters = prop('chapters')\nexport const audio = prop('audio')\nexport const share = prop('share')\nexport const files = prop('files')\nexport const shownotes = prop('shownotes')\nexport const transcripts = prop('transcripts')\nexport const playlist = prop('playlist')\n","import { handleActions } from 'redux-actions'\nimport { propOr } from 'ramda'\n\nimport { TOGGLE_TAB } from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n chapters: false,\n share: false,\n files: false,\n shownotes: false,\n playlist: false,\n transcripts: false\n}\n\nexport const reducer = handleActions(\n {\n [TOGGLE_TAB]: (state, { payload }) => ({\n ...INITIAL_STATE,\n [payload]: !propOr(false, payload, state)\n })\n },\n INITIAL_STATE\n)\n","import { prop, compose, propOr } from 'ramda'\n\nconst themeColors = propOr({}, 'tokens')\n\nexport const brand = compose(prop('brand'), themeColors)\nexport const brandDark = compose(prop('brandDark'), themeColors)\nexport const brandDarkest = compose(prop('brandDarkest'), themeColors)\nexport const brandLightest = compose(prop('brandLightest'), themeColors)\nexport const shadeDark = compose(prop('shadeDark'), themeColors)\nexport const shadeBase = compose(prop('shadeBase'), themeColors)\nexport const contrast = compose(prop('contrast'), themeColors)\nexport const alt = compose(prop('alt'), themeColors)\n\nconst themeFonts = propOr({}, 'fonts')\n\nexport const fontRegular = compose(prop('regular'), themeFonts)\nexport const fontBold = compose(prop('bold'), themeFonts)\nexport const fontCi = compose(prop('ci'), themeFonts)\n","import { compose, propOr, path } from 'ramda'\nimport { handleActions } from 'redux-actions'\nimport { createObject } from '@podlove/utils/helper'\n\nimport { theme } from '@podlove/player-config'\nimport { SET_THEME, CONSTRUCTED } from '@podlove/player-actions/types'\n\nconst TOKENS = {\n brand: '#E64415',\n brandDark: '#235973',\n brandDarkest: '#1A3A4A',\n brandLightest: '#E9F1F5',\n shadeDark: '#807E7C',\n shadeBase: '#807E7C',\n contrast: '#000',\n alt: '#fff'\n}\n\nexport const tokens = {\n brand: propOr(TOKENS.brand, 'brand'),\n brandDark: propOr(TOKENS.brandDark, 'brandDark'),\n brandDarkest: propOr(TOKENS.brandDarkest, 'brandDarkest'),\n brandLightest: propOr(TOKENS.brandLightest, 'brandLightest'),\n shadeDark: propOr(TOKENS.shadeDark, 'shadeDark'),\n shadeBase: propOr(TOKENS.shadeBase, 'shadeBase'),\n contrast: propOr(TOKENS.contrast, 'contrast'),\n alt: propOr(TOKENS.alt, 'alt')\n}\n\nexport const FONTS = {\n ci: {\n name: 'ci',\n family: [\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Roboto',\n 'Helvetica',\n 'Arial',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji\", \"Segoe UI Symbol'\n ],\n src: [],\n weight: 800\n },\n regular: {\n name: 'regular',\n family: [\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Roboto',\n 'Helvetica',\n 'Arial',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji\", \"Segoe UI Symbol'\n ],\n src: [],\n weight: 300\n },\n bold: {\n name: 'bold',\n family: [\n '-apple-system',\n 'BlinkMacSystemFont',\n 'Segoe UI',\n 'Roboto',\n 'Helvetica',\n 'Arial',\n 'sans-serif',\n 'Apple Color Emoji',\n 'Segoe UI Emoji\", \"Segoe UI Symbol'\n ],\n src: [],\n weight: 700\n }\n}\n\nconst normalizeFont = (type) =>\n createObject({\n family: propOr(path([type, 'family'], FONTS), 'family'),\n weight: propOr(path([type, 'weight'], FONTS), 'weight'),\n name: propOr(path([type, 'name'], FONTS), 'name'),\n src: propOr([], 'src')\n })\n\nconst extractFonts = createObject({\n regular: compose(\n normalizeFont('regular'),\n propOr(FONTS.regular, 'regular'),\n propOr({}, 'fonts'),\n theme\n ),\n bold: compose(normalizeFont('bold'), propOr(FONTS.bold, 'bold'), propOr({}, 'fonts'), theme),\n ci: compose(normalizeFont('ci'), propOr(FONTS.ci, 'ci'), propOr({}, 'fonts'), theme)\n})\n\nconst getTokens = propOr({}, 'tokens')\n\nconst extractTokens = createObject({\n brand: compose(tokens.brand, getTokens, theme),\n brandDark: compose(tokens.brandDark, getTokens, theme),\n brandDarkest: compose(tokens.brandDarkest, getTokens, theme),\n brandLightest: compose(tokens.brandLightest, getTokens, theme),\n shadeDark: compose(tokens.shadeDark, getTokens, theme),\n shadeBase: compose(tokens.shadeBase, getTokens, theme),\n contrast: compose(tokens.contrast, getTokens, theme),\n alt: compose(tokens.alt, getTokens, theme)\n})\n\nexport const INITIAL_STATE = {\n tokens: TOKENS,\n fonts: FONTS\n}\n\nexport const reducer = handleActions(\n {\n [CONSTRUCTED]: (_, { payload }) => ({\n tokens: extractTokens(payload),\n fonts: extractFonts(payload)\n }),\n [SET_THEME]: (_, { payload }) => ({\n tokens: extractTokens(payload),\n fonts: extractFonts(payload)\n })\n },\n INITIAL_STATE\n)\n","import { prop } from 'ramda'\n\nexport const playtime = prop('playtime')\nexport const duration = prop('duration')\nexport const livesync = prop('livesync')\n","import { handleActions } from 'redux-actions'\nimport {\n READY,\n BACKEND_DURATION,\n BACKEND_PLAYTIME,\n REQUEST_PLAYTIME,\n BACKEND_LIVESYNC\n} from '@podlove/player-actions/types'\nimport { toInt } from '@podlove/utils/helper'\nimport { duration, playtime } from '@podlove/player-config'\n\nexport const INITIAL_STATE = {\n duration: 0,\n playtime: 0,\n livesync: 0\n}\n\nexport const reducer = handleActions(\n {\n [READY]: (state, { payload }) => ({\n ...state,\n duration: duration(payload),\n playtime: playtime(payload)\n }),\n [BACKEND_DURATION]: (state, { payload }) => ({\n ...state,\n duration: toInt(payload || state.duration)\n }),\n [BACKEND_PLAYTIME]: (state, { payload }) => ({\n ...state,\n playtime: toInt(payload)\n }),\n [REQUEST_PLAYTIME]: (state, { payload }) => ({\n ...state,\n playtime: toInt(payload)\n }),\n [BACKEND_LIVESYNC]: (state, { payload }) => ({\n ...state,\n livesync: toInt(payload)\n })\n },\n INITIAL_STATE\n)\n","import { compose, prop } from 'ramda'\n\nexport const timeline = prop('timeline')\nexport const active = prop('active')\nexport const follow = prop('follow')\nexport const hasTranscripts = prop('hasTranscripts')\nexport const search = prop('search')\nexport const searchQuery = compose(prop('query'), search)\nexport const searchSelected = compose(prop('selected'), search)\nexport const searchResults = compose(prop('results'), search)\nexport const searching = compose(prop('searching'), search)\n","import { handleActions } from 'redux-actions'\n\nimport {\n SET_TRANSCRIPTS_TIMELINE,\n UPDATE_TRANSCRIPTS,\n TOGGLE_FOLLOW_TRANSCRIPTS,\n SEARCH_TRANSCRIPTS,\n RESET_SEARCH_TRANSCRIPTS,\n SET_SEARCH_TRANSCRIPTS_RESULTS,\n NEXT_SEARCH_RESULT,\n PREVIOUS_SEARCH_RESULT\n} from '@podlove/player-actions/types'\n\nexport const INITIAL_STATE = {\n timeline: [],\n active: null,\n follow: true,\n hasTranscripts: false,\n search: {\n searching: false,\n query: '',\n selected: -1,\n results: []\n }\n}\n\nexport const reducer = handleActions(\n {\n [SET_TRANSCRIPTS_TIMELINE]: (state, { payload }) => ({\n ...state,\n ...payload\n }),\n\n [UPDATE_TRANSCRIPTS]: (state, { payload }) => ({\n ...state,\n active: payload\n }),\n\n [TOGGLE_FOLLOW_TRANSCRIPTS]: (state, { payload }) => ({\n ...state,\n follow: payload\n }),\n\n [SEARCH_TRANSCRIPTS]: (state, { payload }) => ({\n ...state,\n search: {\n ...state.search,\n searching: true,\n selected: -1,\n query: payload\n }\n }),\n\n [SET_SEARCH_TRANSCRIPTS_RESULTS]: (state, { payload }) => ({\n ...state,\n search: {\n ...state.search,\n searching: false,\n selected: payload.length > 0 ? 1 : -1,\n results: payload\n }\n }),\n\n [NEXT_SEARCH_RESULT]: (state) => ({\n ...state,\n search: {\n ...state.search,\n selected:\n state.search.selected + 1 > state.search.results.length\n ? state.search.results.length\n : state.search.selected + 1\n }\n }),\n\n [PREVIOUS_SEARCH_RESULT]: (state) => ({\n ...state,\n search: {\n ...state.search,\n selected: state.search.selected - 1 < 1 ? 1 : state.search.selected - 1\n }\n }),\n\n [RESET_SEARCH_TRANSCRIPTS]: (state) => ({\n ...state,\n search: {\n ...state.search,\n results: [],\n selected: -1,\n query: ''\n }\n })\n },\n INITIAL_STATE\n)\n","import { fallbackTo } from './helper'\nimport { find, propEq, compose, curry, findIndex, defaultTo, add, prop } from 'ramda'\n\nconst emptyChapter = {\n start: null,\n end: null,\n title: null,\n href: null,\n index: -1\n}\n\nexport const getChapterByIndex = (chapters) => (index) =>\n index < 0 ? emptyChapter : prop(index, chapters)\n\nexport const currentChapterIndex = compose(\n fallbackTo(-1),\n findIndex(propEq('active', true)),\n defaultTo([])\n)\nexport const currentChapter = compose(\n fallbackTo(emptyChapter),\n find(propEq('active', true)),\n defaultTo([])\n)\n\nexport const nextChapter = (chapters) =>\n compose(getChapterByIndex(chapters), add(1), currentChapterIndex)(chapters)\n\nexport const previousChapter = (chapters) =>\n compose(getChapterByIndex(chapters), add(-1), currentChapterIndex)(chapters)\n\nexport const currentChapterByPlaytime = curry((chapters, playtime) =>\n find((chapter) => {\n if (playtime < chapter.start) {\n return false\n }\n\n if (playtime >= chapter.end) {\n return false\n }\n\n return true\n })(chapters)\n)\n\nexport const inactiveChapter = (chapter) => ({\n ...chapter,\n active: false\n})\n\nexport const activeChapter = (chapter) => ({\n ...chapter,\n active: true\n})\n\nexport const setActiveByPlaytime = (playtime) => (chapter) => {\n if (playtime < chapter.start) {\n return inactiveChapter(chapter)\n }\n\n if (playtime >= chapter.end) {\n return inactiveChapter(chapter)\n }\n\n return activeChapter(chapter)\n}\n\nexport const setActiveByIndex = (chapterIndex) => (chapter, index) =>\n chapterIndex === index ? activeChapter(chapter) : inactiveChapter(chapter)\n","import { compose, gt } from 'ramda'\nimport color from 'color'\n\nexport const luminosity = (theme) => color(theme).luminosity()\nexport const isNegative = compose(gt(0.25), luminosity)\nexport const light = '#fff'\nexport const dark = '#000'\n","import MobileDetect from 'mobile-detect'\n\nconst detect = new MobileDetect(window.navigator.userAgent)\n\nexport const isMobile = detect.mobile() || detect.tablet()\n","import { curry, compose, uniq, concat, join, filter, identity, head } from 'ramda'\nimport DOMPurify from 'dompurify'\n\nexport const findNode = (selector) =>\n typeof selector === 'string' ? head(document.querySelectorAll(selector)) : selector\n\nexport const createNode = (tag) => document.createElement(tag)\nexport const appendNode = curry((node, child) => {\n node.appendChild(child)\n\n return child\n})\n\nexport const tag = curry((tag, value = '', attributes) => {\n let attr = Object.keys(attributes || {})\n .map((attribute) => ` ${attribute}=\"${attributes[attribute]}\"`)\n .join('')\n return `<${tag}${attr}>${value}`\n})\n\nexport const setStyles = curry((attrs, el) => {\n Object.keys(attrs).forEach((property) => {\n el.style[property] = attrs[property]\n })\n\n return el\n})\n\nexport const removeStyles = curry((attrs, el) => {\n ;(attrs || []).forEach((attr) => {\n el.style.removeProperty(attr)\n })\n})\n\nexport const getClasses = compose(filter(identity), (el) => el.className.split(' '))\n\nexport const hasOverflow = (el) => el.scrollWidth > el.clientWidth\n\nexport const addClasses = curry((classes = [], el) => {\n el.className = compose(join(' '), uniq, concat(classes), getClasses)(el)\n\n return el\n})\n\nexport const removeClasses = curry((classes = [], el) => {\n el.className = compose(\n join(' '),\n filter((className) => !~classes.indexOf(className)),\n getClasses\n )(el)\n\n return el\n})\n\nexport const sanitize = (input) => {\n if (!input || typeof window === 'undefined') {\n return input\n }\n\n const purify = DOMPurify(window)\n\n // Adds target=\"_blank\" to parsed links\n purify.addHook('afterSanitizeElements', (node) => {\n if (node.tagName === 'A') {\n node.setAttribute('target', '_blank')\n }\n\n return node\n })\n\n return purify.sanitize(input, {\n ALLOWED_TAGS: ['b', 'i', 'em', 'strong', 'a', 'br', 'p', 'ul', 'li', 'ol', 'br'],\n ALLOWED_ATTR: ['href', 'target']\n })\n}\n\nexport const setAttributes = curry((attrs, el) => {\n Object.keys(attrs).forEach((property) => {\n el.setAttribute(property, attrs[property])\n })\n\n return el\n})\n\nexport const resizeObserver = curry((element, cb) => {\n const observer = new MutationObserver(cb)\n\n observer.observe(element, { childList: true })\n window.addEventListener('resize', cb)\n})\n","import { curry, map, compose, join, toUpper, juxt, head, tail, identity } from 'ramda'\nimport { isUndefinedOrNull } from './predicates'\n\n/**\n * Collection of functional helpers\n */\n\nexport const inAnimationFrame =\n (func) =>\n (...args) =>\n window.requestAnimationFrame(() => func.apply(null, args))\n\nexport const asyncAnimation =\n (func) =>\n (...args) =>\n new Promise((resolve) => {\n window.requestAnimationFrame(resolve(func.apply(null, args)))\n })\n\nexport const callWith =\n (...args) =>\n (func) =>\n func.apply(null, args)\n\n// Math helpers\nexport const toInt = (input = 0) => (isNaN(parseInt(input, 10)) ? 0 : parseInt(input, 10))\nexport const toFloat = (input = 0) => (isNaN(parseFloat(input)) ? 0 : parseFloat(input))\n\n// Functional Helper\nexport const fallbackTo = (fallback) => (value) => isUndefinedOrNull(value) ? fallback : value\nexport const createObject = curry((specification, value) => map((f) => f(value), specification))\nexport const scope = curry((selectors = {}, context = identity) =>\n Object.keys(selectors).reduce(\n (result, key) => ({\n ...result,\n [key]: compose(selectors[key], context)\n }),\n {}\n )\n)\nexport const startsWith = curry((q, str) => str.startsWith(q))\nexport const endsWith = curry((q, str) => str.endsWith(q))\nexport const stripl = curry((q, str) => (startsWith(q, str) ? str.slice(q.length) : str))\nexport const stripr = curry((q, str) =>\n endsWith(q, str) ? str.slice(0, str.length - q.length) : str\n)\nexport const strip = curry((q, str) => stripl(q, stripr(q, str)))\nexport const capitalize = compose(join(''), juxt([compose(toUpper, head), tail]))\n","export const toPercent = (input = '0') => {\n input = parseFloat(input) * 100\n return Math.round(input)\n}\n\nexport const round = (input = 0) => Math.ceil(input * 100) / 100\n\nexport const interpolate = (num = 0) => Math.round(num * 100) / 100\n\nexport const roundUp = (base, number) => {\n number = Math.ceil(number * 100)\n\n if (number % base === 0) {\n return (number + base) / 100\n }\n\n return (number + (base - (number % base))) / 100\n}\n\nexport const relativePosition = (current = 0, maximum = 0) =>\n current < maximum ? (current * 100) / maximum + '%' : '100%'\n\nexport const inRange =\n (lower = 0, upper = 0) =>\n (value = 0) => {\n if (value < lower) {\n return lower\n }\n\n if (value > upper) {\n return upper\n }\n\n return value\n }\n\nexport const toDecimal = (input = 0) => parseFloat(Math.round(input * 100) / 100).toFixed(2)\n\nexport const toMegabyte = (size = '0') => parseInt(parseInt(size) / 1000000)\n","import { isNil } from 'ramda'\n\nexport const or = (p1, p2) => (x) => p1(x) || p2(x)\nexport const and = (p1, p2) => (x) => p1(x) && p2(x)\nexport const not = (p) => (x) => !p(x)\nexport const isUndefined = (x) => x === undefined\n\nexport const isUndefinedOrNull = or(isUndefined, isNil)\nexport const isDefinedAndNotNull = not(isUndefinedOrNull)\n","import { is, compose } from 'ramda'\nimport { toInt, toFloat } from './helper'\nimport { isUndefinedOrNull } from './predicates'\n\nconst timeRegex = new RegExp(/^(?:(\\d{1,2}):)?(?:(\\d{1,2}):)?(\\d{1,2})(?:\\.(\\d{1,3}))?$/)\n\n// Transforms a h:mm:ss.f or mm:ss.ffff or ss time to milliseconds\nexport const toPlayerTime = (time = '0') => {\n if (is(Number, time) || isUndefinedOrNull(time)) {\n return time\n }\n\n const matches = timeRegex.exec(time)\n\n if (!matches) {\n return 0\n }\n\n const hours = parseInt(matches[2] ? matches[1] : 0)\n const minutes = parseInt(matches[2] ? matches[2] : matches[1] || 0)\n const seconds = parseInt(matches[3] || 0)\n const milliseconds = parseInt(matches[4] || 0)\n\n return hours * 60 * 60 * 1000 + minutes * 60 * 1000 + seconds * 1000 + milliseconds\n}\n\nexport const localeDate = (timestamp, locale) => new Date(timestamp).toLocaleDateString(locale)\nexport const localeTime = (timestamp, locale) =>\n new Date(timestamp).toLocaleTimeString(locale, { hour: '2-digit', minute: '2-digit' })\nexport const fallbackToZero = (time = 0) => (!is(Number, time) || time < 0 ? 0 : time)\n\nconst leadingZero = (time) => (time > 9 ? `${time}` : `0${time}`)\n\n// Transforms milliseconds to (hh:)mm:ss\nexport const toHumanTime = (time = 0) => {\n let hours = compose(calcHours, fallbackToZero, toInt)(time)\n let minutes = compose(calcMinutes, fallbackToZero, toInt)(time)\n let seconds = compose(calcSeconds, fallbackToZero, toInt)(time)\n\n let result = `${leadingZero(minutes)}:${leadingZero(seconds)}`\n\n if (hours > 0) {\n result = `${hours}:${result}`\n }\n\n return result\n}\n\nexport const secondsToMilliseconds = compose(toInt, (input) => input * 1000, toFloat)\nexport const millisecondsToSeconds = compose(toFloat, (input) => input / 1000, toInt)\nexport const parseDate = (utcDate) => (utcDate ? new Date(utcDate).getTime() : null)\n\nexport const calcSeconds = compose((time = 0) => parseInt(time % 60), millisecondsToSeconds)\nexport const calcMinutes = compose((time = 0) => parseInt(time / 60) % 60, millisecondsToSeconds)\nexport const calcHours = compose((time = 0) => parseInt(time / 3600) % 24, millisecondsToSeconds)\n","import { compose, propOr, replace } from 'ramda'\nimport queryString from 'query-string-for-all'\nimport { stripr } from './helper'\n\nconst url = (href) => {\n try {\n return new URL(href)\n } catch (e) {\n return ''\n }\n}\n\nexport const hostname = compose(replace(/^(www\\.)/, ''), propOr('', 'hostname'), url)\nexport const pathname = compose(stripr('/'), propOr('', 'pathname'), url)\n\nexport const addQueryParameter = (url, additionalParameters = {}) => {\n const parser = document.createElement('a')\n parser.href = url\n\n const existingParameters = queryString.parse(parser.search)\n parser.search = queryString.stringify(Object.assign({}, existingParameters, additionalParameters))\n return parser.href\n}\n\nexport const queryParameter = queryString.stringify\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".js\";\n};","// This function allow to reference all chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + \"styles\" + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t672: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tfor(moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) var result = runtime(__webpack_require__);\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_podlove_player\"] = self[\"webpackChunk_podlove_player\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [532,736], () => (__webpack_require__(11764)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"sourceRoot":""}