{"version":3,"sources":["webpack:///./src/js/utils/slider.js","webpack:///./src/js/components/gallery-slider.js"],"names":["hideFocusableElementsinSlide","$slide","_$$","focusableElements","forEach","$element","setAttribute","disableFocusOnHiddenSlides","$slides","$selectedSlide","find","classList","contains","removeAttribute","getGenericSliderConfig","element","heading","textDefault","arguments","length","undefined","slides","querySelectorAll","pager","querySelector","prevButton","nextButton","a11y","enabled","nextSlideMessage","concat","textContent","replace","trim","prevSlideMessage","paginationBulletMessage","keyboard","onlyInViewport","watchSlidesProgress","watchSlidesVisibility","slideToClickedSlide","observer","allowTouchMove","pagination","dynamicBullets","clickable","el","bulletClass","bulletActiveClass","modifierClass","navigation","nextEl","prevEl","watchOverflow","getVideoId","index","GallerySlider","_Component","_classCallCheck","_callSuper","_inherits","key","value","this","dom","$heading","_$","$swiperContainer","$mediaWrappers","$figureCaptions","$activeCaption","$desktopPagination","swiper","addVideoPlayers","initSlider","updatePagination","updateFocusableElements","_this","_on","playVideo","bind","on","hideCaption","handleTransitionEnd","isIE","handleVideoPause","_this2","_this2$dom$getVideoId","_this2$dom$getVideoId2","getState","pause","showCaption","_this$dom","Swiper","slideActiveClass","spaceBetween","breakpoints","tablet","init","remove","add","event","$wrapper","target","closest","findIndex","$mW","$button","$image","$video","$iframe","src","_this$dom$getVideoId","play","removeChild","_this3","$mediaWrapper","_$mediaWrapper$datase","dataset","playButtonLabel","videoId","videoTitle","insertAdjacentHTML","getIeIframe","getPlayButton","then","module","YTPlayer","default","_$mediaWrapper$datase2","getIframe","related","modestBranding","host","load","newCaptionNode","innerHTML","_this$dom2","currentSlideIndex","Array","from","includes","Component"],"mappings":"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","file":"37.bb305a.js","sourcesContent":["/* eslint-disable indent */\r\nimport breakpoints from './breakpoints';\r\nimport focusableElements from './focusable-elements';\r\n\r\nconst hideFocusableElementsinSlide = ($slide) => {\r\n const $focusableElements = $slide._$$(focusableElements);\r\n $focusableElements.forEach(($element) =>\r\n $element.setAttribute('tabindex', '-1')\r\n );\r\n};\r\n\r\nconst showFocusableElementsinSlide = ($slide) => {\r\n const $focusableElements = $slide._$$(focusableElements);\r\n $focusableElements.forEach(($element) =>\r\n $element.removeAttribute('tabindex')\r\n );\r\n};\r\n\r\nexport const disableFocusOnHiddenSlides = ($slides) => {\r\n $slides.forEach(hideFocusableElementsinSlide);\r\n const $selectedSlide = $slides.find(($slide) =>\r\n $slide.classList.contains('swiper-slide-active')\r\n );\r\n showFocusableElementsinSlide($selectedSlide);\r\n};\r\n\r\nexport const getGenericSliderConfig = (element, heading, textDefault = '') => {\r\n const slides = element.querySelectorAll('.swiper-slide');\r\n const pager = element.querySelector('.swiper-pagination');\r\n const prevButton = element.querySelector('.swiper-button-prev');\r\n const nextButton = element.querySelector('.swiper-button-next');\r\n\r\n return {\r\n a11y: {\r\n enabled: true,\r\n nextSlideMessage: `Go to ${\r\n heading\r\n ? `${heading.textContent\r\n .replace(/(\\r\\n|\\n|\\r)/gm, '')\r\n .replace(/\\s+/g, ' ')\r\n .trim()}`\r\n : textDefault\r\n } next slide`,\r\n prevSlideMessage: `Go to ${\r\n heading\r\n ? `${heading.textContent\r\n .replace(/(\\r\\n|\\n|\\r)/gm, '')\r\n .replace(/\\s+/g, ' ')\r\n .trim()}`\r\n : textDefault\r\n } previous slide`,\r\n paginationBulletMessage: `Go to ${\r\n heading\r\n ? `${heading.textContent\r\n .replace(/(\\r\\n|\\n|\\r)/gm, '')\r\n .replace(/\\s+/g, ' ')\r\n .trim()}`\r\n : textDefault\r\n } slide {{index}} of ${slides.length}`\r\n },\r\n keyboard: {\r\n enabled: true,\r\n onlyInViewport: true\r\n },\r\n watchSlidesProgress: true,\r\n watchSlidesVisibility: true,\r\n slideToClickedSlide: false,\r\n observer: true,\r\n allowTouchMove: true,\r\n pagination: {\r\n dynamicBullets: true,\r\n clickable: true,\r\n el: pager,\r\n bulletClass: 'swiper-bullet',\r\n bulletActiveClass: 'swiper-bullet--active',\r\n modifierClass: 'swiper-bullet--'\r\n },\r\n navigation: {\r\n nextEl: nextButton,\r\n prevEl: prevButton\r\n },\r\n watchOverflow: true\r\n };\r\n};\r\n","import { Component } from '@verndale/core';\r\nimport Swiper from 'swiper/js/swiper';\r\n\r\nimport breakpoints from '../utils/breakpoints';\r\nimport { disableFocusOnHiddenSlides } from '../utils/slider';\r\nimport { isIE } from '../utils/browsers';\r\n\r\nfunction getVideoId(index) {\r\n return `video-${index}`;\r\n}\r\n\r\nconst IS_PLAYING = 'playing';\r\n\r\nclass GallerySlider extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n $heading: this.el._$('h2'),\r\n $swiperContainer: this.el._$('.swiper-container'),\r\n $mediaWrappers: this.el._$$('.gallery-figure__media-wrapper'),\r\n $figureCaptions: this.el._$$('.gallery-figure__caption'),\r\n $activeCaption: this.el._$('.gallery-slider__caption'),\r\n $slides: this.el._$$('.swiper-slide'),\r\n $desktopPagination: this.el._$('.swiper-pagination--desktop')\r\n };\r\n\r\n this.swiper = null;\r\n this.addVideoPlayers();\r\n this.initSlider();\r\n this.updatePagination();\r\n this.updateFocusableElements();\r\n }\r\n\r\n addListeners() {\r\n this.dom.$mediaWrappers._on('click', ::this.playVideo);\r\n if (this.swiper) {\r\n this.swiper.on('slideChangeTransitionStart', ::this.hideCaption);\r\n this.swiper.on('slideChangeTransitionEnd', () => {\r\n this.handleTransitionEnd();\r\n if (!isIE) {\r\n this.handleVideoPause();\r\n }\r\n });\r\n }\r\n }\r\n\r\n handleVideoPause() {\r\n const { $slides } = this.dom;\r\n\r\n $slides.forEach(($slide, index) => {\r\n const isActive = $slide.classList.contains('swiper-slide-active');\r\n\r\n if (!isActive && this.dom[getVideoId(index)]?.getState() === IS_PLAYING) {\r\n this.dom[getVideoId(index)]?.pause();\r\n }\r\n });\r\n }\r\n\r\n handleTransitionEnd() {\r\n this.showCaption();\r\n this.updatePagination();\r\n }\r\n\r\n initSlider() {\r\n const { $swiperContainer, $slides, $heading } = this.dom;\r\n\r\n this.swiper = new Swiper($swiperContainer, {\r\n a11y: {\r\n enabled: true,\r\n nextSlideMessage: `Go to ${\r\n $heading\r\n ? `${$heading.textContent.replace(/(\\r\\n|\\n|\\r)/gm, '').trim()}`\r\n : ''\r\n } next slide`,\r\n prevSlideMessage: `Go to ${\r\n $heading\r\n ? `${$heading.textContent.replace(/(\\r\\n|\\n|\\r)/gm, '').trim()}`\r\n : ''\r\n } previous slide`\r\n },\r\n slideActiveClass: 'swiper-slide-active swiper-slide-visible',\r\n watchSlidesProgress: true,\r\n watchOverflow: true,\r\n spaceBetween: 5,\r\n keyboard: {\r\n enabled: true\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev'\r\n },\r\n pagination: {\r\n dynamicBullets: true,\r\n clickable: true,\r\n el: '.swiper-pagination',\r\n bulletClass: 'swiper-bullet',\r\n bulletActiveClass: 'swiper-bullet--active',\r\n modifierClass: 'swiper-bullet--'\r\n },\r\n breakpoints: {\r\n [breakpoints.tablet]: {\r\n spaceBetween: 0,\r\n watchSlidesProgress: true,\r\n slideActiveClass: 'swiper-slide-active swiper-slide-visible'\r\n }\r\n },\r\n on: {\r\n init() {\r\n $swiperContainer.classList.remove('loading');\r\n $swiperContainer.classList.add('loaded');\r\n }\r\n }\r\n });\r\n this.showCaption();\r\n }\r\n\r\n playVideo(event) {\r\n const { $mediaWrappers } = this.dom;\r\n const $wrapper = event.target.closest('.gallery-figure__media-wrapper');\r\n const index = $mediaWrappers.findIndex(($mW) => $mW === $wrapper);\r\n const $button = $wrapper._$('.gallery-figure__play-button');\r\n const $image = $wrapper._$('.gallery-figure__image');\r\n const $video = $wrapper._$('.gallery-figure__video');\r\n\r\n if (!$button) return;\r\n\r\n if (isIE) {\r\n const $iframe = $wrapper._$('iframe');\r\n\r\n $iframe.src = `${$iframe.src}?autoplay=1`;\r\n $iframe.removeAttribute('tabindex');\r\n } else {\r\n this.dom[getVideoId(index)]?.play();\r\n }\r\n $video.removeAttribute('style');\r\n $wrapper.removeChild($image);\r\n $wrapper.removeChild($button);\r\n }\r\n\r\n addVideoPlayers() {\r\n if (isIE) {\r\n this.dom.$mediaWrappers.forEach(($mediaWrapper, index) => {\r\n const { playButtonLabel, videoId, videoTitle } = $mediaWrapper.dataset;\r\n\r\n if (!videoId) return;\r\n\r\n $mediaWrapper.insertAdjacentHTML(\r\n 'afterbegin',\r\n this.getIeIframe(videoId, videoTitle)\r\n );\r\n $mediaWrapper.insertAdjacentHTML(\r\n 'beforeend',\r\n this.getPlayButton(playButtonLabel)\r\n );\r\n });\r\n } else {\r\n import('yt-player').then((module) => {\r\n const YTPlayer = module.default;\r\n this.dom.$mediaWrappers.forEach(($mediaWrapper, index) => {\r\n const { playButtonLabel, videoId } = $mediaWrapper.dataset;\r\n\r\n if (!videoId) return;\r\n\r\n $mediaWrapper.insertAdjacentHTML('afterbegin', this.getIframe(index));\r\n $mediaWrapper.insertAdjacentHTML(\r\n 'beforeend',\r\n this.getPlayButton(playButtonLabel)\r\n );\r\n\r\n const element = this.el._$(`.gallery-figure__video-${index}`);\r\n\r\n this.dom[getVideoId(index)] = new YTPlayer(element, {\r\n related: false,\r\n modestBranding: true,\r\n host: '//youtube.com'\r\n });\r\n this.dom[getVideoId(index)].load(videoId);\r\n });\r\n });\r\n }\r\n }\r\n\r\n getIeIframe(videoId, videoTitle) {\r\n return `\r\n