{"version":3,"file":"3578.js?id=479c4dc1dec91fae","mappings":"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","sources":["webpack://website-js/./src/components/product-details/CpDetailsVideo.vue?bfc9","webpack://website-js/./src/components/product-details/CpDetailsVideoSelector.vue?62ff","webpack://website-js/./src/utils/CpEventBus.ts","webpack://website-js/./src/components/product-details/CpDetailsVideo.vue","webpack://website-js/./src/components/product-details/CpDetailsVideo.vue?5d2d","webpack://website-js/./src/components/product-details/CpDetailsVideo.vue?9dbd","webpack://website-js/./src/components/product-details/CpDetailsVideo.vue?6d6a","webpack://website-js/./src/components/product-details/CpDetailsVideoSelector.vue","webpack://website-js/./src/components/product-details/CpDetailsVideoSelector.vue?72c4","webpack://website-js/./src/components/product-details/CpDetailsVideoSelector.vue?a342","webpack://website-js/./src/components/product-details/CpDetailsVideoSelector.vue?0569","webpack://website-js/./src/components/product-details/CpDetailsVideo.vue?2fbc","webpack://website-js/./src/components/product-details/CpDetailsVideoSelector.vue?cb44"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `#video-container{background:var(--base-selection-background)}#video-container #video-iframe{width:100%;aspect-ratio:16/9}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.video-selector .thumb{position:relative;margin:10px;max-width:200px;border:1px var(--primary-color) solid;border-radius:14px;cursor:pointer;overflow:hidden}.video-selector .thumb .overlay{position:absolute;top:50%;left:50%;font-weight:700;transform:translate(-50%,-50%);padding:.5rem;color:red}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { ref } from 'vue';\r\n\r\n// Define the event bus with a record of event names to arrays of callback functions\r\nexport const CpEventBus = ref(new class {\r\n  listeners: Record<string, Array<(...args: any[]) => void>> = {};\r\n\r\n  // Method to register a listener for a specific event\r\n  $on(event: string, callback: (...args: any[]) => void) {\r\n    if (!this.listeners[event]) {\r\n      this.listeners[event] = [];\r\n    }\r\n    this.listeners[event].push(callback);\r\n  }\r\n\r\n  // Method to emit an event and call all registered listeners for it\r\n  $emit(event: string, ...args: any[]) {\r\n    if (this.listeners[event]) {\r\n      this.listeners[event].forEach((callback) => callback(...args));\r\n    }\r\n  }\r\n});\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.videos.length && _vm.videos.length > 0)?_c('div',{staticClass:\"uk-container uk-container-expand uk-text-center uk-padding-remove\",staticStyle:{\"background\":\"#252E44\"},attrs:{\"id\":\"video-container\"}},[_c('div',{staticClass:\"uk-container uk-container-large\"},[(_vm.selectedVideo)?_c('iframe',{attrs:{\"id\":\"video-iframe\",\"src\":_vm.videoSrc(this.selectedVideo),\"frameborder\":\"0\",\"allow\":\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\",\"referrerpolicy\":\"strict-origin-when-cross-origin\",\"allowfullscreen\":\"\"}}):_vm._e()]),_c('CpDetailsVideoSelector',{attrs:{\"external\":false}})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from 'vue-property-decorator';\r\nimport ProductDetailsModule from '../../store/modules/ProductDetailsModule';\r\nimport CpDetailsVideoSelector from './CpDetailsVideoSelector.vue';\r\nimport { CpEventBus } from '../../utils/CpEventBus';\r\n\r\n\r\n@Component({\r\n    name: 'CpDetailsVideo',\r\n    components: {\r\n        CpDetailsVideoSelector,\r\n    },\r\n})\r\nexport default class CpDetailsVideo extends Vue {\r\n    private selectedVideo: string = this.videos ? this.videos[0] : \"\";\r\n    private autoplay: boolean = false;\r\n\r\n    get videos(): string[] {\r\n        return ProductDetailsModule.PRODUCT?.videos;\r\n    }\r\n\r\n    private setVideo(video: string): void {\r\n        this.selectedVideo = video;\r\n        this.autoplay = true;\r\n    }\r\n\r\n    private videoSrc(video: string): string {\r\n        let src = \"https://www.youtube-nocookie.com/embed/\" + video;\r\n        return this.autoplay ? src + \"?autoplay=1\" : src;\r\n    }\r\n\r\n    private mounted() {\r\n        CpEventBus.value.$on('selectvideo', (data: string) => {\r\n            this.setVideo(data);\r\n        });\r\n    }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./CpDetailsVideo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./CpDetailsVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CpDetailsVideo.vue?vue&type=template&id=04591a7a&\"\nimport script from \"./CpDetailsVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./CpDetailsVideo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CpDetailsVideo.vue?vue&type=style&index=0&id=04591a7a&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/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.show)?_c('div',{staticClass:\"uk-margin-top\"},[(_vm.translationsReady && _vm.external)?_c('p',{staticClass:\"uk-margin-remove uk-text-bold\"},[_vm._v(_vm._s(_vm.$t('product.product-videos', ['Product videos'])))]):_vm._e(),_c('div',{staticClass:\"video-selector uk-flex\",class:{ 'uk-flex-center': !_vm.external }},_vm._l((_vm.videos.slice(0, _vm.numbersToShow)),function(video){return _c('a',{key:video,staticClass:\"thumb uk-position-relative\",attrs:{\"href\":\"#video-container\",\"data-cbx-toggle\":\"scroll\"},on:{\"click\":function($event){return _vm.setVideo(video)}}},[_c('img',{attrs:{\"src\":_vm.videoThumbnail(video)}}),(_vm.external)?_c('span',{staticClass:\"overlay\",attrs:{\"uk-icon\":_vm.icon}}):_vm._e()])}),0)]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\nimport ProductDetailsModule from '../../store/modules/ProductDetailsModule';\r\nimport { CpEventBus } from '../../utils/CpEventBus';\r\n\r\n@Component({\r\n    name: 'CpDetailsVideoSelector',\r\n    components: {},\r\n})\r\nexport default class CpDetailsVideoSelector extends Vue {\r\n    @Prop({ type: Boolean, required: false, default: true }) private external: boolean;\r\n    \r\n    get translationsReady(): boolean {\r\n        return this.$root.$data.translationsLoaded === true;\r\n    }\r\n\r\n    get isMobile() {\r\n        return this.$screen.breakpoint === 'mobile';\r\n    }\r\n\r\n    get show(): boolean {\r\n        return this.videos && (this.videos.length > 1 || (this.external && this.videos.length > 0));\r\n    }\r\n\r\n    get numbersToShow(): number {\r\n        if (this.isMobile)\r\n            return 2;\r\n        return 3;\r\n    }\r\n\r\n    get icon(): string {\r\n        const icon = \"icon: youtube; ratio: \";\r\n        if (this.isMobile)\r\n            return icon + \"1.5\";\r\n        return icon + \"2\";\r\n    }\r\n    \r\n    get videos(): string[] {\r\n        return ProductDetailsModule.PRODUCT?.videos;\r\n    }\r\n\r\n    private setVideo(video: string): void {\r\n        CpEventBus.value.$emit('selectvideo', video);\r\n    }\r\n\r\n    private videoThumbnail(video: string): string {\r\n        return \"https://img.youtube.com/vi/\" + video + \"/mqdefault.jpg\";\r\n    }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./CpDetailsVideoSelector.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./CpDetailsVideoSelector.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CpDetailsVideoSelector.vue?vue&type=template&id=53c32864&\"\nimport script from \"./CpDetailsVideoSelector.vue?vue&type=script&lang=ts&\"\nexport * from \"./CpDetailsVideoSelector.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./CpDetailsVideoSelector.vue?vue&type=style&index=0&id=53c32864&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/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","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./CpDetailsVideo.vue?vue&type=style&index=0&id=04591a7a&prod&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b1bc69b4\", content, true, {\"sourceMap\":false,\"shadowMode\":false});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[4]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./CpDetailsVideoSelector.vue?vue&type=style&index=0&id=53c32864&prod&lang=scss&\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"28556a96\", content, true, {\"sourceMap\":false,\"shadowMode\":false});"],"names":["___CSS_LOADER_EXPORT___","push","module","id","CpEventBus","ref","constructor","_defineProperty","$on","event","callback","this","listeners","$emit","args","forEach","render","_vm","_c","_self","_setupProxy","videos","length","staticClass","staticStyle","attrs","selectedVideo","videoSrc","_e","staticRenderFns","CpDetailsVideo","Vue","ProductDetailsModule","PRODUCT","setVideo","video","autoplay","src","mounted","value","data","__decorate","Component","name","components","CpDetailsVideoSelector","component","show","translationsReady","external","_v","_s","$t","class","_l","slice","numbersToShow","key","on","$event","videoThumbnail","icon","$root","$data","translationsLoaded","isMobile","$screen","breakpoint","Prop","type","Boolean","required","default","content","__esModule","locals","exports","add"],"sourceRoot":""}