{"version":3,"file":"zoomv.332.min.js?t=93f833dbbecc9f99ea17","mappings":"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","sources":["webpack://@hero-digital/zoom/./src/components/components/Carousels/CardCarousel/CardCarousel.js"],"sourcesContent":["import { getURLParameter } from '../../../../js/utilities/utilities'\r\n\r\nconst CARD_CURRENT = '--card-current'\r\nconst CARD_COUNT = '--card-count'\r\nconst CARD_ANIMATION_DURATION = '--card-animation-duration'\r\nconst THRESHOLD = 10\r\n\r\nclass CardCarousel {\r\n _moving = false\r\n\r\n constructor(el) {\r\n this.el = el\r\n this.nextBtn = this.el.querySelector('.card-list-navigation .card-next')\r\n this.prevBtn = this.el.querySelector('.card-list-navigation .card-previous')\r\n this.cardCurrent = 0\r\n this.cardCount = 0\r\n this.animationDuration = 0\r\n\r\n this._setInitialVariables()\r\n this._updateButtons()\r\n this._registerNavigation()\r\n }\r\n\r\n nextCard(e) {\r\n this._updateCurrentCard(1)\r\n }\r\n\r\n prevCard(e) {\r\n this._updateCurrentCard(-1)\r\n }\r\n\r\n _updateButtons() {\r\n this.prevBtn[this.cardCurrent === 0 ? 'setAttribute' : 'removeAttribute'](\r\n 'disabled',\r\n true\r\n )\r\n this.nextBtn[\r\n this.cardCurrent === this.cardCount - 1\r\n ? 'setAttribute'\r\n : 'removeAttribute'\r\n ]('disabled', true)\r\n }\r\n\r\n _updateCurrentCard(shift) {\r\n const newCurrent = Math.min(\r\n Math.max(0, this.cardCurrent + shift),\r\n this.cardCount - 1\r\n )\r\n if (this.cardCurrent !== newCurrent) {\r\n this._setCurrentCard(newCurrent)\r\n }\r\n }\r\n\r\n _setCurrentCard(newCurrent) {\r\n this._startMoving()\r\n this.cardCurrent = newCurrent\r\n this._updateButtons()\r\n this.el.style.setProperty(CARD_CURRENT, '' + this.cardCurrent)\r\n const card = this.el.querySelector(\r\n '.card-item:nth-of-type(' + (this.cardCurrent + 1) + ')'\r\n )\r\n card.contentEditable = true\r\n card.focus()\r\n card.contentEditable = false\r\n }\r\n\r\n _registerNavigation() {\r\n // These callbacks are structured to keep the \"this\" scope to our object inside the real callback functions.\r\n this.nextBtn.addEventListener('click', (e) => {\r\n this.nextCard(e)\r\n })\r\n this.prevBtn.addEventListener('click', (e) => {\r\n this.prevCard(e)\r\n })\r\n\r\n // Swiping\r\n this._setupSwiping()\r\n this._setupScroll()\r\n\r\n const cards = Array.from(this.el.querySelectorAll('.card-item'))\r\n // Arrow keys\r\n const navLR = (e) => {\r\n if (e.key === 'ArrowLeft') {\r\n this.prevCard(e)\r\n } else if (e.key === 'ArrowRight') {\r\n this.nextCard(e)\r\n }\r\n }\r\n cards.forEach((card) => {\r\n card.addEventListener('keyup', navLR)\r\n })\r\n\r\n // Focus\r\n cards.forEach((card) => {\r\n card.addEventListener('focus', (e) => {\r\n this._setCurrentCard(cards.indexOf(e.target))\r\n })\r\n })\r\n }\r\n\r\n _setupSwiping() {\r\n var startX = null\r\n var startY = null\r\n\r\n const start = (e) => {\r\n startX = e.touches[0].clientX\r\n startY = e.touches[0].clientY\r\n }\r\n\r\n const move = (e) => {\r\n if (startX === null || startY === null) {\r\n return\r\n }\r\n\r\n const newX = e.touches[0].clientX\r\n const newY = e.touches[0].clientY\r\n\r\n const diffX = startX - newX\r\n const diffY = startY - newY\r\n\r\n this._decideScroll(e, diffX, diffY)\r\n }\r\n\r\n const end = (e) => {\r\n startX = null\r\n startY = null\r\n }\r\n\r\n this.el.addEventListener('touchstart', start)\r\n this.el.addEventListener('touchmove', move)\r\n this.el.addEventListener('touchend', end)\r\n }\r\n\r\n _setupScroll() {\r\n const move = (e) => {\r\n if (this._moving) return\r\n this._decideScroll(e, e.deltaX, e.deltaY)\r\n }\r\n\r\n this.el.addEventListener('wheel', move)\r\n }\r\n\r\n _decideScroll(e, diffX, diffY) {\r\n // Only accept horizontal change\r\n if (Math.abs(diffX) > THRESHOLD) {\r\n if (diffX < 0) {\r\n this.prevCard(e)\r\n } else {\r\n this.nextCard(e)\r\n }\r\n }\r\n }\r\n\r\n _startMoving() {\r\n this._moving = true\r\n setTimeout(() => {\r\n this._moving = false\r\n }, this.animationDuration)\r\n }\r\n\r\n _setInitialVariables() {\r\n const style = window.getComputedStyle(this.el)\r\n if (style) {\r\n this.cardCurrent = parseInt(style.getPropertyValue(CARD_CURRENT))\r\n this.cardCount = parseInt(style.getPropertyValue(CARD_COUNT))\r\n this.animationDuration = parseInt(\r\n style.getPropertyValue(CARD_ANIMATION_DURATION)\r\n )\r\n } else {\r\n this.el.style.display = 'none'\r\n }\r\n }\r\n}\r\n\r\nexport default CardCarousel\r\n"],"names":["CARD_CURRENT","CardCarousel","el","_classCallCheck","this","nextBtn","querySelector","prevBtn","cardCurrent","cardCount","animationDuration","_setInitialVariables","_updateButtons","_registerNavigation","key","value","e","_updateCurrentCard","shift","newCurrent","Math","min","max","_setCurrentCard","_startMoving","style","setProperty","card","contentEditable","focus","_this","addEventListener","nextCard","prevCard","_setupSwiping","_setupScroll","cards","Array","from","querySelectorAll","navLR","forEach","indexOf","target","_this2","startX","startY","touches","clientX","clientY","newX","newY","diffX","diffY","_decideScroll","_this3","_moving","deltaX","deltaY","abs","_this4","setTimeout","window","getComputedStyle","parseInt","getPropertyValue","display"],"sourceRoot":""}