{"version":3,"sources":["webpack:///./src/project/video/ProductVideoRender.vue?08cf","webpack:///./src/project/modals/Modal.vue","webpack:///./src/project/modals/Modal.vue?4482","webpack:///./src/project/modals/Modal.vue?1301","webpack:///./src/project/product/product-details/ProductDetailsMediaOverlay.vue?9988","webpack:///./src/project/product/product-details/ProductDetailsMediaOverlay.vue","webpack:///./src/project/product/product-details/ProductDetailsMediaOverlay.vue?ecc3","webpack:///./src/project/product/product-details/ProductDetailsMediaOverlay.vue?dbe8","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue?be51","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue?db1a","webpack:///./src/project/product/product-details/ProductDetailsImageVideo.vue?4fd8","webpack:///./src/project/product/product-details/ProductDetailsMediaOverlay.vue?cfcf","webpack:///./src/project/video/ProductVideoRender.vue?80c4","webpack:///./src/project/video/ProductNativeVideo.vue?8951","webpack:///./src/project/video/ProductNativeVideo.vue","webpack:///./src/project/video/ProductNativeVideo.vue?7681","webpack:///./src/project/video/ProductNativeVideo.vue?ea9f","webpack:///./src/project/video/ProductVimeoVideo.vue?f9b3","webpack:///./src/project/video/ProductVimeoVideo.vue","webpack:///./src/project/video/ProductVimeoVideo.vue?7342","webpack:///./src/project/video/ProductVimeoVideo.vue?a1fa","webpack:///./src/project/video/ProductYoutubeVideo.vue?9c52","webpack:///./src/project/video/ProductYoutubeVideo.vue","webpack:///./src/project/video/constants.ts","webpack:///./src/project/video/ProductYoutubeVideo.vue?ed6c","webpack:///./src/project/video/ProductYoutubeVideo.vue?af96","webpack:///./src/project/video/ProductVideoRender.vue","webpack:///./src/project/video/ProductVideoRender.vue?4235","webpack:///./src/project/video/ProductVideoRender.vue?69fe"],"names":["data","ModalState","hideModal","this","modal","id","type","Object","required","render","staticRenderFns","component","_vm","_h","$createElement","_c","_self","staticClass","style","attrs","brandUrl","brandLogos","brandLogoUrl","brandName","_e","ref","sliderOptions","scopedSlots","_u","key","fn","class","prevButtonSelector","$dictionary","get","proxy","nextButtonSelector","_l","image","uri","productName","video","Date","valueOf","initialSlide","activeIndex","spaceBetween","slidesPerView","slidesPerGroup","loop","loopFillGroupWithBlank","watchSlidesVisibility","watchOverflow","setWrapperSize","pagination","el","clickable","navigation","nextEl","prevEl","grabCursor","keyboard","enabled","onlyInViewPort","controller","control","thumbs","$swiper","padding","aspectRatio","toFixed","paddingTop","BRAND","Modal","Array","String","Number","default","components","ProductDetailsImageVideo","url","productMediaSize","mediaMode","imageName","isFirst","ImageSizePlaceholderValues","W200","W700","W300","W1400","Error","validator","value","undefined","includes","Boolean","ResponsiveProductImage","VideoRender","cssClasses","videoUrl","screenMode","allowControls","startVideo","iconWidth","iconHeight","_v","directives","name","rawName","fullscreenMode","expression","$nextTick","$refs","videoPlayMount","playOptions","controls","autoplay","videoMount","posterOptions","background","width","mode","youtubeUrl","videoImage","youtubeRegex","match","length","slice","videoId","imageResolution","VideoType","supportedSizes","videoType","indexOf","Vimeo","Youtube","Native","isMobile","isBreakpointActive","videoWrapper","visibleState","isScrolledIntoView","parent","closest","rect","getBoundingClientRect","parentRect","isVisible","top","bottom","left","right","valuesToCheck","values","every","val","NativeVideo","VimeoVideo","YoutubeVideo"],"mappings":"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","file":"js/chunk-45b28748.bab72f22.js","sourcesContent":["import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductVideoRender.vue?vue&type=style&index=0&id=145baeaa&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductVideoRender.vue?vue&type=style&index=0&id=145baeaa&lang=less&scoped=true&\"","\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport { IModal, ModalState } from '@/core/modals/ModalState';\r\n\r\n@Component\r\nexport default class Modal extends Vue {\r\n @Prop({ type: Object, required: true })\r\n modal!: IModal;\r\n\r\n closeOverlay(data?: any) {\r\n ModalState.hideModal(this.modal.id, data);\r\n }\r\n}\r\n","var render, staticRenderFns\nimport script from \"./Modal.vue?vue&type=script&lang=ts&\"\nexport * from \"./Modal.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","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!./Modal.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!./Modal.vue?vue&type=script&lang=ts&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-wrapper\"},[_c('div',{staticClass:\"bg-white py-35 px-40\"},[_c('div',{staticClass:\"relative h-0 block\",style:(_vm.style)},[_c('div',{staticClass:\"aspect-ratio-container p-15\"},[(_vm.brandLogos)?_c('RouterLink',{staticClass:\"brandlogo\",attrs:{\"to\":_vm.brandUrl}},[_c('img',{attrs:{\"src\":_vm.brandLogos.brandLogoUrl,\"alt\":_vm.brandName}})]):_vm._e(),_c('Swiper',{ref:\"slider\",staticClass:\"w-full h-full\",attrs:{\"options\":_vm.sliderOptions},scopedSlots:_vm._u([{key:\"button-prev\",fn:function(){return [_c('button',{staticClass:\"custom-swiper-button-prev hidden md:block\",class:_vm.prevButtonSelector,attrs:{\"type\":\"button\",\"aria-label\":_vm.$dictionary.get('Generic.Prev')}},[_c('CIcon',{attrs:{\"name\":\"arrow-left\",\"width\":\"25\",\"height\":\"25\"}})],1)]},proxy:true},{key:\"button-next\",fn:function(){return [_c('button',{staticClass:\"custom-swiper-button-next hidden md:block\",class:_vm.nextButtonSelector,attrs:{\"type\":\"button\",\"aria-label\":_vm.$dictionary.get('Generic.Next')}},[_c('CIcon',{attrs:{\"name\":\"arrow-right\",\"width\":\"25\",\"height\":\"25\"}})],1)]},proxy:true},{key:\"pagination\",fn:function(){return [_c('div',{staticClass:\"swiper-pagination\"})]},proxy:true}])},[_vm._l((_vm.images),function(image){return _c('SwiperSlide',{key:image.uri},[_c('div',{staticClass:\"relative w-full h-full outline-none p-30\"},[_c('ProductDetailsImageVideo',{attrs:{\"url\":image.uri,\"image-name\":_vm.productName,\"media-mode\":\"fullscreen\"}})],1)])}),_vm._l((_vm.videos),function(video){return _c('SwiperSlide',{key:video.uri},[_c('div',{staticClass:\"w-full h-full p-30\"},[_c('ProductDetailsImageVideo',{attrs:{\"url\":video.uri,\"media-mode\":\"fullscreen\",\"is-video\":\"\"}})],1)])})],2)],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport Modal from '@/project/modals/Modal.vue';\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { BrandLogoViewModel, ImageViewObject, VideoViewObject } from '@/types/apiServerContract';\r\nimport ProductDetailsImageVideo from './ProductDetailsImageVideo.vue';\r\nimport { PageName } from '@/router/routes/constants';\r\n\r\n@Component({\r\n components: { ProductDetailsImageVideo }\r\n})\r\nexport default class ProductDetailsMediaOverlay extends Modal {\r\n @Prop({ type: Array, required: true })\r\n images!: ImageViewObject[];\r\n\r\n @Prop({ type: Array, required: true })\r\n videos!: VideoViewObject[];\r\n\r\n @Prop({ required: false })\r\n brandLogos!: BrandLogoViewModel;\r\n\r\n @Prop({ type: String, required: false })\r\n brandName!: string;\r\n\r\n @Prop({ type: String, required: true })\r\n brandUrl!: string;\r\n\r\n @Prop({ type: Number, default: 16 / 9 })\r\n aspectRatio!: number;\r\n\r\n @Prop({ type: Number, default: 0 })\r\n activeIndex!: number;\r\n\r\n @Prop({ type: String, required: true })\r\n productName!: string;\r\n\r\n @Prop({ type: Object, required: false })\r\n thumbs!: any; // Swiper\r\n\r\n get id() {\r\n return new Date().valueOf();\r\n }\r\n\r\n get prevButtonSelector() {\r\n return 'custom-swiper-button-prev-' + this.id;\r\n }\r\n\r\n get nextButtonSelector() {\r\n return 'custom-swiper-button-next-' + this.id;\r\n }\r\n\r\n get sliderOptions() {\r\n return {\r\n initialSlide: this.activeIndex,\r\n spaceBetween: 0,\r\n slidesPerView: 1,\r\n slidesPerGroup: 1,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n watchSlidesVisibility: true,\r\n watchOverflow: true,\r\n setWrapperSize: true,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true\r\n },\r\n navigation: {\r\n nextEl: '.' + this.nextButtonSelector,\r\n prevEl: '.' + this.prevButtonSelector\r\n },\r\n grabCursor: true,\r\n keyboard: {\r\n enabled: true,\r\n onlyInViewPort: true\r\n },\r\n controller: {\r\n control: this.thumbs?.$swiper\r\n }\r\n };\r\n }\r\n\r\n get style(): object {\r\n const padding = `${(100 / this.aspectRatio).toFixed(2)}%`;\r\n return { paddingTop: padding };\r\n }\r\n\r\n get brandPage() {\r\n return PageName.BRAND;\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n slider: any // todo: typesafety\r\n }\r\n}\r\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!./ProductDetailsMediaOverlay.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!./ProductDetailsMediaOverlay.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsMediaOverlay.vue?vue&type=template&id=19f74a69&scoped=true&\"\nimport script from \"./ProductDetailsMediaOverlay.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsMediaOverlay.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductDetailsMediaOverlay.vue?vue&type=style&index=0&id=19f74a69&lang=less&scoped=true&\"\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 \"19f74a69\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVideo)?_c('article',{staticClass:\"w-full h-full overflow-hidden relative\"},[_c('VideoRender',{attrs:{\"video-url\":_vm.url,\"size\":_vm.productMediaSize,\"mode\":_vm.mediaMode}})],1):_c('ResponsiveProductImage',{attrs:{\"image-url\":_vm.url,\"size\":_vm.productMediaSize,\"alt\":_vm.imageName,\"is-first\":_vm.isFirst}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop } from 'vue-property-decorator';\r\nimport ResponsiveProductImage from '@/project/product/image/ResponsiveProductImage.vue';\r\nimport VideoRender from '@/project/video/ProductVideoRender.vue';\r\nimport { XS, SM, MD, MIN_LG } from '@/core/config/breakpointConfig';\r\nimport responsiveProductImageService from '@/project/product/image/responsiveProductImage.service';\r\n\r\n@Component({\r\n components: { ResponsiveProductImage, VideoRender }\r\n})\r\nexport default class ProductDetailsImageVideo extends Vue {\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) url!: string;\r\n\r\n @Prop({\r\n type: String,\r\n validator: (value: string | undefined) => value === undefined || ['thumbnail', 'pdp', 'fullscreen'].includes(value)\r\n })\r\n mediaMode!: 'thumbnail' | 'pdp' | 'fullscreen';\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isVideo!: boolean;\r\n\r\n @Prop({\r\n type: String,\r\n default: ''\r\n }) imageName!: string;\r\n\r\n @Prop({\r\n type: Boolean,\r\n default: false\r\n }) isFirst!: boolean;\r\n\r\n get productMediaSize(): string | object {\r\n switch (this.mediaMode) {\r\n case 'thumbnail':\r\n return responsiveProductImageService.ImageSizePlaceholderValues.W200;\r\n case 'pdp':\r\n return responsiveProductImageService.ImageSizePlaceholderValues.W700;\r\n case 'fullscreen':\r\n return {\r\n [XS]: responsiveProductImageService.ImageSizePlaceholderValues.W300,\r\n [SM]: responsiveProductImageService.ImageSizePlaceholderValues.W700,\r\n [MD]: responsiveProductImageService.ImageSizePlaceholderValues.W700,\r\n [MIN_LG]: responsiveProductImageService.ImageSizePlaceholderValues.W1400\r\n };\r\n }\r\n throw new Error('unknown image-mode: ' + this.mediaMode);\r\n }\r\n}\r\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!./ProductDetailsImageVideo.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!./ProductDetailsImageVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductDetailsImageVideo.vue?vue&type=template&id=15fda8d8&\"\nimport script from \"./ProductDetailsImageVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductDetailsImageVideo.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","import mod from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetailsMediaOverlay.vue?vue&type=style&index=0&id=19f74a69&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProductDetailsMediaOverlay.vue?vue&type=style&index=0&id=19f74a69&lang=less&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"videoWrapper\",staticClass:\"video relative\",class:_vm.cssClasses},[(_vm.isVimeoVideo)?_c('vimeo-video',{staticClass:\"outline-none\",attrs:{\"url\":_vm.videoUrl,\"mode\":_vm.screenMode,\"allow-controls\":_vm.allowControls,\"start-video\":_vm.startVideo}}):(_vm.isYoutubeVideo)?_c('youtube-video',{staticClass:\"outline-none\",attrs:{\"url\":_vm.videoUrl,\"mode\":_vm.screenMode,\"allow-controls\":_vm.allowControls,\"start-video\":_vm.startVideo}}):_c('native-video',{staticClass:\"outline-none\",attrs:{\"url\":_vm.videoUrl,\"allow-controls\":_vm.allowControls,\"start-video\":_vm.startVideo}}),(_vm.screenMode !== 'fullscreen')?_c('span',{staticClass:\"play absolute inset-0 m-auto\"},[_c('CIcon',{attrs:{\"name\":\"play\",\"width\":_vm.iconWidth,\"height\":_vm.iconHeight}}),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Play\")])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{attrs:{\"src\":_vm.url,\"preload\":\"metadata\",\"controls\":_vm.allowControls,\"autoplay\":_vm.startVideo}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\r\nimport { Vue, Prop } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component\r\n\r\nexport default class NativeVideo extends Vue {\r\n @Prop({ type: String, required: true })\r\n url!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) startVideo!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) allowControls!: boolean;\r\n}\r\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!./ProductNativeVideo.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!./ProductNativeVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductNativeVideo.vue?vue&type=template&id=3d72ca58&\"\nimport script from \"./ProductNativeVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductNativeVideo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.fullscreenMode),expression:\"!fullscreenMode\"}]},[_c('div',{ref:\"videoMount\"})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.fullscreenMode),expression:\"fullscreenMode\"}]},[_c('div',{ref:\"videoPlayMount\",staticClass:\"absolute top-0 left-0 z-1\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\nimport VimeoPlayer from '@vimeo/player';\r\n\r\n@Component\r\nexport default class ProductVimeoVideo extends Vue {\r\n @Prop({ type: String, required: true })\r\n url!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) mode!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) startVideo!: boolean;\r\n\r\n $refs!: {\r\n videoMount?: HTMLElement,\r\n videoPlayMount?: HTMLElement,\r\n }\r\n\r\n mounted() {\r\n // Setup the fullscreen video mount\r\n this.$nextTick(() => {\r\n if (this.fullscreenMode) {\r\n if (this.$refs.videoPlayMount) {\r\n const playOptions = {\r\n url: this.url,\r\n controls: true,\r\n autoplay: this.startVideo\r\n };\r\n\r\n // eslint-disable-next-line no-new\r\n new VimeoPlayer(this.$refs.videoPlayMount, playOptions);\r\n }\r\n } else {\r\n if (this.$refs.videoMount) {\r\n const posterOptions = {\r\n url: this.url,\r\n controls: false,\r\n background: false,\r\n width: 165\r\n };\r\n\r\n // eslint-disable-next-line no-new\r\n new VimeoPlayer(this.$refs.videoMount, posterOptions);\r\n }\r\n }\r\n });\r\n }\r\n\r\n get fullscreenMode(): boolean {\r\n return this.mode === 'fullscreen';\r\n }\r\n}\r\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!./ProductVimeoVideo.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!./ProductVimeoVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductVimeoVideo.vue?vue&type=template&id=5764f86c&\"\nimport script from \"./ProductVimeoVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductVimeoVideo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.allowControls)?_c('div',[_c('iframe',{attrs:{\"src\":_vm.youtubeUrl,\"frameborder\":\"0\",\"allowfullscreen\":\"\"}})]):_c('img',{attrs:{\"src\":_vm.videoImage,\"alt\":\"\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\n\r\n@Component\r\n\r\nexport default class ProductYoutubeVideo extends Vue {\r\n @Prop({ type: String, required: true })\r\n url!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) mode!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) startVideo!: boolean;\r\n\r\n @Prop({\r\n required: true,\r\n type: Boolean\r\n }) allowControls!: boolean;\r\n\r\n get videoId() {\r\n const youtubeRegex = /^.*((youtube\\/)|(youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))\\??v?=?([^#&?]*).*/;\r\n const match = this.url.match(youtubeRegex);\r\n\r\n return (match && match[8].length >= 11) ? match[8].slice(0, 11) : 'default';\r\n }\r\n\r\n // Fixes iframe same-origin issues: https://stackoverflow.com/questions/41522652/refused-to-display-url-in-a-frame-because-it-set-x-frame-options-to-sameori/49330250#49330250\r\n get youtubeUrl() {\r\n return `https://youtube.com/embed/${this.videoId}?autoplay=${this.startVideo ? 1 : 0}`;\r\n }\r\n\r\n get videoImage() : string {\r\n return `https://i.ytimg.com/vi/${this.videoId}/${this.imageResolution}.jpg`;\r\n }\r\n\r\n get imageResolution() : string {\r\n return this.mode === 'thumbnail' ? 'mqdefault' : 'maxresdefault';\r\n }\r\n}\r\n","export enum VideoType {\r\n Vimeo = 'vimeo',\r\n Youtube = 'youtu',\r\n Native = 'native'\r\n}\r\n\r\nexport const supportedSizes = ['200', '300', '700', '1400'];\r\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!./ProductYoutubeVideo.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!./ProductYoutubeVideo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductYoutubeVideo.vue?vue&type=template&id=38f7df90&\"\nimport script from \"./ProductYoutubeVideo.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductYoutubeVideo.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Prop, Vue } from 'vue-property-decorator';\r\nimport Component from 'vue-class-component';\r\nimport NativeVideo from './ProductNativeVideo.vue';\r\nimport VimeoVideo from './ProductVimeoVideo.vue';\r\nimport YoutubeVideo from './ProductYoutubeVideo.vue';\r\nimport { supportedSizes, VideoType } from './constants';\r\nimport breakpointState from '@/core/responsive/breakpoints/breakpointsState.observable';\r\nimport { XS } from '@/core/config/breakpointConfig';\r\n\r\n@Component({\r\n components: { NativeVideo, VimeoVideo, YoutubeVideo }\r\n})\r\n\r\nexport default class ProductVideoRender extends Vue {\r\n @Prop({ type: String, required: true })\r\n videoUrl!: string;\r\n\r\n @Prop({\r\n required: true,\r\n type: String\r\n }) mode!: 'thumbnail' | 'pdp' | 'fullscreen';\r\n\r\n @Prop({\r\n type: [String, Object],\r\n required: true,\r\n validator: (value: string | object) => {\r\n const valuesToCheck = typeof value === 'string' ? [value] : Object.values(value);\r\n return valuesToCheck.every(val => supportedSizes.includes(val));\r\n }\r\n })\r\n size!: string | { [breakpoint: string]: string};\r\n\r\n get videoType(): VideoType {\r\n let videoType: VideoType;\r\n\r\n if (this.videoUrl.indexOf(VideoType.Vimeo) !== -1) {\r\n videoType = VideoType.Vimeo;\r\n } else if (this.videoUrl.indexOf(VideoType.Youtube) !== -1) {\r\n videoType = VideoType.Youtube;\r\n } else {\r\n videoType = VideoType.Native;\r\n }\r\n\r\n return videoType;\r\n }\r\n\r\n get isYoutubeVideo() {\r\n return this.videoType === VideoType.Youtube;\r\n }\r\n\r\n get isVimeoVideo() {\r\n return this.videoType === VideoType.Vimeo;\r\n }\r\n\r\n get screenMode(): string {\r\n if (this.isMobile) return 'fullscreen';\r\n\r\n switch (this.mode) {\r\n case 'thumbnail':\r\n return 'thumbnail';\r\n case 'pdp':\r\n return 'pdp';\r\n case 'fullscreen':\r\n return 'fullscreen';\r\n }\r\n throw new Error('unknown screen-mode: ' + this.mode);\r\n }\r\n\r\n get isMobile() {\r\n return breakpointState.isBreakpointActive(XS);\r\n }\r\n\r\n get cssClasses(): string {\r\n return `${this.screenMode} ${this.videoType}`;\r\n }\r\n\r\n get iconWidth(): string {\r\n return this.screenMode === 'thumbnail' ? '13' : '26';\r\n }\r\n\r\n get iconHeight(): string {\r\n return this.screenMode === 'thumbnail' ? '16' : '32';\r\n }\r\n\r\n get allowControls() {\r\n return this.screenMode === 'fullscreen' || this.isMobile;\r\n }\r\n\r\n $refs!: Vue['$refs'] & {\r\n videoWrapper: HTMLElement\r\n }\r\n\r\n autoplay: boolean | null = false;\r\n\r\n mounted() {\r\n const videoWrapper = this.$refs.videoWrapper;\r\n const visibleState = this.isScrolledIntoView(videoWrapper);\r\n this.autoplay = visibleState;\r\n }\r\n\r\n isScrolledIntoView(el: HTMLElement) {\r\n const parent = el.closest('.swiper-container');\r\n if (!parent) return false;\r\n const rect = el.getBoundingClientRect();\r\n const parentRect = parent.getBoundingClientRect();\r\n const isVisible = (rect.top >= parentRect.top) && (rect.bottom <= parentRect.bottom) && (rect.left >= parentRect.left) && (rect.right <= parentRect.right);\r\n return isVisible;\r\n }\r\n\r\n get startVideo() {\r\n return this.screenMode === 'fullscreen' && this.autoplay;\r\n }\r\n}\r\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!./ProductVideoRender.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!./ProductVideoRender.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ProductVideoRender.vue?vue&type=template&id=145baeaa&scoped=true&\"\nimport script from \"./ProductVideoRender.vue?vue&type=script&lang=ts&\"\nexport * from \"./ProductVideoRender.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ProductVideoRender.vue?vue&type=style&index=0&id=145baeaa&lang=less&scoped=true&\"\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 \"145baeaa\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}