{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/external_link.png","webpack:///./src/components/media-items/VideoStreamMedia.vue?4da3","webpack:///./src/components/PlaylistSelection.vue?98ee","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/App.vue?db16","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?7170","webpack:///./src/store/playerstate.types.ts","webpack:///./src/store/store.getters.ts","webpack:///./src/App.vue?2c89","webpack:///./src/components/WebplayerLayout.vue?569f","webpack:///./src/services/urlParam.service.ts","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue?c543","webpack:///./src/components/PlaylistSelection.vue?f48f","webpack:///./src/services/playlist.service.ts","webpack:///./src/services/timer.ts","webpack:///./src/store/store.mutations.ts","webpack:///./src/store/helpers.ts","webpack:///./src/store/store.actions.ts","webpack:///./src/components/PlaylistSelection.vue","webpack:///./src/components/PlaylistSelection.vue?d3d8","webpack:///./src/components/PlaylistSelection.vue?ae35","webpack:///./src/components/media-items/BaseMedia.vue?729d","webpack:///./src/components/AudioPlayer.vue?015d","webpack:///./src/components/AudioPlayer.vue","webpack:///./src/components/AudioPlayer.vue?a3f9","webpack:///./src/components/AudioPlayer.vue?6d6c","webpack:///./src/components/media-items/ImageMedia.vue?4a99","webpack:///./src/components/media-items/BaseMedia.vue","webpack:///./src/components/media-items/BaseMedia.vue?17a5","webpack:///./src/components/media-items/ImageMedia.vue","webpack:///./src/components/media-items/ImageMedia.vue?8eea","webpack:///./src/components/media-items/ImageMedia.vue?58be","webpack:///./src/components/media-items/VideoMedia.vue?ec2e","webpack:///./src/components/media-items/VideoMedia.vue","webpack:///./src/components/media-items/VideoMedia.vue?e223","webpack:///./src/components/media-items/VideoMedia.vue?4af7","webpack:///./src/components/media-items/VideoStreamMedia.vue?e08f","webpack:///./src/components/media-items/VideoStreamMedia.vue","webpack:///./src/components/media-items/VideoStreamMedia.vue?d773","webpack:///./src/components/media-items/VideoStreamMedia.vue?5e9b","webpack:///./src/components/media-items/WebsiteMedia.vue?b842","webpack:///./src/components/media-items/WebsiteMedia.vue","webpack:///./src/components/media-items/WebsiteMedia.vue?0f5b","webpack:///./src/components/media-items/WebsiteMedia.vue?d03d","webpack:///./src/components/MediaControls.vue?3240","webpack:///./src/components/MediaControls.vue","webpack:///./src/components/MediaControls.vue?6263","webpack:///./src/components/MediaControls.vue?e6d1","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue?e346","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue?2c59","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?89f7","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?9fca","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?1398","webpack:///./src/components/WebplayerLayout.vue","webpack:///./src/components/WebplayerLayout.vue?5495","webpack:///./src/components/WebplayerLayout.vue?3960","webpack:///./src/App.vue","webpack:///./src/App.vue?198c","webpack:///./src/App.vue?bb6c","webpack:///./src/store/index.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/services/stylingExtension.ts","webpack:///./src/utils/array.ts","webpack:///./src/main.ts","webpack:///./src/components/PlaylistSelection.vue?5170"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","map","webpackContext","req","id","webpackContextResolve","e","Error","code","keys","resolve","PlayerStateFields","PlayerGetters","render","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","layout","urlParam","results","RegExp","exec","document","location","href","decodeURI","isAudioMuted","useAutostart","mediaControlHideTimeout","breakpoint","factor","touchDevice","navigator","maxTouchPoints","documentElement","timeout","parseInt","loopPlaylist","useCdn","split","urlParamService","URLParamService","closeDelay","scopedSlots","_u","fn","ref","hover","muted","_e","playlistsHash","staticClass","style","$vuetify","height","on","$event","playPause","staticStyle","overlayImage","url","_l","playerItem","index","contentItem","type","lastModified","refInFor","paused","closed","dialogWidth","setPaused","close","_v","carouselHeight","chunkedPlaylist","carouselPage","chunks","itemIndex","thumbnail_url","directives","rawName","expression","selectionStyle","getUrl","triggerPlaylistItem","safe4Data","lastEtag","refreshLoopInitialized","registeredLayoutEvents","Map","setTrackingAndCss","getElementById","innerText","getCssStyling","replace","initialLoad","isInititalized","loadSafe4","registerLayoutEvents","reshuffleData","playlistContainer","playlists","startRefreshLoop","getInitialPlaylist","initialMasterPlaylist","layoutEventsContainer","layoutEvents","filter","event","end_date","find","isBetween","start_date","start_time","end_time","layoutContainer","layouts","layoutId","zones","playlistId","playerContainer","startScreenLayoutId","getPlaylistById","masterPlaylists","playlist","entries","events","flatMap","startDateTime","initialStartDateTime","repetition","eventType","repetitionTime","minutes","seconds","repetition_type","add","hours","weekday","endDateTime","undefined","nextTriggerInMillis","diff","zone","has","set","emit","delete","isAfter","Math","abs","getAudioPlaylistEntries","startAudioPlaylistId","audioPlaylist","getPlaylistEntries","getPlayerVolume","volume","playlistEntries","playlistEntry","getPlaylistElement","concat","currentEntry","nextEntry","isActive","contentContainer","content","contentId","transition","console","warn","randomPlay","shuffledEntries","randomPlayCount","channelItems","item","elem","reduce","a","b","sort","random","scheduleInformation","now","start","end","startTime","endTime","allowedWeekdays","monday","tuesday","wednesday","thursday","friday","saturday","sunday","today","startOf","date","valueOf","time","day","findIndex","getOverlay","modelSpecific","cssStyling","getTrackingCodeBody","trackingCodeBody","getTrackingCodeHead","trackingCodeHead","refreshCommunicationFile","safe4File","newSafe4","paths","pathname","safe4Id","isNaN","origin","loadNew","head","headers","response","status","etag","getPlaylistHash","playlistService","runningTimerRegistry","startTimer","callback","timer","restartTimer","startNewTimer","clearAll","values","timerId","clear","pauseTimer","remainingDuration","duration","playlistTimer","PlayerMutations","renderablePlaylist","state","paramService","fullscreen","fullscreenElement","currentTime","playerVolume","totalTime","currentIndex","currentPlaylistItem","previousIndex","store","payload","PlayerActions","mutations","setPlaylist","setAudioPlaylist","setFullscreen","setCurrentTime","setLastTime","lastTime","setPlayerVolume","setMuted","setPreviousIndex","setCurrentIndex","setNextIndex","nextIndex","setTriggered","triggered","setFocused","focused","setFullscreenElement","actions","loadPlaylist","commit","updateCurrentTime","curr","Date","getTime","dispatch","getters","triggerPlaylistEntry","prev","setStartTimeForIndex","reshuffleAndLoad","resetTimer","toggleFullscreen","allowFullscreen","exitFullscreen","requestFullscreen","toggleMuted","togglePaused","element","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","doc","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","prevIndex","overflow","nextTick","setTimeout","chunkIndex","breakpointToChunkSize","boxShadow","borderRadius","backgroundColor","val","chunk","floor","center","class","portrait","matchMedia","matches","pausedWatcher","newVal","oldVal","deep","PlaylistSelection","component","VBtn","VCard","VCardText","VCardTitle","VCarousel","VCarouselItem","VCol","VContainer","VDialog","VIcon","VImg","VRow","Ripple","currentTrackNumber","currentUrl","nextTrack","corruptedTrackNumbers","updateAudioPlaylist","playCurrentTrack","watchCurrentPlaylistItem","audioTrack","$refs","muteAtCurrentEntry","setInterval","play","then","clearInterval","catch","endsWith","includes","immediate","AudioPlayer","classes","failedLoading","isError","alwaysVisible","required","default","mounted","getResizedImageUrl","contentItemUrl","mediaData","image_url","startMedia","$nextTick","mediaItem","classList","stopMedia","remove","encodeURIComponent","ImageMedia","posterUrl","videoBorderSize","domProps","videoEndedEvent","loaded","isPlaying","pause","log","load","error","pausedWatch","active","VideoMedia","isSupported","loadingTimer","canPlayType","src","loadHlsSource","hls","Promise","reject","loadSource","attachMedia","MANIFEST_PARSED","toggle","opacity","ERROR","destroy","VideoStreamMedia","created","widgetSettings","parameter","WebsiteMedia","model","$$v","progressBarValue","stopPropagation","_s","playerMuted","show","MediaControls","VProgressLinear","VSpacer","gsap","registerPlugin","CSSRulePlugin","animating","watchCurrentIndex","startSlide","watchPlaylist","$forceUpdate","getElement","dbl","currentElementMedia","previousElementMedia","hidden","transitionType","crossFade","colorCrossFade","timeline","to","fadeOutDuration","css","playerRoot","transitionRed","transitionGreen","transitionBlue","fadeInDuration","colorDuration","restart","totalDuration","DefaultWebplayerLayout","components","VHover","activeContentType","carouselBorder","carouselPeekValue","onAnimationStart","onAnimationEnd","getActiveClass","started","_startSlide","top","postMessage","JSON","stringify","watchFullscreen","elementRef","carousel","goto","getVideoActiveClass","width","imageWidth","peekValue","IPTVWebplayerLayout","SsrCarousel","WebplayerLayout","IptvWebplayerLayout","App","VApp","VMain","VProgressCircular","use","Store","body","addEventListener","parent","looseFocusKeys","focus","theme","themes","light","background","primary","secondary","accent","info","success","warning","icons","iconfont","lang","locales","de","current","loadExternalSources","cssString","getExternalSource","createElement","innerHTML","insertAdjacentElement","gonCode","scriptString","gon","Array","chunkSize","R","config","productionTip","vuetify","h","updated","$mount"],"mappings":"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X,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,gBAAiB,OACjB,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,UAAW,OACX,aAAc,OACd,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,aAAc,OACd,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,OACX,OAAQ,OACR,UAAW,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","file":"js/app.0193e66b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/webplayer/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhwAAAHgCAYAAADuRrSDAAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4wEWDBoQsJbxpAAADE9JREFUeNrt3dly2zgQhlFCpfd/ZeQitktVXrTxBwn0OVezZCYi3KP+BnIqbQOAG7337hT4SWutvfzPOj4AhAbp8BAcAEJDaBAPD8EBIDQgHh6CA0BsQDw6BAeA2IB4dAgOALEB8egQHABiA+LRITgAxAbEo0NwAIgNiEfHxXEAAPH4cAQA63K7weGh8XHL4YYDAMiHhyMAWJPbDU4TG601NxwAQD46HAHAmtxwIDgAEBuU4iMVAEBwAACCAwBAcAAAggMAEBwAAIIDABAcAACCAwAQHACA4AAAEBwAgOAAAErwu8UCLMrvGMuZuOEAAOLccAAszC0HZ+GGAwCIc8MBsDi3HJyBGw4AIM4NB0ABbjkQHACIDgQHAKIDBAcAogPBAYDoAMEBIDpAcAAgOhAcAIgOEBwAiA4EBwCiA8EBgOgAwQGA6EBwACA6QHAAIDoQHACIDgQHAKIDBAcAogPBAYDoQHAAgOhAcAAgOhAcAIgOEBwAiA4EBwCiA8EBAKKD+YLD0AKnfKNszf+cef9m5uAwoIDwEB0IDkMJIDy8vzNXcBhCQHiIDgSHwQMQHd77mS84DBsgOkSHUyAaHIYMEB3YB8SCw2ABogO7gWhwGCgA0WFHEAsOQwQgOuwL7rkYHgCEGPGvv9gAsFxHsj9quhgWACAe4WIDIPQG65bDDuHLxaAAIDY4TXAYFADEBq9qBgUg+CbrYxU7hG3b3vxlsQAgNtglOAwLAGKDaHAYFgDEBvHgAACxQTQ4DAwAYoO9NAMDEH6jLfIrVewO/uIjFQDEBvnwNjQAwTfZArcb9gaPcMMBgNhgbHAYHADEBvHgAACxgeAAQGwwd3AYIADEBvHgAGBfq/0KFbHB28FhiAAQG8SDA4B9rXS7ITYQHACIDQQHQEWr3G6IDXYNDgMFgNggHhyOAGA/K9xuiA0EB4DYEBsIDgCxITZAcACIDbGB4AAQG2IDwQGA2ADBASA2xAaCA0BsiA0EBwBiAwQHgNgQGwgOALEhNkBwAIgNEBwAYkNsIDgAxIbYAMEBIDbEBoIDQGyIDQQHAGIDBAeA2BAbCA4AsSE2QHAAiA0QHABiQ2ywrqsjAISG2ADBASA0xAaCA0BkiA0QHAXeeIBaxAYz8k2jAGIDBAcAYgPBAYDYAMEBIDZAcAAgNhAcAIgN7mkfnITgABAbxGLjpz9GcACIDXaPDdEhOADEBkNiQ3QIDgCxwZDYEB2CA0BsMCQ2RIfgABAbDIkN0SE4AMQGQ2JDdAgOALHB0GCoHh2CA0BsMCgUKkeH4AAQGwwMhKrRITgAxAaDw6BidAgOALHBAUFQLToEB4DY4KAQqBQdggNAbHBgAFSJDsEBIDY4ePFXiA7BASA2xMYJFv7q0SE4AMSG2PBaBAeA2KDSgl81OgQHgNgQG16b4AAQG1Rc6KtFh+AAEBtiw2sVHABig8oLfJXoEBwAYkNseO2CA0BsYGHPH0yCA0BsiA3PEic4AMSG2PBM8dcrOADEhtjwbHGCA0BsWMieMf4aBQeA2LCIPWuc4AAQGxawZ46/LsEBIDYsXs8efz2CA0BsWLjOIP46BAeA2LBonUX85xccAGLDgnUm8Z9XcACIDYvV2cR/vqsvC4DYsFDXPaPkXD/zdRAcAGJDbAiP+NdAcABiQ2yIjWJn98rMv3v2ggMQG4gNZxnnm0YBsYEFieAAEBtiwykIDgCxgdhAcACIDbGB4AAQG4gNwQEgNhAbCA4AsSE2EBwAYgOxgeAAxAZiA8EBIDbEBoIDQGwgNhAcgNhAbCA4AMSG2EBwAIgNxAaCA0BsiA0EB4DYQGwgOACxgdhAcACIDbGB4AAQG4gNBAcgNhAbCA4AsSE2EBwAYgOxgeAAxAZiA8EBIDbEBggOQGwgNhAcgNhAbCA4AMSG2BAbCA5AbCA2EBwAYkNsIDgAxAZiA8EBiA3EBoIDQGyIDRAcgNhAbCA4ALGB2EBwAIgNsQGCAxAbiA0EByA2EBsIDgCxITZAcABiA7GB4AAQG2IDBAcgNhAbCA5AbCA2EBwAYkNsgOAAxAZiA8EBiA3EBoIDQGyIDRAcgNhAbCA4ALGB2ADBAYgNsQGCAxAbiA0EByA2xIbYAMEBiA3EBoIDEBuIDQQHgNgQGyA4ALGB2EBwAGIDsQGCAxAbYgMEByA2EBsIDkBsIDZAcABiQ2yA4ADEBmIDwQGIDcQGCA5AbIgNEByA2EBsgOAAxIbYAMEBiA3EBoIDEBuIDRAcgNgQGyA4ALGB2EBwAGIDsQGCAxAbYgMEByA2EBsgOEBsIDZAcABiQ2yA4ADEBmIDBAcgNsQGCA5AbCA2EByA2EBsgOAAxIbYAMEBiA3EBggOEBuIDTjE1RGA2EBs7DFfogrBAWIDsRGfq9t/XnwgOEBsIDbiM/X57xQefPI9HCA2EBtmljg3HCA2KBgbI+fJbQfb5oYDxAZiwxwjOABv0mJjpXkyz4IDsBwQG+YawQFiA7GxzjyZb8EBeDNGbJhzBAeIDcSGeUJwAJaD2DBPZh7BAd54ERsgOEBsIDaKzZP5FxyAN1vEBggOEBuIDfOE4AAsB7Fhnvz3gOAAb66IDRAcIDYQG+YJwQFYDmLDPIHgAMsBsQGCA8QGYsM8ITgAy0FsmCcQHCA2EBsgOEBsWA5iAxAcIDaYJzbMFIIDsBjEhpkCwQEWA/PGBggOQGyIDXMFggMsBeaODRAcgNgQG4DgALHB/LFhvhAcgGUgNgDBAWIDsQGCA8QGYgMEByA2xAYgOEBsIDZAcIDYQGwAggPEhtgABAeIDcQGCA4QG4gNQHCA2BAbgOAAsYHYAMEBYgOxAQgOEBtiQ2yA4ACxgdgABAeIDbEBCA4QG4gNEBwgNhAbgOAAsSE2AMEBYgOxAYIDxAZiAxAcIDbEBiA4QGwgNgDBgdhAbACCA8SG2AAEB4gNxAYgOACxAQgOGMLthtgABAeA2ADBAXNzuyE2AMEBiA2xAYIDQGwAggP+5OMUsQEIDkBsAIIDQGwAggMQG4DgABAbgOAAxAYgOACxAQgOALEBCA5AbACCAxAbgOAAEBuA4ADEBiA4wAJ01gCCAxAbgOAAxAYgOMBCxNkCggMQG4DgAMvReQKCA0BsAIIDLEpnCAgOsDCdHYDgAMQGIDjA8nRegOAAS9Q5AQgOsEydDyA4wFJ1LoDgAMvVeQAIDrBknQMgOMCy9fwAggMsXc8NCA6wfD0vIDjAEvacAIIDLGPPBwgOsJQ9FyA4gJWXs9gABAdY0p4DEBwgOrx+AMEBlrbYAAQHiA6vF0BwwGJLXGwAggNEh9gABAcw71IXG4DgANEhNgDB4Qhg3iUvNgDBAaJDbAAIDthn6R+x+MUGIDigaHiIDYDfXR0B7BsCvfcuNAAEB0wVHkIDEBzAQ6HwbHyIDEBwAG/FB0BFvmkUABAcAIDgAAAQHACA4AAABAcAgOAAAAQHAIDgAAAEBwAgOAAABAcAIDgAAMEBACA4AADBAQAgOAAAwQEACA4AAMEBAAgOAEBwAAAIDgBAcAAACA4AQHAAAIIDAEBwAACCAwAQHAAAggMAEBwAAIIDABAcAIDgAAAQHACA4AAABAcAgOAAAAQHAIDgAAAEBwAgOAAABAcAIDgAAMEBACA4AADBAQAgOAAAwQEACA4AAMEBAAgOAEBwAAAIDgBAcAAACA4AQHAAAIIDAOBJ12oP3HvvvuwAMJYbDgBAcAAAggMAQHAAAIIDABAcAACCAwAQHAAAggMAEBwAgOAAABAcAIDgAAAEBwCA4AAABAcAgOAAAAQHACA4AAAEBwAgOAAAwQEAIDgAAMEBAPBf27Zt6713RwHAYcuoteYU1uaGAwAQHACA4AAAuOvrMzPfxwHAIYvI92+U4IYDAMiH5e2fuOUAYOgScrtRhhsOAEBwAADz+3aV5WMVAIYsIB+nlOKGAwDIB+ZPf9EtBwDR5eN2oxw3HABAPjJ/+xtuOQCILB63G4JDdAAgNkjwkQoAkI/Nez/ALQcAuywctxuCQ3QAIDZI8pEKAJCPzkd/oFsOAF5aNG43eCY4RAcAYoMhwSE6ABAbDAkO0QGA2GBIcIgOAMQGQ4JDdAAgNhgSHKIDALHBkOAQHgBCwykwLDhEB4DYgCHBITwAhAYMCw7RASA2YEhwCA8AoQHDgkN4AAgNOGSIxAeAyEBwCA8AoQHrBIcAARAY1PAPVbYERPT6V/IAAAAASUVORK5CYII=\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoStreamMedia.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlaylistSelection.vue?vue&type=style&index=1&lang=scss&\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-SG\": \"cdab\",\n\t\"./en-SG.js\": \"cdab\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IPTVWebplayerLayout.vue?vue&type=style&index=0&lang=scss&\"","import { AudioPlaylistEntry, RenderablePlaylistEntry } from \"../interfaces/playlist\";\n\nexport enum PlayerStateFields {\n playlist = \"playlist\",\n audioPlaylist = \"audioPlaylist\",\n fullscreen = \"fullscreen\",\n currentTime = \"currentTime\",\n lastTime = \"lastTime\",\n paused = \"paused\",\n playerVolume = \"playerVolume\",\n muted = \"muted\",\n previousIndex = \"previousIndex\",\n currentIndex = \"currentIndex\",\n nextIndex = \"nextIndex\",\n triggered = \"triggered\",\n focused = \"focused\",\n fullscreenElement = \"fullscreenElement\",\n}\n\nexport type PlayerState = {\n playlist: RenderablePlaylistEntry[];\n audioPlaylist: AudioPlaylistEntry[];\n fullscreen: boolean;\n currentTime: number;\n lastTime: number;\n playerVolume: number;\n paused: boolean;\n muted: boolean;\n previousIndex: number;\n currentIndex: number;\n nextIndex: number;\n triggered: boolean;\n focused: boolean;\n fullscreenElement: HTMLElement;\n};\n","import { GetterTree } from \"vuex\";\nimport { playlistService } from \"../services/playlist.service\";\nimport { urlParamService } from \"../services/urlParam.service\";\nimport { PlayerState } from \"./playerstate.types\";\n\nexport enum PlayerGetters {\n renderablePlaylist = \"renderablePlaylist\",\n audioPlaylist = \"audioPlaylist\",\n paramService = \"paramService\",\n overlayImage = \"overlayImage\",\n fullscreen = \"fullscreen\",\n fullscreenElement = \"fullscreenElement\",\n currentTime = \"currentTime\",\n paused = \"paused\",\n playerVolume = \"playerVolume\",\n totalTime = \"totalTime\",\n muted = \"muted\",\n currentIndex = \"currentIndex\",\n currentPlaylistItem = \"currentPlaylistItem\",\n previousIndex = \"previousIndex\",\n playlistsHash = \"playlistsHash\",\n}\n\nexport const getters: GetterTree = {\n [PlayerGetters.renderablePlaylist]: (state) => state.playlist,\n\n [PlayerGetters.audioPlaylist]: (state) => state.audioPlaylist,\n\n [PlayerGetters.paramService]: () => urlParamService,\n\n [PlayerGetters.overlayImage]: () => playlistService.getOverlay(),\n\n [PlayerGetters.fullscreen]: (state) => state.fullscreen,\n\n [PlayerGetters.fullscreenElement]: (state) => state.fullscreenElement,\n\n [PlayerGetters.currentTime]: (state) => state.currentTime,\n\n [PlayerGetters.paused]: (state) => state.paused,\n\n [PlayerGetters.playerVolume]: (state) => state.playerVolume,\n\n [PlayerGetters.totalTime]: (state) =>\n state.playlist.map((item) => item.playlistEntry.duration * 1000).reduce((a, b) => a + b, 0),\n\n [PlayerGetters.muted]: (state) => state.muted,\n\n [PlayerGetters.currentIndex]: (state) => state.currentIndex,\n\n [PlayerGetters.currentPlaylistItem]: (state) => state.playlist[state.currentIndex],\n\n [PlayerGetters.previousIndex]: (state) => state.previousIndex,\n\n [PlayerGetters.playlistsHash]: () => playlistService.getPlaylistHash(),\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('v-main',[(_vm.loaded)?_c('webplayer-layout',{attrs:{\"data-cy\":\"web-player\"}}):_c('v-progress-circular')],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.layout == 'iptv')?_c('iptv-webplayer-layout'):_c('default-webplayer-layout')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Breakpoint } from \"vuetify/types/services/breakpoint\";\n\nclass URLParamService {\n urlParam(name: string): string | null {\n const results = new RegExp(\"[?&]\" + name + \"=([^&#]*)\").exec(document.location.href);\n if (results == null) {\n return null;\n } else {\n return decodeURI(results[1]) || null;\n }\n }\n\n //Default value: true\n isAudioMuted(): boolean {\n if (this.urlParam(\"mute-audio\") === \"false\") {\n return false;\n } else {\n return true;\n }\n }\n\n //Default value: true\n useAutostart(): boolean {\n if (this.urlParam(\"autostart\") === \"false\") {\n return false;\n } else {\n return true;\n }\n }\n\n mediaControlHideTimeout(breakpoint: Breakpoint): number {\n let factor = 1;\n const touchDevice = navigator.maxTouchPoints || \"ontouchstart\" in document.documentElement;\n\n switch (breakpoint.name) {\n case \"xs\":\n case \"sm\":\n case \"md\":\n if (touchDevice) {\n factor = 2;\n }\n break;\n }\n const timeout = this.urlParam(\"media-control-timeout\") || 1500;\n return parseInt(\"\" + timeout) * factor;\n }\n\n //Default value: false\n loopPlaylist(): boolean {\n if (this.urlParam(\"loop-playlist\") === \"true\" || this.urlParam(\"loop\") === \"true\") {\n return true;\n } else {\n return false;\n }\n }\n /// should use cdn and contentconvert?\n /// default: true\n useCdn(): boolean {\n if (this.urlParam(\"cdn\") === \"false\") {\n return false;\n }\n return true;\n }\n\n get layout() {\n return this.urlParam(\"layout\") || \"default\";\n }\n\n get looseFocusKeys(): string[] {\n return (this.urlParam(\"looseFocusKeys\") || this.urlParam(\"loose-focus-keys\") || \"ArrowUp\").split(\",\");\n }\n\n get allowFullscreen(): boolean {\n if (this.urlParam(\"allow-fullscreen\") === \"false\") {\n return false;\n }\n return true;\n }\n}\n\nexport const urlParamService = new URLParamService();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-hover',{attrs:{\"close-delay\":_vm.closeDelay},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar hover = ref.hover;\nreturn [_c('div',{attrs:{\"id\":\"webplayer-container\"}},[_c('playlist-selection'),_c('media-controls',{attrs:{\"data-cy\":\"media-controls\",\"hover\":hover}}),(!_vm.muted)?_c('audio-player'):_vm._e(),_c('div',{key:_vm.playlistsHash,ref:\"playerRoot\",staticClass:\"sp--player\",style:('height: ' + _vm.$vuetify.breakpoint.height + 'px'),attrs:{\"data-cy\":\"player-root\"},on:{\"click\":function($event){return _vm.playPause(false)},\"dblclick\":function($event){return _vm.playPause(true)}}},[(_vm.overlayImage)?_c('v-img',{staticStyle:{\"z-index\":\"201\"},attrs:{\"src\":_vm.overlayImage.url}}):_vm._e(),_vm._l((_vm.playlist),function(playerItem,index){return [(playerItem.contentItem.type === 'image')?_c('image-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'video')?_c('video-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'video_stream')?_c('video-stream-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'live_video_stream')?_c('video-stream-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'website' || playerItem.contentItem.type === 'widget')?_c('website-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"data-cy\":index}}):_vm._e()]})],2)],1)]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-dialog',{ref:\"dialog\",attrs:{\"value\":_vm.paused && !_vm.closed,\"width\":_vm.dialogWidth},on:{\"input\":function($event){return _vm.setPaused(!_vm.paused)}}},[(_vm.playlist)?_c('v-card',{attrs:{\"id\":\"playlist-container\",\"color\":\"rgba(1,1,1,0.3)\"}},[_c('v-card-title',[_c('v-btn',{staticClass:\"playlist-container--close-btn\",attrs:{\"icon\":\"\",\"data-cy\":\"playlist-container--close-btn\"},on:{\"click\":function($event){return _vm.close()}}},[_c('v-icon',{attrs:{\"large\":\"\",\"color\":\"white\"}},[_vm._v(\"mdi-close\")])],1)],1),_c('v-card-text',[_c('v-carousel',{attrs:{\"id\":\"playlist-control\",\"cycle\":false,\"data-cy\":\"playlist-selection--root\",\"height\":_vm.carouselHeight,\"hide-delimiters\":\"\",\"show-arrows\":_vm.chunkedPlaylist.length > 1,\"value\":_vm.carouselPage}},_vm._l((_vm.chunkedPlaylist),function(chunks,index){return _c('v-carousel-item',{key:(\"outer-\" + index),attrs:{\"height\":_vm.carouselHeight}},[_c('v-container',[_c('v-row',_vm._l((chunks),function(playerItem,itemIndex){return _c('v-col',{key:(\"inner-\" + itemIndex),staticStyle:{\"cursor\":\"pointer\"},attrs:{\"sm\":\"12\",\"md\":\"6\",\"lg\":\"4\",\"xl\":\"3\"}},[(playerItem.contentItem.type === 'image' || playerItem.contentItem.thumbnail_url)?_c('v-img',{directives:[{name:\"ripple\",rawName:\"v-ripple\",value:(_vm.rippleOptions),expression:\"rippleOptions\"}],key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + itemIndex,style:(_vm.selectionStyle(index, itemIndex)),attrs:{\"aspect-ratio\":16 / 9,\"src\":_vm.getUrl(playerItem),\"max-height\":_vm.carouselHeight - 20,\"eager\":\"\"},on:{\"click\":function($event){return _vm.triggerPlaylistItem(index, itemIndex)}}}):_vm._e(),(playerItem.contentItem.type === 'video' && !playerItem.contentItem.thumbnail_url)?_c('video',{directives:[{name:\"ripple\",rawName:\"v-ripple\",value:(_vm.rippleOptions),expression:\"rippleOptions\"}],key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + itemIndex,staticClass:\"playlist-control--item list-inline-item\",style:(_vm.selectionStyle(itemIndex)),attrs:{\"src\":_vm.getUrl(playerItem),\"max-height\":_vm.carouselHeight - 20},on:{\"click\":function($event){return _vm.triggerPlaylistItem(index, itemIndex)}}}):_vm._e(),(playerItem.contentItem.type === 'video_stream')?_c('v-img',{directives:[{name:\"ripple\",rawName:\"v-ripple\",value:(_vm.rippleOptions),expression:\"rippleOptions\"}],key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + itemIndex,staticClass:\"playlist-control--item list-inline-item\",style:(_vm.selectionStyle(itemIndex)),attrs:{\"src\":require(\"@/assets/external_link.png\"),\"max-height\":_vm.carouselHeight - 20},on:{\"click\":function($event){return _vm.triggerPlaylistItem(index, itemIndex)}}}):_vm._e(),(playerItem.contentItem.type === 'website' || playerItem.contentItem.type === 'widget')?_c('v-img',{directives:[{name:\"ripple\",rawName:\"v-ripple\",value:(_vm.rippleOptions),expression:\"rippleOptions\"}],key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + itemIndex,staticClass:\"playlist-control--item list-inline-item\",style:(_vm.selectionStyle(itemIndex)),attrs:{\"src\":require(\"@/assets/external_link.png\"),\"max-height\":_vm.carouselHeight - 20,\"contain\":\"\"},on:{\"click\":function($event){return _vm.triggerPlaylistItem(index, itemIndex)}}}):_vm._e()],1)}),1)],1)],1)}),1)],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios, { AxiosError } from \"axios\";\nimport moment from \"moment\";\nimport { TypedEmitter } from \"tiny-typed-emitter\";\nimport * as timer from \"worker-timers\";\nimport {\n AudioPlaylistEntry,\n BasePlaylistEntry,\n Playlist,\n PlaylistEntry,\n PlaylistLayoutEvent,\n RenderablePlaylistEntry,\n} from \"../interfaces/playlist\";\nimport { Safe4 } from \"../interfaces/safe4\";\n\nexport interface PlaylistServiceEvents {\n \"playlist-updated\": (event: PlaylistLayoutEvent) => void;\n \"safe4-updated\": () => void;\n}\n\ntype RegisteredLayoutEvents = {\n playlistId: number;\n nextTriggerInMillis: number;\n startDateTime: moment.Moment;\n endDateTime?: moment.Moment;\n};\nclass PlaylistService extends TypedEmitter {\n public safe4Data: Safe4 | null = null;\n private lastEtag = \"\";\n private refreshLoopInitialized = -1;\n private registeredLayoutEvents = new Map();\n\n get isInititalized() {\n return this.safe4Data !== null;\n }\n constructor() {\n super();\n this.on(\"safe4-updated\", () => {\n this.setTrackingAndCss();\n });\n }\n\n setTrackingAndCss() {\n // TODO evaluate for the future\n /*document.getElementById(\"tracking-code-head\")!.innerText = this.getTrackingCodeHead()?.replace(/[\\r\\n]/g, \"\") || \"\";\n document.getElementById(\"tracking-code-body\")!.innerHTML =\n this.getTrackingCodeBody()?.replace(/[\\r\\n]/g, \"\") || \"\";\n const bodyScripts = document.getElementById(\"tracking-code-body\")!.getElementsByTagName(\"script\");\n for (const script of bodyScripts) {\n eval(script.innerHTML);\n }*/\n document.getElementById(\"external-css-style\")!.innerText = this.getCssStyling()?.replace(/[\\r\\n]/g, \"\") || \"\";\n }\n\n async initialLoad() {\n if (this.isInititalized) {\n return;\n }\n await this.loadSafe4();\n this.registerLayoutEvents();\n this.reshuffleData();\n\n if (!this.safe4Data || !this.safe4Data?.playlistContainer || !this.safe4Data?.playlistContainer.playlists) {\n this.safe4Data = require(\"../static/empty_fallback.json\");\n }\n\n this.startRefreshLoop();\n }\n\n getInitialPlaylist(initialMasterPlaylist?: boolean): Playlist {\n if (!initialMasterPlaylist) {\n const currentLayoutEvent = this.safe4Data?.layoutEventsContainer?.layoutEvents\n .filter((event) => event.end_date)\n .find((event) =>\n moment().isBetween(\n moment(`${event.start_date} ${event.start_time}`),\n moment(`${event.end_date} ${event.end_time}`)\n )\n );\n\n const layout = this.safe4Data?.layoutContainer.layouts.find(\n (layout) => layout.id === currentLayoutEvent?.layoutId\n );\n if (currentLayoutEvent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n return this.safe4Data?.playlistContainer.playlists.find((p) => p.id === layout?.zones[0].playlistId)!;\n } else {\n if (this.safe4Data?.playerContainer.startScreenLayoutId) {\n const playlistId = this.safe4Data?.layoutContainer.layouts.find(\n (l) => l.id === this.safe4Data?.playerContainer.startScreenLayoutId\n )?.zones[0].playlistId;\n return this.getPlaylistById(playlistId!);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n const masterPlaylists = this.safe4Data?.playlistContainer.playlists.filter((playlist) => playlist.type === \"master_playlist\");\n return masterPlaylists?.find((playlist) => playlist.entries?.length > 0)! || masterPlaylists![0];\n }\n\n getPlaylistById(playlistId: number) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n return this.safe4Data?.playlistContainer.playlists.find((playlist) => playlist.id === playlistId)!;\n }\n\n private registerLayoutEvents() {\n const events: RegisteredLayoutEvents[] | undefined = this.safe4Data?.layoutEventsContainer?.layoutEvents.flatMap(\n (event) => {\n let startDateTime;\n const initialStartDateTime = moment(`${event.start_date} ${event.start_time}`);\n if (event.repetition && event.eventType === \"forcedStart\") {\n const repetitionTime = moment(event.start_time, \"HH:mm\");\n startDateTime = moment().minutes(repetitionTime.minutes()).seconds(0);\n switch (event.repetition_type) {\n case \"hourly\":\n startDateTime = startDateTime.add(repetitionTime.minutes() <= moment().minutes() ? 1 : 0, \"hours\");\n break;\n case \"daily\":\n startDateTime = startDateTime.hours(repetitionTime.hours());\n startDateTime = startDateTime.add(repetitionTime.hours() <= moment().hours() ? 1 : 0, \"day\");\n break;\n case \"weekly\":\n startDateTime = startDateTime.hours(repetitionTime.hours());\n startDateTime = startDateTime.add(repetitionTime.hours() <= moment().hours() ? 1 : 0, \"day\");\n startDateTime = startDateTime.weekday(initialStartDateTime.weekday());\n startDateTime = startDateTime.add(initialStartDateTime.weekday() <= moment().weekday() ? 1 : 0, \"week\");\n break;\n }\n } else {\n startDateTime = initialStartDateTime;\n }\n const endDateTime = event.end_date ? moment(`${event.end_date} ${event.end_time}`) : undefined;\n const nextTriggerInMillis = startDateTime.diff(moment());\n const layout = this.safe4Data?.layoutContainer.layouts.find((layout) => layout.id === event.layoutId);\n const zone = layout?.zones[0];\n\n return {\n playlistId: zone!.playlistId,\n nextTriggerInMillis,\n startDateTime,\n endDateTime,\n };\n }\n );\n\n if (events) {\n for (const event of events) {\n if (event.nextTriggerInMillis > 0) {\n if (!this.registeredLayoutEvents.has(event.playlistId)) {\n this.registeredLayoutEvents.set(event.playlistId, event);\n //console.log(\"register\", event);\n timer.setTimeout(() => {\n this.emit(\"playlist-updated\", event);\n this.registeredLayoutEvents.delete(event.playlistId);\n this.registerLayoutEvents();\n }, event.nextTriggerInMillis);\n }\n }\n if (event.endDateTime && event.endDateTime?.isAfter(moment())) {\n const initialMasterPlaylist = this.getInitialPlaylist(true);\n if (!this.registeredLayoutEvents.has(initialMasterPlaylist.id)) {\n const endEvent: RegisteredLayoutEvents = {\n playlistId: initialMasterPlaylist.id,\n startDateTime: event.endDateTime,\n nextTriggerInMillis: Math.abs(moment().diff(event.endDateTime)),\n };\n this.registeredLayoutEvents.set(endEvent.playlistId, endEvent);\n //console.log(\"trigger endevent\", endEvent);\n timer.setTimeout(() => {\n this.emit(\"playlist-updated\", endEvent);\n this.registeredLayoutEvents.delete(event.playlistId);\n }, endEvent.nextTriggerInMillis);\n }\n }\n }\n }\n }\n\n getAudioPlaylistEntries(): AudioPlaylistEntry[] {\n if (!this.safe4Data?.playerContainer?.startAudioPlaylistId) {\n return [];\n }\n const audioPlaylist = this.safe4Data?.playlistContainer.playlists.find(\n (p) => p.id === this.safe4Data?.playerContainer?.startAudioPlaylistId\n );\n if (!audioPlaylist) {\n return [];\n }\n return this.getPlaylistEntries(audioPlaylist);\n }\n\n getPlayerVolume() {\n return (this.safe4Data?.playerContainer.volume || 100) / 100;\n }\n\n getPlaylistEntries(playlist: Playlist): BasePlaylistEntry[] {\n let playlistEntries: BasePlaylistEntry[] = [];\n if (playlist) {\n for (const [index, playlistEntry] of playlist.entries.entries()) {\n const data = this.getPlaylistElement(\n playlistEntry,\n playlist,\n index + 1 < playlist.entries.length ? playlist.entries[index + 1] : undefined\n );\n\n if (data) {\n playlistEntries = playlistEntries.concat(data);\n }\n }\n return playlistEntries;\n }\n return [];\n }\n\n getPlaylistElement(\n currentEntry: PlaylistEntry,\n playlist: Playlist,\n nextEntry?: PlaylistEntry\n ): RenderablePlaylistEntry[] {\n let contentItem;\n if (currentEntry.type === \"content\") {\n if (this.isActive(currentEntry)) {\n contentItem = this.safe4Data?.contentContainer.content.find((content) => content.id === currentEntry.contentId);\n if (!contentItem || !contentItem.url) {\n console.warn(\"Skipping content item: \", contentItem);\n return [];\n }\n return [\n {\n contentItem,\n playlistEntry: currentEntry,\n transition: nextEntry && nextEntry.type === \"transition\" ? nextEntry.transition : playlist.transition,\n },\n ];\n }\n return [];\n } else if (currentEntry.type === \"playlist\") {\n const playlist = this.safe4Data?.playlistContainer.playlists.find(\n (playlist) => playlist.id === currentEntry.playlistId\n );\n if (!playlist) {\n return [];\n }\n if (currentEntry.randomPlay) {\n if (playlist.shuffledEntries.length > 0) {\n const randomPlayCount = currentEntry.randomPlayCount || 1;\n //console.log('randomplay count: ', randomPlayCount);\n const channelItems = playlist.shuffledEntries\n .slice(0, randomPlayCount)\n .map((item) => {\n //console.log('item', item);\n const elem = this.getPlaylistElement(item, playlist);\n //console.log('elems: ', elem);\n return elem;\n })\n .reduce((a, b) => {\n const concat = a.concat(b);\n return concat;\n });\n //console.log('entries: ', playlist.shuffledEntries);\n //console.log('result items: ', channelItems);\n return channelItems;\n }\n } else if (playlist?.type === \"internal_playlist\" || playlist?.type === \"channel\" || playlist?.type === \"master_playlist\") {\n return this.getPlaylistEntries(playlist);\n }\n return [];\n }\n return [];\n }\n\n reshuffleData(): void {\n if (\n this.safe4Data?.playlistContainer &&\n this.safe4Data?.playlistContainer.playlists &&\n this.safe4Data?.playlistContainer.playlists.length\n ) {\n for (const playlist of this.safe4Data?.playlistContainer.playlists) {\n playlist.shuffledEntries = playlist.entries.slice().filter(this.isActive).sort(() => 0.5 - Math.random());\n }\n }\n }\n\n isActive(playlistEntry: PlaylistEntry): boolean {\n if (!playlistEntry.scheduleInformation) {\n return true;\n }\n const scheduleInformation = playlistEntry.scheduleInformation;\n\n const now = moment();\n const start = moment(scheduleInformation.start_date);\n const end = moment(scheduleInformation.end_date);\n const startTime = moment(scheduleInformation.start_time, \"HH:mm\");\n const endTime = moment(scheduleInformation.end_time, \"HH:mm\");\n\n const weekday = now.weekday();\n const allowedWeekdays: number[] = [];\n if (scheduleInformation.monday) {\n allowedWeekdays.push(1);\n }\n if (scheduleInformation.tuesday) {\n allowedWeekdays.push(2);\n }\n if (scheduleInformation.wednesday) {\n allowedWeekdays.push(3);\n }\n if (scheduleInformation.thursday) {\n allowedWeekdays.push(4);\n }\n if (scheduleInformation.friday) {\n allowedWeekdays.push(5);\n }\n if (scheduleInformation.saturday) {\n allowedWeekdays.push(6);\n }\n if (scheduleInformation.sunday) {\n allowedWeekdays.push(0);\n }\n\n //verify the case if start and end are equal and its today\n //we can handle it by verify if start is today!\n const today = moment().startOf(\"day\");\n const date = now.isBetween(start, end) || start.valueOf() - today.valueOf() == 0;\n const time = now.isBetween(startTime, endTime);\n const day = allowedWeekdays.findIndex((i) => i === weekday) !== -1;\n return date && time && day;\n }\n\n getOverlay() {\n if (\n !this.safe4Data?.playerContainer.modelSpecific ||\n !this.safe4Data?.playerContainer.modelSpecific.overlayImage ||\n this.safe4Data?.playerContainer.modelSpecific.overlayImage.length === 0\n ) {\n return null;\n }\n return this.safe4Data?.playerContainer.modelSpecific.overlayImage[0];\n }\n\n getCssStyling() {\n if (\n !this.safe4Data?.playerContainer.modelSpecific ||\n !this.safe4Data?.playerContainer.modelSpecific.cssStyling ||\n this.safe4Data?.playerContainer.modelSpecific.cssStyling.length === 0\n ) {\n return null;\n }\n return this.safe4Data?.playerContainer.modelSpecific.cssStyling;\n }\n\n getTrackingCodeBody() {\n if (\n !this.safe4Data?.playerContainer.modelSpecific ||\n !this.safe4Data?.playerContainer.modelSpecific.trackingCodeBody ||\n this.safe4Data?.playerContainer.modelSpecific.trackingCodeBody.length === 0\n ) {\n return null;\n }\n return this.safe4Data?.playerContainer.modelSpecific.trackingCodeBody;\n }\n\n getTrackingCodeHead() {\n if (\n !this.safe4Data?.playerContainer.modelSpecific ||\n !this.safe4Data?.playerContainer.modelSpecific.trackingCodeHead ||\n this.safe4Data?.playerContainer.modelSpecific.trackingCodeHead.length === 0\n ) {\n return null;\n }\n return this.safe4Data?.playerContainer.modelSpecific.trackingCodeHead;\n }\n\n startRefreshLoop() {\n if (this.safe4Data?.playerContainer.refreshCommunicationFile && this.refreshLoopInitialized === -1) {\n this.refreshLoopInitialized = timer.setInterval(async () => {\n await this.loadSafe4();\n }, 10000);\n }\n }\n\n async loadSafe4() {\n if (process.env.NODE_ENV !== \"production\" && !(window as any).safe4File) {\n (window as any).safe4File = require(\"../../tests/data/safe4/two_master_playlists.json\");\n }\n if ((window as any).safe4File) {\n if (!this.safe4Data) {\n this.safe4Data = (window as any).safe4File;\n this.reshuffleData();\n this.emit(\"safe4-updated\");\n } else {\n const newSafe4 = (window as any).safe4File;\n if (newSafe4.playlistContainer.playlistsHash !== this.safe4Data?.playlistContainer.playlistsHash) {\n this.safe4Data = newSafe4;\n this.reshuffleData();\n this.emit(\"safe4-updated\");\n }\n }\n return;\n }\n const paths = location.pathname.split(\"/\");\n const safe4Id = paths[paths.length - 1] || \"beb28c88-e4cd-43b4-89eb-5c338e8feb28\";\n // when running in preview mode, the safe4Id is the playlist id, which is a number\n const url = isNaN(safe4Id as any)\n ? `${process.env.VUE_APP_API_BASE_URL || location.origin}/v1/safe4/${safe4Id}`\n : `${process.env.VUE_APP_API_BASE_URL || location.origin}/v1/safe4/preview/${safe4Id}`;\n\n let loadNew = true;\n if (this.lastEtag !== \"\") {\n try {\n await axios.head(url, {\n headers: {\n \"If-None-Match\": this.lastEtag,\n },\n });\n loadNew = true;\n } catch (err) {\n loadNew = (err as AxiosError)?.response?.status !== 304;\n }\n }\n\n if (loadNew) {\n const data = await axios.get(url);\n this.lastEtag = data.headers.etag;\n const newSafe4: Safe4 = data.data;\n\n if (newSafe4.playlistContainer.playlistsHash !== this.safe4Data?.playlistContainer.playlistsHash) {\n this.safe4Data = newSafe4;\n this.reshuffleData();\n this.emit(\"safe4-updated\");\n }\n }\n }\n\n getPlaylistHash() {\n return this.safe4Data?.playlistContainer.playlistsHash;\n }\n}\n\nexport const playlistService = new PlaylistService();\n","import moment from \"moment\";\nimport * as timers from \"worker-timers\";\nimport { PlaylistEntry } from \"../interfaces/playlist\";\n\ntype RunningTimer = {\n playlistEntry: PlaylistEntry;\n startTime: moment.Moment;\n remainingDuration: number;\n timerId?: number;\n};\n\nclass PlaylistTimer {\n private runningTimerRegistry = new Map();\n\n public startTimer(playlistEntry: PlaylistEntry, callback: (...arg: any) => any) {\n const timer = this.runningTimerRegistry.get(playlistEntry.id);\n\n if (timer) {\n this.restartTimer(timer, callback);\n } else {\n this.startNewTimer(playlistEntry, callback);\n }\n }\n\n public clearAll() {\n for (const timer of this.runningTimerRegistry.values()) {\n if (timer.timerId) {\n timers.clearTimeout(timer.timerId);\n }\n }\n this.runningTimerRegistry.clear();\n }\n\n public pauseTimer(playlistEntry: PlaylistEntry) {\n const timer = this.runningTimerRegistry.get(playlistEntry.id);\n\n if (timer) {\n const remainingDuration = timer.remainingDuration - Math.abs(timer.startTime.diff(moment(), \"milliseconds\"));\n timers.clearTimeout(timer.timerId!);\n timer.timerId = undefined;\n timer.remainingDuration = remainingDuration;\n this.runningTimerRegistry.set(playlistEntry.id, timer);\n }\n }\n\n private restartTimer(timer: RunningTimer, callback: (...arg: any) => any) {\n const timerId = timers.setTimeout(() => {\n this.runningTimerRegistry.delete(timer.playlistEntry.id);\n callback();\n }, timer.remainingDuration);\n\n timer.timerId = timerId;\n timer.startTime = moment();\n this.runningTimerRegistry.set(timer.playlistEntry.id, timer);\n }\n\n private startNewTimer(playlistEntry: PlaylistEntry, callback: (...arg: any) => any) {\n const timerId = timers.setTimeout(() => {\n this.runningTimerRegistry.delete(playlistEntry.id);\n callback();\n }, playlistEntry.duration * 1000);\n\n const timer: RunningTimer = {\n timerId,\n playlistEntry: playlistEntry,\n remainingDuration: playlistEntry.duration * 1000,\n startTime: moment(),\n };\n this.runningTimerRegistry.set(playlistEntry.id, timer);\n }\n\n public get timers() {\n return [...this.runningTimerRegistry.values()];\n }\n}\n\nexport const playlistTimer = new PlaylistTimer();\n","import { MutationTree } from \"vuex\";\nimport { set } from \"./helpers\";\nimport { PlayerState, PlayerStateFields } from \"./playerstate.types\";\n\nexport enum PlayerMutations {\n setPlaylist = \"setPlaylist\",\n setAudioPlaylist = \"setAudioPlaylist\",\n setFullscreen = \"setFullscreen\",\n setMuted = \"setMuted\",\n setPaused = \"setPaused\",\n setPlayerVolume = \"setPlayerVolume\",\n setCurrentTime = \"setCurrentTime\",\n setLastTime = \"setLastTime\",\n setTimer = \"setTimer\",\n setPreviousIndex = \"setPreviousIndex\",\n setCurrentIndex = \"setCurrentIndex\",\n setNextIndex = \"setNextIndex\",\n setTriggered = \"setTriggered\",\n setFocused = \"setFocused\",\n setFullscreenElement = \"setFullscreenElement\",\n}\n\nexport const mutations: MutationTree = {\n [PlayerMutations.setPlaylist]: set(PlayerStateFields.playlist),\n [PlayerMutations.setAudioPlaylist]: set(PlayerStateFields.audioPlaylist),\n [PlayerMutations.setFullscreen]: set(PlayerStateFields.fullscreen),\n [PlayerMutations.setCurrentTime]: set(PlayerStateFields.currentTime),\n [PlayerMutations.setLastTime]: set(PlayerStateFields.lastTime),\n [PlayerMutations.setPaused]: set(PlayerStateFields.paused),\n [PlayerMutations.setPlayerVolume]: set(PlayerStateFields.playerVolume),\n [PlayerMutations.setMuted]: set(PlayerStateFields.muted),\n [PlayerMutations.setPreviousIndex]: set(PlayerStateFields.previousIndex),\n [PlayerMutations.setCurrentIndex]: set(PlayerStateFields.currentIndex),\n [PlayerMutations.setNextIndex]: set(PlayerStateFields.nextIndex),\n [PlayerMutations.setTriggered]: set(PlayerStateFields.triggered),\n [PlayerMutations.setFocused]: set(PlayerStateFields.focused),\n [PlayerMutations.setFullscreenElement]: set(PlayerStateFields.fullscreenElement),\n};\n","import Vue from \"vue\";\nexport const set = (property: string) => (store: any, payload: any): void => {\n Vue.set(store, property, payload);\n};\nexport const add = (property: string) => (store: any, payload: any): void => store[property].push(payload);\n\nexport const timeout = async (ms: number): Promise => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n","import Vue from \"vue\";\nimport { ActionTree } from \"vuex\";\nimport { RenderablePlaylistEntry } from \"../interfaces/playlist\";\nimport { playlistService } from \"../services/playlist.service\";\nimport { playlistTimer } from \"../services/timer\";\nimport { urlParamService } from \"../services/urlParam.service\";\nimport { PlayerState, PlayerStateFields } from \"./playerstate.types\";\nimport { PlayerGetters } from \"./store.getters\";\nimport { PlayerMutations } from \"./store.mutations\";\n\nexport enum PlayerActions {\n loadPlaylist = \"loadPlaylist\",\n updateCurrentTime = \"updateCurrentTime\",\n setPaused = \"setPaused\",\n setStartTimeForIndex = \"setStartTimeForIndex\",\n reshuffleAndLoad = \"reshuffleAndLoad\",\n toggleFullscreen = \"toggleFullscreen\",\n toggleMuted = \"toggleMuted\",\n togglePaused = \"togglePaused\",\n requestFullscreen = \"requestFullscreen\",\n exitFullscreen = \"exitFullscreen\",\n resetTimer = \"resetTimer\",\n triggerPlaylistEntry = \"triggerPlaylistEntry\",\n setCurrentIndex = \"setCurrentIndex\",\n setTriggered = \"setTriggered\",\n setFullscreenElement = \"setFullscreenElement\",\n}\n\nexport const actions: ActionTree = {\n async [PlayerActions.loadPlaylist]({ commit }, payload: { playlistId?: number; initialMasterPlaylist?: true }) {\n await playlistService.initialLoad();\n\n commit(PlayerMutations.setPlayerVolume, playlistService.getPlayerVolume());\n if (payload?.playlistId) {\n commit(\n PlayerMutations.setPlaylist,\n playlistService.getPlaylistEntries(playlistService.getPlaylistById(payload.playlistId))\n );\n } else {\n commit(\n PlayerMutations.setPlaylist,\n playlistService.getPlaylistEntries(playlistService.getInitialPlaylist(payload?.initialMasterPlaylist))\n );\n commit(PlayerMutations.setAudioPlaylist, playlistService.getAudioPlaylistEntries());\n }\n },\n\n [PlayerActions.updateCurrentTime]({ commit, state }) {\n const curr = new Date().getTime();\n if (!state.lastTime) {\n commit(PlayerMutations.setLastTime, curr);\n }\n if (!state.paused) {\n commit(PlayerMutations.setCurrentTime, state.currentTime + curr - state.lastTime);\n }\n\n commit(PlayerMutations.setLastTime, curr);\n },\n\n [PlayerActions.setPaused]({ commit, dispatch, getters }, paused: boolean) {\n if (paused) {\n playlistTimer.pauseTimer((getters[PlayerGetters.currentPlaylistItem] as RenderablePlaylistEntry).playlistEntry);\n } else {\n playlistTimer.startTimer(\n (getters[PlayerGetters.currentPlaylistItem] as RenderablePlaylistEntry).playlistEntry,\n () => {\n dispatch(PlayerActions.triggerPlaylistEntry, { prev: false, triggered: false });\n }\n );\n }\n commit(PlayerMutations.setPaused, paused);\n },\n\n [PlayerActions.setStartTimeForIndex]({ commit, state }, index) {\n let currentTime = 0;\n for (let i = index - 1; i >= 0; --i) {\n currentTime += state.playlist[i].playlistEntry.duration * 1000;\n }\n commit(PlayerMutations.setCurrentTime, currentTime);\n },\n\n async [PlayerActions.reshuffleAndLoad]({ dispatch }) {\n playlistService.reshuffleData();\n await dispatch(PlayerActions.loadPlaylist);\n\n dispatch(PlayerActions.resetTimer);\n },\n\n [PlayerActions.resetTimer]({ commit }) {\n commit(PlayerMutations.setCurrentTime, 0);\n commit(PlayerMutations.setLastTime, new Date().getTime());\n },\n\n [PlayerActions.toggleFullscreen]({ commit, dispatch, state }) {\n if (!urlParamService.allowFullscreen) {\n return;\n }\n if (state.fullscreen) {\n commit(PlayerMutations.setFullscreen, false);\n dispatch(PlayerActions.exitFullscreen);\n } else {\n commit(PlayerMutations.setFullscreen, true);\n dispatch(PlayerActions.requestFullscreen);\n }\n },\n\n [PlayerActions.toggleMuted]({ commit, state }) {\n commit(PlayerMutations.setMuted, !state.muted);\n },\n\n [PlayerActions.togglePaused]({ dispatch, state }) {\n dispatch(PlayerActions.setPaused, !state.paused);\n },\n\n [PlayerActions.requestFullscreen]({ getters }) {\n // go full-screen\n const element = getters[PlayerStateFields.fullscreenElement];\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if ((element as any).webkitRequestFullscreen) {\n (element as any).webkitRequestFullscreen();\n } else if ((element as any).mozRequestFullScreen) {\n (element as any).mozRequestFullScreen();\n } else if ((element as any).msRequestFullscreen) {\n (element as any).msRequestFullscreen();\n }\n },\n\n [PlayerActions.exitFullscreen]() {\n // exit full-screen\n const doc = document;\n\n if (doc.exitFullscreen) {\n doc.exitFullscreen();\n } else if (doc.webkitExitFullscreen) {\n doc.webkitExitFullscreen();\n } else if (doc.mozCancelFullScreen) {\n doc.mozCancelFullScreen();\n } else if (doc.msExitFullscreen) {\n doc.msExitFullscreen();\n }\n },\n\n async [PlayerActions.triggerPlaylistEntry](\n { commit, dispatch, state },\n {\n prev = false,\n triggered = false,\n index = undefined,\n prevIndex = undefined,\n }: { prev: boolean; triggered: boolean; index?: number; prevIndex?: number }\n ) {\n if (state.paused && !triggered) {\n return;\n }\n // console.log(\"triggerPlaylistEntry\", prev, triggered, index, prevIndex);\n dispatch(PlayerActions.setTriggered, triggered);\n if (prevIndex === undefined) {\n commit(PlayerMutations.setPreviousIndex, state.currentIndex);\n } else {\n //console.log(prevIndex);\n commit(PlayerMutations.setPreviousIndex, prevIndex);\n }\n\n let currentIndex = state.currentIndex;\n let overflow = false;\n if (index !== undefined) {\n currentIndex = index;\n } else {\n if (!prev) {\n currentIndex++;\n if (currentIndex >= state.playlist.length) {\n currentIndex = 0;\n overflow = true;\n }\n } else {\n currentIndex--;\n if (currentIndex < 0) {\n currentIndex = state.playlist.length - 1;\n }\n }\n }\n\n commit(PlayerMutations.setCurrentIndex, currentIndex);\n if (triggered) {\n await dispatch(PlayerActions.setStartTimeForIndex, currentIndex);\n }\n await Vue.nextTick();\n\n if (overflow) {\n await dispatch(PlayerActions.reshuffleAndLoad);\n }\n\n if (!urlParamService.loopPlaylist() && overflow && !triggered) {\n dispatch(PlayerActions.setPaused, true);\n dispatch(PlayerActions.setCurrentIndex, 0);\n }\n\n if ((!triggered && !state.paused) || (!state.paused && triggered)) {\n playlistTimer.clearAll();\n if (state.playlist[currentIndex].contentItem.type !== \"video\") {\n playlistTimer.startTimer(state.playlist[currentIndex].playlistEntry, () => {\n dispatch(PlayerActions.triggerPlaylistEntry, { prev: false, triggered: false });\n });\n }\n }\n },\n\n async [PlayerActions.setCurrentIndex]({ commit, dispatch, state }, index: number) {\n if (state.currentIndex !== index) {\n commit(PlayerMutations.setPreviousIndex, state.currentIndex);\n commit(PlayerMutations.setCurrentIndex, index);\n await dispatch(PlayerActions.setStartTimeForIndex, index);\n }\n },\n\n [PlayerActions.setTriggered]({ commit }, payload: boolean) {\n commit(PlayerMutations.setTriggered, payload);\n setTimeout(() => {\n commit(PlayerMutations.setTriggered, false);\n }, 500);\n },\n\n [PlayerActions.setFullscreenElement]({ commit }, payload: HTMLElement) {\n commit(PlayerMutations.setFullscreenElement, payload);\n },\n};\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\n// import $ from \"jquery\";\n// import { eventBus, events } from \"./eventBus\";\nimport Component from \"vue-class-component\";\nimport { Watch } from \"vue-property-decorator\";\nimport { Action, Getter } from \"vuex-class\";\nimport { RenderablePlaylistEntry } from \"../interfaces/playlist\";\nimport { PlayerActions } from \"../store/store.actions\";\nimport { PlayerGetters } from \"../store/store.getters\";\n\n@Component({})\nexport default class PlaylistSelection extends Vue {\n closed = false;\n @Action(PlayerActions.setCurrentIndex) setCurrentIndex!: (index: number) => void;\n @Action(PlayerActions.setPaused) setPaused!: (paused: boolean) => void;\n @Getter(PlayerGetters.renderablePlaylist) playlist!: RenderablePlaylistEntry[];\n @Getter(PlayerGetters.paused) paused!: boolean;\n @Getter(PlayerGetters.currentIndex) currentIndex!: number;\n @Action(PlayerActions.setTriggered) setTriggered!: (triggered: boolean) => void;\n @Getter(PlayerGetters.playlistsHash) playlistsHash!: string;\n\n close() {\n this.closed = true;\n }\n\n triggerPlaylistItem(chunkIndex: number, itemIndex: number) {\n this.setTriggered(true);\n this.setCurrentIndex(chunkIndex * this.breakpointToChunkSize() + itemIndex);\n }\n\n getUrl(item: RenderablePlaylistEntry): string {\n if (item.contentItem.thumbnail_url) {\n return item.contentItem.thumbnail_url;\n }\n return item.contentItem.url;\n }\n\n breakpointToChunkSize(): number {\n switch (this.$vuetify.breakpoint.name) {\n case \"xs\":\n return 1;\n case \"sm\":\n return 1;\n case \"md\":\n return 2;\n case \"lg\":\n return 3;\n case \"xl\":\n return 4;\n }\n }\n\n selectionStyle(chunkIndex: number, itemIndex?: number) {\n return this.breakpointToChunkSize() > 1 &&\n chunkIndex === this.carouselPage &&\n itemIndex === this.currentIndex % this.breakpointToChunkSize()\n ? {\n boxShadow: \"rgba(139, 195, 74,0.9) 0 0 0 3px\",\n borderRadius: \"1px\",\n backgroundColor: \"rgba(139, 195, 74,0.9)\",\n }\n : {};\n }\n\n get chunkedPlaylist(): RenderablePlaylistEntry[][] {\n if (this.playlist.length > 0) {\n return this.playlist\n .map((val, index) => {\n return { ...val, index };\n })\n .chunk(this.breakpointToChunkSize());\n }\n return [];\n }\n\n get carouselPage() {\n return Math.floor(this.currentIndex / this.breakpointToChunkSize());\n }\n get rippleOptions() {\n return this.breakpointToChunkSize() > 1 ? { center: true, class: \"primary--text\" } : false;\n }\n get dialogWidth() {\n const portrait = window.matchMedia(\"(orientation: portrait)\").matches;\n switch (this.$vuetify.breakpoint.name) {\n case \"xs\":\n case \"sm\":\n return portrait ? \"100%\" : \"65%\";\n }\n return \"80%\";\n }\n get carouselHeight() {\n switch (this.$vuetify.breakpoint.name) {\n case \"xs\":\n return 184;\n case \"sm\":\n return 324;\n case \"md\":\n return 230;\n case \"lg\":\n return 300;\n case \"xl\":\n return 400;\n default:\n return 400;\n }\n }\n\n @Watch(\"paused\", { deep: true })\n pausedWatcher(newVal: boolean, oldVal: boolean) {\n this.closed = oldVal;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlaylistSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlaylistSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PlaylistSelection.vue?vue&type=template&id=3b6eac73&scoped=true&\"\nimport script from \"./PlaylistSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./PlaylistSelection.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PlaylistSelection.vue?vue&type=style&index=0&id=3b6eac73&lang=scss&scoped=true&\"\nimport style1 from \"./PlaylistSelection.vue?vue&type=style&index=1&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3b6eac73\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCarousel } from 'vuetify/lib/components/VCarousel';\nimport { VCarouselItem } from 'vuetify/lib/components/VCarousel';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCard,VCardText,VCardTitle,VCarousel,VCarouselItem,VCol,VContainer,VDialog,VIcon,VImg,VRow})\n\n\n/* vuetify-loader */\nimport installDirectives from \"!../../node_modules/vuetify-loader/lib/runtime/installDirectives.js\"\nimport Ripple from 'vuetify/lib/directives/ripple'\ninstallDirectives(component, {Ripple})\n","var render, staticRenderFns\nimport script from \"./BaseMedia.vue?vue&type=script&lang=ts&\"\nexport * from \"./BaseMedia.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.audioPlaylist && _vm.audioPlaylist.length > 0)?_c('div',[_c('audio',{key:(\"audio-track-\" + _vm.currentTrackNumber),ref:\"audioTrack\",attrs:{\"src\":_vm.currentUrl},on:{\"ended\":_vm.nextTrack}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { AudioPlaylistEntry, RenderablePlaylistEntry } from \"@/interfaces/playlist\";\nimport { PlayerGetters } from \"@/store/store.getters\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Watch } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\n\n@Component\nexport default class AudioPlayer extends Vue {\n currentTrackNumber = 0;\n currentUrl = \"\";\n corruptedTrackNumbers: number[] = [];\n @Getter(PlayerGetters.playerVolume) playerVolume!: number;\n @Getter(PlayerGetters.audioPlaylist) audioPlaylist!: AudioPlaylistEntry[];\n @Getter(PlayerGetters.currentPlaylistItem) currentPlaylistItem!: RenderablePlaylistEntry;\n @Getter(PlayerGetters.paused) paused!: boolean;\n\n @Watch(\"audioPlaylist\", { immediate: true })\n updateAudioPlaylist() {\n this.currentTrackNumber = 0;\n this.corruptedTrackNumbers = [];\n if (this.audioPlaylist.length > 0) {\n this.playCurrentTrack();\n }\n }\n\n @Watch(\"currentPlaylistItem\", { immediate: true })\n @Watch(\"paused\")\n async watchCurrentPlaylistItem() {\n const audioTrack = this.$refs.audioTrack as HTMLMediaElement;\n if (!audioTrack) {\n return;\n }\n // same implementation as in player, when volume is greater than 2, it is considered as muted\n // 2 is a tradeoff when for instance the user has not entirely muted the audio, but the volume is so low that it is not audible\n const muteAtCurrentEntry = (this.currentPlaylistItem.playlistEntry.volume || 0) > 2;\n audioTrack.volume = this.playerVolume;\n audioTrack.muted = muteAtCurrentEntry || this.paused;\n }\n\n playCurrentTrack() {\n if (this.audioPlaylist[this.currentTrackNumber]?.contentItem.url) {\n this.currentUrl = this.audioPlaylist[this.currentTrackNumber].contentItem.url;\n const UserInteracted = setInterval(() => {\n (this.$refs.audioTrack as HTMLMediaElement)\n .play()\n .then(() => {\n clearInterval(UserInteracted);\n if (\n this.audioPlaylist[this.currentTrackNumber].contentItem.type === \"audio_stream\" &&\n this.audioPlaylist.length - this.corruptedTrackNumbers.length > 1\n ) {\n setTimeout(() => {\n this.nextTrack();\n }, this.audioPlaylist[this.currentTrackNumber].playlistEntry.duration * 1000);\n }\n })\n .catch((e) => {\n if (e.name === \"NotSupportedError\") {\n if (!this.currentUrl.endsWith(\"?type=https\")) {\n this.currentUrl += \"?type=https\";\n } else {\n clearInterval(UserInteracted);\n this.corruptedTrackNumbers.push(this.currentTrackNumber);\n if (this.corruptedTrackNumbers.length < this.audioPlaylist.length) {\n this.nextTrack();\n }\n }\n }\n });\n }, 1000);\n } else {\n this.corruptedTrackNumbers.push(this.currentTrackNumber);\n if (this.corruptedTrackNumbers.length < this.audioPlaylist.length) {\n this.nextTrack();\n }\n }\n }\n\n nextTrack() {\n if (this.currentTrackNumber + 1 >= this.audioPlaylist.length) {\n this.currentTrackNumber = 0;\n } else {\n this.currentTrackNumber++;\n }\n if (this.corruptedTrackNumbers.includes(this.currentTrackNumber)) {\n this.nextTrack();\n } else {\n this.playCurrentTrack();\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlayer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioPlayer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AudioPlayer.vue?vue&type=template&id=48419738&\"\nimport script from \"./AudioPlayer.vue?vue&type=script&lang=ts&\"\nexport * from \"./AudioPlayer.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.url)?_c('img',{ref:\"mediaItem\",class:_vm.classes,attrs:{\"src\":_vm.url,\"height\":((_vm.$vuetify.breakpoint.height) + \"px\"),\"width\":(((_vm.$vuetify.breakpoint.height * 16) / 9) + \"px\")},on:{\"error\":_vm.failedLoading}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { RenderablePlaylistEntry } from \"@/interfaces/playlist\";\nimport { PlayerGetters } from \"@/store/store.getters\";\nimport Vue from \"vue\";\nimport { Prop } from \"vue-property-decorator\";\nimport { Getter, State } from \"vuex-class\";\nimport { urlParamService } from \"../../services/urlParam.service\";\nimport { PlayerStateFields } from \"../../store/playerstate.types\";\n\nexport default abstract class BaseMedia extends Vue {\n @Prop({ required: true }) mediaData!: RenderablePlaylistEntry;\n @Prop({ required: true, default: 0 }) index!: number;\n @Prop({ required: false, default: false }) alwaysVisible!: boolean;\n @Getter(PlayerGetters.paused) paused!: boolean;\n @Getter(PlayerGetters.currentIndex) currentIndex!: number;\n @Getter(PlayerGetters.fullscreen) fullscreen!: boolean;\n @State(PlayerStateFields.focused) focused!: boolean;\n isError = false;\n\n get active(): boolean {\n return this.index === this.currentIndex;\n }\n get layout() {\n return urlParamService.layout;\n }\n\n get classes() {\n return {\n \"sp--player--item\": true,\n \"default-layout\": this.layout === \"default\",\n \"always-visible\": this.alwaysVisible,\n fullscreen: this.fullscreen,\n focused: this.focused,\n };\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseMedia.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseMedia.vue?vue&type=script&lang=ts&\"","\n\n\n\n\n\n\n\n\n\n\n\n\nimport { MediaItem } from \"@/interfaces/media-item\";\nimport Component from \"vue-class-component\";\nimport { Ref } from \"vue-property-decorator\";\nimport { urlParamService } from \"../../services/urlParam.service\";\nimport BaseMedia from \"./BaseMedia.vue\";\n\n@Component({})\nexport default class ImageMedia extends BaseMedia implements MediaItem {\n @Ref() mediaItem!: HTMLImageElement;\n url = \"\";\n mounted() {\n if (this.index < 5) {\n this.url = this.getResizedImageUrl(this.contentItemUrl);\n } else {\n setTimeout(() => {\n this.url = this.getResizedImageUrl(this.contentItemUrl);\n }, 150 * (this.index - 4));\n }\n }\n\n get contentItemUrl() {\n return `${\n this.mediaData.contentItem.type === \"image\"\n ? this.mediaData.contentItem.url\n : this.mediaData.contentItem.image_url\n ? this.mediaData.contentItem.image_url\n : this.mediaData.contentItem.thumbnail_url\n }?lastModified=${this.mediaData.contentItem.lastModified}`;\n }\n\n async startMedia() {\n await this.$nextTick();\n this.mediaItem?.classList.add(\"active\");\n }\n\n async stopMedia() {\n await this.$nextTick();\n if (!this.alwaysVisible) {\n this.mediaItem?.classList.remove(\"active\");\n }\n }\n\n getResizedImageUrl(url: string): string {\n if (urlParamService.useCdn()) {\n return `https://cdn.contentconvert.alphaport.at/api/v1/image/h_${\n this.$vuetify.breakpoint.height\n },q_80,f_cover/resized.webp?url=${encodeURIComponent(url)}`;\n }\n return url;\n }\n\n failedLoading() {\n // when there is a problem with the cdn try to load the image directly\n if (urlParamService.useCdn()) {\n this.url = this.contentItemUrl;\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageMedia.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageMedia.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImageMedia.vue?vue&type=template&id=1cda36f8&\"\nimport script from \"./ImageMedia.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImageMedia.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{ref:\"mediaItem\",class:_vm.classes,attrs:{\"playsinline\":\"\",\"src\":_vm.url,\"poster\":_vm.posterUrl,\"height\":((_vm.$vuetify.breakpoint.height - _vm.videoBorderSize * 2) + \"px\"),\"width\":((((_vm.$vuetify.breakpoint.height - _vm.videoBorderSize * 2) * 16) / 9) + \"px\")},domProps:{\"muted\":_vm.muted},on:{\"ended\":_vm.videoEndedEvent}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { MediaItem } from \"@/interfaces/media-item\";\nimport { PlayerActions } from \"@/store/store.actions\";\nimport { PlayerGetters } from \"@/store/store.getters\";\nimport Component from \"vue-class-component\";\nimport { Prop, Ref, Watch } from \"vue-property-decorator\";\nimport { Action, Getter } from \"vuex-class\";\nimport { urlParamService } from \"../../services/urlParam.service\";\nimport BaseMedia from \"./BaseMedia.vue\";\n\n@Component({})\nexport default class VideoMedia extends BaseMedia implements MediaItem {\n url = \"\";\n posterUrl = \"\";\n loaded = false;\n isPlaying = false;\n @Ref() mediaItem!: HTMLVideoElement;\n @Prop({ required: false, default: 0 }) videoBorderSize!: number;\n\n @Getter(PlayerGetters.muted) muted!: boolean;\n\n @Action(PlayerActions.triggerPlaylistEntry) triggerPlaylistEntry!: ({\n prev,\n triggered,\n prevIndex,\n index,\n }: {\n prev: boolean;\n triggered: boolean;\n index?: number;\n prevIndex?: number;\n }) => Promise;\n\n mounted() {\n this.url = this.mediaData.contentItem.url;\n this.posterUrl = this.mediaData.contentItem.image_url || \"\";\n if (this.posterUrl && urlParamService.useCdn()) {\n this.posterUrl = `https://cdn.contentconvert.alphaport.at/api/v1/image/h_${\n this.$vuetify.breakpoint.height\n },q_80,f_cover/resized.webp?url=${encodeURIComponent(this.posterUrl)}`;\n }\n this.mediaItem?.pause();\n this.loaded = true;\n }\n\n async startMedia() {\n await this.$nextTick();\n this.mediaItem.classList.add(\"active\");\n\n if (!this.paused && this.loaded) {\n console.log(\"VideoMedia::startMedia()\");\n\n try {\n //console.log(\"startMedia() play() before\");\n //this.mediaItem.currentTime = 0;\n this.mediaItem.load();\n await this.mediaItem.play();\n //console.log(\"startMedia() play() after\");\n } catch (err) {\n console.error(\"Error occured!\", err);\n // this.$emit(\"mediaNotStarted\");\n }\n }\n }\n\n async stopMedia() {\n console.log(\"VideoMedia::stopMedia()\");\n await this.$nextTick();\n\n if (!this.alwaysVisible) {\n this.mediaItem?.classList.remove(\"active\");\n }\n //console.log(\"stopMedia() pause() before\");\n this.mediaItem.pause();\n //HINT: if you call this on ocilion STB, the video is started again -> thats why we use load()\n //this.mediaItem.currentTime = 0;\n this.mediaItem.load();\n //console.log(\"stopMedia() pause() after\");\n }\n\n @Watch(\"paused\")\n async pausedWatch(paused: boolean) {\n console.log(this.isError, this.mediaItem, this.active);\n if (this.isError) return;\n if (paused) {\n this.mediaItem.pause();\n } else if (this.active) {\n await this.mediaItem.play();\n }\n }\n\n async videoEndedEvent() {\n console.log(\"VideoMedia::videoEndedEvent() - triggerPlaylistEntry\", new Date().getTime());\n console.log(this.mediaItem.duration, this.mediaItem.currentTime, this.isPlaying);\n await this.triggerPlaylistEntry({ prev: false, triggered: false });\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMedia.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoMedia.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VideoMedia.vue?vue&type=template&id=50e34e5f&\"\nimport script from \"./VideoMedia.vue?vue&type=script&lang=ts&\"\nexport * from \"./VideoMedia.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('video',{ref:\"mediaItem\",class:_vm.classes,attrs:{\"playsinline\":\"\",\"height\":((_vm.$vuetify.breakpoint.height) + \"px\"),\"width\":(((_vm.$vuetify.breakpoint.height * 16) / 9) + \"px\")},domProps:{\"muted\":_vm.muted || _vm.audioPlaylist.length > 0}}),(_vm.isError)?_c('v-container',{attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-row',{staticClass:\"mt-n12\",attrs:{\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center mt-n12\",attrs:{\"cols\":\"12\"}},[_c('span',{},[_vm._v(\"Der Livestream steht aktuell nicht zur Verfügung!\")])]),_c('div',{staticClass:\"loading\"})],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { MediaItem } from \"@/interfaces/media-item\";\nimport { AudioPlaylistEntry } from \"@/interfaces/playlist\";\nimport { PlayerActions } from \"@/store/store.actions\";\nimport { PlayerGetters } from \"@/store/store.getters\";\nimport Hls, { Events } from \"hls.js\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Action, Getter } from \"vuex-class\";\nimport * as timer from \"worker-timers\";\nimport VideoMedia from \"./VideoMedia.vue\";\n\n@Component\nexport default class VideoStreamMedia extends VideoMedia implements MediaItem {\n isSupported = false;\n url = \"\";\n loadingTimer = -1;\n hls?: Hls;\n\n @Getter(PlayerGetters.audioPlaylist) audioPlaylist!: AudioPlaylistEntry[];\n\n @Action(PlayerActions.loadPlaylist) loadPlaylist!: ({\n playlistId,\n initialMasterPlaylist,\n }: {\n playlistId?: number;\n initialMasterPlaylist: boolean;\n }) => Promise;\n\n async mounted() {\n this.isSupported = Hls.isSupported();\n this.url = this.mediaData.contentItem.url;\n await Vue.nextTick();\n if (this.mediaItem.canPlayType(\"application/vnd.apple.mpegurl\")) {\n this.mediaItem.src = this.url;\n //\n // If no native HLS support, check if HLS.js is supported\n //\n } else {\n try {\n await this.loadHlsSource();\n this.loaded = true;\n } catch (err) {\n this.isError = true;\n }\n }\n }\n\n async loadHlsSource() {\n this.hls = new Hls();\n if (this.isSupported) {\n return new Promise((resolve, reject) => {\n this.hls?.loadSource(this.url);\n this.hls?.attachMedia(this.mediaItem);\n this.hls?.on(Events.MANIFEST_PARSED, async () => {\n this.isError = false;\n await this.$nextTick();\n if (!this.paused) {\n if (this.mediaItem) {\n this.mediaItem.classList.toggle(\"active\");\n this.mediaItem.style.opacity = \"1\";\n await this.mediaItem.play();\n }\n }\n resolve();\n });\n this.hls?.on(Events.ERROR, async (event) => {\n this.hls?.destroy();\n this.loadingTimer = timer.setTimeout(async () => await this.loadHlsSource(), 5000);\n this.isError = true;\n reject(event);\n });\n });\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoStreamMedia.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoStreamMedia.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VideoStreamMedia.vue?vue&type=template&id=029abf28&\"\nimport script from \"./VideoStreamMedia.vue?vue&type=script&lang=ts&\"\nexport * from \"./VideoStreamMedia.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./VideoStreamMedia.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VCol,VContainer,VRow})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.url)?_c('iframe',{ref:\"mediaItem\",class:_vm.classes,attrs:{\"src\":_vm.url,\"frameborder\":\"0\",\"height\":((_vm.$vuetify.breakpoint.height) + \"px\"),\"width\":(((_vm.$vuetify.breakpoint.height * 16) / 9) + \"px\")},on:{\"error\":_vm.error}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { MediaItem } from \"@/interfaces/media-item\";\nimport Component from \"vue-class-component\";\nimport { Ref, Watch } from \"vue-property-decorator\";\nimport BaseMedia from \"./BaseMedia.vue\";\n\n// TODO set muted when audio playlist is playing\n@Component({})\nexport default class WebsiteMedia extends BaseMedia implements MediaItem {\n @Ref() mediaItem!: HTMLIFrameElement;\n url = \"\";\n\n created() {\n if (this.index < 5) {\n this.url = this.getUrl();\n } else {\n setTimeout(() => {\n this.url = this.getUrl();\n }, 150 * (this.index - 4));\n }\n }\n error() {\n console.log(\"error\");\n }\n async startMedia() {\n await this.$nextTick();\n this.mediaItem?.classList.add(\"active\");\n }\n\n getUrl() {\n if (this.mediaData.playlistEntry.widgetSettings) {\n if (this.mediaData.contentItem.url.includes(\"?\")) {\n return `${this.mediaData.contentItem.url}&${this.mediaData.playlistEntry.widgetSettings.parameter}`;\n }\n return `${this.mediaData.contentItem.url}?${this.mediaData.playlistEntry.widgetSettings.parameter}`;\n }\n return `${this.mediaData.contentItem.url}`;\n }\n\n async stopMedia() {\n await this.$nextTick();\n this.mediaItem?.classList.remove(\"active\");\n }\n\n @Watch(\"paused\")\n async pausedWatch() {\n //nop\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteMedia.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebsiteMedia.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebsiteMedia.vue?vue&type=template&id=ee77b0f4&\"\nimport script from \"./WebsiteMedia.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebsiteMedia.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"media-controls-root\"}},[_c('v-progress-linear',{ref:\"progressBar\",staticClass:\"progress-bar\",model:{value:(_vm.progressBarValue),callback:function ($$v) {_vm.progressBarValue=$$v},expression:\"progressBarValue\"}}),_c('div',{staticClass:\"media-controls\",style:((\"opacity: \" + (_vm.paused || _vm.hover ? 1 : 0))),attrs:{\"data-cy\":\"media-controls\"}},[_c('v-btn',{ref:\"playPauseButton\",attrs:{\"icon\":\"\",\"data-cy\":\"media-controls--play-pause-button\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.togglePaused($event)}}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(_vm._s(_vm.paused ? \"mdi-play\" : \"mdi-pause\"))])],1),_c('v-btn',{ref:\"skipPrevButton\",attrs:{\"icon\":\"\",\"data-cy\":\"media-controls--skip-prev-button\"},on:{\"click\":function($event){return _vm.triggerPlaylistEntry({ prev: true, triggered: true })}}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-skip-previous\")])],1),_c('v-btn',{ref:\"skipNextButton\",attrs:{\"icon\":\"\",\"data-cy\":\"media-controls--skip-next-button\"},on:{\"click\":function($event){return _vm.triggerPlaylistEntry({ prev: false, triggered: true })}}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-skip-next\")])],1),(_vm.audioPlaylist.length === 0)?_c('v-btn',{ref:\"muteButton\",attrs:{\"icon\":\"\",\"data-cy\":\"media-controls--mute-button\"},on:{\"click\":_vm.toggleMuted}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(_vm._s(_vm.muted ? \"mdi-volume-off\" : \"mdi-volume-high\"))])],1):_vm._e(),_c('v-spacer'),(_vm.allowFullScreen)?_c('v-btn',{ref:\"playPauseButton\",attrs:{\"icon\":\"\",\"data-cy\":\"media-controls--fullscreen-button\"},on:{\"click\":_vm.toggleFullscreen}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\"mdi-fullscreen\")])],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Prop } from \"vue-property-decorator\";\nimport { Action, Getter } from \"vuex-class\";\nimport { AudioPlaylistEntry } from \"../interfaces/playlist\";\nimport { PlayerActions } from \"../store/store.actions\";\nimport { PlayerGetters } from \"../store/store.getters\";\nimport { urlParamService } from \"@/services/urlParam.service\";\n\n@Component({})\nexport default class MediaControls extends Vue {\n name = \"MediaControls\";\n playerMuted = true;\n show = true;\n @Prop() hover!: boolean;\n\n @Action(PlayerActions.toggleFullscreen) toggleFullscreen!: () => void;\n @Action(PlayerActions.togglePaused) togglePaused!: () => void;\n @Action(PlayerActions.toggleMuted) toggleMuted!: () => void;\n @Action(PlayerActions.triggerPlaylistEntry) triggerPlaylistEntry!: ({\n prev,\n triggered,\n }: {\n prev: boolean;\n triggered: boolean;\n }) => Promise;\n\n @Getter(PlayerGetters.audioPlaylist) audioPlaylist!: AudioPlaylistEntry[];\n @Getter(PlayerGetters.paused) paused!: boolean;\n @Getter(PlayerGetters.totalTime) totalTime!: number;\n @Getter(PlayerGetters.currentTime) currentTime!: number;\n @Getter(PlayerGetters.muted) muted!: boolean;\n\n get progressBarValue() {\n return (this.currentTime / this.totalTime) * 100;\n }\n\n get allowFullScreen() {\n return urlParamService.allowFullscreen;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaControls.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MediaControls.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MediaControls.vue?vue&type=template&id=3d5e3d34&\"\nimport script from \"./MediaControls.vue?vue&type=script&lang=ts&\"\nexport * from \"./MediaControls.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VIcon,VProgressLinear,VSpacer})\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PlaylistSelection from \"@/components/PlaylistSelection.vue\";\n// import { eventBus, events } from \"./eventBus\";\nimport { gsap, TimelineLite } from \"gsap\";\nimport { CSSRulePlugin } from \"gsap/CSSRulePlugin\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Ref, Watch } from \"vue-property-decorator\";\nimport { Action, Getter, State } from \"vuex-class\";\nimport { MediaItemWithRef } from \"../../interfaces/media-item\";\nimport { OverlayImage } from \"../../interfaces/player\";\nimport { RenderablePlaylistEntry, Transition } from \"../../interfaces/playlist\";\nimport { urlParamService } from \"../../services/urlParam.service\";\nimport { PlayerStateFields } from \"../../store/playerstate.types\";\nimport { PlayerActions } from \"../../store/store.actions\";\nimport { PlayerGetters } from \"../../store/store.getters\";\nimport AudioPlayer from \"../AudioPlayer.vue\";\n//import the necessary media types\nimport ImageMedia from \"../media-items/ImageMedia.vue\";\nimport VideoMedia from \"../media-items/VideoMedia.vue\";\nimport VideoStreamMedia from \"../media-items/VideoStreamMedia.vue\";\nimport WebsiteMedia from \"../media-items/WebsiteMedia.vue\";\nimport MediaControls from \"../MediaControls.vue\";\ngsap.registerPlugin(CSSRulePlugin);\ngsap.registerPlugin(TimelineLite);\n\n@Component({\n components: {\n AudioPlayer,\n ImageMedia,\n MediaControls,\n PlaylistSelection,\n VideoStreamMedia,\n VideoMedia,\n WebsiteMedia,\n },\n})\nexport default class DefaultWebplayerLayout extends Vue {\n @Action(PlayerActions.setPaused) setPaused!: (paused: boolean) => void;\n @Action(PlayerActions.toggleMuted) toggleMuted!: () => void;\n @Action(PlayerActions.triggerPlaylistEntry) triggerPlaylistEntry!: ({\n prev,\n triggered,\n }: {\n prev: boolean;\n triggered: boolean;\n }) => Promise;\n\n @Getter(PlayerGetters.renderablePlaylist) playlist!: RenderablePlaylistEntry[];\n @Getter(PlayerGetters.overlayImage) overlayImage!: OverlayImage;\n @Getter(PlayerGetters.paused) paused!: boolean;\n @Getter(PlayerGetters.muted) muted!: boolean;\n @Getter(PlayerGetters.currentIndex) currentIndex!: number;\n @Getter(PlayerGetters.previousIndex) previousIndex!: number;\n @Getter(PlayerGetters.playlistsHash) playlistsHash!: string;\n\n @State(PlayerStateFields.triggered) triggered!: boolean;\n\n @Ref() playerRoot!: HTMLDivElement;\n\n animating = false;\n\n async mounted() {\n console.log(\"default\");\n await this.triggerPlaylistEntry({ prev: false, triggered: true });\n }\n\n @Watch(\"currentIndex\")\n async watchCurrentIndex() {\n if (this.currentIndex != this.previousIndex && this.playlist.length) {\n await this.$nextTick();\n await this.startSlide();\n }\n }\n\n @Watch(\"playlist\", { deep: true })\n async watchPlaylist() {\n await this.$forceUpdate();\n await this.$nextTick();\n for (let i = 0; i < this.playlist.length; ++i) {\n const mediaItem = this.getElement(i)?.$refs.mediaItem;\n if (mediaItem) {\n mediaItem.style.opacity = \"0\";\n }\n }\n await this.startSlide();\n }\n\n get closeDelay() {\n return urlParamService.mediaControlHideTimeout(this.$vuetify.breakpoint);\n }\n\n getElement(index: number): MediaItemWithRef | null {\n if (index in this.$refs) {\n return (this.$refs[index] as any)[0];\n }\n return null;\n }\n\n playPause(dbl: boolean) {\n const touchDevice = navigator.maxTouchPoints || \"ontouchstart\" in document.documentElement;\n if (!touchDevice || dbl) {\n this.setPaused(!this.paused);\n }\n }\n\n async startSlide() {\n console.log(\"DEFAULT: startSlide\");\n const transition: Transition | undefined = this.playlist[this.previousIndex]?.transition;\n\n if (this.previousIndex !== -1) {\n await this.getElement(this.previousIndex)?.stopMedia();\n }\n await this.getElement(this.currentIndex)!.startMedia();\n\n const currentElementMedia = this.getElement(this.currentIndex)?.$refs.mediaItem;\n const previousElementMedia = this.getElement(this.previousIndex)?.$refs.mediaItem;\n\n if (!document.hidden && transition && !this.triggered) {\n this.animating = true;\n\n if (transition.transitionType === \"CrossFade\") {\n this.crossFade(previousElementMedia, transition, currentElementMedia);\n } else if (transition.transitionType === \"ColorCrossFade\") {\n this.colorCrossFade(previousElementMedia, transition, currentElementMedia);\n }\n } else {\n if (previousElementMedia) {\n previousElementMedia.style.opacity = \"0\";\n }\n if (currentElementMedia) {\n console.log(\"set opacity\");\n currentElementMedia.style.opacity = \"1\";\n }\n }\n }\n\n private colorCrossFade(\n previousElementMedia: HTMLImageElement | HTMLVideoElement | undefined,\n transition: Transition,\n currentElementMedia: HTMLImageElement | HTMLVideoElement | undefined\n ) {\n const timeline = gsap.timeline();\n if (previousElementMedia) {\n timeline\n .to(previousElementMedia, {\n duration: transition.fadeOutDuration,\n css: {\n opacity: 0,\n },\n })\n .to(\n this.playerRoot,\n {\n duration: transition.fadeOutDuration,\n css: {\n backgroundColor: `rgb(${transition.transitionRed}, ${transition.transitionGreen}, ${transition.transitionBlue})`,\n },\n },\n `-=${transition.fadeOutDuration}`\n )\n .to(\n currentElementMedia!,\n { duration: transition.fadeInDuration, css: { opacity: 1 } },\n `+=${transition.colorDuration || 0}`\n )\n .to(\n this.playerRoot,\n {\n duration: transition.fadeInDuration,\n css: { backgroundColor: \"rgb(255, 255, 255)\" },\n },\n `-=${transition.fadeInDuration}`\n );\n\n timeline.restart();\n }\n }\n\n private crossFade(\n previousElementMedia: HTMLImageElement | HTMLVideoElement | undefined,\n transition: Transition,\n currentElementMedia: HTMLImageElement | HTMLVideoElement | undefined\n ) {\n if (previousElementMedia) {\n gsap.to(previousElementMedia, {\n duration: transition.totalDuration,\n css: { opacity: 0 },\n });\n }\n\n gsap.to(currentElementMedia!, {\n duration: transition.totalDuration,\n css: { opacity: 1 },\n });\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultWebplayerLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultWebplayerLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DefaultWebplayerLayout.vue?vue&type=template&id=5f373be8&\"\nimport script from \"./DefaultWebplayerLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./DefaultWebplayerLayout.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VHover } from 'vuetify/lib/components/VHover';\nimport { VImg } from 'vuetify/lib/components/VImg';\ninstallComponents(component, {VHover,VImg})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"playerContainer\",attrs:{\"id\":\"webplayer-container\"}},[_c('audio-player'),_c('div',{class:(\"pause-overlay-button-wrapper \" + (_vm.paused && !_vm.animating ? 'fade-in' : 'fade-out'))},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.paused),expression:\"paused\"}],staticClass:\"pause-overlay-button\",attrs:{\"elevation\":\"10\",\"fab\":\"\",\"x-large\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c('v-icon',{attrs:{\"x-large\":\"\"}},[_vm._v(\"mdi-pause\")])],1)],1),_c('div',{key:_vm.playlistsHash,ref:\"playerRoot\",staticClass:\"sp--player\",style:('height: ' + _vm.$vuetify.breakpoint.height + 'px'),attrs:{\"data-cy\":\"player-root\"},on:{\"click\":function($event){return _vm.playPause(false)},\"dblclick\":function($event){return _vm.playPause(true)}}},[(_vm.fullscreen)?_c('media-controls',{attrs:{\"data-cy\":\"media-controls\"}}):_vm._e(),(_vm.overlayImage)?_c('v-img',{staticStyle:{\"z-index\":\"201\"},attrs:{\"src\":_vm.overlayImage.url}}):_vm._e(),(_vm.fullscreen)?[_vm._l((_vm.playlist),function(playerItem,index){return [(playerItem.contentItem.type === 'image')?_c('image-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'video')?_c('video-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'video_stream')?_c('video-stream-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'live_video_stream')?_c('video-stream-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'website')?_c('website-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e()]})]:[(_vm.activeContentType === 'video' && !_vm.animating)?[_c('video-media',{key:_vm.playlist[_vm.currentIndex].contentItem.url + _vm.playlist[_vm.currentIndex].contentItem.lastModified + _vm.playlistsHash,ref:_vm.currentIndex,staticClass:\"active-video-element\",style:((\"\\n position: absolute;\\n top: \" + _vm.carouselBorder + \"px;\\n left: calc(\" + _vm.carouselBorder + \"px + (\" + (_vm.$vuetify.breakpoint.width) + \"px - \" + ((_vm.$vuetify.breakpoint.height * 16) / 9) + \"px)/2)\\n \")),attrs:{\"index\":_vm.currentIndex,\"mediaData\":_vm.playlist[_vm.currentIndex],\"data-cy\":_vm.currentIndex,\"videoBorderSize\":_vm.carouselBorder}})]:_vm._e(),_c('ssr-carousel',{ref:\"carousel\",attrs:{\"slides-per-page\":1,\"peek-right\":_vm.carouselPeekValue,\"peek-left\":_vm.carouselPeekValue},on:{\"tween:start\":_vm.onAnimationStart,\"tween:end\":_vm.onAnimationEnd}},_vm._l((_vm.playlist),function(playerItem,index){return _c('div',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:\"slide\",refInFor:true,staticClass:\"slide\",class:_vm.getActiveClass(index),attrs:{\"eager\":\"\"}},[_c('v-row',{attrs:{\"justify\":\"center\",\"no-gutters\":\"\"}},[_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"auto\"}},[(playerItem.contentItem.type === 'image')?_c('image-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"alwaysVisible\":true,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'video' && (_vm.animating || index !== _vm.currentIndex))?_c('image-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,attrs:{\"index\":index,\"mediaData\":playerItem,\"alwaysVisible\":true,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'video_stream')?_c('video-stream-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"alwaysVisible\":true,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'live_video_stream')?_c('video-stream-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"alwaysVisible\":true,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e(),(playerItem.contentItem.type === 'website' || playerItem.contentItem.type === 'widget')?_c('website-media',{key:playerItem.contentItem.url + playerItem.contentItem.lastModified + _vm.playlistsHash + index,ref:index,refInFor:true,attrs:{\"index\":index,\"mediaData\":playerItem,\"muted\":_vm.muted,\"data-cy\":index}}):_vm._e()],1)],1)],1)}),0)]],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport PlaylistSelection from \"@/components/PlaylistSelection.vue\";\nimport { gsap, TimelineLite } from \"gsap\";\nimport { CSSRulePlugin } from \"gsap/CSSRulePlugin\";\nimport Component from \"vue-class-component\";\nimport { Watch } from \"vue-property-decorator\";\nimport SsrCarousel from \"vue-ssr-carousel\";\nimport \"vue-ssr-carousel/index.css\";\nimport { Action, Getter, State } from \"vuex-class\";\nimport { MediaItemWithRef } from \"../../interfaces/media-item\";\nimport { urlParamService } from \"../../services/urlParam.service\";\nimport { PlayerStateFields } from \"../../store/playerstate.types\";\nimport { PlayerActions } from \"../../store/store.actions\";\nimport { PlayerGetters } from \"../../store/store.getters\";\nimport AudioPlayer from \"../AudioPlayer.vue\";\nimport ImageMedia from \"../media-items/ImageMedia.vue\";\nimport VideoMedia from \"../media-items/VideoMedia.vue\";\nimport VideoStreamMedia from \"../media-items/VideoStreamMedia.vue\";\nimport WebsiteMedia from \"../media-items/WebsiteMedia.vue\";\nimport MediaControls from \"../MediaControls.vue\";\nimport DefaultWebplayerLayout from \"./DefaultWebplayerLayout.vue\";\ngsap.registerPlugin(CSSRulePlugin);\ngsap.registerPlugin(TimelineLite);\n\n@Component({\n components: {\n AudioPlayer,\n ImageMedia,\n MediaControls,\n PlaylistSelection,\n VideoStreamMedia,\n VideoMedia,\n WebsiteMedia,\n SsrCarousel,\n },\n})\nexport default class IPTVWebplayerLayout extends DefaultWebplayerLayout {\n @Action(PlayerActions.setFullscreenElement) setFullscreenElement!: (element: HTMLElement) => void;\n @Getter(PlayerGetters.fullscreen) fullscreen!: boolean;\n @State(PlayerStateFields.focused) focused!: boolean;\n\n $refs!: {\n carousel: any;\n [key: number]: any;\n [key: string]: any;\n };\n\n animating = false;\n started = false;\n\n async mounted() {\n this.setFullscreenElement(this.playerRoot);\n }\n\n @Watch(\"currentIndex\", { immediate: true })\n async watchCurrentIndex() {\n if (this.currentIndex != this.previousIndex) {\n await this.$nextTick();\n await this._startSlide();\n //console.log(\"IPTV: index\");\n if (this.playlist[this.currentIndex] && window.top) {\n window.top.postMessage(JSON.stringify(this.playlist[this.currentIndex].contentItem), \"*\");\n }\n }\n }\n\n @Watch(\"playlist\", { deep: true })\n async watchPlaylist() {\n await this.$forceUpdate();\n await this.$nextTick();\n await this._startSlide();\n }\n\n @Watch(\"fullscreen\")\n async watchFullscreen() {\n await this.$nextTick();\n if (this.fullscreen) {\n await this.startSlide();\n }\n }\n\n getElement(index: number): MediaItemWithRef | null {\n if (index in this.$refs) {\n const elementRef = this.$refs[index] as any;\n if (elementRef && length in elementRef) {\n return elementRef[0];\n }\n return elementRef;\n }\n return null;\n }\n\n playPause(dbl: boolean) {\n const touchDevice = navigator.maxTouchPoints || \"ontouchstart\" in document.documentElement;\n if (!touchDevice || dbl) {\n this.setPaused(!this.paused);\n }\n }\n\n onAnimationStart({ index }: { index: number }) {\n this.animating = true;\n console.log(\"onAnimationStart\", index);\n }\n\n async onAnimationEnd({ index }: { index: number }) {\n this.animating = false;\n await this.$nextTick();\n console.log(\"onAnimationEnd\", index);\n await this.startMedia();\n }\n\n async startMedia() {\n if (this.previousIndex !== -1 && this.playlist[this.previousIndex].contentItem.type !== \"video\") {\n console.log(\"LAYOUT: stopMedia()\");\n await this.getElement(this.previousIndex)?.stopMedia();\n }\n console.log(\"LAYOUT: startMedia()\", this.currentIndex);\n await this.getElement(this.currentIndex)!.startMedia();\n }\n\n async _startSlide() {\n if (this.fullscreen) {\n this.startSlide();\n } else {\n this.$refs.carousel.goto(this.currentIndex);\n if (!this.started) {\n this.started = true;\n await this.startMedia();\n }\n }\n }\n\n getActiveClass(index: number) {\n if (index === this.currentIndex) {\n return \"active\";\n } else if (index === this.currentIndex + 1) {\n return \"next\";\n } else if (index === this.currentIndex - 1) {\n return \"prev\";\n }\n return \"\";\n }\n\n getVideoActiveClass() {\n return { \"active-video-element\": true, focused: this.focused };\n }\n\n get closeDelay() {\n console.log(urlParamService.mediaControlHideTimeout(this.$vuetify.breakpoint));\n return urlParamService.mediaControlHideTimeout(this.$vuetify.breakpoint);\n }\n\n get activeContentType(): string {\n return this.playlist[this.currentIndex]?.contentItem.type || \"\";\n }\n\n get carouselBorder(): number {\n // 4px on screen width of 1280 px\n return this.$vuetify.breakpoint.width / (this.$vuetify.breakpoint.width * 0.25);\n }\n\n get carouselPeekValue(): number {\n const imageWidth = (this.$vuetify.breakpoint.height * 16) / 9;\n const peekValue = (this.$vuetify.breakpoint.width - imageWidth) / 2;\n return peekValue - this.carouselBorder * 2;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IPTVWebplayerLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--15-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IPTVWebplayerLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./IPTVWebplayerLayout.vue?vue&type=template&id=50476d2f&\"\nimport script from \"./IPTVWebplayerLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./IPTVWebplayerLayout.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./IPTVWebplayerLayout.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\ninstallComponents(component, {VBtn,VCol,VIcon,VImg,VRow})\n","\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { urlParamService } from \"../services/urlParam.service\";\nimport DefaultWebplayerLayout from \"./layouts/DefaultWebplayerLayout.vue\";\nimport IptvWebplayerLayout from \"./layouts/IPTVWebplayerLayout.vue\";\n\n@Component({\n components: {\n DefaultWebplayerLayout,\n IptvWebplayerLayout,\n },\n})\nexport default class WebplayerLayout extends Vue {\n get layout() {\n return urlParamService.layout;\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebplayerLayout.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--15-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WebplayerLayout.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebplayerLayout.vue?vue&type=template&id=53e10868&\"\nimport script from \"./WebplayerLayout.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebplayerLayout.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport WebplayerLayout from \"./components/WebplayerLayout.vue\";\nimport { Getter } from \"vuex-class\";\nimport { PlayerGetters } from \"./store/store.getters\";\nimport { RenderablePlaylistEntry } from \"./interfaces/playlist\";\n\n@Component({\n components: {\n WebplayerLayout,\n },\n})\nexport default class App extends Vue {\n name = \"App\";\n\n @Getter(PlayerGetters.renderablePlaylist) playlist!: RenderablePlaylistEntry[];\n\n get loaded() {\n return this.playlist.length > 0;\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--15-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--15-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=6451262d&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\ninstallComponents(component, {VApp,VMain,VProgressCircular})\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport * as timer from \"worker-timers\";\nimport { playlistService } from \"../services/playlist.service\";\nimport { playlistTimer } from \"../services/timer\";\nimport { urlParamService } from \"../services/urlParam.service\";\nimport { PlayerState } from \"./playerstate.types\";\nimport { actions, PlayerActions } from \"./store.actions\";\nimport { getters, PlayerGetters } from \"./store.getters\";\nimport { mutations, PlayerMutations } from \"./store.mutations\";\n\nVue.use(Vuex);\n\nexport const store = new Vuex.Store({\n state: {\n playlist: [],\n audioPlaylist: [],\n fullscreen: false,\n currentTime: 0,\n lastTime: 0,\n paused: !urlParamService.useAutostart(),\n playerVolume: 1,\n muted: urlParamService.isAudioMuted(),\n previousIndex: -1,\n currentIndex: -1,\n nextIndex: -1,\n triggered: false,\n focused: false,\n fullscreenElement: document.body,\n },\n mutations,\n actions,\n getters,\n});\n\ntimer.setInterval(() => store.dispatch(PlayerActions.updateCurrentTime), 350);\n\nplaylistService.on(\"playlist-updated\", async (event) => {\n playlistTimer.clearAll();\n //console.log(\"handle event\", event);\n await store.dispatch(PlayerActions.loadPlaylist, { playlistId: event.playlistId });\n await store.dispatch(PlayerActions.triggerPlaylistEntry, { index: 0, prevIndex: 0, triggered: true });\n if (store.state.paused) {\n await store.dispatch(PlayerActions.setPaused, false);\n }\n});\n\nplaylistService.on(\"safe4-updated\", async () => {\n playlistTimer.clearAll();\n //console.log(\"new safe4 available\");\n await store.dispatch(PlayerActions.loadPlaylist);\n await store.dispatch(PlayerActions.triggerPlaylistEntry, { index: 0, prevIndex: 0, triggered: true });\n});\n\ndocument.addEventListener(\"fullscreenchange\", () => {\n if (urlParamService.layout === \"iptv\") {\n return;\n }\n store.commit(PlayerMutations.setFullscreen, !store.getters[PlayerGetters.fullscreen]);\n});\n\nwindow.addEventListener(\"keydown\", async (event: KeyboardEvent) => {\n if (\n urlParamService.layout === \"iptv\" &&\n parent &&\n urlParamService.looseFocusKeys.includes(event.key) &&\n !store.state.fullscreen\n ) {\n store.commit(PlayerMutations.setFocused, false);\n parent.focus();\n return;\n }\n switch (event.key) {\n case \"Enter\":\n if (urlParamService.layout === \"iptv\") {\n store.dispatch(PlayerActions.toggleFullscreen);\n } else {\n await store.dispatch(PlayerActions.togglePaused);\n }\n break;\n case \" \":\n case \"MediaPlayPause\":\n await store.dispatch(PlayerActions.togglePaused);\n break;\n case \"MediaStop\":\n await store.dispatch(PlayerActions.togglePaused);\n break;\n case \"ArrowLeft\":\n case \"MediaRewind\":\n case \"Previous\":\n await store.dispatch(PlayerActions.triggerPlaylistEntry, { prev: true, triggered: true });\n break;\n case \"ArrowRight\":\n case \"MediaFastForward\":\n case \"Next\":\n await store.dispatch(PlayerActions.triggerPlaylistEntry, { prev: false, triggered: true });\n break;\n case \"AudioVolumeMute\":\n await store.dispatch(PlayerActions.toggleMuted);\n break;\n }\n});\n\nwindow.addEventListener(\"message\", async (event) => {\n if (event.data === \"webplayer-reset\") {\n await store.dispatch(PlayerActions.triggerPlaylistEntry, { prev: false, triggered: true, index: 0, prevIndex: -1 });\n await store.dispatch(PlayerActions.setPaused, true);\n } else if (event.data === \"webplayer-play\") {\n await store.dispatch(PlayerActions.setPaused, false);\n } else if (event.data === \"webplayer-pause\") {\n await store.dispatch(PlayerActions.setPaused, true);\n }\n});\n\nwindow.addEventListener(\"focus\", () => {\n store.commit(PlayerMutations.setFocused, true);\n});\n\nwindow.addEventListener(\"blur\", () => {\n store.commit(PlayerMutations.setFocused, false);\n});\n\nstore.dispatch(PlayerActions.loadPlaylist);\n","import Vue from \"vue\";\nimport Vuetify from \"vuetify/lib/framework\";\nimport de from \"vuetify/src/locale/de\";\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: {\n themes: {\n light: {\n background: \"transparent\",\n primary: \"#8bc34a\",\n secondary: \"#424242\",\n accent: \"#82B1FF\",\n error: \"#FF5252\",\n info: \"#2196F3\",\n success: \"#4CAF50\",\n warning: \"#FFC107\",\n },\n },\n },\n icons: {\n iconfont: \"mdi\",\n },\n lang: {\n locales: { de },\n current: \"de\",\n },\n});\n","export const loadExternalSources = (): void => {\n const cssString = getExternalSource(\"css_styling\");\n if (cssString !== \"\") {\n const style = document.createElement(\"style\");\n style.innerHTML = cssString;\n document.head.insertAdjacentElement(\"beforeend\", style);\n }\n};\n\nconst getExternalSource = (gonCode: \"css_styling\") => {\n let scriptString = \"\";\n if (process.env.NODE_ENV !== \"production\") {\n // scriptString = require(\"!!raw-loader!../tests/data/testTracking.txt\");\n } else if (typeof gon !== \"undefined\" && gon[gonCode] !== \"\") {\n scriptString = gon[gonCode];\n }\n return scriptString;\n};\n","export {};\ndeclare global {\n export interface Array {\n chunk(chunkSize: number): Array>;\n }\n}\n\nArray.prototype.chunk = function (chunkSize: number) {\n const R = [];\n for (let i = 0; i < this.length; i += chunkSize) R.push(this.slice(i, i + chunkSize));\n return R;\n};\n","import Vue from \"vue\";\nimport App from \"./App.vue\";\nimport { store } from \"./store\";\nimport vuetify from \"./plugins/vuetify\";\nimport objectFitImages from \"object-fit-images\";\nimport { loadExternalSources } from \"./services/stylingExtension\";\nimport \"@/utils/array\";\n\nloadExternalSources();\n\nVue.config.productionTip = false;\n\nnew Vue({\n store,\n vuetify,\n render: (h) => h(App),\n updated() {\n this.$nextTick(() => {\n objectFitImages();\n });\n },\n}).$mount(\"#app\");\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlaylistSelection.vue?vue&type=style&index=0&id=3b6eac73&lang=scss&scoped=true&\""],"sourceRoot":""}