{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","Array","from","keys","remove","delete","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","toType","object","undefined","Object","prototype","toString","call","toLowerCase","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","dispatchEvent","Event","isElement","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","parentNode","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","getAttribute","getjQuery","jQuery","body","DOMContentLoadedCallbacks","onDOMContentLoaded","callback","readyState","addEventListener","push","defineJQueryPlugin","plugin","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","execute","possibleCallback","args","defaultValue","executeAfterTransition","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","handler","target","removeEventListener","setTimeout","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","domElements","querySelectorAll","this","domElement","findHandler","events","callable","delegationSelector","values","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","handlers","previousFunction","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","value","defineProperty","configurable","normalizeData","JSON","parse","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","getSelector","hrefAttribute","trim","SelectorEngine","documentElement","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","getOrCreateInstance","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","_destroyElement","each","data","alertCss","dismissTriggeredHandler","dismissTriggered","emit","componentWillLoad","dismissible","alertElement","getElementById","alertId","BootstrapAlert","alertIcon","alertClasses","render","h","class","role","icon","btnClasses","onClick","btnText","href","btnTwoHref","btnTwoClasses","btnTwoLabel","btnTwoText","btnTwoIcon","cookieMessageCss","StCookieMessage","guid","handleDismissTriggered","setCookie","cookieName","shouldRender","consent","getCookie","cookieMsgId","cookieMsgClasses","style","display","detailsCss","fullWidth","getBreakpoint","up","Details","onOpenChange","open","openedBy","appDetailsToggled","e","other","composedPath","root","pointerHover","onlyTrueHovers","onEachEnter","interestToggle","onAllLeave","Fragment","part","hidden","forceShow","dialogCss","Dialog","async","dialog","isConnected","modal","showModal","show","add","Promise","allSettled","getAnimations","subtree","animation","finished","reflectFromOpenProp","appDialogToggled","getTriggers","dialogId","rootNode","getRootNode","triggers","some","node","ref","onClose","appDialogReturn","returnValue","clicked","transparentToBackground","onSubmit","form","submitter","formMethod","forEach","iconCss","Icon","iconSheet","cssClass","assetPath","sheet","menuShadowCss","breakpoints","lg","Menu","openMobile","details","appDetailsElements","menuLevel1s","menuLevel2s","reflectWidth","openMenuLevel1s","isOpen","underNextSibling","active","onOverlayDismissed","exportparts","onAppDetailsToggled","appDetails","currentTarget","detail","slot","overlayCss","Overlay","clickToDismiss","__classPrivateFieldGet","_Overlay_instances","_Overlay_dismiss","escapeToDismiss","overlayDismissed","fadeOut","fade","opacity","requestAnimationFrame","fadeIn","val","scrollTopCss","ScrollTop","hostRef","isShown","componentDidRender","btn","scrollY","onclick","scrollTo","top","behavior","speedbumpCss","Speedbump","componentDidLoad","speedbumpLink","HTMLAnchorElement","sameId","speedbumpId","noId","appDialog","click","onAppDialogToggled"],"sources":["./node_modules/bootstrap/js/src/dom/data.js","./node_modules/bootstrap/js/src/util/index.js","./node_modules/bootstrap/js/src/dom/event-handler.js","./node_modules/bootstrap/js/src/dom/manipulator.js","./node_modules/bootstrap/js/src/util/config.js","./node_modules/bootstrap/js/src/base-component.js","./node_modules/bootstrap/js/src/dom/selector-engine.js","./node_modules/bootstrap/js/src/util/component-functions.js","./node_modules/bootstrap/js/src/alert.js","./src/components/shared/alert/alert.scss?tag=app-alert","./src/components/shared/alert/alert.tsx","./src/components/shared/cookie-message/cookie-message.scss?tag=app-cookie-message","./src/components/shared/cookie-message/cookie-message.tsx","./src/components/shared/details/details.scss?tag=app-details&encapsulation=shadow","./src/components/shared/details/details.tsx","./src/components/shared/dialog/dialog.scss?tag=app-dialog","./src/components/shared/dialog/dialog.tsx","./src/components/media/icon/icon.scss?tag=app-icon","./src/components/media/icon/icon.tsx","./src/components/nav/menu/menu-shadow.scss?tag=app-menu&encapsulation=shadow","./src/components/nav/menu/menu.tsx","./src/components/shared/overlay/overlay.scss?tag=app-overlay","./src/components/shared/overlay/overlay.tsx","./src/global/animation/animation.ts","./src/components/scroll-top/scroll-top.scss?tag=app-scroll-top","./src/components/scroll-top/scroll-top.tsx","./src/components/shared/speedbump/speedbump.scss?tag=app-speedbump","./src/components/shared/speedbump/speedbump.tsx"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n const evt = hydrateObj(new Event(event, { bubbles, cancelable: true }), args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null\n }\n\n return selector\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport {\n enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { defineJQueryPlugin } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n if (closeEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n }\n\n // Private\n _destroyElement() {\n this._element.remove()\n EventHandler.trigger(this._element, EVENT_CLOSED)\n this.dispose()\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","@import '../../../../node_modules/bootstrap/scss/close';\r\n\r\n.alert {\r\n\tmargin-bottom: 0;\r\n\tborder-radius: 0;\r\n\tpadding: $spacer 0;\r\n\r\n\r\n\t&-dismissible {\r\n\r\n\t\t.container {\r\n\t\t\tposition: relative;\r\n\t\t\tpadding-right: 3rem;\r\n\t\t}\r\n\r\n\t\t.btn-close {\r\n\t\t\tpadding: 0;\r\n\t\t\ttop: calc((-1 * #{$spacer}) + #{$gutter-sm});\r\n\t\t\tbackground-size: 13px 13px;\r\n\t\t}\r\n\t}\r\n\r\n\t.btn-close {\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tright: 0;\r\n\t}\r\n\r\n\t&.has-icon {\r\n\t\t\r\n\t\t> .container {\r\n\t\t\tpadding-left: $spacer * 4;\r\n\r\n\t\t\tp{\r\n\t\t\t\tmargin: 0 30px;\r\n\t\t\t}\r\n\t\r\n\t\t\tapp-arrow-link{\r\n\t\t\t\tmargin: 0 30px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.alert-icon {\r\n\t\t\tposition: absolute;\r\n\t\t\tleft: 0;\r\n\t\t\theight: 50px;\r\n\t\t\twidth: 50px;\r\n\r\n\t\t\tsvg {\r\n\t\t\t\t@include svg-format(100%, 100%, $primary);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\t// Client Scope\r\n\t&.app-alert {\r\n\t\tbackground-color: $secondary;\r\n\t\tborder: none;\r\n\t\tpadding: 20px 0;\r\n\r\n\t\tp {\r\n\t\t\tmargin: 0;\r\n\t\t\tpadding: 0;\r\n\t\t\t@include line-height(18);\r\n\t\t\t@include text-size(15);\r\n\r\n\t\t\tstrong {\r\n\t\t\t\t@include text-size(16);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstrong {\r\n\t\t\t@include text-size(16);\r\n\t\t}\r\n\r\n\t\t[class^=\"arrow-link\"] {\r\n\t\t\t@include text-size(12);\r\n\r\n\t\t\t.svg-icon {\r\n\t\t\t\tmargin-right: 0;\r\n\t\t\t}\r\n\r\n\t\t\t&:last-child {\r\n\t\t\t\tmargin: 8px 0 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.has-icon {\r\n\t\t\t> .container {\r\n\t\t\t\tpadding-left: $spacer * 5;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@include media-breakpoint-down(md) {\r\n\t\t&-dismissible {\r\n\t\t\t.btn-close {\r\n\t\t\t\tpadding: 0;\r\n\t\t\t\ttop: calc((-1 * #{$spacer}) + #{$gutter-def});\r\n\t\t\t\tright: 35px;\r\n\t\t\t\tbackground-size: 13px 13px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.app-alert {\r\n\t\t\t[class^=\"arrow-link\"]:last-child,\r\n\t\t\t[class^=\"arrow-link\"] {\r\n\t\t\t\tmargin: $gutter-sm 0 0;\r\n\t\t\t}\r\n\r\n\t\t\t&.has-icon {\r\n\t\t\t\t> .container {\r\n\t\t\t\t\tpadding: 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.alert-icon {\r\n\t\t\t\t\tmargin: 6px auto 8px auto;\r\n\t\t\t\t\tposition: relative;\r\n\t\t\t\t\tleft: 0;\r\n\t\t\t\t\theight: 25px;\r\n\t\t\t\t\twidth: 25px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tp {\r\n\t\t\t\tfont-size: 12px;\r\n\t\t\t}\r\n\r\n\t\t\t> .container {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tflex-direction: column;\r\n\t\t\t\tpadding: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import { Component, h, Prop, Event } from '@stencil/core';\r\nimport type { ComponentInterface, EventEmitter } from '@stencil/core';\r\nimport BootstrapAlert from 'bootstrap/js/src/alert';\r\n\r\n@Component({\r\n\ttag: 'app-alert',\r\n\tstyleUrl: 'alert.scss'\r\n})\r\nexport class Alert implements ComponentInterface {\r\n\r\n\t/**\r\n\t * Assigns a required unique id to the general alert\r\n\t */\r\n\t@Prop() alertId: string = \"genericAlertId\";\r\n\r\n\t/**\r\n\t * Provides a string of any additional classes for the alert item\r\n\t */\r\n\t@Prop() alertClasses: string = \"alert-primary\";\r\n\r\n\t/**\r\n\t * Optional alert icon, set via the `` component\r\n\t */\r\n\t@Prop() alertIcon: string;\r\n\r\n\t/**\r\n\t * Provides a string of classes for the alert's dismiss button\r\n\t */\r\n\t@Prop() btnClasses: string = \"btn-close\";\r\n\r\n\t/**\r\n\t * Provides input to change text of alert's dismiss button, btnClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnText: string = \"\";\r\n\r\n\t/**\r\n\t * Provides input to change URL of alert's second button\r\n\t */\r\n\t@Prop() btnTwoHref: string;\r\n\r\n\t/**\r\n\t * Provides a string of classes for the alert's optional second button\r\n\t */\r\n\t@Prop() btnTwoClasses: string;\r\n\r\n\t/**\r\n\t * Provides input to change label of alert's second button; btnTwoClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnTwoLabel: string;\r\n\r\n\t/**\r\n\t * Provides input to change text of alert's second button; btnTwoClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnTwoText: string;\r\n\r\n\t/**\r\n\t * Provides input to change icon of alert's second button; btnTwoClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnTwoIcon: string;\r\n\r\n\t/**\r\n\t * Determines if the alert should use dismissible utilities\r\n\t */\r\n\t@Prop() dismissible: boolean = false;\r\n\r\n\t/**\r\n\t * Event is triggered when button clicked\r\n\t */\r\n\t@Event() dismissTriggered: EventEmitter;\r\n\tdismissTriggeredHandler() {\r\n\t\tthis.dismissTriggered.emit();\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\tif (this.dismissible) {\r\n\t\t\tlet alertElement = document.getElementById(this.alertId);\r\n\t\t\tnew BootstrapAlert(alertElement);\r\n\t\t}\r\n\r\n\t\t// Make sure the alert knows to add padding\r\n\t\t// for the icon (left default)\r\n\t\tif (this.alertIcon) {\r\n\t\t\tthis.alertClasses = this.alertClasses + ' has-icon';\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tif (this.dismissible) {\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t{(this.alertIcon) &&\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{(this.btnTwoHref) &&\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{(this.btnTwoIcon) ?\r\n\t\t\t\t\t\t\t\t\t\t{this.btnTwoText} :\r\n\t\t\t\t\t\t\t\t\t\tthis.btnTwoText\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn (\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}",".alert.cookie-message {\r\n\tposition: fixed;\r\n\tbottom: 0;\r\n\tleft: 0;\r\n\tright: 0;\r\n\tz-index: $zindex-fixed;\r\n\tbackground-color: #F6F4EF;\r\n\tpadding-block: 20px;\r\n\tbox-shadow: 0px 4px 18px 0px rgba(0, 0, 0, 0.2509803922);\r\n\r\n\t.container {\r\n\t\tpadding-right: .75rem;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t\tgap: 16px;\r\n\r\n\t\t@include media-breakpoint-down(md) {\r\n\t\t\tflex-direction: column;\r\n\t\t\talign-items: flex-start;\r\n\t\t}\r\n\r\n\t\tp {\r\n\t\t\tmargin: 0;\r\n\t\t}\r\n\t\t.cookie-links {\r\n\t\t\tflex: 0 0 auto;\r\n\t\t}\r\n\t}\r\n\r\n\t.arrow-link__underline--animate {\r\n\t\tcolor: $primary;\r\n\t\tborder-color: $primary;\r\n\r\n\t\tspan {\r\n\t\t\tcolor: $primary;\r\n\r\n\t\t\t.svg-icon * {\r\n\t\t\t\tcolor: $primary;\r\n\t\t\t\tfill: $primary !important;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.app-cookie {\r\n\tbackground-color: #FFF;\r\n\tbox-shadow: 0px -4px 14px rgba(0, 37, 64, 0.10);\r\n\r\n\t> .container {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\r\n\t\timg{\r\n\t\t\tmax-width: 115px;\r\n\t\t\tmargin: 0 10px;\r\n\t\t}\r\n\r\n\t\t> * {\r\n\t\t\tpadding: 0 $gutter-def;\r\n\t\t\tflex: 1 0 auto;\r\n\t\t\tfont-size: 16;\r\n\r\n\t\t\t&:nth-child(2) {\r\n\t\t\t\tpadding-left: 0;\r\n\t\t\t\tmax-width: 75%;\r\n\t\t\t}\r\n\r\n\t\t\t&:last-child {\r\n\t\t\t\tpadding-right: 0;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tp {\r\n\t\tmargin: 0;\r\n\t\tpadding: 0;\r\n\t\tcolor: #092B27;\r\n\t}\r\n\r\n\t.cookie-links {\r\n\t\t@include row-cols(1);\r\n\t\tmax-width: 250px;\r\n\r\n\t\t[class^=\"arrow-link\"] {\r\n\t\t\tpadding: 0;\r\n\t\t\twidth: auto;\r\n\r\n\t\t\t.svg-icon {\r\n\t\t\t\tborder-bottom: solid 1px $primary;\r\n\t\t\t\tmargin: 0 0 0 5px;\r\n\t\t\t\tbottom: -1px;\r\n\r\n\t\t\t\tsvg {\r\n\t\t\t\t\tmargin: 0 0 1px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t> :first-child {\r\n\t\t\tmargin: 0 0 10px;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n@include media-breakpoint-down(md) {\r\n\t.alert.cookie-message {\r\n\t\t.container {\r\n\t\t\tpadding: 0 35px;\r\n\r\n\t\t\t> * {\r\n\t\t\t\tpadding: 0;\r\n\t\t\t}\r\n\r\n\t\t\tp {\r\n\t\t\t\tmax-width: 100%;\r\n\t\t\t\t@include text-size(12);\r\n\t\t\t}\r\n\r\n\t\t\timg {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t.app-cookie {\r\n\t\t> .container {\r\n\t\t\tflex-direction: column;\r\n\t\t\tpadding: 0 35px;\r\n\t\t}\r\n\r\n\t\t.cookie-links {\r\n\t\t\tpadding: 0;\r\n\t\t\tmargin: 15px 0 0;\r\n\r\n\t\t\t> :first-child { \r\n\t\t\t\tmargin-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import { Component, h, Prop, Listen } from '@stencil/core';\r\nimport type { ComponentInterface } from '@stencil/core';\r\nimport { getCookie, guid, setCookie } from 'utils';\r\n\r\ndeclare var onCookieAccept;\r\n\r\n@Component({\r\n tag: 'app-cookie-message',\r\n styleUrl: 'cookie-message.scss'\r\n})\r\nexport class StCookieMessage implements ComponentInterface {\r\n\r\n\t/**\r\n\t * Assigns a required unique id to the general alert\r\n\t */\r\n\t@Prop() cookieMsgId: string = `app-cookie-message-${guid()}`;\r\n\r\n\t/**\r\n\t * Provides a string of any additional classes for the cookie message\r\n\t */\r\n\t@Prop() cookieMsgClasses: string = \"alert-primary\";\r\n\r\n\t/**\r\n\t * Provides a string of classes for the cookie message's dismiss button\r\n\t */\r\n\t@Prop() btnClasses: string = \"btn-primary\";\r\n\r\n\t/**\r\n\t * Provides input to change text of alert's dismiss button, btnClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnText: string = \"I Accept\";\r\n\r\n\t/**\r\n\t * Provides input to change URL of alert's second button\r\n\t */\r\n\t@Prop() btnTwoHref: string;\r\n\r\n\t/**\r\n\t * Provides a string of classes for the alert's optional second button\r\n\t */\r\n\t@Prop() btnTwoClasses: string;\r\n\r\n\t/**\r\n\t * Provides input to change label of alert's second button; btnTwoClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnTwoLabel: string;\r\n\r\n\t/**\r\n\t * Provides input to change text of alert's second button; btnTwoClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnTwoText: string;\r\n\r\n\t/**\r\n\t * Provides input to change icon of alert's second button; btnTwoClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnTwoIcon: string;\r\n\r\n\t/**\r\n\t * Name of cookie used to track user consent\r\n\t */\r\n\t@Prop() cookieName: string = 'UserCookie';\r\n\r\n\t/**\r\n\t * Determines if cookie message should be displayed\r\n\t */\r\n\t private shouldRender: boolean;\r\n\r\n\t/**\r\n\t * When event is emitted set session storage.\r\n\t */\r\n\t@Listen('dismissTriggered')\r\n\thandleDismissTriggered() {\r\n\t\tsetCookie(this.cookieName, 'true', 30);\r\n\t\tthis.shouldRender = false;\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\tconst consent = getCookie(this.cookieName);\r\n\r\n\t\tif (!consent || consent != 'true') {\r\n\t\t\tthis.shouldRender = true;\r\n\t\t} else {\r\n\t\t\tthis.shouldRender = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\trender() {\r\n\t\tif (this.shouldRender) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\treturn (
\r\n\t\t\t\t\r\n\t\t\t
);\r\n\t\t}\r\n\t}\r\n}","@import '../../../global/reset';\r\n\r\n:host {\r\n\tdisplay: flow-root;\r\n}\r\n\r\n:host(:not([open])) {\r\n\tslot:is(\r\n\t\t[name='close-label'],\r\n\t\t[name='close-icon']\r\n\t) {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n:host([open]) {\r\n\tslot:is(\r\n\t\t[name='open-label'],\r\n\t\t[name='open-icon']\r\n\t) {\r\n\t\tdisplay: none;\r\n\t}\r\n}\r\n\r\n#summary {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tgap: 1em;\r\n}\r\n\r\n:host([interest-toggle].hide-toggle) {\r\n\t@media (hover: hover) {\r\n\t\t#toggle:not(:focus-visible) {\r\n\t\t\t@include visually-hidden;\r\n\t\t}\r\n\t}\r\n}\r\n","import { h, Fragment, Component, Prop, Element, Event, Watch, State } from '@stencil/core';\r\nimport type { ComponentInterface, EventEmitter } from '@stencil/core';\r\nimport { getBreakpoint, pointerHover } from 'utils';\r\n\r\nconst fullWidth = getBreakpoint('992px').up;\r\n\r\n@Component({\r\n\ttag: 'app-details',\r\n\tstyleUrl: 'details.scss',\r\n\tshadow: true\r\n})\r\nexport class Details implements ComponentInterface {\r\n\t@Element() root: HTMLAppDetailsElement;\r\n\r\n\t/** Disables the toggle button */\r\n\t@Prop({ reflect: true }) disabled = false;\r\n\t/** Whether the details are open */\r\n\t@Prop({ mutable: true, reflect: true }) open = false;\r\n\t/** Name of the mutually-exclusive details group (accordion behavior) */\r\n\t@Prop({ reflect: true }) name?: string;\r\n\t/**\r\n\t * If hovering is supported by the medium:\r\n\t * - optionally visually hide the toggle button unless it is `:focus-visible` with `.hide-toggle`\r\n\t * - details will be open during `:hover`\r\n\t */\r\n\t@Prop({ reflect: true }) interestToggle = false;\r\n\t/**\r\n\t * Shows the summary and the details while hiding the toggle and ignoring openness.\r\n\t */\r\n\t@Prop({ reflect: true }) forceShow: 'all' | 'desktop' | 'mobile' | undefined;\r\n\t\r\n\t@State() fullWidth: boolean = fullWidth.matches;\r\n\r\n\topenedBy: undefined | 'interest-hover' | 'explicit-toggle';\r\n\r\n\t@Event() appDetailsToggled: EventEmitter;\r\n\t@Watch('open')\r\n\tonOpenChange() {\r\n\t\tif (!this.open)\r\n\t\t\tthis.openedBy = undefined;\r\n\t\tthis.appDetailsToggled.emit(this.open);\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\taddEventListener('appDetailsToggled', (e: CustomEvent) => {\r\n\t\t\tconst other = e.composedPath()[0] as HTMLAppDetailsElement;\r\n\t\t\tif (other !== this.root && this.name && other.name === this.name && other.open)\r\n\t\t\t\tthis.open = false;\r\n\t\t});\r\n\r\n\t\taddEventListener('keydown', ({ key }) => {\r\n\t\t\tif (key === 'Escape')\r\n\t\t\t\tthis.open = false;\r\n\t\t});\r\n\r\n\t\tpointerHover(this.root, {\r\n\t\t\tonlyTrueHovers: true,\r\n\t\t\tonEachEnter: () => {\r\n\t\t\t\tif (!this.interestToggle)\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\tif (!this.open)\r\n\t\t\t\t\tthis.openedBy = 'interest-hover';\r\n\t\t\t\tthis.open = true;\r\n\t\t\t},\r\n\t\t\tonAllLeave: () => {\r\n\t\t\t\tif (this.openedBy === 'interest-hover')\r\n\t\t\t\t\tthis.open = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfullWidth.addEventListener('change', () => {\r\n\t\t\tthis.fullWidth = fullWidth.matches;\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn <>\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t {\r\n\t\t\t\t\t\tif (!this.open)\r\n\t\t\t\t\t\t\tthis.openedBy = 'explicit-toggle';\r\n\t\t\t\t\t\tthis.open = !this.open;\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tdisabled={this.disabled}\r\n\t\t\t\t\thidden={(this.forceShow === 'all') ||\r\n\t\t\t\t\t\t(this.forceShow === 'desktop' && fullWidth.matches) || \r\n\t\t\t\t\t\t(this.forceShow === 'mobile' && !fullWidth.matches)\r\n\t\t\t\t\t}\r\n\t\t\t\t>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tOpen\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t;\r\n\t}\r\n}\r\n","app-dialog {\r\n\tdisplay: contents;\r\n\r\n\t& > :where(dialog:modal) {\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tblock-size: 100%;\r\n\t\tinline-size: 100%;\r\n\t\tmax-block-size: unset;\r\n\t\tmax-inline-size: unset;\r\n\t\tpadding: 0;\r\n\t\tbackground: none;\r\n\t\tborder: none;\r\n\r\n\t\t&:not(.closing) {\r\n\t\t\t&, &::backdrop {\r\n\t\t\t\tanimation: open-dialog 0.15s ease-in-out;\r\n\t\t\t}\r\n\r\n\t\t\t@keyframes open-dialog {\r\n\t\t\t\tfrom {\r\n\t\t\t\t\topacity: 0;\r\n\t\t\t\t}\r\n\t\t\t\tto {\r\n\t\t\t\t\topacity: 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t&.closing {\r\n\t\t\t&, &::backdrop {\r\n\t\t\t\tanimation: close-dialog 0.15s ease-in-out;\r\n\t\t\t}\r\n\r\n\t\t\t@keyframes close-dialog {\r\n\t\t\t\tfrom {\r\n\t\t\t\t\topacity: 1;\r\n\t\t\t\t}\r\n\t\t\t\tto {\r\n\t\t\t\t\topacity: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&::backdrop {\r\n\t\t\tbackground: none;\r\n\t\t\tbackdrop-filter: contrast(55%) brightness(35%) blur(16px);\r\n\t\t}\r\n\r\n\t\t& > .dialog {\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex-direction: column;\r\n\t\t\tmax-width: 80vw;\r\n \t\tmax-height: 80vh;\r\n\t\t}\r\n\r\n\t\t.dialog__fallback-header {\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items: center;\r\n\r\n\t\t\th2 {\r\n\t\t\t\tmargin: 0;\r\n\t\t\t}\r\n\r\n\t\t\tform[method='dialog'] {\r\n\t\t\t\tmargin-inline-start: auto;\r\n\r\n\t\t\t\tbutton {\r\n\t\t\t\t\tdisplay: grid;\r\n\t\t\t\t\tplace-content: center;\r\n\t\t\t\t\taspect-ratio: 1;\r\n\t\t\t\t\tinline-size: 45px;\r\n\t\t\t\t\tblock-size: 45px;\r\n\r\n\t\t\t\t\tapp-icon[icon='close-thin'] svg {\r\n\t\t\t\t\t\tinline-size: 100%;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.dialog__body {\r\n\t\t\toverflow: auto;\r\n\t\t}\r\n\t}\r\n\r\n\t&:where(.transparent) > :where(dialog:modal) {\r\n\t\t& > .dialog {\r\n\t\t\tcolor: white;\r\n\r\n\t\t\t* {\r\n\t\t\t\tcolor: inherit;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.dialog__fallback-header {\r\n\t\t\t--transparent-to-backdrop: true;\r\n\t\t}\r\n\t}\r\n\r\n\t&:where(:not(.transparent)) > :where(dialog:modal) {\r\n\t\t& > .dialog {\r\n\t\t\tinline-size: 300px;\r\n\t\t\tbackground-color: white;\r\n\t\t}\r\n\r\n\t\t.dialog__fallback-header {\r\n\t\t\th2 {\r\n\t\t\t\tpadding: 16px;\r\n\t\t\t\tpadding-block-end: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.dialog__body {\r\n\t\t\tpadding: 16px;\r\n\t\t}\r\n\t}\r\n}\r\n","import { h, Component, Element, Prop, Watch, Event } from '@stencil/core';\r\nimport type { ComponentInterface, EventEmitter } from '@stencil/core';\r\n\r\n@Component({\r\n\ttag: 'app-dialog',\r\n\tstyleUrl: 'dialog.scss'\r\n})\r\nexport class Dialog implements ComponentInterface {\r\n\t@Element() root: HTMLElement;\r\n\tdialog?: HTMLDialogElement;\r\n\r\n\t/** If the component is modal, the rest of the page is inert */\r\n\t@Prop({ reflect: true }) modal = false;\r\n\t/** Whether the dialog is open */\r\n\t@Prop({ reflect: true, mutable: true }) open = false;\r\n\t@Prop() dialogId?: string;\r\n\r\n\t@Event() appDialogReturn: EventEmitter;\r\n\r\n\tprivate async reflectFromOpenProp() {\r\n\t\tif (this.dialog?.open === this.open || !this.dialog?.isConnected)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.open) {\r\n\t\t\tif (this.modal)\r\n\t\t\t\tthis.dialog!.showModal();\r\n\t\t\telse\r\n\t\t\t\tthis.dialog!.show();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dialog!.classList.add('closing');\r\n\t\t\tawait Promise.allSettled(\r\n\t\t\t\tthis.dialog!.getAnimations({ subtree: true })\r\n\t\t\t\t\t.map(animation => animation.finished)\r\n\t\t\t);\r\n\t\t\tthis.dialog!.classList.remove('closing');\r\n\t\t\t// could have changed during await\r\n\t\t\tif (this.dialog!.open)\r\n\t\t\t\tthis.dialog!.close();\r\n\t\t}\r\n\t}\r\n\r\n\t@Event() appDialogToggled: EventEmitter;\r\n\t@Watch('open')\r\n\tonOpenChange() {\r\n\t\tthis.reflectFromOpenProp();\r\n\t\tthis.appDialogToggled.emit(this.open);\r\n\t}\r\n\r\n\tprivate getTriggers() {\r\n\t\tif (!this.dialogId)\r\n\t\t\treturn;\r\n\r\n\t\tconst rootNode = this.root.getRootNode() as ParentNode;\r\n\t\treturn new Set(\r\n\t\t\t[...rootNode.querySelectorAll('[aria-controls]')]\r\n\t\t\t\t.filter(element => element.getAttribute('aria-controls') === this.dialogId)\r\n\t\t);\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\taddEventListener('click', e => {\r\n\t\t\tif (!this.dialogId)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tconst triggers = this.getTriggers();\r\n\t\t\tif (triggers && e.composedPath().some(node => triggers.has(node as any)))\r\n\t\t\t\tthis.open = !this.open;\r\n\t\t});\r\n\r\n\t\taddEventListener('keydown', e => {\r\n\t\t\tif (this.modal && this.open && e.key === 'Escape') {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tthis.open = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t this.dialog = e}\r\n\t\t\t\tonClose={() => {\r\n\t\t\t\t\tthis.open = false;\r\n\t\t\t\t\tthis.appDialogReturn.emit(this.dialog!.returnValue);\r\n\t\t\t\t}}\r\n\t\t\t\tonClick={e => {\r\n\t\t\t\t\tconst clicked = e.target as Element;\r\n\t\t\t\t\tconst transparentToBackground = getComputedStyle(clicked).getPropertyValue('--transparent-to-backdrop') === 'true';\r\n\t\t\t\t\tif (this.dialog === clicked || transparentToBackground)\r\n\t\t\t\t\t\tthis.open = false;\r\n\t\t\t\t}}\r\n\t\t\t\tonSubmit={(e: SubmitEvent) => {\r\n\t\t\t\t\tconst form = e.target as HTMLFormElement;\r\n\t\t\t\t\tif (((e.submitter as any).formMethod || form.method) === 'dialog') {\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tconst value = (e.submitter as any).value;\r\n\t\t\t\t\t\tif (value)\r\n\t\t\t\t\t\t\tthis.dialog!.returnValue = value;\r\n\t\t\t\t\t\tthis.open = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tasync componentDidRender() {\r\n\t\tawait this.reflectFromOpenProp();\r\n\t\tthis.getTriggers()?.forEach(element => {\r\n\t\t\telement.setAttribute('aria-expanded', this.open + '');\r\n\t\t});\r\n\t}\r\n}\r\n","app-icon {\r\n\tdisplay: flex;\r\n\r\n\t& > svg {\r\n\t\tfill: currentColor;\r\n\t\tinline-size: 1em;\r\n\t}\r\n\r\n\t// 320/512\r\n\t&:is(\r\n\t\t[icon='forward-step'],\r\n\t\t[icon='backward-step'],\r\n\t\t[icon='chevron-left'],\r\n\t\t[icon='chevron-right'],\r\n\t\t[icon='pause'],\r\n\t\t[icon='facebook-f'],\r\n\t\t[icon='caret-down'],\r\n\t\t[icon='caret-up']\r\n\t) > svg {\r\n\t\taspect-ratio: 5/8;\r\n\t}\r\n\r\n\t// 352/512\r\n\t&:is(\r\n\t\t[icon='forward-step'],\r\n\t\t[icon='backward-step'],\r\n\t\t[icon='chevron-left'],\r\n\t\t[icon='chevron-right'],\r\n\t\t[icon='pause'],\r\n\t\t[icon='facebook-f'],\r\n\t\t[icon='lightbulb']\r\n\t) > svg {\r\n\t\taspect-ratio: 5/8;\r\n\t}\r\n\r\n\t// 384/512\r\n\t&:is(\r\n\t\t[icon='xmark'],\r\n\t\t[icon='hiking'],\r\n\t\t[icon='tree'],\r\n\t\t[icon='pinterest-p'],\r\n\t\t[icon='play']\r\n\t) > svg {\r\n\t\taspect-ratio: 3/4;\r\n\t}\r\n\r\n\t// 192/512\r\n\t&:is(\r\n\t\t[icon='caret-left'],\r\n\t\t[icon='caret-right']\r\n\t) > svg {\r\n\t\taspect-ratio: 3/8;\r\n\t}\r\n\r\n\t// 448/512\r\n\t&:is(\r\n\t\t[icon='bars'],\r\n\t\t[icon='menu'],\r\n\t\t[icon='check'],\r\n\t\t[icon='chevron-down'],\r\n\t\t[icon='chevron-up'],\r\n\t\t[icon='lock'],\r\n\t\t[icon='user'],\r\n\t\t[icon='instagram'],\r\n\t\t[icon='linkedin'],\r\n\t\t[icon='linkedin-in'],\r\n\t\t[icon='square-facebook'],\r\n\t\t[icon='square-instagram'],\r\n\t\t[icon='calendar'],\r\n\t\t[icon='atlas'],\r\n\t\t[icon='train'],\r\n\t\t[icon='snowflake'],\r\n\t\t[icon='calendar-day'],\r\n\t\t[icon='square-x-twitter']\r\n\t) > svg {\r\n\t\taspect-ratio: 7/8;\r\n\t}\r\n\r\n\t// 512/512\r\n\t&:is(\r\n\t\t[icon='arrow-circle-down'],\r\n\t\t[icon='arrow-circle-left'],\r\n\t\t[icon='arrow-circle-right'],\r\n\t\t[icon='arrow-circle-up'],\r\n\t\t[icon='circle-minus'],\r\n\t\t[icon='circle-play'],\r\n\t\t[icon='play-circle'],\r\n\t\t[icon='circle-plus'],\r\n\t\t[icon='comment'],\r\n\t\t[icon='download'],\r\n\t\t[icon='envelope'],\r\n\t\t[icon='envelope-solid'],\r\n\t\t[icon='phone'],\r\n\t\t[icon='phone-solid'],\r\n\t\t[icon='maginifying-glass'],\r\n\t\t[icon='search'],\r\n\t\t[icon='close'],\r\n\t\t[icon='times'],\r\n\t\t[icon='close-thin'],\r\n\t\t[icon='triangle-exclamation'],\r\n\t\t[icon='upload'],\r\n\t\t[icon='facebook'],\r\n\t\t[icon='helmet'],\r\n\t\t[icon='rowing'],\r\n\t\t[icon='hamburger'],\r\n\t\t[icon='gondola'],\r\n\t\t[icon='kayaking'],\r\n\t\t[icon='ziplining'],\r\n\t\t[icon='magnifying-glass'],\r\n\t\t[icon='helmet'],\r\n\t\t[icon='plus'],\r\n\t\t[icon='minus'],\r\n\t\t[icon='clock'],\r\n\t\t[icon='search-location'],\r\n\t\t[icon='search-dollar'],\r\n\t\t[icon='x-twitter'], \r\n\t\t[icon='portal']\r\n\t) > svg {\r\n\t\taspect-ratio: 1;\r\n\t}\r\n\r\n\t// 576/512\r\n\t&:is(\r\n\t\t[icon='house'],\r\n\t\t[icon='fish'],\r\n\t\t[icon='youtube'],\r\n\t\t[icon='home'],\r\n\t\t[icon='map']\r\n\t) > svg {\r\n\t\taspect-ratio: 9/8;\r\n\t}\r\n\r\n\t// 616/512\r\n\t&:is(\r\n\t\t[icon='store']\r\n\t) > svg {\r\n\t\taspect-ratio: 77/64;\r\n\t}\r\n\r\n\t// 640/512\r\n\t&:is(\r\n\t\t[icon='link'],\r\n\t\t[icon='tractor'],\r\n\t\t[icon='biking'],\r\n\t\t[icon='ship'],\r\n\t\t[icon='campground'],\r\n\t\t[icon='caravan'],\r\n\t\t[icon='user-check'],\r\n\t\t[icon='code']\r\n\t) > svg {\r\n\t\taspect-ratio: 5/4;\r\n\t}\r\n\r\n\t// 46/76\r\n\t&:is(\r\n\t\t[icon='big-chevron-left'],\r\n\t\t[icon='big-chevron-right']\r\n\t) > svg {\r\n\t\taspect-ratio: 46/76;\r\n\t}\r\n\r\n\t// 14/11\r\n\t&:is(\r\n\t\t[icon='home-work']\r\n\t) > svg {\r\n\t\taspect-ratio: 14/11;\r\n\t}\r\n\r\n\t// 12/13\r\n\t&:is(\r\n\t\t[icon='category'],\r\n\t\t[icon='signpost'],\r\n\t\t[icon='event-check']\r\n\t) > svg {\r\n\t\taspect-ratio: 12/13;\r\n\t}\r\n\r\n\t// 11/13\r\n\t&:is(\r\n\t\t[icon='month'],\r\n\t\t[icon='flag']\r\n\t) > svg {\r\n\t\taspect-ratio: 11/13;\r\n\t}\r\n\r\n\t&[icon='open-quote'] > svg {\r\n\t\taspect-ratio: 63/50;\r\n\t}\r\n\r\n\t&[icon='speech-bubble-tail'] > svg {\r\n\t\taspect-ratio: 147/50;\r\n\t}\r\n}\r\n","import { h, Component, Element, Prop } from '@stencil/core';\r\nimport type { ComponentInterface } from '@stencil/core';\r\n\r\n@Component({\r\n\ttag: 'app-icon',\r\n\tstyleUrl: 'icon.scss'\r\n})\r\nexport class Icon implements ComponentInterface {\r\n\t@Element() root: HTMLElement;\r\n\r\n\t@Prop() sheet = iconSheet ?? '/icon/sheets/icons.svg';\r\n\t@Prop({ reflect: true }) icon: string;\r\n\t@Prop() cssClass?: string;\r\n\r\n\tcomponentWillLoad() {\r\n\t\t// this should be done with ElementInternals.role when that's supported\r\n\t\tif (!this.root.hasAttribute('role'))\r\n\t\t\tthis.root.setAttribute('role', 'presentation');\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n","@import '../../../global/reset';\r\n\r\n*, ::before, ::after {\r\n\tbox-sizing: border-box;\r\n\tcolor: inherit;\r\n\tfont-family: inherit;\r\n\toverflow-wrap: break-word;\r\n}\r\n\r\n@mixin visually-hidden {\r\n\tposition: absolute !important;\r\n\theight: 1px !important;\r\n\twidth: 1px !important;\r\n\twhite-space: nowrap !important;\r\n\toverflow: hidden !important;\r\n\tclip-path: inset(100%) !important;\r\n\tborder: 0 !important;\r\n\tpadding: 0 !important;\r\n\tmargin: 0 !important;\r\n\toutline: none !important;\r\n}\r\n.visually-hidden:not(:focus-visible) {\r\n\t@include visually-hidden;\r\n}\r\n\r\n[hidden] {\r\n\tdisplay: none !important;\r\n}\r\n\r\n:disabled, .disabled {\r\n\tpointer-events: none;\r\n\tcursor: not-allowed;\r\n\topacity: 0.8;\r\n\tfilter: grayscale(0.4);\r\n}\r\n\r\nbutton {\r\n\tappearance: none;\r\n\tbackground: none;\r\n\tpadding: 0;\r\n\tborder: none;\r\n\tmargin: 0;\r\n\tline-height: 1;\r\n\ttext-decoration: none;\r\n\tcursor: pointer;\r\n}\r\n:host {\r\n\tdisplay: contents;\r\n}\r\n\r\n#container {\r\n\t--shadow: 0 2px 4px hsl(0 0% 0% / 20%);\r\n\tposition: relative;\r\n\tbackground-color: white;\r\n\tbox-shadow: var(--shadow);\r\n\r\n\t@include media-breakpoint-down(lg) {\r\n\t\tdisplay: flex;\r\n\t\tgap: 1em;\r\n\r\n\t\t&,\r\n\t\tapp-details#collapsable-menu::part(content) {\r\n\t\t\tpadding-inline: var(--inline-page-margin);\r\n\t\t}\r\n\r\n\t\tslot[name='logo']::slotted(*) {\r\n\t\t\tmargin-inline-end: auto;\r\n\t\t}\r\n\r\n\t\tapp-details#collapsable-menu {\r\n\t\t\t&::part(summary),\r\n\t\t\t&::part(toggle) {\r\n\t\t\t\tblock-size: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t&::part(toggle) {\r\n\t\t\t\tdisplay: grid;\r\n\t\t\t\tplace-content: center;\r\n\t\t\t\tinline-size: 45px;\r\n\t\t\t\tblock-size: 100%;\r\n\t\t\t}\r\n\r\n\t\t\t&::part(content) {\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tinset-block-start: 100%;\r\n\t\t\t\tinset-inline: 0;\r\n\t\t\t\tbackground-color: white;\r\n\t\t\t\tbox-shadow: inset var(--shadow);\r\n\t\t\t}\r\n\r\n\t\t\t& app-icon {\r\n\t\t\t\tbackground-color: $secondary;\r\n\t\t\t\tcolor: #ffffff;\r\n\t\t\t\tborder-radius: 50%;\r\n\t\t\t\tdisplay: grid;\r\n\t\t\t\tplace-content: center;\r\n\t\t\t\tinline-size: 36px;\r\n\t\t\t\tblock-size: 36px;\r\n\t\t\t\taspect-ratio: 1;\r\n\t\t\t\tmargin-bottom: 6px;\r\n\r\n\t\t\t\tsvg {\r\n\t\t\t\t\tinline-size: 16px;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t.icon-text {\r\n\t\t\t\tfont-size: 14px;\r\n\t\t\t\tline-height: 14px;\r\n\t\t\t\tcolor: $primary;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t@include media-breakpoint-up(lg) {\r\n\t\t#top-ribbon,\r\n\t\t#main-bar {\r\n\t\t\tpadding-inline: 50px;\r\n\t\t}\r\n\r\n\t\t#top-ribbon {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 1em;\r\n\t\t\tpadding-block: 4px;\r\n\t\t\talign-items: center;\r\n\t\t\tjustify-content: end;\r\n\t\t\tbackground-color: #F6F4EF;\r\n\t\t\tcolor: $primary;\r\n\t\t}\r\n\r\n\t\t#main-bar {\r\n\t\t\tdisplay: flex;\r\n\t\t\tgap: 1em;\r\n\t\t\tposition: relative;\r\n\t\t\tz-index: 99;\r\n\r\n\t\t\tslot[name='logo']::slotted(*) {\r\n\t\t\t\tmargin-inline-end: auto;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { h, Fragment, Component, Element, State } from '@stencil/core';\r\nimport type { ComponentInterface } from '@stencil/core';\r\nimport { breakpoints } from 'utils';\r\n\r\nconst fullWidth = breakpoints.lg.up;\r\n\r\n@Component({\r\n\ttag: 'app-menu',\r\n\tstyleUrl: 'menu-shadow.scss',\r\n\tshadow: true\r\n})\r\nexport class Menu implements ComponentInterface {\r\n\t@Element() root: HTMLElement;\r\n\r\n\t@State() fullWidth: boolean;\r\n\t@State() openMobile = false;\r\n\t@State() openMenuLevel1s = new Set();\r\n\r\n\tclose() {\r\n\t\tthis.openMobile = false;\r\n\t\tthis.root.querySelectorAll('app-details').forEach(details => {\r\n\t\t\tdetails.open = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\tconst appDetailsElements = [...this.root.querySelectorAll('app-details')];\r\n\t\tconst menuLevel1s = new Set(appDetailsElements.filter(\r\n\t\t\tdetails => details.name === 'menu-level-1' && \r\n\t\t\t!details.classList.contains('menu__search')\r\n\t\t));\r\n\t\tconst menuLevel2s = new Set(appDetailsElements.filter(details => details.name === 'menu-level-2'));\r\n\r\n\t\tconst reflectWidth = () => {\r\n\t\t\tthis.fullWidth = fullWidth.matches;\r\n\r\n\t\t\tmenuLevel1s.forEach(details => {\r\n\t\t\t\tdetails.interestToggle = fullWidth.matches;\r\n\t\t\t});\r\n\t\t\tmenuLevel2s.forEach(details => {\r\n\t\t\t\tdetails.forceShow = (fullWidth.matches ? 'all' : undefined);\r\n\t\t\t});\r\n\r\n\t\t\tif (!fullWidth.matches && this.openMenuLevel1s.size)\r\n\t\t\t\tthis.openMobile = true;\r\n\t\t};\r\n\t\treflectWidth();\r\n\t\tfullWidth.addEventListener('change', reflectWidth);\r\n\r\n\t\tthis.root.addEventListener('appDetailsToggled', async (e: CustomEvent) => {\r\n\t\t\tconst details = e.composedPath()[0] as HTMLAppDetailsElement;\r\n\t\t\tif (!menuLevel1s.has(details))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tconst openMenuLevel1s = new Set(this.openMenuLevel1s);\r\n\r\n\t\t\tif (details.open)\r\n\t\t\t\topenMenuLevel1s.add(details);\r\n\t\t\telse\r\n\t\t\t\topenMenuLevel1s.delete(details);\r\n\r\n\t\t\t// account for vdom orphans\r\n\t\t\tfor (const details of openMenuLevel1s)\r\n\t\t\t\tif (!details.isConnected)\r\n\t\t\t\t\topenMenuLevel1s.delete(details);\r\n\r\n\t\t\tthis.openMenuLevel1s = openMenuLevel1s;\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst isOpen = (!this.fullWidth && this.openMobile) || this.openMenuLevel1s.size > 0;\r\n\t\treturn <>\r\n\t\t\t {\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t
\r\n\t\t\t\t{this.fullWidth\r\n\t\t\t\t\t?\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t:\r\n\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tconst appDetails = e.composedPath()[0] as HTMLAppDetailsElement;\r\n\t\t\t\t\t\t\t\t\tif (appDetails !== e.currentTarget)\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t\t\t\t\tif (e.detail)\r\n\t\t\t\t\t\t\t\t\t\tthis.openMobile = true;\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\tthis.close();\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tMenu\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tClose\r\n\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t
\r\n\t\t;\r\n\t}\r\n}\r\n","app-overlay {\r\n\t&:not([active]) {\r\n\t\topacity: 0;\r\n\t}\r\n\r\n\t&[active] {\r\n\t\tposition: fixed;\r\n\t\tinset: 0;\r\n\t\tz-index: $zindex-modal-backdrop;\r\n\t\tbackdrop-filter: contrast(55%) brightness(35%) blur(16px);\r\n\t\topacity: 1;\r\n\t\ttransition: opacity 0.175s ease-in;\r\n\r\n\t\t&[under-next-sibling] + * {\r\n\t\t\tz-index: $zindex-modal;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, Element, Event, Prop } from '@stencil/core';\r\nimport type { ComponentInterface, EventEmitter } from '@stencil/core';\r\n\r\n@Component({\r\n\ttag: 'app-overlay',\r\n\tstyleUrl: 'overlay.scss'\r\n})\r\nexport class Overlay implements ComponentInterface {\r\n\t@Element() root: HTMLElement;\r\n\r\n\t@Prop({ reflect: true, mutable: true }) active = false;\r\n\t@Prop({ reflect: true }) underNextSibling = false;\r\n\t@Prop() clickToDismiss = true;\r\n\t@Prop() escapeToDismiss = true;\r\n\r\n\t// detail shows what is being dismissed\r\n\t// strange build error prevents the type from being set to Element\r\n\t@Event() overlayDismissed: EventEmitter;\r\n\r\n\t#dismiss() {\r\n\t\tthis.active = false;\r\n\t\tthis.overlayDismissed.emit(\r\n\t\t\t// either the next sibling or the whole body is being dismissed\r\n\t\t\tthis.underNextSibling\r\n\t\t\t\t? this.root.nextElementSibling\r\n\t\t\t\t: document.body\r\n\t\t);\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\tthis.root.addEventListener('click', () => {\r\n\t\t\tif (this.clickToDismiss)\r\n\t\t\t\tthis.#dismiss();\r\n\t\t});\r\n\r\n\t\taddEventListener('keydown', ({ key }) => {\r\n\t\t\tif (this.escapeToDismiss && key === 'Escape')\r\n\t\t\t\tthis.#dismiss();\r\n\t\t});\r\n\t}\r\n}\r\n","/**\r\n * Animation Helpers\r\n */\r\nexport const fadeUpIn = (element) => {\r\n try {\r\n element.classList.add('show');\r\n } catch (error) {\r\n console.error('\\tCLASS: AnimationHelpers\\n\\tMETHOD: fadeUpIn ', '\\n\\n', `\\t${error}`);\r\n }\r\n}\r\n\r\nexport const fadeOut = (element) => {\r\n // element.style.opacity = 1;\r\n (function fade() {\r\n if ((element.style.opacity -= .1) < 0) {\r\n element.style.display = 'none';\r\n } else {\r\n requestAnimationFrame(fade);\r\n }\r\n })();\r\n};\r\n\r\nexport const fadeIn = (element, display?: string) => {\r\n // element.style.opacity = 0;\r\n element.style.display = display || \"block\";\r\n (function fade() {\r\n let val = parseFloat(element.style.opacity);\r\n if (!((val += .1) > 1)) {\r\n element.style.opacity = val;\r\n requestAnimationFrame(fade);\r\n }\r\n })();\r\n};",".btn-scroll-to-top {\r\n display: none;\r\n position: fixed;\r\n bottom: 80px;\r\n right: 40px;\r\n height: 50px;\r\n width: 50px;\r\n border: 2px solid $secondary;\r\n border-radius: 5px;\r\n background-color: $secondary;\r\n transform: translateY(0);\r\n box-shadow: 0px 3px 9px rgba(0, 0, 0, 0.16);\r\n @include transitionDefault(all);\r\n z-index: 1100;\r\n\r\n .svg-icon {\r\n position: absolute;\r\n left: 50%;\r\n top: 50%;\r\n transform: translate(-50%, -50%);\r\n\r\n svg {\r\n @include svg-format(30px, 30px, #fff);\r\n @include transitionDefault(fill);\r\n transform: rotate(-90deg);\r\n margin-bottom: 4px;\r\n }\r\n }\r\n\r\n &:hover,\r\n &:focus {\r\n transform: translateY(-5px);\r\n background-color: $primary;\r\n border-color: $primary;\r\n @include transitionDefault(all);\r\n }\r\n}","import { Component, h } from '@stencil/core';\r\nimport type { ComponentInterface } from '@stencil/core';\r\nimport { fadeIn, fadeOut } from 'animation';\r\n\r\n@Component({\r\n tag: 'app-scroll-top',\r\n styleUrl: 'scroll-top.scss'\r\n})\r\nexport class ScrollTop implements ComponentInterface {\r\n\r\n private isShown = false;\r\n\r\n componentDidRender() {\r\n const btn = document.querySelector('.btn-scroll-to-top')!;\r\n\r\n window.addEventListener('scroll', () => {\r\n if (window.scrollY > 350 && !this.isShown) {\r\n fadeIn(btn);\r\n this.isShown = true;\r\n } else if (window.scrollY <= 350 && this.isShown) {\r\n fadeOut(btn);\r\n this.isShown = false;\r\n }\r\n });\r\n\r\n btn.onclick = (e) => {\r\n e.preventDefault();\r\n window.scrollTo({top: 0, behavior: 'smooth'});\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n}\r\n","app-speedbump {\r\n\tapp-dialog {\r\n\t\t.dialog {\r\n\t\t\tmin-width: min(315px, 80vw);\r\n\t\t\tinline-size: unset;\r\n\t\t\tmax-width: min(700px, 80vw);\r\n\t\t\tborder-radius: 0.25rem;\r\n\t\t\tpadding-block: 1.25rem;\r\n\t\t\tpadding-inline: 1.5rem;\r\n\r\n\t\t\theader {\r\n\t\t\t\tmargin-block-end: 1rem;\r\n\r\n\t\t\t\tp {\r\n\t\t\t\t\tpadding-block-end: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.dialog__body {\r\n\t\t\t\tpadding: 0;\r\n\t\t\t\tpadding-block-end: 1.5rem;\r\n\r\n\t\t\t\tp:last-of-type {\r\n\t\t\t\t\tpadding-block-end: 0;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfooter form {\r\n\t\t\t\tdisplay: flex;\r\n\t\t\t\tflex-wrap: wrap;\r\n\t\t\t\tgap: 0.5rem;\r\n\r\n\t\t\t\t@include media-breakpoint-down(sm) {\r\n\t\t\t\t\t.btn {\r\n\t\t\t\t\t\tinline-size: 100%;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { h, Component, Prop, State } from '@stencil/core';\r\nimport type { ComponentInterface } from '@stencil/core';\r\n\r\n@Component({\r\n\ttag: 'app-speedbump',\r\n\tstyleUrl: 'speedbump.scss'\r\n})\r\nexport class Speedbump implements ComponentInterface {\r\n\tappDialog?: HTMLAppDialogElement;\r\n\r\n\t@Prop() speedbumpId?: string;\r\n\r\n\t@State() open = false;\r\n\r\n\tcomponentDidLoad() {\r\n\t\tlet speedbumpLink: HTMLAnchorElement | undefined;\r\n\r\n\t\taddEventListener('click', e => {\r\n\t\t\tif (this.open)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tspeedbumpLink = e.composedPath()\r\n\t\t\t\t.find((node: Node): node is HTMLAnchorElement =>\r\n\t\t\t\t\tnode instanceof HTMLAnchorElement &&\r\n\t\t\t\t\tnode.classList.contains('speedbump-link')\r\n\t\t\t\t);\r\n\t\t\tif (!speedbumpLink)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tconst sameId = this.speedbumpId === speedbumpLink.dataset.speedbumpId;\r\n\t\t\tconst noId = !this.speedbumpId && !speedbumpLink.dataset.speedbumpId;\r\n\t\t\tif (!sameId && !noId)\r\n\t\t\t\treturn;\r\n\r\n\t\t\te.preventDefault();\r\n\t\t\tthis.open = true;\r\n\t\t});\r\n\r\n\t\tthis.appDialog!.addEventListener('appDialogReturn', ({ detail: returnValue }: CustomEvent) => {\r\n\t\t\tif (returnValue !== 'confirm')\r\n\t\t\t\treturn;\r\n\r\n\t\t\tspeedbumpLink!.classList.remove('speedbump-link');\r\n\t\t\tdelete speedbumpLink!.dataset.speedbumpLink;\r\n\t\t\tspeedbumpLink!.click();\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t this.appDialog = e}\r\n\t\t\t\tmodal\r\n\t\t\t\topen={this.open}\r\n\t\t\t\tonAppDialogToggled={({ detail: open }) => {\r\n\t\t\t\t\tthis.open = open;\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n"],"mappings":"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"}