{"version":3,"sources":["webpack://@verndale/toolkit/./src/js/animation/eventBus/EventBus.ts","webpack://@verndale/toolkit/./src/js/animation/eventBus/index.ts","webpack://@verndale/toolkit/./src/js/modules/siteSelector.ts"],"names":["EventBus","subscriptions","eventType","callback","id","arg","key","_EventBus","EventBusSingleton","SiteSelector","Component","el","__publicField","breakpoints","_a","_b","staggerItems","sequence","stagger","timeline","item","__async"],"mappings":"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","file":"scripts/418.ea5824101d8667d22bdf.js","sourcesContent":["declare class EventBus {\n constructor();\n subscribe(\n eventType: string,\n callback: () => void\n ): {\n unsubscribe: () => void;\n };\n publish(eventType: string, arg?: symbol): void;\n}\n\nexport type Subscriptions = {\n [key: string]: {\n [key: symbol]: (arg: symbol) => void;\n };\n};\n\nfunction EventBus() {\n const subscriptions: Subscriptions = {};\n\n const subscribe = (eventType: string, callback: () => void) => {\n const id = Symbol('id');\n if (!subscriptions[eventType]) subscriptions[eventType] = {};\n subscriptions[eventType][id] = callback;\n return {\n unsubscribe: function unsubscribe() {\n delete subscriptions[eventType][id];\n if (\n Object.getOwnPropertySymbols(subscriptions[eventType]).length === 0\n ) {\n delete subscriptions[eventType];\n }\n }\n };\n };\n\n const publish = (eventType: string, arg: symbol) => {\n if (!subscriptions[eventType]) return;\n Object.getOwnPropertySymbols(subscriptions[eventType]).forEach(key =>\n subscriptions[eventType][key](arg)\n );\n };\n\n return { subscribe, publish };\n}\n\nexport default EventBus;\n","import _EventBus from './EventBus';\n\nexport const EventBus = _EventBus;\nexport const EventBusSingleton = new _EventBus();\n","import { Component } from '@verndale/core';\nimport { breakpoints } from '../helpers/variables';\nimport { EventBusSingleton } from '../animation/eventBus';\nimport { TimelineDefinition } from '@motionone/dom/types/timeline/types';\nimport { ElementOrSelector, stagger, timeline } from 'motion';\n\nclass SiteSelector extends Component {\n MOTION_ZERO_DURATION = 0.000001;\n breakpoint = window.matchMedia(\n `(min-width: ${breakpoints.tabletLandscape}px)`\n );\n breakpointAnimation = window.matchMedia(\n `(min-width: ${breakpoints.tablet}px)`\n );\n // headerSearch: HeaderSearch | null = null;\n siteSelector: SiteSelector | null = null;\n reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n initialDelay = 0.75;\n viewportWidth = window.innerWidth;\n\n constructor(el: HTMLElement) {\n super(el);\n // this.init();\n \n }\n\n setupDefaults() {\n this.dom = {\n el: this.el,\n \n languageButton: this.el.querySelector<HTMLElement>(\n '.site-selector__icon-button'\n ),\n siteSelector:\n this.el.querySelector<HTMLElement>('.site-selector-links__container'),\n };\n }\n\n init() {\n (this.dom.siteSelector as HTMLElement).setAttribute('style', 'display:none');\n \n }\n\n addListeners() {\n (this.dom.languageButton as HTMLElement)?.addEventListener(\n 'click',\n this.handleSiteSelectorClick.bind(this)\n );\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n handleClickOutside(e: Event) {\n if (!this.breakpoint.matches) return;\n if (\n !(this.dom.el as HTMLElement).contains(e.target as Node) &&\n !(e.target as HTMLElement)?.classList?.contains(\n 'site-selector--open'\n )\n ) {\n EventBusSingleton.publish('closingSiteSelector');\n this.closeMenu();\n }\n }\n\n handleResize() {\n if (window.innerWidth !== this.viewportWidth) {\n this.siteSelector?.closeMenu();\n (this.dom.el as HTMLElement).classList.remove('site-selector--open');\n this.viewportWidth = window.innerWidth;\n this.breakpoint = window.matchMedia(\n `(min-width: ${breakpoints.tabletLandscape}px)`\n );\n this.breakpointAnimation = window.matchMedia(\n `(min-width: ${breakpoints.tablet}px)`\n );\n }\n }\n\n animateIn() {\n const staggerItems = (this.dom.el as HTMLElement).querySelectorAll(\n '.site-selector-links_section > :not(.site-selector)'\n ) as NodeListOf<HTMLElement>;\n\n const sequence = [] as TimelineDefinition;\n sequence.push({ name: 'start', at: 0 });\n sequence.push({ name: 'stagger-items', at: 0.75 });\n sequence.push([\n this.dom.background as ElementOrSelector,\n {\n transform: ['scale(0, 1)', 'scale(1, 1)']\n },\n {\n duration: 1,\n at: 'start'\n }\n ]);\n sequence.push([\n staggerItems,\n {\n opacity: [0, 1],\n transform: ['translate(0, -100%)', 'translate(0, 0)']\n },\n {\n duration: 0.25,\n at: 'stagger-items',\n delay: stagger(0.1)\n }\n ]);\n timeline(sequence, { delay: this.initialDelay });\n }\n\n openMenu() {\n if (this.el.classList.contains('site-selector--open')) return;\n (this.dom.el as HTMLElement).style.display = 'block';\n (this.dom.el as HTMLElement).style.visibility = 'visible';\n if (this.breakpoint.matches) {\n const sequence = [] as TimelineDefinition;\n sequence.push({ name: 'start', at: 0 });\n sequence.push({ name: 'enter', at: 0.15 });\n sequence.push([\n this.dom.el as HTMLElement,\n { transform: ['scale(1, 0)', 'scale(1, 1)'] },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.25,\n easing: 'linear',\n at: 'start'\n }\n ]);\n sequence.push([\n this.dom.title as HTMLElement,\n {\n opacity: [0, 1],\n transform: ['translate(-20px, 0)', 'translate(0, 0)']\n },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.5,\n at: this.reducedMotion.matches ? 'start' : 'enter'\n }\n ]);\n sequence.push([\n this.dom.closeButton as HTMLElement,\n {\n opacity: [0, 1]\n },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.5,\n at: this.reducedMotion.matches ? 'start' : 'enter'\n }\n ]);\n sequence.push([\n (this.dom.el as HTMLElement).querySelectorAll(\n '.site-selector-links__ctas > div'\n ) as NodeListOf<HTMLElement>,\n { clipPath: ['inset(0 100% 0 0)', 'inset(0 0 0 0)'] },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.5,\n delay: this.reducedMotion.matches ? 0 : stagger(0.1),\n at: this.reducedMotion.matches ? 'start' : 'enter'\n }\n ]);\n timeline(sequence).finished.then(() => {\n this.el.setAttribute('aria-hidden', 'false');\n this.el.classList.add('site-selector--open');\n (this.dom.closeButton as HTMLElement).removeAttribute('style');\n (this.dom.title as HTMLElement).removeAttribute('style');\n (\n (this.dom.el as HTMLElement).querySelectorAll(\n '.site-selector-links__ctas > div'\n ) as NodeListOf<HTMLElement>\n ).forEach(item => {\n item.removeAttribute('style');\n });\n });\n } else {\n (this.dom.el as HTMLElement).setAttribute('aria-hidden', 'false');\n (this.dom.el as HTMLElement).classList.add('site-selector--open');\n }\n }\n\n async closeMenu() {\n if (!this.el.classList.contains('site-selector--open')) return;\n\n if (this.breakpoint.matches) {\n const sequence = [] as TimelineDefinition;\n sequence.push({ name: 'start', at: 0 });\n sequence.push({ name: 'leave', at: 0.25 });\n sequence.push([\n (this.dom.el as HTMLElement).querySelectorAll(\n '.language-selector__accordion-items > div'\n ) as NodeListOf<HTMLElement>,\n { clipPath: ['inset(0 0 0 0)', 'inset(0 100% 0 0)'] },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.25,\n delay: this.reducedMotion.matches ? 0 : stagger(0.1),\n at: 'start'\n }\n ]);\n sequence.push([\n [this.dom.title as HTMLElement, this.dom.closeButton as HTMLElement],\n {\n opacity: [1, 0]\n },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.25,\n at: 'start'\n }\n ]);\n sequence.push([\n this.dom.el as HTMLElement,\n {\n transform: ['scale(1, 1)', 'scale(1, 0)']\n },\n {\n duration: this.reducedMotion.matches\n ? this.MOTION_ZERO_DURATION\n : 0.5,\n at: this.reducedMotion.matches ? 'start' : 'leave'\n }\n ]);\n await timeline(sequence).finished.then(() => {\n (this.dom.el as HTMLElement).setAttribute('aria-hidden', 'true');\n (this.dom.el as HTMLElement).removeAttribute('style');\n (this.dom.el as HTMLElement).classList.remove(\n 'site-selector--open'\n );\n });\n } else {\n (this.dom.el as HTMLElement).setAttribute('aria-hidden', 'false');\n (this.dom.el as HTMLElement).removeAttribute('style');\n (this.dom.el as HTMLElement).classList.remove('site-selector--open');\n }\n }\n\n // handleResize() {\n // if (window.innerWidth !== this.viewportWidth) {\n // this.siteSelector?.closeMenu();\n // (this.dom.el as HTMLElement).classList.remove('site-selector--open');\n // this.viewportWidth = window.innerWidth;\n // this.breakpoint = window.matchMedia(\n // `(min-width: ${breakpoints.tabletLandscape}px)`\n // );\n // this.breakpointAnimation = window.matchMedia(\n // `(min-width: ${breakpoints.tablet}px)`\n // );\n // }\n // }\n\n\n async handleSiteSelectorClick() {\n const isOpen = (\n this.dom.siteSelector as HTMLElement\n ).classList.contains('site-selector--open');\n if (!isOpen) {\n \n this.siteSelector?.openMenu();\n (this.dom.siteSelector as HTMLElement).classList.add(\n 'site-selector--open'\n );\n \n (this.dom.el as HTMLElement).classList.add('unified-nav-links__site-selector--open');\n } else {\n (this.dom.siteSelector as HTMLElement).classList.remove(\n 'site-selector--open'\n );\n (this.dom.el as HTMLElement).classList.remove('unified-nav-links__site-selector--open');\n this.siteSelector?.closeMenu();\n }\n }\n}\n\n\nexport default SiteSelector;\n"],"sourceRoot":""}