{"version":3,"sources":["webpack:///./assets/javascripts/modules/components/VideoBrightcoveComponent.js","webpack:///./assets/javascripts/modules/components/SimpleCarouselComponent.js","webpack:///./assets/javascripts/modules/utils/mediaBreakpoints.js","webpack:///./assets/javascripts/modules/components/CarouselModuleComponent.js","webpack:///./assets/javascripts/modules/components/PdpExtendedComponent.js"],"names":["VideoBrightcoveComponent","htmlEl","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","bindEvents","bind","resizeScrollHandler","wrapper","$component","querySelector","SELECTORS","videoWrapper","intoGallery","dataset","myPlayer","Component","videoplayer","controls","showControls","getOpts","undefined","playControl","audioControl","fullScreenControl","classList","remove","paused","add","on","addEventListener","play","pause","isMuted","muted","isFullscreen","exitFullscreen","requestFullscreen","$","window","e","videoJsEl","opts","isElementInViewport","startOnScroll","playVideo","hasClass","pauseVideo","playerElement","isMobile","data","aspectratio","tabletMobile","matchMedia","matches","videoMobileId","aspectratioMobile","playerID","playerId","embed","convertToBoolean","videoID","videoId","autoStart","autostart","videoRepeat","repeat","playlistID","playlistId","applicationID","applicationId","poster","videoPosterMobile","videoPoster","hideVideo","accountId","width","el","pp","offset","top","left","outerWidth","height","outerHeight","pageYOffset","innerHeight","pageXOffset","innerWidth","ele","_this2","off","console","log","brightcovePlayerLoader","reset","refNode","refNodeInsert","embedType","media","embedOptions","tagName","unminified","responsive","aspectRatio","maxWidth","options","autoplay","loop","then","success","ref","mediainfo","error","info","controlBar","hide","catch","finally","currentTime","style","backgroundImage","thumbnail","_this3","initPlayer","setup","_get","prototype","init","value","SimpleCarouselComponent","main","prevArrow","nextArrow","navDots","dom","readDOM","matchBreakpoints","importLibrary","initCarousel","interval","_interval","_slicedToArray","minpx","maxpx","bps","activeBreakpoint","split","map","bp","trim","filter","length","reduce","acc","mediaMatch","MEDIA_BREAKPOINTS","_this4","Promise","resolve","reject","moduleLoader","loadCarouselAndExecute","module","_this5","$main","toBoolean","str","def","toNumber","Number","carouselSm","breakpointSMSettings","slidesToShow","slidesToShowSm","dots","dotsSm","arrows","arrowsSm","centerMode","centerModeSm","centerPadding","centerPaddingSm","infinite","infiniteSm","swipeToSlide","swipeToSlideSm","breakpointSM","breakpoint","parseInt","settings","carouselSmDisable","push","carouselMd","breakpointMDSettings","slidesToShowMd","dotsMd","arrowsMd","centerModeMd","centerPaddingMd","infiniteMd","swipeToSlideMd","breakpointMD","carouselMdDisable","carouselLg","breakpointLGSettings","slidesToShowLg","dotsLg","arrowsLg","centerModeLg","centerPaddingLg","infiniteLg","swipeToSlideLg","breakpointLG","carouselLgDisable","fade","autoplaySpeed","slidesToScroll","appendDots","variableWidth","slick","emit","$customEvents","SIMPLE_CAROUSEL","originalEvent","curr","next","beforeChange","_this6","sm","md","lg","xl","CarouselModuleComponent","navWrapper","content","carousel","disabledCarousel","slickInstance","cards","Array","from","querySelectorAll","card","mq","arguments","cardsNumber","isSideContent","isMobileCarousel","mobileCarousel","contains","display","evt","curSlide","nextSlide","toggleArrow","which","enable","elem","toggle","CSS","hidden","toggleElem","prev","PdpExtendedComponent","editorialAreaBefore","editorialAreaAfter","ctx","document","pdpElement","sku","getAttribute","doAjax","type","url","done","resp","renderComponents","fail","xhr","always","html","response","DOMParser","parseFromString","renderHtml","$emit","PRODUCT_EVENTS","editorialcontentloaded","selector","source","target","innerHTML","components","forEach","component","jsComponent","initAsynchCarousel","render","$on","beforeComponents","initComponents","afterComponents","bindExtendedPDP"],"mappings":"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","file":"component-PdpExtendedComponent.chunks.js","sourcesContent":["import Component from '../abstracts/Component';\nimport brightcovePlayerLoader from '@brightcove/player-loader';\n\n/**\n Video brightcove\n */\nexport default class VideoBrightcoveComponent extends Component {\n\n get COMPONENTNAME() {\n return 'VideoBrightcoveComponent';\n }\n\n static get SELECTORS() {\n return {\n videoWrapper: '.brightcove-wrapper',\n videoplayer: 'video-js',\n };\n }\n\n static getOpts(playerElement) {\n let isMobile;\n let data = playerElement.dataset;\n if (data.tabletMobile == 'true') {\n isMobile = window.matchMedia('(max-width:991px)').matches;\n } else {\n isMobile = window.matchMedia('(max-width:767px)').matches;\n }\n return {\n aspectratio:\n isMobile && data.videoMobileId !== ''\n ? data.aspectratioMobile || '16:9'\n : data.aspectratio,\n playerID: data.playerId || 'default',\n embed: data.embed,\n controls: convertToBoolean(data.controls),\n videoID:\n isMobile & (data.videoMobileId !== '')\n ? data.videoMobileId\n : data.videoId,\n autoStart: convertToBoolean(data.autostart),\n startOnScroll: convertToBoolean(data.startOnScroll),\n videoRepeat: convertToBoolean(data.repeat),\n playlistID: data.playlistId,\n applicationID: data.applicationId,\n muted: convertToBoolean(data.muted),\n poster:\n isMobile && data.videoPosterMobile != ''\n ? data.videoPosterMobile\n : data.videoPoster,\n hideVideo: convertToBoolean(data.hideVideo),\n accountId: data.accountId,\n width: data.width || '100%',\n };\n }\n\n static isElementInViewport(el) {\n var pp = $(el).offset();\n var top = pp.top;\n var left = pp.left;\n var width = $(el).outerWidth();\n var height = $(el).outerHeight(true);\n\n return (\n top < window.pageYOffset + window.innerHeight &&\n left < window.pageXOffset + window.innerWidth &&\n top + height > window.pageYOffset &&\n left + width > window.pageXOffset\n );\n }\n\n /**\n *\n * @param myPlayer player from success.ref\n */\n bindEvents(myPlayer) {\n let videoJsEl = this.wrapper.querySelector(\n VideoBrightcoveComponent.SELECTORS.videoplayer\n );\n\n if (videoJsEl) {\n let container = this.wrapper; // container of brightcove player\n let controls = container.querySelector('.custom-controls');\n let showControls = VideoBrightcoveComponent.getOpts(this.wrapper).controls;\n\n if (controls !== null && controls !== undefined) {\n let playControl = controls.querySelector('.custom-play');\n let audioControl = controls.querySelector('.custom-audio');\n // let timeControl = controls.querySelector('.custom-time');\n // let barControl = controls.querySelector('.custom-progress');\n let fullScreenControl = controls.querySelector('.custom-fullscreen');\n if (myPlayer !== undefined && showControls) {\n controls.classList.remove('hide');\n\n // TIME\n // let time = myPlayer.$('.vjs-current-time');\n // timeControl.append(time);\n\n // PROGRESS-BAR\n // let bar = myPlayer.$('.vjs-progress-control');\n // barControl.append(bar);\n\n // PLAY-PAUSE\n // icon play/pause when the video starts\n let isPaused = myPlayer.paused();\n isPaused ? controls.classList.remove('play') : controls.classList.add('play');\n // listen to play/pause video\n myPlayer.on('play', () => {\n controls.classList.add('play');\n });\n myPlayer.on('pause', () => {\n controls.classList.remove('play');\n });\n // play/pause on custom control click\n playControl.addEventListener('click', () => {\n let isPaused = myPlayer.paused();\n if (isPaused) {\n myPlayer.play();\n } else {\n myPlayer.pause();\n }\n });\n\n // AUDIO\n // audio control when the video starts\n let isMuted = myPlayer.muted();\n isMuted ? controls.classList.add('mute') : controls.classList.remove('mute');\n // mute/unmute with custom control click\n audioControl.addEventListener('click', () => {\n isMuted = myPlayer.muted();\n if (isMuted) {\n myPlayer.muted(false);\n controls.classList.remove('mute');\n } else {\n myPlayer.muted(true);\n controls.classList.add('mute');\n }\n });\n //FULLSCREEN\n //enable full screen button\n fullScreenControl.addEventListener('click', () => {\n let isFullScreen = myPlayer.isFullscreen();\n if (isFullScreen) {\n myPlayer.exitFullscreen();\n } else {\n myPlayer.requestFullscreen();\n }\n });\n }\n }\n $(window).on('resize scroll', this.resizeScrollHandler);\n }\n }\n\n resizeScrollHandler(e) {\n let videoJsEl = this.wrapper.querySelector(\n VideoBrightcoveComponent.SELECTORS.videoplayer\n );\n if (videoJsEl) {\n let opts = VideoBrightcoveComponent.getOpts(this.wrapper); // container of brightcove player\n if (this.myPlayer) {\n if (VideoBrightcoveComponent.isElementInViewport(videoJsEl)) {\n if (opts.startOnScroll) {\n this.playVideo();\n }\n } else {\n if (!this.myPlayer.hasClass('vjs-waiting')) {\n this.pauseVideo();\n }\n }\n }\n }\n }\n\n constructor(htmlEl) {\n super(htmlEl);\n this.bindEvents = this.bindEvents.bind(this);\n this.resizeScrollHandler = this.resizeScrollHandler.bind(this);\n this.wrapper = this.$component.querySelector(\n VideoBrightcoveComponent.SELECTORS.videoWrapper\n );\n this.intoGallery = this.wrapper.dataset.intoGallery === 'true';\n this.myPlayer = null;\n }\n initPlayer(ele) {\n $(window).off('resize scroll', this.resizeScrollHandler);\n let opts = VideoBrightcoveComponent.getOpts(this.wrapper),\n videoPoster = '';\n console.log('Init: ', opts);\n\n if (opts.poster) {\n videoPoster = opts.poster;\n }\n\n brightcovePlayerLoader.reset();\n\n //https://support.brightcove.com/brightcove-player-loader\n // https://docs.brightcove.com/brightcove-player/1.x/Player.html\n\n brightcovePlayerLoader({\n refNode: this.wrapper,\n refNodeInsert: 'prepend', //prepend because of custom controls into wrapper\n accountId: opts.accountId, //required - A Video Cloud account ID\n playerId: opts.playerID, //required\n videoId: opts.videoID,\n embedType: opts.embed, //in-page or iframe\n applicationId: opts.applicationID, // The application ID to be applied to the generated embed.\n media: opts.media,\n embedOptions: {\n tagName: 'video-js', // video-js or video - default is video-js\n unminified: false, // for debugging: use the un-minified version of the player\n responsive: {\n aspectRatio: opts.aspectratio,\n maxWidth: opts.width,\n },\n },\n options: {\n autoplay: convertToBoolean(opts.autoStart),\n controls: convertToBoolean(opts.controls),\n loop: convertToBoolean(opts.videoRepeat),\n muted: convertToBoolean(opts.muted),\n poster: videoPoster,\n },\n })\n .then(success => {\n this.myPlayer = success.ref;\n if (opts.poster) {\n videoPoster = opts.poster;\n } else {\n videoPoster = this.myPlayer.mediainfo.poster;\n }\n\n this.myPlayer.on('error', error => {\n console.info('[Video Brightcove] error general', error);\n });\n\n this.myPlayer.on('loadstart', () => {\n this.myPlayer.poster(videoPoster);\n });\n\n this.myPlayer.on('loadedmetadata', () => {\n console.log('[Video Brightcove] loadedmetadata');\n\n if (!opts.controls) {\n this.myPlayer.controlBar.hide();\n }\n\n if (opts.autoStart) {\n let playVideo = this.myPlayer.play(); // Browser/platform autoplay policies - https://support.brightcove.com/autoplay-considerations\n\n if (playVideo !== undefined) {\n // check if the video played, otherwise I'll put the video on mute\n playVideo\n .then(() => {\n this.myPlayer.muted(opts.muted);\n })\n .catch(() => {\n this.myPlayer.muted(true);\n })\n .finally(() => {\n console.info('autostart', opts.autoStart);\n\n if (\n VideoBrightcoveComponent.isElementInViewport(this.wrapper)\n ) {\n this.myPlayer.currentTime(0);\n this.myPlayer.play();\n } else {\n this.myPlayer.pause();\n }\n });\n }\n }\n });\n\n this.myPlayer.on('loadeddata', () => {\n console.log('[Video Brightcove] loadeddata');\n this.bindEvents(this.myPlayer);\n });\n\n this.myPlayer.on('ended', () => {\n if (opts.hideVideo) {\n this.wrapper.style.backgroundImage = `url('${\n this.wrapper.dataset.videoPoster\n }')`;\n this.myPlayer.hide();\n } else {\n this.myPlayer.currentTime(0);\n }\n\n console.log('[Video Brightcove] ended player ');\n console.info('opts.poster', opts.poster);\n console.info('media', this.myPlayer.mediainfo.poster);\n console.info('media', this.myPlayer.mediainfo.thumbnail);\n });\n })\n .catch(error => {\n console.info('[Video Brightocove] Loading faild', error);\n });\n }\n\n muteVideo() {\n if (this.myPlayer) {\n this.myPlayer.muted(true);\n //TODO: set mute control respective state class\n }\n }\n\n playVideo() {\n //console.log('PLAY ', this);\n if (this.myPlayer) {\n this.myPlayer\n .play()\n .then(() => {\n this.myPlayer.play();\n })\n .catch(error => {\n this.myPlayer.muted(true);\n this.myPlayer.play();\n });\n }\n }\n\n pauseVideo() {\n //console.log('PAUSE', this);\n if (this.myPlayer) {\n this.myPlayer.pause();\n }\n }\n\n setup() {\n if (this.wrapper) {\n this.initPlayer(this.wrapper);\n }\n }\n\n init() {\n // BrightCove: https://github.com/brightcove/player-loader\n this.setup();\n }\n\n render() {\n super.render();\n this.init();\n }\n}\n\nfunction convertToBoolean(value) {\n if(typeof value === \"boolean\") {\n return value;\n }\n if(typeof value === \"string\" && value === \"true\") {\n return true;\n }\n return false;\n}\n","import Component from \"../abstracts/Component\";\nimport MEDIA_BREAKPOINTS from '../utils/mediaBreakpoints';\n\nexport default class SimpleCarouselComponent extends Component {\n\n get COMPONENTNAME() {\n return 'SimpleCarouselComponent';\n }\n\n get SELECTORS() {\n return {\n main: '[data-carousel=\"true\"]:not(.slick-initialized)',\n prevArrow: '[data-prev-arrow]',\n nextArrow: '[data-next-arrow]',\n navDots: '[data-nav-dots]',\n };\n }\n\n constructor(htmlEl) {\n super(htmlEl);\n }\n\n render() {\n super.render();\n this.dom = this.readDOM();\n\n if (!this.dom.main || !this.matchBreakpoints()) return;\n\n this.importLibrary().then(() => {\n this.initCarousel();\n });\n }\n\n mediaMatch(interval) {\n const [minpx, maxpx] = interval;\n return window.matchMedia(`screen and (min-width: ${minpx}px) and (max-width: ${maxpx}px)`).matches;\n }\n\n matchBreakpoints() {\n const bps = (this.$component.dataset.activeBreakpoint || '')\n .split(',')\n .map(bp => bp.trim())\n .filter(bp => bp);\n\n if (!bps.length) return true;\n\n return bps.reduce((acc, bp) => {\n return acc || this.mediaMatch(MEDIA_BREAKPOINTS[bp]);\n }, false);\n }\n\n importLibrary() {\n return new Promise((resolve, reject) => {\n this.moduleLoader.loadCarouselAndExecute(\n module => { resolve(module) },\n error => { reject(error) }\n );\n })\n }\n\n readDOM() {\n return {\n main: this.$component.querySelector(this.SELECTORS.main),\n prevArrow: this.$component.querySelector(this.SELECTORS.prevArrow),\n nextArrow: this.$component.querySelector(this.SELECTORS.nextArrow),\n navDots: this.$component.querySelector(this.SELECTORS.navDots),\n }\n }\n\n initCarousel() {\n const $main = $(this.dom.main);\n const toBoolean = (str, def) => str !== undefined ? str === 'true' : def;\n const toNumber = (str, def) => str !== undefined ? Number(str) : def;\n\n // responsive json\n let responsive = [];\n // breakpoints settings to add only if active\n // SM\n if (typeof this.dom.main.dataset.carouselSm !== 'undefined' ) {\n const breakpointSMSettings = {\n slidesToShow: toNumber(this.dom.main.dataset.slidesToShowSm, 1),\n dots: toBoolean(this.dom.main.dataset.dotsSm, true),\n arrows: toBoolean(this.dom.main.dataset.arrowsSm, true),\n centerMode: toBoolean(this.dom.main.dataset.centerModeSm, false),\n centerPadding: this.dom.main.dataset.centerPaddingSm,\n infinite: toBoolean(this.dom.main.dataset.infiniteSm, true),\n swipeToSlide: toBoolean(this.dom.main.dataset.swipeToSlideSm, false)\n };\n const breakpointSM = {\n breakpoint: (this.dom.main.dataset.carouselSm !== '') ? parseInt(this.dom.main.dataset.carouselSm,10) : 375,\n settings: (toBoolean(this.dom.main.dataset.carouselSmDisable, false) ? \"unslick\" : breakpointSMSettings)\n };\n responsive.push(breakpointSM);\n }\n // MD\n if (typeof this.dom.main.dataset.carouselMd !== 'undefined' ) {\n let breakpointMDSettings = {\n slidesToShow: toNumber(this.dom.main.dataset.slidesToShowMd, 1),\n dots: toBoolean(this.dom.main.dataset.dotsMd, true),\n arrows: toBoolean(this.dom.main.dataset.arrowsMd, true),\n centerMode: toBoolean(this.dom.main.dataset.centerModeMd, false),\n centerPadding: this.dom.main.dataset.centerPaddingMd,\n infinite: toBoolean(this.dom.main.dataset.infiniteMd, true),\n swipeToSlide: toBoolean(this.dom.main.dataset.swipeToSlideMd, false)\n };\n let breakpointMD = {\n breakpoint: (this.dom.main.dataset.carouselMd !== '') ? parseInt(this.dom.main.dataset.carouselMd,10) : 768,\n settings: (toBoolean(this.dom.main.dataset.carouselMdDisable, false) ? \"unslick\" : breakpointMDSettings)\n };\n responsive.push(breakpointMD);\n }\n // LG\n if (typeof this.dom.main.dataset.carouselLg !== 'undefined' ) {\n const breakpointLGSettings = {\n slidesToShow: toNumber(this.dom.main.dataset.slidesToShowLg, 1),\n dots: toBoolean(this.dom.main.dataset.dotsLg, true),\n arrows: toBoolean(this.dom.main.dataset.arrowsLg, true),\n centerMode: toBoolean(this.dom.main.dataset.centerModeLg, false),\n centerPadding: this.dom.main.dataset.centerPaddingLg,\n infinite: toBoolean(this.dom.main.dataset.infiniteLg, true),\n swipeToSlide: toBoolean(this.dom.main.dataset.swipeToSlideLg, false)\n };\n const breakpointLG = {\n breakpoint: (this.dom.main.dataset.carouselLg !== '') ? parseInt(this.dom.main.dataset.carouselLg,10) : 992,\n settings: (toBoolean(this.dom.main.dataset.carouselLgDisable, false) ? \"unslick\" : breakpointLGSettings)\n };\n responsive.push(breakpointLG);\n }\n // all options\n let opts = {\n dots: toBoolean(this.dom.main.dataset.dots, true),\n fade: toBoolean(this.dom.main.dataset.fade, false),\n centerMode: toBoolean(this.dom.main.dataset.centerMode, false),\n arrows: toBoolean(this.dom.main.dataset.arrows, true),\n autoplay: toBoolean(this.dom.main.dataset.autoplay, true),\n infinite: toBoolean(this.dom.main.dataset.infinite, true),\n autoplaySpeed: toNumber(this.dom.main.dataset.autoplaySpeed, 3000),\n slidesToShow: toNumber(this.dom.main.dataset.slidesToShow, 1),\n slidesToScroll: toNumber(this.dom.main.dataset.slidesToScroll, 1),\n prevArrow: this.dom.prevArrow,\n nextArrow: this.dom.nextArrow,\n appendDots: this.dom.navDots ? this.dom.navDots : this.dom.main,\n variableWidth: toBoolean(this.dom.main.dataset.variableWidth, false),\n swipeToSlide: toBoolean(this.dom.main.dataset.swipeToSlide, false),\n responsive: responsive\n }\n\n if (typeof this.dom.main.dataset.centerPadding !== 'undefined' ) opts.centerPadding = this.dom.main.dataset.centerPadding;\n\n $main.on('init', (e, slick) => {\n this.emit(this.$customEvents.SIMPLE_CAROUSEL.init, {originalEvent: e, slick});\n });\n\n $main.on('beforeChange', (e, slick, curr, next) => {\n this.emit(this.$customEvents.SIMPLE_CAROUSEL.beforeChange, {originalEvent: e, slick, curr, next});\n });\n console.log('[SimpleCarouselComponent]',opts);\n $main.slick(opts);\n }\n\n initAsynchCarousel() {\n this.dom = this.readDOM();\n this.importLibrary().then(() => {\n this.initCarousel();\n });\n }\n}\n","const MEDIA_BREAKPOINTS = {\n sm: [0, 767],\n md: [768, 991],\n lg: [992, 1279],\n xl: [1280, 99999],\n};\n\nexport default MEDIA_BREAKPOINTS;","import Component from \"../abstracts/Component\";\n\n\nexport default class CarouselModuleComponent extends Component {\n get COMPONENTNAME() {\n return 'CarouselModuleComponent';\n }\n\n get SELECTORS() {\n return {\n main: '[data-carousel=\"true\"]:not(.slick-initialized)',\n navWrapper: '[data-nav-wrapper]',\n prevArrow: '[data-nav-wrapper] [data-prev-arrow]',\n nextArrow: '[data-nav-wrapper] [data-next-arrow]',\n navDots: '[data-nav-wrapper] [data-nav-dots]',\n card: '[data-card]',\n content: '[data-content]',\n carousel: '[data-is-carousel=\"true\"]',\n disabledCarousel: '[data-is-carousel=\"false\"]',\n };\n }\n\n get CSS() {\n return {\n hidden: '--hidden',\n };\n }\n\n importLibrary() {\n return new Promise((resolve, reject) => {\n this.moduleLoader.loadCarouselAndExecute(\n module => { resolve(module) },\n error => { reject(error) }\n );\n });\n }\n\n readDOM() {\n return {\n main: this.$component.querySelector(this.SELECTORS.main),\n navWrapper: this.$component.querySelector(this.SELECTORS.navWrapper),\n prevArrow: this.$component.querySelector(this.SELECTORS.prevArrow),\n nextArrow: this.$component.querySelector(this.SELECTORS.nextArrow),\n navDots: this.$component.querySelector(this.SELECTORS.navDots),\n // cards: Array.from(this.$component.querySelectorAll(this.SELECTORS.card)),\n content: this.$component.querySelector(this.SELECTORS.content),\n carousel: this.$component.querySelector(this.SELECTORS.carousel),\n disabledCarousel: this.$component.querySelector(this.SELECTORS.disabledCarousel),\n }\n }\n\n render() {\n super.render();\n\n this.slickInstance = null;\n this.dom = this.readDOM();\n\n if (!this.dom.main) return;\n\n // must be before slick is initialized and clones cards\n const cards = Array.from(this.dom.carousel.querySelectorAll(this.SELECTORS.card))\n\n this.importLibrary().then(() => {\n const mq = window.matchMedia('screen and (max-width: 767px)');\n this.initCarousel(mq.matches, cards.length);\n mq.addEventListener('change', (e) => {\n this.initCarousel(e.matches, cards.length);\n });\n });\n }\n\n initCarousel(isMobile = false, cardsNumber = 0) {\n\n const isSideContent = this.dom.content && this.dom.content.dataset.content === 'side';\n const isMobileCarousel = this.$component.dataset.mobileCarousel === 'true';\n\n const opts = {\n dots: true,\n arrows: true,\n autoplay: false,\n swipeToSlide: true,\n centerMode: true,\n variableWidth: false,\n slidesToScroll: 1,\n infinite: !isSideContent,\n slidesToShow: isSideContent ? 2 : 3,\n centerPadding: '12.50%',\n\n prevArrow: this.dom.prevArrow,\n nextArrow: this.dom.nextArrow,\n appendDots: this.dom.navDots,\n\n responsive: [\n {\n breakpoint: 768,\n settings: {\n slidesToShow: 2,\n infinite: true,\n dots: true,\n arrows: true,\n autoplay: false,\n swipeToSlide: true,\n centerMode: true,\n variableWidth: false,\n centerPadding: '12.50%',\n }\n },\n ],\n }\n\n const isInitialized = this.dom.main.classList.contains('slick-initialized')\n if (!isInitialized) {\n this.slickInstance = $(this.dom.main).slick(opts)\n }\n\n\n // fix slick \"responsivness\"\n // don't initialize carousel if (ORs):\n // - desktop: text is top and viewport is >= md and there are <= 4 card\n // - mobile: flag is unchecked\n // in both cases, skip init only if already is not initialized in order to\n // not break responsivness\n\n // WARN: `unslick` removes slides from the dom, it doesn't just disable the carousel\n // const isInitialized = this.dom.main.classList.contains('slick-initialized')\n const mobileCarouselEnabled = isMobile && isMobileCarousel;\n const hasEnoughDesktopCards = !isMobile && !isSideContent && cardsNumber > 4;\n const isDesktopSideContent = !isMobile && isSideContent;\n if (isDesktopSideContent || hasEnoughDesktopCards || mobileCarouselEnabled) {\n this.dom.carousel.style.display = \"block\"\n this.dom.disabledCarousel.style.display = \"none\"\n } else {\n this.dom.carousel.style.display = \"none\"\n this.dom.disabledCarousel.style.display = \"block\"\n }\n\n if (isSideContent && this.slickInstance) {\n this.slickInstance.on('beforeChange', (evt, slick, curSlide, nextSlide) => {\n if (slick.options.infinite) return;\n\n // phantom slide, so we start from one\n if (nextSlide === 1) {\n this.toggleArrow('prev', false);\n } else if (nextSlide === cardsNumber - 1) {\n this.toggleArrow('next', false);\n } else {\n this.toggleArrow('prev', true);\n this.toggleArrow('next', true);\n }\n });\n\n this.slickInstance.slick('slickGoTo', 1);\n }\n\n }\n\n toggleArrow(which, enable) {\n const toggleElem = elem => {\n elem.classList.toggle(this.CSS.hidden, !enable);\n }\n\n const arrows = {\n prev: this.dom.prevArrow,\n next: this.dom.nextArrow,\n };\n\n toggleElem(arrows[which]);\n }\n}","import Component from '../abstracts/Component';\nimport { doAjax } from '../utils/ajaxUtil';\nimport SimpleCarouselComponent from \"./SimpleCarouselComponent\";\nimport CarouselModuleComponent from \"./CarouselModuleComponent\";\nimport VideoBrightcoveComponent from \"./VideoBrightcoveComponent\";\n\nexport default class PdpExtendedComponent extends Component {\n\n get SELECTORS() {\n return {\n main: '.js-addtocart',\n editorialAreaBefore: '[data-editorial-content-before]',\n editorialAreaAfter: '[data-editorial-content-after]',\n }\n }\n\n constructor() {\n super();\n }\n\n bindExtendedPDP() {\n // general\n let ctx = this;\n // vars\n let elem = document.querySelector('.jsToBagBtn');\n let pdpElement = document.querySelector('.c-pdp-main');\n //\n if(elem != null) {\n //const sku = document.querySelector('.jsToBagBtn').dataset.productCode\n const sku = pdpElement.getAttribute('data-product-code');\n doAjax({\n type: 'POST',\n url: '/action/ajax/specialpdpcheck',\n data: {\n sku: sku\n }\n })\n .done(resp => {\n if(resp) {\n doAjax({\n type: 'POST',\n url: '/action/ajax/specialpdp',\n data: {\n sku: sku\n }\n })\n .done(resp => {\n // render the components\n ctx.renderComponents(resp);\n })\n .fail(xhr => {\n this.log('Related page not found');\n })\n .always((xhr) => {\n // no action\n });\n }\n })\n .fail(xhr => {\n this.log('Related page not found');\n })\n .always((xhr) => {\n // no action\n });\n }\n }\n\n renderComponents(html) {\n // parse the html\n let response = new DOMParser().parseFromString(html, 'text/html');\n //\n this.renderHtml(response,this.SELECTORS.editorialAreaBefore);\n this.renderHtml(response,this.SELECTORS.editorialAreaAfter);\n // launch event\n this.$emit(this.$customEvents.PRODUCT_EVENTS.editorialcontentloaded,{});\n }\n\n // render results\n renderHtml(response,selector) {\n // html response\n let source = response.querySelector(selector);\n let target = document.querySelector(selector);\n // update the html\n if(typeof source !== 'undefined' && source != null && typeof target !== 'undefined' && target != null ) {\n target.innerHTML = source.innerHTML;\n }\n }\n\n initComponents(components) {\n if (components !== null && components.length > 0 ) {\n components.forEach(component => {\n if (!component.classList.contains('component-loaded')) {\n // video\n if (component.dataset.jsComponent === 'VideoBrightcoveComponent') {\n let instance = new VideoBrightcoveComponent(component);\n instance.init();\n }\n // SimpleCarouselComponent\n if (component.dataset.jsComponent === 'SimpleCarouselComponent') {\n let instance = new SimpleCarouselComponent(component);\n instance.initAsynchCarousel();\n }\n // CarouselModuleComponent\n if (component.dataset.jsComponent === 'CarouselModuleComponent') {\n let instance = new CarouselModuleComponent(component);\n instance.render();\n }\n }\n });\n }\n }\n\n bindEvents() {\n //\n let ctx = this;\n //\n this.$on(this.$customEvents.PRODUCT_EVENTS.editorialcontentloaded, () => {\n // before area :scope >\n let beforeArea = document.querySelector(this.SELECTORS.editorialAreaBefore);\n let beforeComponents = beforeArea.querySelectorAll(\"[data-js-component]\");\n //\n ctx.initComponents(beforeComponents);\n // after area\n let afterArea = document.querySelector(this.SELECTORS.editorialAreaAfter);\n let afterComponents = afterArea.querySelectorAll(\"[data-js-component]\");\n //\n ctx.initComponents(afterComponents);\n });\n\n }\n\n render() {\n this.log('Rendering...');\n // main pdp function\n this.bindExtendedPDP();\n // events for components\n this.bindEvents();\n }\n\n}\n"],"sourceRoot":""}