{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/external_link.png","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/media-items/VideoStreamMedia.vue?c0d9","webpack:///./src/App.vue?122f","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?e32d","webpack:///./src/components/PlaylistSelection.vue?196e","webpack:///./src/store/playerstate.types.ts","webpack:///./src/store/store.getters.ts","webpack:///./src/App.vue","webpack:///./src/components/WebplayerLayout.vue","webpack:///./src/services/urlParam.service.ts","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue","webpack:///./src/components/PlaylistSelection.vue","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/media-items/BaseMedia.vue?849e","webpack:///./src/components/PlaylistSelection.vue?db5a","webpack:///./src/components/PlaylistSelection.vue?285a","webpack:///./src/components/PlaylistSelection.vue?b6c1","webpack:///./src/components/AudioPlayer.vue","webpack:///./src/components/AudioPlayer.vue?7768","webpack:///./src/components/AudioPlayer.vue?fb77","webpack:///./src/components/AudioPlayer.vue?398e","webpack:///./src/components/media-items/ImageMedia.vue","webpack:///./src/components/media-items/BaseMedia.vue","webpack:///./src/components/media-items/BaseMedia.vue?5218","webpack:///./src/components/media-items/ImageMedia.vue?1d1a","webpack:///./src/components/media-items/ImageMedia.vue?57b4","webpack:///./src/components/media-items/ImageMedia.vue?db0b","webpack:///./src/components/media-items/VideoMedia.vue","webpack:///./src/components/media-items/VideoMedia.vue?c892","webpack:///./src/components/media-items/VideoMedia.vue?4527","webpack:///./src/components/media-items/VideoMedia.vue?3cd5","webpack:///./src/components/media-items/VideoStreamMedia.vue","webpack:///./src/components/media-items/VideoStreamMedia.vue?c0f4","webpack:///./src/components/media-items/VideoStreamMedia.vue?20dd","webpack:///./src/components/media-items/VideoStreamMedia.vue?16dc","webpack:///./src/components/media-items/WebsiteMedia.vue","webpack:///./src/components/media-items/WebsiteMedia.vue?c955","webpack:///./src/components/media-items/WebsiteMedia.vue?0e71","webpack:///./src/components/media-items/WebsiteMedia.vue?2596","webpack:///./src/components/MediaControls.vue","webpack:///./src/components/MediaControls.vue?1b3e","webpack:///./src/components/MediaControls.vue?bbb0","webpack:///./src/components/MediaControls.vue?9584","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue?defc","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue?fc5c","webpack:///./src/components/layouts/DefaultWebplayerLayout.vue?8e70","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?3855","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?f303","webpack:///./src/components/layouts/IPTVWebplayerLayout.vue?8ae4","webpack:///./src/components/WebplayerLayout.vue?7834","webpack:///./src/components/WebplayerLayout.vue?71d4","webpack:///./src/components/WebplayerLayout.vue?53f6","webpack:///./src/App.vue?dad8","webpack:///./src/App.vue?9e1d","webpack:///./src/App.vue?315a","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?95fb"],"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","attrs","staticRenderFns","render","_vm","this","_c","_self","_setupProxy","layout","URLParamService","urlParam","results","RegExp","exec","document","location","href","decodeURI","isAudioMuted","useAutostart","mediaControlHideTimeout","breakpoint","factor","touchDevice","navigator","maxTouchPoints","documentElement","timeout","parseInt","loopPlaylist","useCdn","split","urlParamService","_setup","scopedSlots","hover","playlistsHash","staticClass","style","on","playPause","overlayImage","_e","playerItem","contentItem","ref","index","refInFor","playlist","_v","carouselHeight","staticStyle","rawName","rippleOptions","expression","$event","directives","selectionStyle","itemIndex","triggerPlaylistItem","PlaylistService","_super","_this","safe4Data","lastEtag","refreshLoopInitialized","registeredLayoutEvents","Map","setTrackingAndCss","__extends","getElementById","innerText","_a","getCssStyling","replace","initialLoad","isInititalized","loadSafe4","sent","registerLayoutEvents","reshuffleData","startRefreshLoop","getSafe4WithFallback","safe4","playlistContainer","playlists","require","getInitialPlaylist","initialMasterPlaylist","currentLayoutEvent_1","_b","layoutEventsContainer","layoutEvents","filter","event","end_date","find","moment","isBetween","start_date","start_time","end_time","layout_1","layoutContainer","layouts","layoutId","_d","zones","playlistId","playerContainer","startScreenLayoutId","_g","_f","getPlaylistById","masterPlaylists","_h","type","entries","events","flatMap","startDateTime","initialStartDateTime","repetition","eventType","repetitionTime","minutes","seconds","repetition_type","add","hours","weekday","endDateTime","undefined","nextTriggerInMillis","diff","zone","this_1","has","set","timer","emit","delete","isAfter","endEvent_1","Math","abs","events_1","__values","events_1_1","next","done","getAudioPlaylistEntries","startAudioPlaylistId","audioPlaylist","getPlaylistEntries","getPlayerVolume","volume","playlistEntries","__read","playlistEntry","getPlaylistElement","concat","currentEntry","nextEntry","isActive","contentContainer","content","contentId","url","transition","console","warn","playlist_1","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","__awaiter","safe4File","newSafe4","newSafe4Hash","existingSafe4Hash","paths","pathname","safe4Id","isNaN","origin","loadNew","fetch","method","headers","response","status","error","err_1","ok","statusText","json","err_2","getPlaylistHash","TypedEmitter","playlistService","PlaylistTimer","runningTimerRegistry","startTimer","callback","restartTimer","startNewTimer","clearAll","values","timerId","timers","clear","pauseTimer","remainingDuration","duration","__spread","playlistTimer","PlayerMutations","getters","renderablePlaylist","state","paramService","fullscreen","fullscreenElement","currentTime","paused","playerVolume","totalTime","muted","currentIndex","currentPlaylistItem","previousIndex","store","payload","Vue","PlayerActions","mutations","setPlaylist","setAudioPlaylist","setFullscreen","setCurrentTime","setLastTime","lastTime","setPaused","setPlayerVolume","setMuted","setPreviousIndex","setCurrentIndex","setNextIndex","nextIndex","setTriggered","triggered","setFocused","focused","setFullscreenElement","actions","loadPlaylist","commit","updateCurrentTime","curr","Date","getTime","dispatch","triggerPlaylistEntry","prev","setStartTimeForIndex","reshuffleAndLoad","resetTimer","toggleFullscreen","allowFullscreen","exitFullscreen","requestFullscreen","toggleMuted","togglePaused","element","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","doc","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","prevIndex","overflow","nextTick","setTimeout","PlaylistSelection","arguments","closed","close","chunkIndex","breakpointToChunkSize","getUrl","thumbnail_url","$vuetify","carouselPage","boxShadow","borderRadius","backgroundColor","val","__assign","chunk","floor","center","class","portrait","matchMedia","matches","pausedWatcher","newVal","oldVal","__decorate","Action","Getter","Watch","deep","Component","component","currentTrackNumber","currentUrl","nextTrack","AudioPlayer","corruptedTrackNumbers","updateAudioPlaylist","playCurrentTrack","watchCurrentPlaylistItem","$nextTick","audioTrack","$refs","muteAtCurrentEntry","UserInteracted_1","setInterval","play","then","clearInterval","catch","endsWith","includes","immediate","classes","height","failedLoading","BaseMedia","isError","alwaysVisible","Prop","required","default","State","ImageMedia","mounted","getResizedImageUrl","contentItemUrl","mediaData","image_url","lastModified","startMedia","mediaItem","classList","stopMedia","remove","encodeURIComponent","Ref","posterUrl","videoBorderSize","domProps","videoEndedEvent","VideoMedia","loaded","isPlaying","pause","log","load","pausedWatch","active","VideoStreamMedia","isSupported","loadingTimer","Hls","canPlayType","src","loadHlsSource","hls","Promise","reject","loadSource","attachMedia","Events","MANIFEST_PARSED","toggle","opacity","ERROR","destroy","__generator","WebsiteMedia","created","widgetSettings","parameter","model","$$v","MediaControls","playerMuted","show","gsap","registerPlugin","CSSRulePlugin","TimelineLite","DefaultWebplayerLayout","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","components","activeContentType","carouselBorder","carouselPeekValue","onAnimationEnd","getActiveClass","IPTVWebplayerLayout","started","_startSlide","top","postMessage","JSON","stringify","watchFullscreen","elementRef","onAnimationStart","carousel","goto","getVideoActiveClass","width","imageWidth","peekValue","SsrCarousel","WebplayerLayout","IptvWebplayerLayout","App","use","Vuex","Store","body","addEventListener","parent","looseFocusKeys","focus","Vuetify","theme","themes","light","background","primary","secondary","accent","info","success","warning","icons","iconfont","lang","locales","de","current","loadExternalSources","cssString","getExternalSource","createElement","innerHTML","head","insertAdjacentElement","gonCode","scriptString","gon","Array","chunkSize","R","config","productionTip","vuetify","h","updated","objectFitImages","$mount"],"mappings":"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","file":"js/app.2f74025b.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,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\"","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-ps\": \"4c98\",\n\t\"./ar-ps.js\": \"4c98\",\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-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\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-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-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\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-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\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\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\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-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\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-kmr\": \"7558\",\n\t\"./ku-kmr.js\": \"7558\",\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\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\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\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\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-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\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!./VideoStreamMedia.vue?vue&type=style&index=0&id=029abf28&prod&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!./App.vue?vue&type=style&index=0&id=6451262d&prod&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&id=50476d2f&prod&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&id=3b6eac73&prod&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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-app',[_c('v-main',[(_vm.loaded)?_c('webplayer-layout',{attrs:{\"data-cy\":\"web-player\"}}):_c('v-progress-circular')],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.layout == 'iptv')?_c('iptv-webplayer-layout'):_c('default-webplayer-layout')\n}\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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-hover',{attrs:{\"close-delay\":_vm.closeDelay},scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_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)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import 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 this.startRefreshLoop();\n }\n\n getSafe4WithFallback(safe4: Safe4): Safe4 {\n if (\n !safe4 ||\n !safe4.playlistContainer ||\n !safe4.playlistContainer.playlists ||\n safe4.playlistContainer.playlists.length === 0\n ) {\n return require(\"../static/empty_fallback.json\");\n }\n return safe4;\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(\n (playlist) => playlist.type === \"master_playlist\"\n );\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 (\n playlist?.type === \"internal_playlist\" ||\n playlist?.type === \"channel\" ||\n playlist?.type === \"master_playlist\"\n ) {\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\n .slice()\n .filter(this.isActive)\n .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/audio_playlist_test.json\");\n }\n if ((window as any).safe4File) {\n if (!this.safe4Data) {\n this.safe4Data = this.getSafe4WithFallback((window as any).safe4File);\n this.reshuffleData();\n this.emit(\"safe4-updated\");\n } else {\n const newSafe4 = this.getSafe4WithFallback((window as any).safe4File);\n const newSafe4Hash = newSafe4.playlistContainer?.playlistsHash || \"\";\n const existingSafe4Hash = this.safe4Data?.playlistContainer?.playlistsHash || \"\";\n if (newSafe4Hash !== existingSafe4Hash) {\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 const response = await fetch(url, {\n method: \"HEAD\",\n headers: {\n \"If-None-Match\": this.lastEtag,\n },\n });\n loadNew = response.status !== 304;\n } catch (err) {\n console.error(\"Error during HEAD request:\", err);\n loadNew = true;\n }\n }\n\n if (loadNew) {\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(`Failed to fetch data: ${response.statusText}`);\n }\n this.lastEtag = response.headers.get(\"etag\") || \"\";\n const data = await response.json();\n const newSafe4: Safe4 = this.getSafe4WithFallback(data);\n if (newSafe4.playlistContainer.playlistsHash !== this.safe4Data?.playlistContainer.playlistsHash) {\n this.safe4Data = newSafe4;\n this.reshuffleData();\n this.emit(\"safe4-updated\");\n }\n } catch (err) {\n console.error(\"Error during GET request:\", err);\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","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","\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&prod&lang=scss&scoped=true\"\nimport style1 from \"./PlaylistSelection.vue?vue&type=style&index=1&id=3b6eac73&prod&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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 @Getter(PlayerGetters.muted) muted!: 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 @Watch(\"muted\")\n async watchCurrentPlaylistItem() {\n await this.$nextTick(); // Wait for DOM updates\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 || this.muted;\n }\n\n async playCurrentTrack() {\n await this.$nextTick(); // Wait for DOM updates\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=7d5321bf\"\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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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()\n}\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\"","\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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 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=76a5dd36\"\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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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&id=029abf28&prod&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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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 render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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.apply(null, arguments)}}},[_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),_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),_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)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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=770a5c4c\"\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","\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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;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 - ${\n (_vm.$vuetify.breakpoint.height * 16) / 9\n }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)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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&id=50476d2f&prod&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","\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","\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&id=6451262d&prod&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","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\";\nimport \"core-js/stable\";\nimport \"regenerator-runtime/runtime\";\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&prod&lang=scss&scoped=true\""],"sourceRoot":""}