{"version":3,"sources":["webpack://@verndale/toolkit/./node_modules/@verndale/roving-ux/dist/index.modern.js","webpack://@verndale/toolkit/./src/js/modules/header/site-selector.js","webpack://@verndale/toolkit/./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js","webpack://@verndale/toolkit/./src/js/modules/header/primary-nav.js","webpack://@verndale/toolkit/./src/js/modules/header/search.js","webpack://@verndale/toolkit/./src/js/modules/header.js"],"names":[],"mappings":"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","file":"scripts/961.6bfa0737a27085122798.js","sourcesContent":["const e=new Map,t=({element:t,target:d,callback:o})=>{const i=t.querySelectorAll(d||\":scope *\"),v=i[0];t.tabIndex=-1,i.forEach(e=>e.tabIndex=-1),v.tabIndex=0,e.set(t,{targets:i,active:v,index:0});const l=n=>{e.get(\"last_rover\")!=t&&(c(t,e.get(t).active),e.set(\"last_rover\",t))};t.addEventListener(\"focusin\",l);const x=e=>{switch(e.keyCode){case 39:case 40:e.preventDefault(),s(t,o);break;case 37:case 38:e.preventDefault(),r(t,o);break;case 36:e.preventDefault(),n(t,o);break;case 35:e.preventDefault(),a(t,o)}};t.addEventListener(\"keydown\",x);const g=n=>{t.removeEventListener(\"focusin\",l),t.removeEventListener(\"keydown\",x),t.removeEventListener(\"DOMNodeRemoved\",g),e.delete(t),i.forEach(e=>e.tabIndex=\"\")};t.addEventListener(\"DOMNodeRemovedFromDocument\",g)},n=(t,n)=>{const a=e.get(t);a.index=0;let s=a.targets[a.index];s&&c(t,s,n)},a=(t,n)=>{const a=e.get(t);a.index=a.targets.length-1;let s=a.targets[a.index];s&&c(t,s,n)},s=(t,n)=>{const a=e.get(t);a.index+=1,a.index>a.targets.length-1&&(a.index=a.targets.length-1);let s=a.targets[a.index];s&&c(t,s,n)},r=(t,n)=>{const a=e.get(t);a.index-=1,a.index<1&&(a.index=0);let s=a.targets[a.index];s&&c(t,s,n)},c=(t,n,a)=>{const s=e.get(t);s.active.tabIndex=-1,a&&a(n),s.active=n,s.active.tabIndex=0,s.active.focus()};export{t as rovingIndex};\n//# sourceMappingURL=index.modern.js.map\n","// @ts-check\nimport { Component } from '@verndale/core';\nimport { createFocusTrap } from 'focus-trap';\nimport { isSafari, KEYCODE } from '../../utils';\n\nclass Module extends Component {\n constructor(el) {\n super(el);\n }\n\n setupDefaults() {\n this.dom = {\n $trigger: this.el.querySelector('.site-selector__button'),\n $dropdown: this.el.querySelector('.site-selector__dropdown')\n };\n\n this.siteSelectorTrap = createFocusTrap(this.dom.$dropdown, {\n escapeDeactivates: true,\n clickOutsideDeactivates: true\n });\n }\n\n addListeners() {\n this.el.addEventListener('keydown', (e) =>\n this.handleSiteSelectorKeydown(e)\n );\n if (isSafari()) {\n document.addEventListener(\n 'click',\n (e) => this.handleClickOutside(e),\n true\n );\n } else {\n this.el.addEventListener('focusout', (e) =>\n this.handleSiteSelectorFocusout(e)\n );\n }\n this.dom.$trigger.addEventListener('click', (e) =>\n this.handleSiteSelectorClick(e)\n );\n }\n\n handleClickOutside(e) {\n if (\n !this.dom.$trigger.contains(e.target) &&\n !this.dom.$dropdown.contains(e.target)\n ) {\n this.siteSelectorTrap?.deactivate?.();\n this.dom.$trigger.setAttribute('aria-expanded', false);\n }\n }\n\n handleSiteSelectorKeydown(e) {\n if (e.keyCode === KEYCODE.ESCAPE) {\n e.stopPropagation();\n this.dom.$trigger.setAttribute('aria-expanded', false);\n }\n }\n\n handleSiteSelectorFocusout(e) {\n if (\n this.dom.$trigger !== e.relatedTarget &&\n !this.dom.$dropdown.contains(e.relatedTarget)\n ) {\n this.siteSelectorTrap?.deactivate?.();\n this.dom.$trigger.setAttribute('aria-expanded', false);\n }\n }\n\n handleSiteSelectorClick(e) {\n const isExpanded = e.currentTarget.getAttribute('aria-expanded') === 'true';\n e.currentTarget.setAttribute('aria-expanded', !isExpanded);\n if (isExpanded) this.siteSelectorTrap?.deactivate?.();\n else this.siteSelectorTrap?.activate?.();\n }\n}\n\nexport default Module;\n","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 previousBodyPosition = 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 var computedBodyPaddingRight = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'), 10);\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = computedBodyPaddingRight + 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\nvar setPositionFixed = function setPositionFixed() {\n return window.requestAnimationFrame(function () {\n // If previousBodyPosition is already set, don't set it again.\n if (previousBodyPosition === undefined) {\n previousBodyPosition = {\n position: document.body.style.position,\n top: document.body.style.top,\n left: document.body.style.left\n };\n\n // Update the dom inside an animation frame \n var _window = window,\n scrollY = _window.scrollY,\n scrollX = _window.scrollX,\n innerHeight = _window.innerHeight;\n\n document.body.style.position = 'fixed';\n document.body.style.top = -scrollY;\n document.body.style.left = -scrollX;\n\n setTimeout(function () {\n return window.requestAnimationFrame(function () {\n // Attempt to check if the bottom bar appeared due to the position change\n var bottomBarHeight = innerHeight - window.innerHeight;\n if (bottomBarHeight && scrollY >= innerHeight) {\n // Move the content further up so that the bottom bar doesn't hide it\n document.body.style.top = -(scrollY + bottomBarHeight);\n }\n });\n }, 300);\n }\n });\n};\n\nvar restorePositionSetting = function restorePositionSetting() {\n if (previousBodyPosition !== undefined) {\n // Convert the position from \"px\" to Int\n var y = -parseInt(document.body.style.top, 10);\n var x = -parseInt(document.body.style.left, 10);\n\n // Restore styles\n document.body.style.position = previousBodyPosition.position;\n document.body.style.top = previousBodyPosition.top;\n document.body.style.left = previousBodyPosition.left;\n\n // Restore scroll\n window.scrollTo(x, y);\n\n previousBodyPosition = 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 setPositionFixed();\n } else {\n setOverflowHidden(options);\n }\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 }\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 }\n\n if (isIosDevice) {\n restorePositionSetting();\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 }\n\n if (isIosDevice) {\n restorePositionSetting();\n } else {\n restoreOverflowSetting();\n }\n};\n\n","// @ts-check\n\nimport { Component } from '@verndale/core';\nimport { createFocusTrap } from 'focus-trap';\nimport { disableBodyScroll, clearAllBodyScrollLocks } from 'body-scroll-lock';\nimport { rovingIndex } from '@verndale/roving-ux';\nimport { KEYCODE } from '../../utils';\n\nclass Module extends Component {\n constructor(el) {\n super(el);\n }\n\n setupDefaults() {\n this.dom = {\n $header: this.el.closest('.header'),\n $trigger: this.el\n .closest('.header')\n .querySelector('.header-main__hamburger'),\n $categoryTriggers: this.el.querySelectorAll(\n '.primary-nav__category-trigger'\n ),\n $backButtons: this.el.querySelectorAll('.primary-nav__back .link'),\n $menuBoxes: this.el.querySelectorAll('.primary-nav__box'),\n $menuTriggers: this.el.querySelectorAll('.primary-nav__menu-trigger'),\n $grids: this.el.querySelectorAll('.primary-nav__grid')\n };\n\n const self = this;\n this.mainFocusTrap = createFocusTrap(this.dom.$header, {\n escapeDeactivates: true,\n initialFocus: self.dom.$trigger,\n onActivate() {\n document.body.style.inlineSize = '100%';\n document.body.style.overflow = 'hidden';\n document.body.style.position = 'fixed';\n disableBodyScroll(self.el, {\n // @ts-ignore\n allowTouchMove: (elem) => elem.closest('.header')\n });\n },\n onDeactivate() {\n clearAllBodyScrollLocks();\n document.body.style.inlineSize = '';\n document.body.style.overflow = '';\n document.body.style.position = '';\n }\n });\n\n this.menuFocusTraps = Array.from(this.dom.$menuBoxes).map((box) =>\n createFocusTrap(box, {\n escapeDeactivates: true,\n clickOutsideDeactivates: true\n })\n );\n this.setBoxInlineSize();\n this.setRovings();\n }\n\n addListeners() {\n this.dom.$header.addEventListener('keydown', (e) =>\n this.handleHeaderKeydown(e)\n );\n this.dom.$trigger.addEventListener('click', () => this.toggleNav());\n this.dom.$categoryTriggers.forEach((trigger) =>\n trigger.addEventListener('click', (e) => this.toggleCategory(e))\n );\n this.dom.$menuTriggers.forEach((trigger, index) =>\n trigger.addEventListener('click', (e) => this.toggleMenu(e, index))\n );\n this.dom.$menuBoxes.forEach((box, index) =>\n box.addEventListener('keydown', (e) => this.handleBoxKeydown(e, index))\n );\n this.dom.$menuBoxes.forEach((box, index) => {\n box.addEventListener('keydown', (e) => this.handleBoxKeydown(e, index));\n box.addEventListener('focusout', (e) => this.handleBoxFocusout(e, index));\n });\n this.dom.$backButtons.forEach((button, index) =>\n button.addEventListener('click', (e) => this.handleBackButton(e, index))\n );\n }\n\n handleHeaderKeydown(e) {\n if (e.keyCode === KEYCODE.ESCAPE) {\n e.stopPropagation();\n this.deactivateMain();\n }\n }\n\n handleBoxKeydown(e, index) {\n if (e.keyCode === KEYCODE.ESCAPE) {\n e.stopPropagation();\n const $trigger = e.currentTarget.previousElementSibling;\n this.deactivateMenu($trigger, e.currentTarget, index);\n }\n }\n\n handleBoxFocusout(e, index) {\n const $trigger = e.currentTarget.previousElementSibling;\n\n if (\n !e.currentTarget.contains(e.relatedTarget) &&\n e.relatedTarget !== $trigger\n ) {\n this.deactivateMenu($trigger, e.currentTarget, index);\n }\n }\n\n handleBackButton(e, index) {\n const $box = e.currentTarget.closest('.primary-nav__box');\n const $trigger = $box.previousElementSibling;\n this.deactivateMenu($trigger, $box, index);\n }\n\n deactivateMain() {\n this.dom.$header.dataset.menuExpanded = false;\n this.dom.$trigger.setAttribute('aria-expanded', false);\n this.dom.$menuTriggers.forEach((trigger) =>\n trigger.setAttribute('aria-expanded', false)\n );\n this.menuFocusTraps.forEach((trap) => trap.deactivate());\n const cb = (e) => {\n if (e.propertyName === 'opacity') {\n this.mainFocusTrap.deactivate();\n this.el.removeEventListener('transitionend', cb);\n }\n };\n this.el.addEventListener('transitionend', cb);\n }\n\n activateMain() {\n this.dom.$header.dataset.menuExpanded = true;\n this.dom.$trigger.setAttribute('aria-expanded', true);\n const cb = (e) => {\n if (e.propertyName === 'opacity') {\n this.mainFocusTrap.activate();\n this.el.removeEventListener('transitionend', cb);\n }\n };\n this.el.addEventListener('transitionend', cb);\n }\n\n toggleCategory(e) {\n const isExpanded = e.currentTarget.getAttribute('aria-expanded') === 'true';\n const $triggerContainer = e.currentTarget.closest(\n '.primary-nav__category-trigger-container'\n );\n\n e.currentTarget.setAttribute('aria-expanded', !isExpanded);\n $triggerContainer.dataset.open = !isExpanded;\n }\n\n toggleNav() {\n const isExpanded = this.dom.$header.dataset.menuExpanded === 'true';\n\n if (isExpanded) this.deactivateMain();\n else this.activateMain();\n }\n\n toggleMenu(e, index) {\n const isExpanded = e.currentTarget.getAttribute('aria-expanded') === 'true';\n const $box = e.currentTarget.nextElementSibling;\n\n if (isExpanded) this.deactivateMenu(e.currentTarget, $box, index);\n else this.activateMenu(e.currentTarget, $box, index);\n }\n\n activateMenu($trigger, $box, index) {\n $trigger.setAttribute('aria-expanded', true);\n\n const cb = (e) => {\n if (e.propertyName === 'opacity') {\n this.menuFocusTraps[index]?.activate?.();\n $box.removeEventListener('transitionend', cb);\n }\n };\n\n $box.addEventListener('transitionend', cb);\n }\n\n deactivateMenu($trigger, $box, index) {\n $trigger.setAttribute('aria-expanded', false);\n\n const cb = (e) => {\n if (e.propertyName === 'opacity') {\n this.menuFocusTraps[index]?.deactivate();\n $box.removeEventListener('transitionend', cb);\n }\n };\n\n $box.addEventListener('transitionend', cb);\n }\n\n setBoxInlineSize() {\n this.dom.$menuBoxes.forEach((box) => {\n const $cols = box.querySelectorAll('.primary-nav__grid-col');\n box.classList.toggle('primary-nav__box--partial', $cols.length < 4);\n });\n }\n\n setRovings() {\n this.dom.$grids.forEach((grid) => {\n const target = grid.querySelector('.primary-nav__category-trigger');\n if (target) {\n rovingIndex({\n element: grid,\n target: '.primary-nav__category-trigger'\n });\n }\n });\n }\n}\n\nexport default Module;\n","// @ts-check\nimport { Component } from '@verndale/core';\nimport { KEYCODE } from '../../utils';\n// import { createFocusTrap } from 'focus-trap';\n\nclass Module extends Component {\n constructor(el) {\n super(el);\n }\n\n setupDefaults() {\n this.dom = {\n $header: this.el.closest('.header'),\n $input: this.el\n .closest('.header')\n .querySelectorAll('.header-search__input'),\n $results: this.el\n .closest('.header')\n .querySelectorAll('.header-search__results')\n };\n\n this.endpoint = this.dom.$header.dataset.searchEndpoint;\n this.popularSearches = this.dom.$header.dataset.popularSearchesLabel;\n this.suggestedResults = this.dom.$header.dataset.suggestedResultsLabel;\n this.viewAllUrl = this.dom.$header.dataset.viewAllUrl;\n this.controller = null;\n\n const MOBILE_BREAKPOINT = 1024;\n this.mobileBreakpoint = window.matchMedia(\n `(max-width:${MOBILE_BREAKPOINT})px`\n );\n this.headerSearchClass = this.mobileBreakpoint.matches\n ? '.header-search--mobile'\n : '.header-search--desktop';\n\n this.form = this.el\n .closest('.header')\n .querySelector(this.headerSearchClass);\n this.searchInput = this.form.querySelector('.header-search__input');\n }\n\n addListeners() {\n this.el.addEventListener('submit', (e) => this.handleSubmit(e));\n this.dom.$input.forEach((input) =>\n input.addEventListener('input', (e) => this.handleInput(e))\n );\n this.el.addEventListener('keydown', this.handleKeyDown.bind(this));\n }\n\n handleSubmit(e) {\n const { value } = e.currentTarget.querySelector('.header-search__input');\n\n if (value.length) {\n e.preventDefault();\n window.location.href = `${this.viewAllUrl}${value}`;\n }\n }\n\n handleInput(e) {\n const { value } = e.currentTarget;\n this.dom.$input.forEach((input) => {\n if (input.closest(this.headerSearchClass)) {\n input.closest(this.headerSearchClass).dataset.showResults = true;\n input.value = value;\n }\n });\n\n if (this.controller) this.controller.abort();\n\n if (value.length > 1) this.fetchResults(value);\n else this.emptyResults();\n\n document.addEventListener('click', this.handleClickOutsideForm.bind(this));\n }\n\n handleKeyDown(e) {\n const isEscapeKey = e.keyCode === KEYCODE.ESCAPE;\n const isTabKey = e.keyCode === KEYCODE.TAB;\n setTimeout(() => {\n if (isEscapeKey) {\n this.handleEscapeKey();\n } else if (isTabKey) {\n this.handleTabKey();\n }\n }, 0);\n }\n\n handleEscapeKey() {\n if (this.searchInput) {\n this.form.dataset.showResults = false;\n this.searchInput.value = '';\n }\n }\n\n handleTabKey() {\n if (this.searchInput && !this.form.contains(document.activeElement)) {\n this.form.dataset.showResults = false;\n }\n }\n\n handleClickOutsideForm(e) {\n if (this.form.contains(e.target)) return;\n if (this.searchInput) this.form.dataset.showResults = false;\n document.removeEventListener('click', this.handleClickOutsideForm);\n }\n\n fetchResults(value) {\n this.controller = new AbortController();\n const { signal } = this.controller;\n\n fetch(`${this.endpoint}${value}`, { signal })\n .then((response) => response.json())\n .then((data) => this.renderResults(data))\n // eslint-disable-next-line no-console\n .catch((error) => console.error(error));\n }\n\n renderResults(data) {\n const template = `\n ${\n data.Popular?.length\n ? `\n

${\n this.popularSearches\n }

\n `\n : ''\n }\n ${\n data.Products?.length\n ? `\n

${this.suggestedResults.replace(\n '{0}',\n data.Products?.length\n )}

\n `\n : ''\n }\n
\n \n ${data.ViewAllText}\n \n \n ${data.TotalResultsText}\n \n
\n `;\n\n this.dom.$results.forEach((result) => {\n result.closest('.header-search').dataset.showResults = true;\n result.innerHTML = template;\n });\n }\n\n emptyResults() {\n this.dom.$results.forEach((result) => (result.innerHTML = ''));\n }\n}\n\nexport default Module;\n","// @ts-check\nimport { Component } from '@verndale/core';\nimport SiteSelector from './header/site-selector';\nimport PrimaryNav from './header/primary-nav';\nimport Search from './header/search';\n\nclass Module extends Component {\n setupDefaults() {\n this.dom = {\n $siteSelector: this.el.querySelector('.site-selector'),\n $primaryNav: this.el.querySelector('.primary-nav'),\n $search: this.el.querySelectorAll('.header-search')\n };\n\n this.siteSelector = new SiteSelector(this.dom.$siteSelector);\n this.primaryNav = new PrimaryNav(this.dom.$primaryNav);\n this.dom.$search.forEach((search) => new Search(search));\n }\n}\n\nexport default Module;\n"],"sourceRoot":""}