{"version":3,"sources":["webpack:///./src/js/utils/slider.js","webpack:///./src/js/components/highlighted-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","HighlightedSlider","_Component","_classCallCheck","_callSuper","_inherits","key","value","this","dom","$heading","_$","$cards","$swiperContainer","$swiperWrapper","swiper","addHashes","handleViewport","handleCardHeight","breakpoints","addBreakpointListenerLg","bind","window","_on","_this$dom","isLg","remove","add","destroy","initSlider","maxCardsHeight","Math","max","apply","_toConsumableArray","map","card","offsetHeight","style","height","slide","dataset","hash","nanoid","_this$dom2","Swiper","_objectSpread","spaceBetween","slidesPerView","_defineProperty","tablet","lg","on","init","Component"],"mappings":"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","file":"39.3bdc5f.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\nimport { nanoid } from 'nanoid';\r\n\r\nimport breakpoints from '../utils/breakpoints';\r\nimport { getGenericSliderConfig } from '../utils/slider';\r\n\r\nclass HighlightedSlider extends Component {\r\n setupDefaults() {\r\n this.dom = {\r\n $heading: this.el._$('h2'),\r\n $cards: this.el._$$('.home-highlighted__card'),\r\n $slides: this.el._$$('.swiper-slide'),\r\n $swiperContainer: this.el._$('.swiper-container'),\r\n $swiperWrapper: this.el._$('.swiper-wrapper')\r\n };\r\n\r\n this.swiper = null;\r\n this.addHashes();\r\n this.handleViewport();\r\n this.handleCardHeight();\r\n }\r\n\r\n addListeners() {\r\n breakpoints.addBreakpointListenerLg(::this.handleViewport);\r\n window._on('resize', ::this.handleCardHeight);\r\n }\r\n\r\n handleViewport() {\r\n const { $swiperWrapper, $swiperContainer, $slides } = this.dom;\r\n\r\n if (breakpoints.isLg()) {\r\n $swiperContainer.classList.remove('loading');\r\n $swiperContainer.classList.add('loaded');\r\n if (this.swiper) {\r\n this.swiper.destroy(true, true);\r\n this.swiper = null;\r\n $swiperWrapper.removeAttribute('style');\r\n }\r\n } else {\r\n this.initSlider();\r\n }\r\n }\r\n\r\n handleCardHeight() {\r\n const { $cards } = this.dom;\r\n const maxCardsHeight = Math.max(...$cards.map((card) => card.offsetHeight));\r\n\r\n if (breakpoints.isLg()) {\r\n $cards.forEach((card) => (card.style.height = `${maxCardsHeight}px`));\r\n } else {\r\n $cards.forEach((card) => (card.style.height = ''));\r\n }\r\n }\r\n\r\n addHashes() {\r\n const { $slides } = this.dom;\r\n\r\n $slides.forEach((slide) => (slide.dataset.hash = `id-${nanoid()}`));\r\n }\r\n\r\n initSlider() {\r\n const { $swiperContainer, $heading } = this.dom;\r\n const element = this.el;\r\n\r\n this.swiper = new Swiper($swiperContainer, {\r\n ...getGenericSliderConfig(element, $heading),\r\n spaceBetween: 24,\r\n slidesPerView: 1,\r\n breakpoints: {\r\n [breakpoints.tablet]: {\r\n slidesPerView: 2,\r\n spaceBetween: 32\r\n },\r\n [breakpoints.lg]: {\r\n slidesPerView: 2,\r\n spaceBetween: 25\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 }\r\n}\r\n\r\nexport default HighlightedSlider;\r\n"],"sourceRoot":""}