{"version":3,"sources":["webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack:///./src/js/components/qu-today-header.js"],"names":["hasPassiveEvents","window","passiveTestOptions","addEventListener","removeEventListener","isIosDevice","navigator","platform","test","maxTouchPoints","locks","documentListenerAdded","initialClientY","previousBodyOverflowSetting","previousBodyPaddingRight","allowTouchMove","el","some","lock","options","preventDefault","rawEvent","e","event","target","touches","length","restoreOverflowSetting","undefined","document","body","style","paddingRight","overflow","disableBodyScroll","targetElement","concat","arr","Array","isArray","i","arr2","from","_toConsumableArray","ontouchstart","targetTouches","clientY","ontouchmove","scrollTop","scrollHeight","clientHeight","isTargetElementTotallyScrolled","stopPropagation","handleScroll","passive","_reserveScrollBarGap","reserveScrollBarGap","scrollBarGap","innerWidth","documentElement","clientWidth","setOverflowHidden","console","error","clearAllBodyScrollLocks","forEach","enableBodyScroll","filter","QuTodayHeader","_Component","_classCallCheck","_callSuper","arguments","_inherits","key","value","this","dom","$mobileMenuTrigger","_$","$desktopMenuTrigger","$nav","$closeMenu","$mobileSearchForm","$mobileSearchTrigger","$mobileForm","$forms","_$$","$clearInputs","self","navTrap","createFocusTrap","escapeDeactivates","clickOutsideDeactivates","onActivate","position","width","closest","onDeactivate","removeAttribute","searchTrap","setViewportHeight","_on","handleMobileSearchTrigger","bind","handleOpenMenu","handleCloseMenu","handleNavClick","handleCloseMenuEsc","handleCloseMobileEsc","handleFormState","handleClearInputs","form","currentTarget","input","reset","dataset","hasValue","focus","keyCode","keys","escape","closeMobileSearch","_this","ariaExpanded","hidden","setTimeout","deactivate","_this2","activate","openMobileSearch","handleResize","setProperty","innerHeight","Component"],"mappings":"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","file":"46.559d00.js","sourcesContent":["function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nexport var disableBodyScroll = function disableBodyScroll(targetElement, options) {\n // targetElement must be provided\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n // disableBodyScroll must not have been called on this targetElement before\n if (locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n return;\n }\n\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n if (isIosDevice) {\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n } else {\n setOverflowHidden(options);\n }\n};\n\nexport var clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n }\n\n locks = [];\n};\n\nexport var enableBodyScroll = function enableBodyScroll(targetElement) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (isIosDevice) {\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n } else if (!locks.length) {\n restoreOverflowSetting();\n }\n};\n\n","import { Component } from '@verndale/core';\nimport { createFocusTrap } from 'focus-trap';\nimport { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport keys from '../utils/keys';\n\nclass QuTodayHeader extends Component {\n setupDefaults() {\n this.dom = {\n $mobileMenuTrigger: this.el._$('.qu-today-header__mobile-menu-trigger'),\n $desktopMenuTrigger: this.el._$('.qu-today-header__desktop-menu-trigger'),\n $nav: this.el._$('.qu-today-header__nav'),\n $closeMenu: this.el._$('.qu-today-header__close-menu'),\n $mobileSearchForm: this.el._$('.qu-today-header__mobile-search-form'),\n $mobileSearchTrigger: this.el._$(\n '.qu-today-header__mobile-search-trigger'\n ),\n $mobileForm: this.el._$('.qu-today-header__top-right-search'),\n $forms: this.el._$$('form'),\n $clearInputs: this.el._$$('.qu-today-header__clear-input')\n };\n\n const self = this;\n this.navTrap = createFocusTrap(this.dom.$nav, {\n escapeDeactivates: false,\n clickOutsideDeactivates: true,\n onActivate() {\n document.body.style.position = 'fixed';\n document.body.style.overflow = 'hidden';\n document.body.style.width = '100%';\n disableBodyScroll(self.dom.$nav, {\n allowTouchMove: (el) =>\n el.closest('.qu-today-header__nav-content-main')\n });\n },\n onDeactivate() {\n document.body.removeAttribute('style');\n clearAllBodyScrollLocks();\n }\n });\n this.searchTrap = createFocusTrap(this.dom.$mobileForm, {\n escapeDeactivates: false\n });\n this.setViewportHeight();\n }\n\n addListeners() {\n this.dom.$mobileSearchTrigger._on(\n 'click',\n ::this.handleMobileSearchTrigger\n );\n this.dom.$mobileMenuTrigger._on('click', ::this.handleOpenMenu);\n this.dom.$desktopMenuTrigger._on('click', ::this.handleOpenMenu);\n this.dom.$closeMenu._on('click', ::this.handleCloseMenu);\n this.dom.$nav._on('click', ::this.handleNavClick);\n this.dom.$nav._on('keydown', ::this.handleCloseMenuEsc);\n this.dom.$mobileForm._on('keydown', ::this.handleCloseMobileEsc);\n this.dom.$forms._on('input', ::this.handleFormState);\n this.dom.$clearInputs._on('click', ::this.handleClearInputs);\n }\n\n handleClearInputs(e) {\n const form = e.currentTarget.closest('form');\n const input = form._$('input');\n if (form && input) {\n form.reset();\n form.dataset.hasValue = false;\n input.focus();\n }\n }\n\n handleFormState(e) {\n e.currentTarget.dataset.hasValue = e.target.value.length > 0;\n }\n\n handleNavClick(e) {\n if (e.target === this.dom.$nav) {\n this.handleCloseMenu();\n }\n }\n\n handleCloseMobileEsc(e) {\n if (e.keyCode === keys.escape) {\n this.closeMobileSearch();\n }\n }\n\n handleCloseMenuEsc(e) {\n if (e.keyCode === keys.escape) {\n this.handleCloseMenu();\n }\n }\n\n handleCloseMenu() {\n this.dom.$mobileMenuTrigger.ariaExpanded = false;\n this.dom.$desktopMenuTrigger.ariaExpanded = false;\n this.dom.$nav.hidden = true;\n setTimeout(() => this.navTrap.deactivate(), 360);\n }\n\n handleOpenMenu() {\n this.dom.$mobileMenuTrigger.ariaExpanded = true;\n this.dom.$desktopMenuTrigger.ariaExpanded = true;\n this.dom.$nav.hidden = false;\n this.dom.$mobileSearchTrigger.ariaExpanded = false;\n this.dom.$mobileSearchForm.hidden = true;\n setTimeout(() => this.navTrap.activate(), 360);\n }\n\n handleMobileSearchTrigger() {\n if (this.dom.$mobileSearchTrigger.ariaExpanded === 'true') {\n this.closeMobileSearch();\n } else {\n this.openMobileSearch();\n }\n }\n\n closeMobileSearch() {\n this.dom.$mobileSearchTrigger.ariaExpanded = false;\n this.searchTrap.deactivate();\n this.dom.$mobileSearchForm.hidden = true;\n }\n\n openMobileSearch() {\n this.dom.$mobileSearchTrigger.ariaExpanded = true;\n this.searchTrap.activate();\n this.dom.$mobileSearchForm.hidden = false;\n }\n\n setViewportHeight() {\n function handleResize() {\n document.documentElement.style.setProperty(\n '--vh',\n `${window.innerHeight}px`\n );\n }\n\n handleResize();\n window.addEventListener('resize', handleResize);\n }\n}\n\nexport default QuTodayHeader;\n"],"sourceRoot":""}