{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/views/Home.vue?7526","webpack:///./src/App.vue?4a55","webpack:///./src/assets/veke-1920x1080.png","webpack:///./src/App.vue","webpack:///./src/App.vue?dfb6","webpack:///./src/views/Home.vue?c413","webpack:///./src/components/ImageMedia.vue?60ed","webpack:///./src/components/Media.vue","webpack:///./src/components/Media.vue?8ab1","webpack:///./src/components/ImageMedia.vue","webpack:///./src/components/ImageMedia.vue?9e00","webpack:///./src/components/VideoMedia.vue?552f","webpack:///./src/components/VideoMedia.vue","webpack:///./src/components/VideoMedia.vue?d1b3","webpack:///./src/config/contentful.ts","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?ab8c","webpack:///./src/router/index.ts","webpack:///./src/helpers/contentful/graphql.ts","webpack:///./src/helpers/contentful/queries.ts","webpack:///./src/store/index.ts","webpack:///./src/main.ts","webpack:///./src/assets/veke-1080x1920.png"],"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","id","script","__exports__","render","_hoisted_2","class","_hoisted_3","_hoisted_4","srcset","media","_hoisted_5","src","_hoisted_6","_hoisted_7","_hoisted_8","style","_ctx","_cache","$props","$setup","$data","$options","message","showDefaultSlide","status","medium","imageOrVideoComponent","index","sys","tabindex","onKeyup","keyEvent","sortedMedia","currentIndex","isPaused","onMediaDuration","setInterval","hasError","url","current","isCurrent","onLoad","$event","markAsLoaded","onError","markAsFailed","emits","props","methods","this","setMediumAsLoaded","computed","extends","Media","watch","newVal","$emit","ref","muted","preload","onLoadedmetadata","video","$refs","duration","playPromise","play","catch","e","console","log","pause","currentTime","CONTENTFUL_SPACE_ID","CONTENTFUL_TOKEN","CONTENTFUL_GRAPHQL_API_URL","CONTENTFUL_REFRESH_INTERVAL","components","ImageMedia","VideoMedia","infoscreenId","isVertical","isContentLoaded","timer","interval","defaultInterval","defaultScreenTimer","statusTimer","statusInterval","refreshTimer","refreshInterval","contentful","isAllLoaded","mediaCount","loadedMediaCount","sortLoadedMedia","startSlider","getMedia","clearInterval","resetLoadedMedia","setMediaCount","resetMediaLoadedCount","fetchMedia","infoscreen","warn","errorMessage","setRefreshTimer","showCampaigns","playlistsCollection","campaign","subCampaignsCollection","addMedia","items","filter","Boolean","forEach","item","itemsCollection","mediaVertical","mediaHorizontal","sortedResult","loadedMedia","sortedMedium","find","lm","contentType","seconds","ms","resetPlay","event","code","clearTimeout","next","setStatusTimer","prev","setTimeout","Date","toLocaleString","mounted","$route","params","screenId","routes","path","component","Home","router","history","getInfoscreenMediaQuery","getCampaignScreensQuery","contentfulApi","axiosHeader","headers","accept","authorization","getInfoScreenMedia","a","post","query","variables","then","response","infoscreenCollection","contentfulData","err","getCampaignScreens","campaignCollection","state","actions","payload","commit","setErrorMessage","mutations","SET_INFOSCREEN","SET_CAMPAIGN","INCREASE_LOADED_MEDIA_COUNT","RESET_LOADED_MEDIA_COUNT","SET_MEDIA_COUNT","ADD_TO_LOADED_MEDIA","RESET_LOADED_MEDIA","SET_ERROR_MESSAGE","getters","app","App","use","store","mount"],"mappings":"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","file":"js/app.8759f171.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 = \"/\";\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","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./Home.vue?vue&type=style&index=0&id=4128bb16&lang=css\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=31a1454a&lang=scss\"","module.exports = __webpack_public_path__ + \"img/veke-1920x1080.c0110588.png\";","\n \n \n
\n\n\n\n","import { render } from \"./App.vue?vue&type=template&id=31a1454a\"\nconst script = {}\n\nimport \"./App.vue?vue&type=style&index=0&id=31a1454a&lang=scss\"\n\nimport exportComponent from \"/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, vShow as _vShow, withDirectives as _withDirectives, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock } from \"vue\"\nimport _imports_0 from '../assets/veke-1080x1920.png'\nimport _imports_1 from '../assets/veke-1920x1080.png'\n\n\nconst _hoisted_1 = _imports_0\nconst _hoisted_2 = { class: \"home\" }\nconst _hoisted_3 = { id: \"loading-screen\" }\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"source\", {\n srcset: _hoisted_1,\n media: \"(orientation: portrait)\"\n}, null, -1)\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"img\", {\n src: _imports_1,\n \"data-testid\": \"fallback-image\"\n}, null, -1)\nconst _hoisted_6 = [\n _hoisted_4,\n _hoisted_5\n]\nconst _hoisted_7 = {\n key: 0,\n id: \"status\"\n}\nconst _hoisted_8 = {\n id: \"preloader\",\n style: {\"display\":\"none\"}\n}\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (_openBlock(), _createElementBlock(\"div\", _hoisted_2, [\n _withDirectives(_createElementVNode(\"div\", _hoisted_3, [\n _createTextVNode(_toDisplayString(_ctx.message) + \" \", 1),\n _withDirectives(_createElementVNode(\"picture\", null, _hoisted_6, 512), [\n [_vShow, !_ctx.message]\n ])\n ], 512), [\n [_vShow, _ctx.showDefaultSlide]\n ]),\n (_ctx.status)\n ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, _toDisplayString(_ctx.status), 1))\n : _createCommentVNode(\"\", true),\n _createElementVNode(\"div\", _hoisted_8, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.media, (medium, i) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.imageOrVideoComponent(medium)), {\n index: i,\n medium: medium,\n key: medium.sys.id + '_' + i\n }, null, 8, [\"index\", \"medium\"]))\n }), 128))\n ]),\n _createElementVNode(\"div\", {\n id: \"slides\",\n tabindex: \"-1\",\n onKeyup: _cache[0] || (_cache[0] = \n//@ts-ignore\n(...args) => (_ctx.keyEvent && _ctx.keyEvent(...args)))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.sortedMedia, (medium, i) => {\n return (_openBlock(), _createBlock(_resolveDynamicComponent(_ctx.imageOrVideoComponent(medium)), {\n index: i,\n medium: medium,\n key: i + '_' + medium.sys.id,\n currentIndex: _ctx.currentIndex,\n isPaused: _ctx.isPaused,\n onMediaDuration: _ctx.setInterval\n }, null, 8, [\"index\", \"medium\", \"currentIndex\", \"isPaused\", \"onMediaDuration\"]))\n }), 128))\n ], 32)\n ]))\n}","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"data-index\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (!_ctx.hasError)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: _ctx.medium.url,\n class: _normalizeClass([\"slide\", { current: _ctx.isCurrent }]),\n \"data-index\": _ctx.index,\n onLoad: _cache[0] || (_cache[0] = ($event: any) => (_ctx.markAsLoaded(_ctx.medium))),\n onError: _cache[1] || (_cache[1] = ($event: any) => (_ctx.markAsFailed()))\n }, null, 42, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport { defineComponent } from 'vue'\nimport { Media } from '@/helpers/contentful/interfaces'\nimport { mapActions } from 'vuex'\n\nexport default defineComponent({\n emits: ['media-duration'],\n props: ['medium', 'index', 'currentIndex', 'isPaused'],\n data() {\n return {\n hasError: false,\n }\n },\n methods: {\n ...mapActions(['setMediumAsLoaded']),\n markAsLoaded(medium : Media) {\n this.setMediumAsLoaded(medium)\n },\n markAsFailed() {\n this.hasError = true\n this.setMediumAsLoaded(null)\n }\n },\n computed: {\n isCurrent() : boolean {\n return this.index === this.currentIndex\n }\n }\n})\n","import script from \"./Media.vue?vue&type=script&lang=ts\"\nexport * from \"./Media.vue?vue&type=script&lang=ts\"\n\nconst __exports__ = script;\n\nexport default __exports__","\nimport { defineComponent } from 'vue'\nimport Media from './Media.vue'\n\nexport default defineComponent({\n name: \"ImageMedia\",\n extends: Media,\n watch: {\n isCurrent(newVal : boolean) {\n if (newVal) {\n this.$emit('media-duration', -1) // This will set default slide duration\n }\n }\n }\n})\n","import { render } from \"./ImageMedia.vue?vue&type=template&id=12bc4405&ts=true\"\nimport script from \"./ImageMedia.vue?vue&type=script&lang=ts\"\nexport * from \"./ImageMedia.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"data-index\"]\n\nexport function render(_ctx: any,_cache: any,$props: any,$setup: any,$data: any,$options: any) {\n return (!_ctx.hasError)\n ? (_openBlock(), _createElementBlock(\"video\", {\n key: 0,\n ref: _ctx.index + '_' + _ctx.medium.sys.id,\n src: _ctx.medium.url,\n class: _normalizeClass([\"slide\", { current: _ctx.isCurrent }]),\n \"data-index\": _ctx.index,\n muted: \"true\",\n preload: \"metadata\",\n onLoadedmetadata: _cache[0] || (_cache[0] = ($event: any) => (_ctx.markAsLoaded(_ctx.medium))),\n onError: _cache[1] || (_cache[1] = ($event: any) => (_ctx.markAsFailed()))\n }, null, 42, _hoisted_1))\n : _createCommentVNode(\"\", true)\n}","\nimport {defineComponent} from 'vue'\nimport Media from './Media.vue'\n\nexport default defineComponent({\n name: 'VideoMedia',\n extends: Media,\n watch: {\n isCurrent(newVal : boolean) {\n const video = this.$refs[this.index + '_' + this.medium.sys.id] as HTMLVideoElement\n\n if (newVal) {\n if (!video.duration) return;\n this.$emit('media-duration', video.duration + 2) // Add a few extra seconds on video slides\n const playPromise = video.play();\n if (playPromise) {\n playPromise\n .catch((e) => {\n console.log('video loading failure', e)\n });\n }\n } else {\n video.pause()\n video.currentTime = 0\n }\n },\n isPaused(newVal : boolean) {\n const video = this.$refs[this.index + '_' + this.medium.sys.id] as HTMLVideoElement\n if (newVal) {\n video.pause()\n } else {\n video.play()\n .catch(e => {\n console.log('Playing video failed: ', e)\n })\n }\n }\n },\n})\n","import { render } from \"./VideoMedia.vue?vue&type=template&id=0fa4a625&ts=true\"\nimport script from \"./VideoMedia.vue?vue&type=script&lang=ts\"\nexport * from \"./VideoMedia.vue?vue&type=script&lang=ts\"\n\nimport exportComponent from \"/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export default {\n CONTENTFUL_SPACE_ID: '1ugpcx1v1mh7',\n CONTENTFUL_TOKEN: process.env.VUE_APP_CONTENTFUL_API_TOKEN,\n CONTENTFUL_GRAPHQL_API_URL: 'https://graphql.contentful.com/content/v1/spaces',\n CONTENTFUL_REFRESH_INTERVAL: 10800000, // 3 hour\n}\n","\nimport { defineComponent } from 'vue'\nimport { Media, Item, Campaign, PlayList } from '@/helpers/contentful/interfaces'\nimport ImageMedia from '../components/ImageMedia.vue'\nimport VideoMedia from '../components/VideoMedia.vue'\nimport { mapState, mapActions } from 'vuex'\nimport contentfulConfig from '../config/contentful'\n\nexport default defineComponent({\n name: 'Home',\n components: { ImageMedia, VideoMedia },\n data() {\n return {\n infoscreenId: '',\n isVertical: false,\n showDefaultSlide: true,\n message: 'Ladataan mediaa...',\n media: [] as Media[],\n sortedMedia: [] as Media[],\n isContentLoaded: false,\n currentIndex: -1,\n isPaused: false,\n timer: 0,\n interval: 0,\n defaultInterval: 8000,\n defaultScreenTimer: 0,\n status: '',\n statusTimer: 0,\n statusInterval: 2000,\n refreshTimer: 0,\n refreshInterval: contentfulConfig.CONTENTFUL_REFRESH_INTERVAL as number,\n }\n },\n computed: {\n ...mapState([\n 'infoscreen',\n 'campaign',\n 'loadedMediaCount',\n 'mediaCount',\n 'loadedMedia',\n 'errorMessage',\n ]),\n isAllLoaded() : boolean {\n if (this.isContentLoaded) {\n return this.mediaCount === this.loadedMediaCount\n } else {\n return false\n }\n },\n },\n watch: {\n isAllLoaded() {\n if (this.isAllLoaded) {\n this.sortedMedia = this.sortLoadedMedia()\n this.startSlider()\n }\n }\n },\n methods: {\n ...mapActions([\n 'fetchMedia',\n 'setMediaCount',\n 'resetMediaLoadedCount',\n 'resetLoadedMedia',\n ]),\n async getMedia() {\n clearInterval(this.refreshTimer)\n\n // Reset media\n this.media = []\n this.isContentLoaded = false\n this.resetLoadedMedia()\n this.setMediaCount(0)\n this.resetMediaLoadedCount()\n\n // Get media from Contentful\n await this.fetchMedia({ infoscreenId: this.infoscreenId })\n\n if (!this.infoscreen) {\n this.message = ''\n this.showDefaultSlide = true\n console.warn(this.errorMessage)\n this.setRefreshTimer(300000) // Try again after 5 minutes\n return false\n }\n\n const { showCampaigns, playlistsCollection } = this.infoscreen\n this.isVertical = this.infoscreen.isVertical\n this.defaultInterval = this.infoscreen.interval ? (this.infoscreen.interval * 1000) : 8000\n\n if (showCampaigns && this.campaign !== null) {\n const { infoscreen, subCampaignsCollection } = this.campaign\n // infoscreen.mediaVertical.url = 'https://failing-url.com' // fails to load a media\n this.addMedia(infoscreen)\n\n subCampaignsCollection?.items?.filter(Boolean).forEach((item: Campaign) => {\n this.addMedia(item.infoscreen)\n })\n }\n\n playlistsCollection.items.forEach((items: PlayList) => {\n items.itemsCollection.items.forEach((item: Item) => {\n this.addMedia(item)\n })\n })\n\n this.setMediaCount(this.media.length)\n this.isContentLoaded = true\n console.log('Loaded content:', this.media)\n this.setRefreshTimer()\n },\n addMedia(item : Item) {\n if (!item) {\n return false\n }\n\n let medium : Media = this.isVertical ? item.mediaVertical : item.mediaHorizontal\n\n if (medium && medium.url) {\n this.media.push(medium)\n }\n },\n sortLoadedMedia() {\n let sortedResult : Media[] = []\n // If the loadedMedia-array is the same length than media array,\n // all media was loaded and we can use the original media array, no need to do sorting\n if (this.media.length === this.loadedMedia.length) {\n sortedResult = this.media\n } else {\n // If not all media was successfully loaded:\n // Media array has the correct order of slides\n // LoadedMedia-array is not necessarily in correct order\n this.media.forEach((medium : Media) => {\n // Find-function returns the first match\n // In case of multiple matches, we can use the first match multiple times\n const sortedMedium = this.loadedMedia.find((lm : Media) => {\n return medium.url === lm.url\n })\n // If the medium from media-array is found in loadedMedia\n // Add it to sortedResult\n if (sortedMedium) {\n sortedResult.push(sortedMedium)\n }\n });\n }\n return sortedResult\n },\n imageOrVideoComponent(medium : Media) {\n return medium.contentType === 'video/mp4' ? 'video-media' : 'image-media'\n },\n setInterval(seconds : number) {\n const ms = seconds * 1000\n if (ms > this.defaultInterval) {\n this.interval = ms\n } else {\n this.interval = this.defaultInterval\n }\n this.resetPlay()\n },\n startSlider() {\n if (!this.isPaused) {\n this.showDefaultSlide = false\n\n this.currentIndex = -1\n this.interval = 0\n clearInterval(this.timer)\n\n this.resetPlay()\n }\n },\n keyEvent(event : KeyboardEvent) {\n if (event.code === 'ArrowRight') {\n clearTimeout(this.statusTimer)\n this.next()\n this.status = 'SKIP >>'\n this.setStatusTimer()\n } else if (event.code === 'ArrowLeft') {\n clearTimeout(this.statusTimer)\n this.prev()\n this.status = '<< BACK'\n this.setStatusTimer()\n } else if (event.code === 'Space') {\n if (this.isPaused) {\n clearTimeout(this.statusTimer)\n this.isPaused = false\n this.resetPlay()\n this.status = 'PLAY |>'\n this.setStatusTimer()\n } else {\n clearTimeout(this.statusTimer)\n this.isPaused = true\n clearInterval(this.timer)\n this.status = 'PAUSE ||'\n }\n } else if (event.code === 'KeyR') {\n this.getMedia()\n }\n },\n next() {\n this.isPaused = false\n this.interval = this.defaultInterval\n this.currentIndex++\n if (this.currentIndex >= this.media.length) {\n this.currentIndex = 0\n }\n },\n prev() {\n this.isPaused = false\n this.interval = this.defaultInterval\n this.currentIndex--\n if (this.currentIndex < 0) {\n this.currentIndex = this.media.length - 1\n }\n },\n resetPlay() {\n clearInterval(this.timer)\n this.play()\n },\n play() {\n this.timer = setInterval(() => {\n this.next()\n }, this.interval)\n },\n setStatusTimer() {\n this.statusTimer = setTimeout(() => {\n this.status = ''\n }, this.statusInterval)\n },\n setRefreshTimer(interval: number|null = null) {\n const refreshInterval = interval || this.refreshInterval;\n this.refreshTimer = setInterval(() => {\n console.log('Refreshing content', new Date().toLocaleString())\n this.getMedia()\n }, refreshInterval)\n },\n },\n mounted() {\n this.infoscreenId = this.$route.params.screenId as string\n\n if (!this.infoscreenId) {\n this.message = ''\n this.showDefaultSlide = true\n console.warn('Infoscreen group ID missing...')\n return false\n }\n\n this.getMedia()\n console.log('sorted media: ', this.sortedMedia)\n }\n});\n","import { render } from \"./Home.vue?vue&type=template&id=4128bb16&ts=true\"\nimport script from \"./Home.vue?vue&type=script&lang=ts\"\nexport * from \"./Home.vue?vue&type=script&lang=ts\"\n\nimport \"./Home.vue?vue&type=style&index=0&id=4128bb16&lang=css\"\n\nimport exportComponent from \"/app/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'\nimport Home from '../views/Home.vue'\n\nconst routes: Array = [\n {\n path: '/',\n name: 'Home',\n component: Home\n },\n {\n path: '/:screenId',\n name: 'HomeId',\n component: Home,\n },\n]\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes\n})\n\nexport default router\n","export const getInfoscreenMediaQuery = () : string => {\n return `query getInfoscreenMedia($id: String) {\n infoscreenCollection(where: {id: $id}, limit: 1) {\n items {\n # Näyttö\n isVertical,\n showCampaigns,\n interval,\n playlistsCollection(limit: 30) {\n items {\n # Soittolista\n name,\n itemsCollection(limit: 60) {\n items {\n # Media\n sys {\n id\n },\n __typename,\n mediaHorizontal {\n sys {\n id\n },\n contentType,\n url\n },\n mediaVertical {\n sys {\n id\n },\n contentType,\n url\n }\n }\n }\n }\n }\n }\n }\n }`\n}\n\nexport const getCampaignScreensQuery = () : string => {\n return `query getCampaignScreens {\n campaignCollection(where: { umbrella: true }, limit: 1) {\n items {\n __typename\n name\n infoscreen {\n sys {\n id\n },\n mediaVertical {\n sys {\n id\n },\n contentType\n url\n }\n mediaHorizontal {\n sys {\n id\n },\n contentType\n url\n }\n }\n subCampaignsCollection {\n items {\n name\n infoscreen {\n sys {\n id\n },\n mediaVertical {\n sys {\n id\n },\n contentType\n url\n }\n mediaHorizontal {\n sys {\n id\n },\n contentType\n url\n }\n }\n }\n }\n }\n }\n }`\n}","import { getInfoscreenMediaQuery, getCampaignScreensQuery } from './graphql'\nimport { ContentfulInfoscreenData, ContentfulCampaignData } from './interfaces'\nimport contentfulConfig from '../../config/contentful'\nimport axios from 'axios'\n\nconst contentfulApi = `${contentfulConfig.CONTENTFUL_GRAPHQL_API_URL}/${contentfulConfig.CONTENTFUL_SPACE_ID}/environments/${process.env.VUE_APP_CONTENTFUL_ENVIRONMENT}`\n\nconst axiosHeader = {\n headers: {\n accept: 'application/json ',\n authorization: `Bearer ${contentfulConfig.CONTENTFUL_TOKEN}`,\n },\n}\n\nexport const getInfoScreenMedia = async (infoscreenId : string) : Promise => {\n return await axios.post(contentfulApi, { query: getInfoscreenMediaQuery(), variables: { id: infoscreenId } }, axiosHeader)\n .then((response: any) => {\n const data = response.data.data.infoscreenCollection.items[0]\n let contentfulData : ContentfulInfoscreenData = {\n data\n }\n if (!response.data.data.infoscreenCollection.items[0]) {\n contentfulData = {\n data: null,\n message: `No content found for infoscreen ID: ${infoscreenId}. Check that the infoscreen ID is valid.`\n }\n }\n return contentfulData\n })\n .catch((err: any) => {\n console.log('Fetching Infoscreen content from Contentful failed: ', err)\n return {\n data: null,\n message: `Content fetch from Contentul failed: ${err}`\n }\n });\n}\n\nexport const getCampaignScreens = async () : Promise => {\n return await axios.post(contentfulApi, { query: getCampaignScreensQuery() }, axiosHeader)\n .then((response: any) => {\n const data = response.data.data.campaignCollection.items[0]\n let contentfulData : ContentfulCampaignData = {\n data\n }\n if (!response.data.data.campaignCollection.items[0]) {\n contentfulData = {\n data: null,\n message: 'No content found from Contentful for campaigns'\n }\n }\n return contentfulData\n })\n .catch((err: any) => {\n console.log('Fetching Campaign content from Contentful failed: ', err)\n return {\n data: null,\n message: `Content fetch from Contentul failed: ${err}`\n }\n });\n}\n","import { createStore } from 'vuex'\nimport { getInfoScreenMedia, getCampaignScreens } from '../helpers/contentful/queries'\nimport { ContentfulInfoscreenData, ContentfulCampaignData, InfoScreen, CampaignScreen, Media } from '../helpers/contentful/interfaces'\n\n/* eslint-disable */\nexport default createStore({\n state: {\n infoscreen: null as InfoScreen | null,\n campaign: null as CampaignScreen | null,\n loadedMediaCount: 0,\n mediaCount: 0,\n loadedMedia: [] as Media[],\n errorMessage: '',\n },\n actions: {\n async fetchMedia({ commit }, payload) {\n const infoscreen : ContentfulInfoscreenData = await getInfoScreenMedia(payload.infoscreenId)\n if (infoscreen.data) {\n commit('SET_INFOSCREEN', infoscreen.data)\n if (infoscreen.data.showCampaigns) {\n const campaign : ContentfulCampaignData = await getCampaignScreens()\n commit('SET_CAMPAIGN', campaign.data)\n }\n } else {\n commit('SET_INFOSCREEN', null)\n commit('SET_ERROR_MESSAGE', infoscreen.message)\n }\n },\n setMediumAsLoaded({ commit }, payload) {\n if (payload) {\n commit('ADD_TO_LOADED_MEDIA', payload)\n }\n commit('INCREASE_LOADED_MEDIA_COUNT')\n },\n resetMediaLoadedCount({ commit }) {\n commit('RESET_LOADED_MEDIA_COUNT')\n },\n setMediaCount({ commit }, payload) {\n commit('SET_MEDIA_COUNT', payload)\n },\n resetLoadedMedia({ commit }) {\n commit('RESET_LOADED_MEDIA')\n },\n setErrorMessage({ commit }, payload) {\n commit('SET_ERROR_MESSAGE', payload)\n },\n },\n mutations: {\n SET_INFOSCREEN(state, payload) {\n state.infoscreen = payload\n },\n SET_CAMPAIGN(state, payload) {\n state.campaign = payload\n },\n INCREASE_LOADED_MEDIA_COUNT(state) {\n if (state.loadedMediaCount < state.mediaCount) {\n state.loadedMediaCount++\n }\n },\n RESET_LOADED_MEDIA_COUNT(state) {\n state.loadedMediaCount = 0\n },\n SET_MEDIA_COUNT(state, payload) {\n state.mediaCount = payload\n },\n ADD_TO_LOADED_MEDIA(state, payload) {\n if (state.loadedMediaCount < state.mediaCount) {\n state.loadedMedia.push(payload)\n }\n },\n RESET_LOADED_MEDIA(state) {\n state.loadedMedia = []\n },\n SET_ERROR_MESSAGE(state, payload) {\n state.errorMessage = payload\n },\n },\n getters: {},\n modules: {},\n});\n","import { createApp } from 'vue'\nimport App from './App.vue'\nimport router from './router'\nimport store from './store'\n\nconst app = createApp(App)\napp.use(router)\napp.use(store)\napp.mount('#app')","module.exports = __webpack_public_path__ + \"img/veke-1080x1920.b5e0d4bc.png\";"],"sourceRoot":""}