{"version":3,"sources":["webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack:///./src/foundation/utilities/scrollDirection.js","webpack:///./src/foundation/utilities/throttle.js","webpack:///./src/feature/header/header.js","webpack:///./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack:///./node_modules/core-js/modules/es.object.set-prototype-of.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","scrollPosV","scrollPosH","scrollDirection","scrollElement","dispatchElement","targetEl","dispatchEl","setDirection","direction","dataset","customEvent","createEvent","initCustomEvent","detail","dispatchEvent","pubsub","publish","func","limit","lastFunc","lastRan","onScroll","getBoundingClientRect","top","left","args","context","this","clearTimeout","setTimeout","Date","now","apply","Header","element","log","classes","navIsOpen","scroll","initDomCache","init","dom","navController","setNavIsOpen","searchController","checked","langController","subscribe","data","setPinned","scrollY","pageYOffset","dataScroll","getAttribute","removeAttribute","setAttribute","innerHeight","offsetHeight","isNavOpen","classList","toggle","navPanel","forEach","BaseFeature","$","fails","toObject","nativeGetPrototypeOf","CORRECT_PROTOTYPE_GETTER","stat","forced","sham","getPrototypeOf","it","setPrototypeOf"],"mappings":"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","file":"10-4143dc57.pkg.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 pubsub from './pubsub';\r\nimport { throttle } from './throttle';\r\n\r\n// Adds a data attribute to your selected element with the scroll direction as value.\r\n// scrollElement is the element on which you have applied scroll.\r\n// targetElement is the child element on which you detect scroll,\r\n// this is where data-attributes will be registered.\r\n// dispatchElement is the element that will dispatch a custom event that can be listened to.\r\n\r\n// Use window in case of no scrollElement and targetElement will default to document.body\r\n\r\n\r\n// Initial state\r\nlet scrollPosV = 0;\r\nlet scrollPosH = 0;\r\n\r\nexport function scrollDirection(scrollElement, targetElement, dispatchElement) {\r\n\tconst scrollEl = scrollElement;\r\n\tlet targetEl = targetElement;\r\n\tlet dispatchEl = dispatchElement;\r\n\r\n\tif (scrollEl === window && !targetEl) {\r\n\t\ttargetEl = document.body;\r\n\t}\r\n\r\n\tif (!dispatchEl) {\r\n\t\tdispatchEl = targetEl;\r\n\t}\r\n\r\n\tfunction setDirection(direction) {\r\n\t\ttargetEl.dataset.scrollDirection = direction;\r\n\t\tconst customEvent = document.createEvent('CustomEvent');\r\n\t\tcustomEvent.initCustomEvent('scrollDirection', false, false, {\r\n\t\t\tdetail: targetEl.dataset.scrollDirection,\r\n\t\t});\r\n\t\tdispatchEl.dispatchEvent(customEvent);\r\n\t\tpubsub.publish('window/scrollDirection', { detail: targetEl.dataset.scrollDirection });\r\n\t}\r\n\r\n\tconst onScroll = throttle(\r\n\t\t() => {\r\n\t\t\t// detects new state and compares it with the new one\r\n\t\t\tif ((targetEl.getBoundingClientRect()).top !== scrollPosV) {\r\n\t\t\t\tif ((targetEl.getBoundingClientRect()).top > scrollPosV) {\r\n\t\t\t\t\tsetDirection('UP');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetDirection('DOWN');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ((targetEl.getBoundingClientRect()).left !== scrollPosH) {\r\n\t\t\t\tif ((targetEl.getBoundingClientRect()).left > scrollPosH) {\r\n\t\t\t\t\tsetDirection('LEFT');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetDirection('RIGHT');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// saves the new position for iteration.\r\n\t\t\tscrollPosV = (targetEl.getBoundingClientRect()).top;\r\n\t\t\tscrollPosH = (targetEl.getBoundingClientRect()).left;\r\n\t\t}, 250\r\n\t);\r\n\r\n\t// adding scroll event\r\n\tscrollElement.addEventListener('scroll', onScroll);\r\n}\r\n","// Returns a function, that, as long as it continues to be invoked, will only\r\n// be triggered every N milliseconds.\r\n\r\n// https://codeburst.io/throttling-and-debouncing-in-javascript-b01cad5c8edf\r\n\r\n// throttle :: Function, Number -> (Any -> Void)\r\nexport function throttle(func, limit) {\r\n\tlet lastFunc;\r\n\tlet lastRan;\r\n\treturn function throttled(...args) {\r\n\t\tconst context = this;\r\n\t\tif (!lastRan) {\r\n\t\t\tfunc.apply(context, args);\r\n\t\t\tlastRan = Date.now();\r\n\t\t} else {\r\n\t\t\tclearTimeout(lastFunc);\r\n\t\t\tlastFunc = setTimeout(() => {\r\n\t\t\t\tif ((Date.now() - lastRan) >= limit) {\r\n\t\t\t\t\tfunc.apply(context, args);\r\n\t\t\t\t\tlastRan = Date.now();\r\n\t\t\t\t}\r\n\t\t\t}, limit - (Date.now() - lastRan));\r\n\t\t}\r\n\t};\r\n}\r\n","import { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\r\nimport { scrollDirection } from '../../foundation/utilities/scrollDirection';\r\nimport BaseFeature from '../../foundation/base/base';\r\n\r\nclass Header extends BaseFeature {\r\n\tconstructor(element) {\r\n\t\tsuper(element);\r\n\r\n\t\tthis.el = element;\r\n\t\tthis.log('Header Feature Init');\r\n\r\n\t\tthis.classes = {\r\n\t\t\tnavIsOpen: 'is-open'\r\n\t\t};\r\n\t\tthis.scroll = {};\r\n\r\n\t\tthis.initDomCache();\r\n\t\tthis.init();\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis.dom.navController.addEventListener('click', () => {\r\n\t\t\tthis.setNavIsOpen();\r\n\t\t\tthis.dom.searchController.checked = false;\r\n\t\t\tthis.dom.langController.checked = false;\r\n\t\t});\r\n\t\tthis.dom.searchController.addEventListener('click', () => {\r\n\t\t\tthis.dom.navController.checked = false;\r\n\t\t\tthis.dom.langController.checked = false;\r\n\t\t});\r\n\t\tthis.dom.langController.addEventListener('click', () => {\r\n\t\t\tthis.dom.navController.checked = false;\r\n\t\t\tthis.dom.searchController.checked = false;\r\n\t\t});\r\n\t\t// Set up scrolling events\r\n\t\tscrollDirection(window, false, this.el);\r\n\r\n\t\t// Listen to Viewport Scroll direction\r\n\t\tthis.subscribe('window/scrollDirection', (data) => {\r\n\t\t\t// Test for overscrolling\r\n\t\t\tthis.setPinned(data);\r\n\t\t});\r\n\t}\r\n\r\n\tsetPinned(data) {\r\n\t\tconst el = document.body;\r\n\t\tlet scroll = window.scrollY;\r\n\t\tif (!scroll) {\r\n\t\t\tscroll = window.pageYOffset;\r\n\t\t}\r\n\t\tconst dataScroll = this.el.getAttribute('data-header-scroll');\r\n\t\t// If top of screen\r\n\t\tif (scroll === 0 && dataScroll === 'compact') {\r\n\t\t\tthis.el.removeAttribute('data-header-scroll', 'compact');\r\n\t\t\tthis.el.setAttribute('data-header-scroll', 'fullsize');\r\n\t\t}\r\n\t\t// If not at top or bottom of screen\r\n\t\tif (scroll > 10 && !((window.innerHeight + window.pageYOffset) >= el.offsetHeight)) {\r\n\t\t\tif (data.detail === 'DOWN') {\r\n\t\t\t\tif (dataScroll === 'fullsize' || dataScroll === null) {\r\n\t\t\t\t\tthis.el.removeAttribute('data-header-scroll', 'fullsize');\r\n\t\t\t\t\tthis.el.setAttribute('data-header-scroll', 'compact');\r\n\t\t\t\t}\r\n\t\t\t} else if (dataScroll === 'compact' || dataScroll === null) {\r\n\t\t\t\tthis.el.removeAttribute('data-header-scroll', 'compact');\r\n\t\t\t\tthis.el.setAttribute('data-header-scroll', 'fullsize');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnavIsOpen() {\r\n\t\treturn this.dom.navController.checked;\r\n\t}\r\n\r\n\tsetNavIsOpen() {\r\n\t\tconst isNavOpen = this.navIsOpen();\r\n\r\n\t\t// Toggle the class based on our test\r\n\t\tthis.el.classList.toggle(this.classes.navIsOpen, isNavOpen);\r\n\r\n\t\t// Lock scrolling on body\r\n\t\tif (isNavOpen) {\r\n\t\t\tdisableBodyScroll(this.dom.navPanel);\r\n\t\t} else {\r\n\t\t\tclearAllBodyScrollLocks();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport default Header;\r\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.github.io/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n"],"sourceRoot":""}