{"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":""}