{"version":3,"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","clearTimeout","setTimeout","isConnected","maybeElement","cleanupElements","key","keys","filter","stencilSubscription","on","elmsToUpdate","Map","getRenderingRef","clear","elm","elements","forceUpdate","forEach","elms","createObservableMap","defaultState","shouldUpdate","a","b","states","Object","entries","handlers","dispose","reset","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","subscription","array","item","index","indexOf","length","createStore","createRouter","opts","_a","win","window","url","URL","location","href","parseURL","DEFAULT_PARSE_URL","activePath","newV","oldV","prop","history","pushState","document","baseURI","match","routes","route","params","matchPath","path","to","undefined","navigationChanged","Switch","childrenRoutes","result","jsx","disposeRouter","removeEventListener","router","addEventListener","Route","props","children","id","render","pathname","results","exec","lastIndex","toLowerCase","bind","thisArg","wrap","arguments","i","apply","toString","prototype","isArray","val","call","isUndefined","isBuffer","constructor","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isPlainObject","getPrototypeOf","isDate","isFile","isBlob","isFunction","isStream","pipe","isURLSearchParams","URLSearchParams","trim","str","replace","isStandardBrowserEnv","navigator","product","obj","l","hasOwnProperty","merge","assignValue","slice","extend","stripBOM","content","charCodeAt","utils","encode","encodeURIComponent","buildURL","paramsSerializer","serializedParams","parts","serialize","parseValue","v","toISOString","JSON","stringify","join","hashmarkIndex","InterceptorManager","this","fulfilled","rejected","options","synchronous","runWhen","eject","forEachHandler","h","InterceptorManager_1","normalizeHeaderName","headers","normalizedName","processHeader","name","toUpperCase","enhanceError","error","config","code","request","response","isAxiosError","toJSON","message","description","number","fileName","lineNumber","columnNumber","stack","createError","Error","settle","resolve","reject","validateStatus","status","cookies","standardBrowserEnv","write","expires","domain","secure","cookie","Date","toGMTString","read","RegExp","decodeURIComponent","remove","now","nonStandardBrowserEnv","isAbsoluteURL","test","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","ignoreDuplicateOf","parseHeaders","parsed","split","parser","line","substr","concat","isURLSameOrigin","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","setAttribute","protocol","host","search","hash","hostname","port","charAt","requestURL","xhr","xhrAdapter","Promise","dispatchXhrRequest","requestData","data","requestHeaders","responseType","XMLHttpRequest","auth","username","password","unescape","Authorization","btoa","fullPath","open","method","timeout","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","onreadystatechange","handleLoad","readyState","responseURL","onabort","handleAbort","onerror","handleError","ontimeout","handleTimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","then","onCanceled","cancel","abort","send","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","adapter","require$$0","process","require$$1","stringifySafely","rawValue","encoder","parse","e","defaults","silentJSONParsing","forcedJSONParsing","transformRequest","transformResponse","strictJSONParsing","maxContentLength","maxBodyLength","common","Accept","forEachMethodNoData","forEachMethodWithData","defaults_1","transformData","fns","context","transform","isCancel","__CANCEL__","throwIfCancellationRequested","throwIfRequested","dispatchRequest","cleanHeaderConfig","onAdapterResolution","onAdapterRejection","reason","mergeConfig","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","source","mergeDeepProperties","valueFromConfig2","defaultToConfig2","axiosKeys","otherKeys","filterAxiosKeys","validators","type","validator","thing","deprecatedWarnings","currentVerArr","pkg","version","isOlderVersion","thanVersion","pkgVersionArr","destVer","isDeprecated","formatMessage","opt","desc","console","warn","assertOptions","schema","allowUnknown","TypeError","Axios","instanceConfig","interceptors","boolean","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","chain","shift","newConfig","onFulfilled","onRejected","getUri","Axios_1","Cancel","Cancel_1","CancelToken","executor","resolvePromise","promiseExecutor","token","c","CancelToken_1","spread","arr","payload","createInstance","defaultConfig","instance","axios","create","require$$2","all","promises","require$$3","require$$4","axios_1","_default","Router","SiteLoader","componentDidRender","fetchContents","componentWillUpdate","root","querySelector","markup","globalThis","init_tables","imageLoader","initialize","catch","class","innerHTML","MILLISECONDS_MULTIPLIER","TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttr","startsWith","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","emulateTransitionEnd","duration","called","durationPadding","emulatedDuration","listener","getjQuery","jQuery","body","hasAttribute","onDOMContentLoaded","defineJQueryPlugin","plugin","$","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","mapData","storeData","bsKey","keyProperties","delete","Data","setData","getData","removeData","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","bootstrapHandler","handler","event","delegateTarget","oneOff","EventHandler","off","bootstrapDelegationHandler","domElements","querySelectorAll","parentNode","findHandler","events","delegationSelector","uidEventList","len","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","custom","isNative","addHandler","previousFn","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","VERSION","BaseComponent","_element","DATA_KEY","static","NAME","EVENT_KEY","DATA_API_KEY","SELECTOR_DISMISS","EVENT_CLOSE","EVENT_CLOSED","EVENT_CLICK_DATA_API","CLASS_NAME_ALERT","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","classList","contains","_destroyElement","removeChild","each","alertInstance","handleDismiss","kdxAlertCss","StAlert","dismissTriggeredHandler","dismissTriggered","emit","componentWillLoad","dismissible","alertElement","getElementById","alertId","alertIcon","alertClasses","role","btnHref","btnClasses","btnLabel","btnText","icon","btnIcon","btnTwoClasses","btnTwoLabel","btnTwoText","btnTwoIcon","onClick","StAlertBanner","handleDismissTriggered","localStorage","setItem","shouldRender","getItem","initTables","table","toggleAttribute","tBodies","row","rows","hiddenTable","add","after","cell","cells","cellIndex","span","append","childNodes","toggleButton","shouldOpen","toggle","insertRow","tHead","cloneNode","fadeOut","fade","style","opacity","display","requestAnimationFrame","fadeIn","ImageLoader","queue","backgroundQueue","lazyImageObserver","lazyBgObserver","webpSupported","supportsWebp","getImagesToLazyLoad","onContentLoaded","setGenericPlaceholder","lazyImage","observe","lazyBg","genericImagePlaceholder","img","genericBgPlaceholder","bg","backgroundColor","IntersectionObserver","entry","isIntersecting","dataset","src","srcset","unobserve","webP","elem","getContext","toDataURL","StApp","addListItemBullets","globalFunctions","componentDidLoad","substring","scrollIntoView","head","insertAdjacentHTML","assetPath","fix_element_height","maxHeight","clone","getBoundingClientRect","height","clientHeight","fade_in","fade_out","kdxCookieMessageCss","StCookieMessage","guid","setCookie","cookieName","consent","getCookie","cookieMsgId","cookieMsgClasses","btnTwoHref","StIcon","cssClass","xlinkHref","iconSheet","kdxMegaNavCss","KdxMegaNav","pageNodeArray","utilityNavLinkArray","calculateNavPositions","handleScreenResize","pageNodes","utilityNavLinks","enableStickyNav","toggleMobileNav","toggleDesktopSearch","toggleLogin","createChildrenMarkup","output","isStartOfCol","child","some","Break","UrlName","LinkSpeedbump","LinkNewTab","Title","Nodes","thirdLevel","hasThirdLevel","thirdLevels","menuEntered","closeOlb","header","isSticky","headerPos","scrollY","top","mobileNavToggle","level","nodeIndex","childIndex","levels","node","nav","searchBar","navBar","navNodes","utilLinks","loginFormWrap","alertBanners","dismissedAlerts","windowHeight","innerHeight","headerHeight","offsetHeight","navBarHeight","searchHeight","utilLinksHeight","alertBannersHeight","navNodesTotalHeight","nodeHeight","banner","mobileNavOffsetBannerShown","innerWidth","position","loginMobileIcon","onclick","documentElement","searchKybrdCntrl","utilWrap","searchBox","tabIndex","focus","blur","loginDeskToggle","searchToggle","searchDescendants","checkSearchFocus","hasFocus","activeElement","descendant","deskSearchIcon","radioBtnFieldset","radioBtnWrap","focusableElements","selectedRadioBtn","removeAttribute","loginForm","firstInput","onMouseEnter","onMouseLeave","CTA","link","IconUrl","alt","IconAlt","KdxMegaNavCta","backgroundImage","ImgUrl","Description","LinkUrl","LinkTitle","kdxScrollTopCss","KdxScrollTop","hostRef","isShown","btn","scrollTo","behavior","kdxSpeedbumpCss","AppSpeedbump","openSpeedbump","speedbumpLink","info","defaultMessage","focusTrap","primaryLink","closeSpeedbump","allowDefault","keyCode","focusable","first","last","shiftKey","Host","headerText","rel","continueText","ref","returnText","tabindex","onKeyDown","kdxSitefinitySearchCss","StSitefinitySearch","searchTermQs","getQueryStringValue","searchInput","handleFocus","handleBlur","handleClick","searchSubmit","term","searchValue","qs","resultsUrl","setValue","onSubmit","htmlFor","searchId","label","placeholder","onFocus","onBlur","onKeyUp"],"sources":["./node_modules/@stencil/store/dist/index.mjs","./node_modules/stencil-router-v2/dist/index.mjs","./node_modules/axios/lib/helpers/bind.js","./node_modules/axios/lib/utils.js","./node_modules/axios/lib/helpers/buildURL.js","./node_modules/axios/lib/core/InterceptorManager.js","./node_modules/axios/lib/helpers/normalizeHeaderName.js","./node_modules/axios/lib/core/enhanceError.js","./node_modules/axios/lib/core/createError.js","./node_modules/axios/lib/core/settle.js","./node_modules/axios/lib/helpers/cookies.js","./node_modules/axios/lib/helpers/isAbsoluteURL.js","./node_modules/axios/lib/helpers/combineURLs.js","./node_modules/axios/lib/core/buildFullPath.js","./node_modules/axios/lib/helpers/parseHeaders.js","./node_modules/axios/lib/helpers/isURLSameOrigin.js","./node_modules/axios/lib/adapters/xhr.js","./node_modules/axios/lib/defaults.js","./node_modules/axios/lib/core/transformData.js","./node_modules/axios/lib/cancel/isCancel.js","./node_modules/axios/lib/core/dispatchRequest.js","./node_modules/axios/lib/core/mergeConfig.js","./node_modules/axios/lib/helpers/validator.js","./node_modules/axios/lib/core/Axios.js","./node_modules/axios/lib/cancel/Cancel.js","./node_modules/axios/lib/cancel/CancelToken.js","./node_modules/axios/lib/helpers/spread.js","./node_modules/axios/lib/helpers/isAxiosError.js","./node_modules/axios/lib/axios.js","./node_modules/axios/index.js","./src/dev-dependencies/site-loader/site-loader.tsx","./node_modules/bootstrap/js/src/util/index.js","./node_modules/bootstrap/js/src/dom/data.js","./node_modules/bootstrap/js/src/dom/event-handler.js","./node_modules/bootstrap/js/src/base-component.js","./node_modules/bootstrap/js/src/alert.js","./src/components/shared/kdx-alert/kdx-alert.scss?tag=kdx-alert","./src/components/shared/kdx-alert/kdx-alert.tsx","./src/components/shared/kdx-alert-banner/kdx-alert-banner.tsx","./src/global/app-global/app-tables.ts","./src/global/animation/animation.ts","./src/global/image-loader.ts","./src/global/app-global/app-global.tsx","./src/components/shared/kdx-cookie-message/kdx-cookie-message.scss?tag=kdx-cookie-message","./src/components/shared/kdx-cookie-message/kdx-cookie-message.tsx","./src/components/media/kdx-icon/kdx-icon.tsx","./src/components/nav/kdx-mega-nav/kdx-mega-nav.scss?tag=kdx-mega-nav","./src/components/nav/kdx-mega-nav/kdx-mega-nav.tsx","./src/components/nav/kdx-mega-nav/kdx-mega-nav-cta/kdx-mega-nav-cta.tsx","./src/components/kdx-scroll-top/kdx-scroll-top.scss?tag=kdx-scroll-top","./src/components/kdx-scroll-top/kdx-scroll-top.tsx","./src/components/shared/kdx-speedbump/kdx-speedbump.scss?tag=kdx-speedbump","./src/components/shared/kdx-speedbump/kdx-speedbump.tsx","./src/components/search/kdx-sitefinity-search/kdx-sitefinity-search.scss?tag=kdx-web-search","./src/components/search/kdx-sitefinity-search/kdx-sitefinity-search.tsx"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = ({ on }) => {\n const elmsToUpdate = new Map();\n if (typeof getRenderingRef === 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n on('dispose', () => {\n elmsToUpdate.clear();\n });\n on('get', (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n });\n on('set', (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n });\n on('reset', () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n });\n }\n};\n\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n let states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n states = new Map(Object.entries(defaultState !== null && defaultState !== void 0 ? defaultState : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(defaultState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n const unReset = on('reset', () => cb(defaultState[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => subscriptions.forEach((subscription) => {\n if (subscription.set) {\n on('set', subscription.set);\n }\n if (subscription.get) {\n on('get', subscription.get);\n }\n if (subscription.reset) {\n on('reset', subscription.reset);\n }\n });\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n stencilSubscription(map);\n return map;\n};\n\nexport { createObservableMap, createStore };\n","import { Build } from '@stencil/core';\nimport { createStore } from '@stencil/store';\n\nlet defaultRouter;\nconst createRouter = (opts) => {\n var _a;\n const win = window;\n const url = new URL(win.location.href);\n const parseURL = (_a = opts === null || opts === void 0 ? void 0 : opts.parseURL) !== null && _a !== void 0 ? _a : DEFAULT_PARSE_URL;\n const { state, onChange, dispose } = createStore({\n url,\n activePath: parseURL(url)\n }, (newV, oldV, prop) => {\n if (prop === 'url') {\n return newV.href !== oldV.href;\n }\n return newV !== oldV;\n });\n const push = (href) => {\n history.pushState(null, null, href);\n const url = new URL(href, document.baseURI);\n state.url = url;\n state.activePath = parseURL(url);\n };\n const match = (routes) => {\n const { activePath } = state;\n for (let route of routes) {\n const params = matchPath(activePath, route.path);\n if (params) {\n if (route.to != null) {\n const to = (typeof route.to === 'string')\n ? route.to\n : route.to(activePath);\n push(to);\n return match(routes);\n }\n else {\n return { params, route };\n }\n }\n }\n return undefined;\n };\n const navigationChanged = () => {\n const url = new URL(win.location.href);\n state.url = url;\n state.activePath = parseURL(url);\n };\n const Switch = (_, childrenRoutes) => {\n const result = match(childrenRoutes);\n if (result) {\n if (typeof result.route.jsx === 'function') {\n return result.route.jsx(result.params);\n }\n else {\n return result.route.jsx;\n }\n }\n };\n const disposeRouter = () => {\n defaultRouter = undefined;\n win.removeEventListener('popstate', navigationChanged);\n dispose();\n };\n const router = defaultRouter = {\n Switch,\n get url() {\n return state.url;\n },\n get activePath() {\n return state.activePath;\n },\n push,\n onChange: onChange,\n dispose: disposeRouter,\n };\n // Initial update\n navigationChanged();\n // Listen URL changes\n win.addEventListener('popstate', navigationChanged);\n return router;\n};\nconst Route = (props, children) => {\n var _a;\n if ('to' in props) {\n return {\n path: props.path,\n to: props.to,\n };\n }\n if (Build.isDev && props.render && children.length > 0) {\n console.warn('Route: if `render` is provided, the component should not have any children');\n }\n return {\n path: props.path,\n id: props.id,\n jsx: (_a = props.render) !== null && _a !== void 0 ? _a : children,\n };\n};\nconst href = (href, router = defaultRouter) => {\n if (Build.isDev && !router) {\n throw new Error('Router must be defined in href');\n }\n return {\n href,\n onClick: (ev) => {\n if (ev.metaKey || ev.ctrlKey) {\n return;\n }\n if (ev.which == 2 || ev.button == 1) {\n return;\n }\n ev.preventDefault();\n router.push(href);\n },\n };\n};\nconst matchPath = (pathname, path) => {\n if (typeof path === 'string') {\n if (path === pathname) {\n return {};\n }\n }\n else if (typeof path === 'function') {\n const params = path(pathname);\n if (params) {\n return params === true\n ? {}\n : { ...params };\n }\n }\n else {\n const results = path.exec(pathname);\n if (results) {\n path.lastIndex = 0;\n return { ...results };\n }\n }\n return undefined;\n};\nconst DEFAULT_PARSE_URL = (url) => {\n return url.pathname.toLowerCase();\n};\nconst NotFound = () => ({});\n\n/**\n * TS adaption of https://github.com/pillarjs/path-to-regexp/blob/master/index.js\n */\n/**\n * Default configs.\n */\nconst DEFAULT_DELIMITER = '/';\nconst DEFAULT_DELIMITERS = './';\n/**\n * The main path matching regexp utility.\n */\nconst PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\"]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined]\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n */\nconst parse = (str, options) => {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER;\n var delimiters = (options && options.delimiters) || DEFAULT_DELIMITERS;\n var pathEscaped = false;\n var res;\n while ((res = PATH_REGEXP.exec(str)) !== null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n pathEscaped = true;\n continue;\n }\n var prev = '';\n var next = str[index];\n var name = res[2];\n var capture = res[3];\n var group = res[4];\n var modifier = res[5];\n if (!pathEscaped && path.length) {\n var k = path.length - 1;\n if (delimiters.indexOf(path[k]) > -1) {\n prev = path[k];\n path = path.slice(0, k);\n }\n }\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n pathEscaped = false;\n }\n var partial = prev !== '' && next !== undefined && next !== prev;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = prev || defaultDelimiter;\n var pattern = capture || group;\n tokens.push({\n name: name || key++,\n prefix: prev,\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n pattern: pattern ? escapeGroup(pattern) : '[^' + escapeString(delimiter) + ']+?'\n });\n }\n // Push any remaining characters.\n if (path || index < str.length) {\n tokens.push(path + str.substr(index));\n }\n return tokens;\n};\n/**\n * Escape a regular expression string.\n */\nconst escapeString = (str) => {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1');\n};\n/**\n * Escape the capturing group by escaping special characters and meaning.\n */\nconst escapeGroup = (group) => {\n return group.replace(/([=!:$/()])/g, '\\\\$1');\n};\n/**\n * Get the flags for a regexp from the options.\n */\nconst flags = (options) => {\n return options && options.sensitive ? '' : 'i';\n};\n/**\n * Pull out keys from a regexp.\n */\nconst regexpToRegexp = (path, keys) => {\n if (!keys)\n return path;\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n pattern: null\n });\n }\n }\n return path;\n};\n/**\n * Transform an array into a regexp.\n */\nconst arrayToRegexp = (path, keys, options) => {\n var parts = [];\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n return new RegExp('(?:' + parts.join('|') + ')', flags(options));\n};\n/**\n * Create a path regexp from string input.\n */\nconst stringToRegexp = (path, keys, options) => {\n return tokensToRegExp(parse(path, options), keys, options);\n};\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nconst tokensToRegExp = (tokens, keys, options) => {\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var delimiter = escapeString(options.delimiter || DEFAULT_DELIMITER);\n var delimiters = options.delimiters || DEFAULT_DELIMITERS;\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|');\n var route = '';\n var isEndDelimited = false;\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === 'string') {\n route += escapeString(token);\n isEndDelimited = i === tokens.length - 1 && delimiters.indexOf(token[token.length - 1]) > -1;\n }\n else {\n var prefix = escapeString(token.prefix || '');\n var capture = token.repeat\n ? '(?:' + token.pattern + ')(?:' + prefix + '(?:' + token.pattern + '))*'\n : token.pattern;\n if (keys)\n keys.push(token);\n if (token.optional) {\n if (token.partial) {\n route += prefix + '(' + capture + ')?';\n }\n else {\n route += '(?:' + prefix + '(' + capture + '))?';\n }\n }\n else {\n route += prefix + '(' + capture + ')';\n }\n }\n }\n if (end) {\n if (!strict)\n route += '(?:' + delimiter + ')?';\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')';\n }\n else {\n if (!strict)\n route += '(?:' + delimiter + '(?=' + endsWith + '))?';\n if (!isEndDelimited)\n route += '(?=' + delimiter + '|' + endsWith + ')';\n }\n return new RegExp('^' + route, flags(options));\n};\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nconst pathToRegexp = (path, keys, options) => {\n if (path instanceof RegExp) {\n return regexpToRegexp(path, keys);\n }\n if (Array.isArray(path)) {\n return arrayToRegexp(path, keys, options);\n }\n return stringToRegexp(path, keys, options);\n};\n\nlet cacheCount = 0;\nconst patternCache = {};\nconst cacheLimit = 10000;\n// Memoized function for creating the path match regex\nconst compilePath = (pattern, options) => {\n const cacheKey = `${options.end}${options.strict}`;\n const cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n const cachePattern = JSON.stringify(pattern);\n if (cache[cachePattern]) {\n return cache[cachePattern];\n }\n const keys = [];\n const re = pathToRegexp(pattern, keys, options);\n const compiledPattern = { re, keys };\n if (cacheCount < cacheLimit) {\n cache[cachePattern] = compiledPattern;\n cacheCount += 1;\n }\n return compiledPattern;\n};\nconst match = (pathname, options = {}) => {\n const { exact = false, strict = false } = options;\n const { re, keys } = compilePath(pathname, { end: exact, strict });\n return (path) => {\n const match = re.exec(path);\n if (!match) {\n return undefined;\n }\n const [url, ...values] = match;\n const isExact = path === url;\n if (exact && !isExact) {\n return undefined;\n }\n return keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {});\n };\n};\n\nexport { NotFound, Route, createRouter, href, match };\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/axios');","import { Component, h, Prop, Element } from '@stencil/core';\r\nimport { createRouter, Route } from 'stencil-router-v2';\r\nimport { _BREAKPOINTS_ } from 'utils';\r\nimport axios from 'axios';\r\n\r\nconst Router = createRouter();\r\n\r\n@Component({\r\n tag: 'dev-siteloader',\r\n shadow: false\r\n})\r\nexport class SiteLoader {\r\n\r\n @Element() root: HTMLElement;\r\n\r\n @Prop() markup: any;\r\n\r\n componentDidRender() {\r\n return this.fetchContents();\r\n }\r\n\r\n componentWillUpdate() {\r\n return this.fetchContents();\r\n }\r\n\r\n fetchContents() {\r\n const path = document.location.pathname;\r\n\r\n if (this.root.querySelector('.page-root')) {\r\n this.root.querySelector('.page-root').setAttribute('drawn', 'false');\r\n }\r\n\r\n axios.get(`/pages${path}/index.html`)\r\n .then((response) => {\r\n this.markup = response.data;\r\n if (this.root.querySelector('.page-root')) {\r\n this.root.querySelector('.page-root').setAttribute('drawn', 'true');\r\n globalThis.init_tables();\r\n globalThis.imageLoader.initialize();\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n });\r\n }\r\n \r\n render() {\r\n return (\r\n \r\n (\r\n
\r\n )}\r\n />\r\n \r\n )\r\n }\r\n}","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\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 getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = 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 (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\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 = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return 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 = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\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\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst mapData = (() => {\n const storeData = {}\n let id = 1\n return {\n set(element, key, data) {\n if (typeof element.bsKey === 'undefined') {\n element.bsKey = {\n key,\n id\n }\n id++\n }\n\n storeData[element.bsKey.id] = data\n },\n get(element, key) {\n if (!element || typeof element.bsKey === 'undefined') {\n return null\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n return storeData[keyProperties.id]\n }\n\n return null\n },\n delete(element, key) {\n if (typeof element.bsKey === 'undefined') {\n return\n }\n\n const keyProperties = element.bsKey\n if (keyProperties.key === key) {\n delete storeData[keyProperties.id]\n delete element.bsKey\n }\n }\n }\n})()\n\nconst Data = {\n setData(instance, key, data) {\n mapData.set(instance, key, data)\n },\n getData(instance, key) {\n return mapData.get(instance, key)\n },\n removeData(instance, key) {\n mapData.delete(instance, key)\n }\n}\n\nexport default Data\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\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}\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 * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(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 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 (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\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 Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, 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 = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\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 if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta2'\n\nclass BaseComponent {\n constructor(element) {\n if (!element) {\n return\n }\n\n this._element = element\n Data.setData(element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.removeData(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.getData(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta2): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n if (!element.classList.contains(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, 'transitionend', () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.getData(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Alert)\n\nexport default Alert\n","@import '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}\r\n\r\n\t&.has-icon {\r\n\t\t\r\n\t\t> .container {\r\n\t\t\tdisplay: flex;\r\n\t\t\tflex-direction: row;\r\n\t\t}\r\n\r\n\t\t.alert-icon {\r\n\t\t\theight: 25px;\r\n\t\t\tmargin: auto 1rem auto 0;\r\n\t\t\tkdx-icon {\r\n\t\t\t\twidth: 20px;\r\n\t\t\t\theight: 100% !important;\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\tsvg {\r\n\t\t\t\t\t@include svg-format(100%, 100%, $light-tan);\r\n\t\t\t\t\tmin-height: 100%;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Client Scope\r\n\t&.kdx-alert {\r\n\t\tbackground-color: $tertiary;\r\n\t\tborder: none;\r\n\t\tpadding: 1rem 2rem;\r\n\t\t&.critical {\r\n\t\t\tbackground-color: #99484F;\r\n\t\t}\r\n\t\t&.warning {\r\n\t\t\tbackground-color: #A8610F;\r\n\t\t}\r\n\t\t&.positive {\r\n\t\t\tbackground-color: #3B7D4A;\r\n\t\t}\r\n\r\n\t\t.container {\r\n\t\t\tjustify-content: space-between;\r\n\t\t\tpadding: 0;\r\n\t\t\tmax-width: 1200px;\r\n\t\t\tp {\r\n\t\t\t\tmargin: 0 0.5rem;\r\n\t\t\t\tpadding: 0;\r\n\t\t\t\tcolor: $white;\r\n\t\t\t\tline-height: unset;\r\n\t\t\t}\r\n\t\r\n\t\t\tstrong {\r\n\t\t\t\tcolor: $light-tan;\r\n\t\t\t}\r\n\t\r\n\t\t\ta {\r\n\t\t\t\tcolor: $light-tan;\r\n\t\t\t\tfont-size: 1rem;\r\n\t\t\t\ttext-decoration: none;\r\n\t\t\t\tfont-weight: 600;\r\n\t\t\t\t&:hover,\r\n\t\t\t\t&:focus {\r\n\t\t\t\t\ttext-decoration: underline;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.alert-links {\r\n\t\t\t\theight: fit-content;\r\n\t\t\t\tmargin: auto 0 auto 1rem;\r\n\t\t\t\tbutton.close-btn {\r\n\t\t\t\t\tbackground: transparent;\r\n\t\t\t\t\tpadding: 0;\r\n\t\t\t\t\t.svg-icon {\r\n\t\t\t\t\t\tdisplay: block;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tkdx-icon {\r\n\t\t\t\t\t\t\twidth: 25px;\r\n\t\t\t\t\t\t\theight: 25px !important;\r\n\t\t\t\t\t\t\tdisplay: block;\r\n\t\t\t\t\t\t\tsvg {\r\n\t\t\t\t\t\t\t\tmin-width: 100%;\r\n\t\t\t\t\t\t\t\tmin-height: 100%;\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&:focus {\r\n\t\t\t\t\t\toutline: 2px solid $white;\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[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\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&.kdx-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\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import { Component, EventEmitter, h, Prop, Event, ComponentInterface } from '@stencil/core';\r\nimport Alert from 'bootstrap/js/src/alert';\r\n\r\n@Component({\r\n\ttag: 'kdx-alert',\r\n\tstyleUrl: 'kdx-alert.scss',\r\n\tshadow: false,\r\n})\r\nexport class StAlert 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 input to change URL of alert's first button\r\n\t */\r\n\t@Prop() btnHref: string;\r\n\r\n\t/**\r\n\t * Provides a string of classes for the alert's first button\r\n\t */\r\n\t@Prop() btnClasses: string;\r\n\r\n\t/**\r\n\t * Provides input to change label of alert's first button; btnClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnLabel: string;\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 icon of alert's firt button; btnClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnIcon: 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\t\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 Alert(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{/* remove surrounding {} if you want to uncomment this -- */ }\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{(this.btnHref) &&\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{(this.btnIcon) ?\r\n\t\t\t\t\t\t\t\t\t\t{this.btnText} :\r\n\t\t\t\t\t\t\t\t\t\tthis.btnText\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\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\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}","import { Component, ComponentInterface, h, Prop, Listen, State } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kdx-alert-banner',\r\n shadow: false,\r\n})\r\nexport class StAlertBanner implements ComponentInterface {\r\n\r\n\t/**\r\n\t * Assigns a required unique id to the banner alert\r\n\t */\r\n\t@Prop() alertId: string = \"alertBannerId\";\r\n\r\n\t/**\r\n\t * Provides a string for any additional alert classes\r\n\t */\r\n\t@Prop() alertClasses: string = \"alert-primary\";\r\n\r\n\t/**\r\n\t * Add an icon to the banner\r\n\t */\r\n\t@Prop() alertIcon: 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 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 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 * If true adds dismissible button and dismiss function\r\n\t */\r\n\t@Prop() dismissible: boolean = false;\r\n\r\n\t/**\r\n\t * Determines if alert should render depending on if the user dismissed it\r\n\t */\r\n\t@State() shouldRender: boolean = true;\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\tlocalStorage.setItem('alert-' + this.alertId, \"dismissed\");\r\n\t\tthis.shouldRender = false;\r\n\t}\r\n\r\n\tcomponentWillLoad() {\r\n\t\tif (this.dismissible) {\r\n\t\t\tthis.shouldRender = localStorage.getItem(`alert-${this.alertId}`) !== \"dismissed\";\r\n\t\t}\r\n\t}\r\n\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\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
\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}","export function initTables() {\r\n document.querySelectorAll('table.kdx-table').forEach((table: HTMLTableElement) => {\r\n if (table.hasAttribute('data-is-bound'))\r\n return;\r\n table.toggleAttribute('data-is-bound', true);\r\n\r\n // iterate through the table rows, duplicating them (skip key cell or first item)\r\n for (const body of table.tBodies)\r\n for (const row of body.rows) {\r\n //console.log(row);\r\n const hiddenTable = document.createElement('table');\r\n hiddenTable.classList.add('collapse');\r\n\r\n row.after(hiddenTable);\r\n\r\n for (const cell of row.cells) {\r\n if (cell.cellIndex === 0) {\r\n const open = document.createElement('kdx-icon');\r\n open.setAttribute('icon', 'plus-circle');\r\n\r\n const close = document.createElement('kdx-icon');\r\n close.setAttribute('icon', 'minus-circle');\r\n\r\n const span = document.createElement('span');\r\n span.append(...cell.childNodes);\r\n\r\n const toggleButton = document.createElement('a');\r\n toggleButton.classList.add('btn-show-table-data');\r\n toggleButton.append(open, close, span);\r\n\r\n toggleButton.addEventListener('click', event => {\r\n event.preventDefault();\r\n\r\n const shouldOpen = !row.classList.contains('show');\r\n\r\n body.querySelectorAll('.show').forEach(open => {\r\n open.classList.remove('show');\r\n });\r\n\r\n row.classList.toggle('show', shouldOpen);\r\n hiddenTable.classList.toggle('show', shouldOpen);\r\n });\r\n\r\n cell.append(toggleButton);\r\n }\r\n else {\r\n hiddenTable.insertRow().append(\r\n table.tHead.rows[0].cells[cell.cellIndex].cloneNode(true),\r\n cell.cloneNode(true)\r\n );\r\n }\r\n }\r\n }\r\n });\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) => {\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};","/**\r\n * Lazy loads images that are set up properly. Aslo handled webp fallbacks\r\n * For img tags: \r\n * \r\n \r\n \r\n \"Image\r\n \r\n \r\n For BG Images:
\r\n\r\n For BG Images with webp:
\r\n\r\n more info: https://developers.google.com/web/fundamentals/performance/lazy-loading-guidance/images-and-video\r\n */\r\n\r\nexport class ImageLoader {\r\n public queue;\r\n public backgroundQueue;\r\n public lazyImageObserver;\r\n public lazyBgObserver;\r\n public options;\r\n public webpSupported;\r\n\r\n constructor(options = {}) {\r\n this.queue = [];\r\n this.backgroundQueue = [];\r\n this.lazyImageObserver = null;\r\n this.lazyBgObserver = null;\r\n this.options = options;\r\n this.webpSupported = ImageLoader.supportsWebp();\r\n }\r\n\r\n public initialize() {\r\n this.queue = [];\r\n this.backgroundQueue = [];\r\n this.lazyImageObserver = null;\r\n this.lazyBgObserver = null;\r\n\r\n this.getImagesToLazyLoad();\r\n\r\n if (!(\"IntersectionObserver\" in window)) {\r\n this.abort();\r\n return;\r\n }\r\n\r\n this.onContentLoaded();\r\n this.setGenericPlaceholder();\r\n\r\n this.queue.forEach((lazyImage) => {\r\n this.lazyImageObserver.observe(lazyImage);\r\n });\r\n\r\n this.backgroundQueue.forEach((lazyBg) => {\r\n this.lazyBgObserver.observe(lazyBg);\r\n });\r\n }\r\n\r\n getImagesToLazyLoad() {\r\n this.queue = document.querySelectorAll('.img-load-lazy');\r\n this.backgroundQueue = document.querySelectorAll('.lazy-load-bg');\r\n }\r\n\r\n setGenericPlaceholder() {\r\n if (this.options.genericImagePlaceholder) {\r\n this.queue.forEach((img) => {\r\n img.setAttribute('src', this.options.genericImagePlaceholder);\r\n });\r\n }\r\n\r\n if (this.options.genericBgPlaceholder) {\r\n this.backgroundQueue.forEach((bg) => {\r\n bg.style.backgroundColor = this.options.genericBgPlaceholder;\r\n });\r\n }\r\n }\r\n\r\n onContentLoaded() {\r\n this.lazyImageObserver = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting) {\r\n let lazyImage: any = entry.target;\r\n\r\n if (lazyImage.classList.contains('img-load-lazy')) {\r\n if (lazyImage.dataset.src) {\r\n lazyImage.src = lazyImage.dataset.src;\r\n }\r\n if (lazyImage.dataset.srcset) {\r\n lazyImage.srcset = lazyImage.dataset.srcset;\r\n }\r\n lazyImage.classList.remove('img-load-lazy');\r\n this.lazyImageObserver.unobserve(lazyImage);\r\n }\r\n }\r\n });\r\n });\r\n\r\n this.lazyBgObserver = new IntersectionObserver((entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && entry.target.classList.contains('lazy-load-bg')) {\r\n const webP = entry.target.getAttribute('data-webp');\r\n if (this.webpSupported && webP && webP != '') {\r\n entry.target.setAttribute('style', `background-image: url(${webP})`);\r\n }\r\n\r\n entry.target.classList.remove('lazy-load-bg');\r\n this.lazyBgObserver.unobserve(entry.target);\r\n }\r\n });\r\n });\r\n }\r\n\r\n abort() {\r\n for (let i = 0; i < this.queue.length; i++) {\r\n this.queue[i].setAttribute('src', this.queue[i].getAttribute('data-src'));\r\n this.queue[i].classList.remove('img-load-lazy');\r\n }\r\n\r\n for (let i = 0; i < this.backgroundQueue.length; i++) {\r\n this.backgroundQueue[i].classList.remove('lazy-load-bg');\r\n }\r\n }\r\n\r\n static supportsWebp() {\r\n var elem = document.createElement('canvas');\r\n\r\n if (!!(elem.getContext && elem.getContext('2d'))) {\r\n // was able or not to get WebP representation\r\n return elem.toDataURL('image/webp').indexOf('data:image/webp') == 0;\r\n }\r\n else {\r\n // very old browser like IE 8, canvas not supported\r\n return false;\r\n }\r\n }\r\n\r\n}\r\n\r\ninterface AspectRatioInterface {\r\n ratio: Array,\r\n element: HTMLElement\r\n};\r\n\r\nexport class AspectRatio {\r\n\r\n public ratioX: number;\r\n public ratioY: number;\r\n public element: HTMLElement;\r\n\r\n constructor(options: AspectRatioInterface) {\r\n this.ratioX = options.ratio[0];\r\n this.ratioY = options.ratio[1];\r\n this.element = options.element;\r\n }\r\n\r\n maintain() {\r\n this.setAspectRatio();\r\n\r\n window.addEventListener('resize', () => {\r\n this.setAspectRatio();\r\n });\r\n }\r\n\r\n setAspectRatio() {\r\n const currentWidth = this.element.clientWidth;\r\n const heightPctByRatio = this.ratioY / this.ratioX;\r\n const computedHeight = currentWidth * heightPctByRatio;\r\n this.element.style.height = computedHeight + 'px';\r\n }\r\n\r\n}\r\n","import { Component, h } from '@stencil/core';\r\nimport { _BREAKPOINTS_ } from 'utils';\r\nimport { initTables } from 'global/app-global/app-tables';\r\nimport { fadeIn, fadeOut } from 'global/animation/animation';\r\nimport { ImageLoader } from 'global/image-loader';\r\n\r\ndeclare global {\r\n interface Window { imageLoader: any; }\r\n}\r\n\r\ndeclare var assetPath;\r\n\r\n@Component({\r\n tag: 'kdx-app',\r\n shadow: false\r\n})\r\nexport class StApp {\r\n\r\n componentWillLoad() {\r\n globalThis.imageLoader = new ImageLoader();\r\n this.addListItemBullets();\r\n this.globalFunctions();\r\n }\r\n\r\n componentDidLoad() {\r\n globalThis.imageLoader.initialize();\r\n globalThis.init_tables();\r\n }\r\n\r\n componentDidRender() {\r\n setTimeout(() => {\r\n var hash = window.location.hash;\r\n if (hash) {\r\n var elem = document.getElementById(hash.substring(1));\r\n if (elem) {\r\n elem.scrollIntoView();\r\n }\r\n }\r\n }, 500);\r\n }\r\n\r\n addListItemBullets() {\r\n document.head.insertAdjacentHTML(\"beforeend\", ``);\r\n }\r\n\r\n globalFunctions() {\r\n /**\r\n * Given an array of HTML Elements, finds the\r\n * largest and locks the height of all elements\r\n * to this value\r\n * \r\n * @param elements Array\r\n */\r\n globalThis.fix_element_height = (root) => {\r\n if (Array.from(root.querySelectorAll('.kdx-fix-element-height')).length) {\r\n const elements: Array = Array.from(root.querySelectorAll('.kdx-fix-element-height'));\r\n let maxHeight: number = -1;\r\n\r\n elements.forEach((element) => {\r\n // we also need the height of hidden elements in this list\r\n if (getComputedStyle(element).display === 'none') { \r\n // add a clone to the DOM, off-screen,\r\n // so we can figure out the height of element\r\n const clone: HTMLElement = element.cloneNode(true) as HTMLElement;\r\n clone.setAttribute('style', 'position: absolute; display: block; visibility: hidden; top: -100%; left: -100%');\r\n document.body.append(clone);\r\n\r\n (clone.getBoundingClientRect().height > maxHeight) && (maxHeight = clone.getBoundingClientRect().height);\r\n\r\n // be sure to remove the clone once \r\n // you're done\r\n clone.remove();\r\n } else {\r\n (element.clientHeight > maxHeight) && (maxHeight = element.clientHeight);\r\n } \r\n });\r\n\r\n elements.forEach((element) => {\r\n element.setAttribute('style', `height: ${maxHeight}px`);\r\n });\r\n }\r\n };\r\n\r\n globalThis.init_tables = initTables;\r\n globalThis.fade_in = fadeIn;\r\n globalThis.fade_out = fadeOut;\r\n }\r\n \r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n )\r\n }\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: $tertiary;\r\n\tpadding: 2rem 3rem;\r\n\twidth: 100%;\r\n\r\n\t.container {\r\n\t\tpadding: 0;\r\n\t\tgap: 2rem;\r\n\t\tjustify-content: space-between;\r\n\t\t.text-wrap {\r\n\t\t\tmax-width: 60%;\r\n\t\t\th2 {\r\n\t\t\t\tcolor: $light-tan;\r\n\t\t\t\tfont-size: 1.25rem;\r\n\t\t\t\ttext-align: left;\r\n\t\t\t\tletter-spacing: 0.05rem;\r\n\t\t\t}\r\n\t\t\tp {\r\n\t\t\t\tfont-weight: 300;\r\n\t\t\t}\r\n\t\t\ta {\r\n\t\t\t\tcolor: $white;\r\n\t\t\t\ttext-decoration: none;\r\n\t\t\t\t&:hover,\r\n\t\t\t\t&:focus {\r\n\t\t\t\t\ttext-decoration: underline;\r\n\t\t\t\t}\r\n\t\t\t}\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.kdx-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\tpadding: 0;\r\n\t\tdisplay: flex;\r\n\t}\r\n\r\n\tp {\r\n\t\tmargin: 0 0 0.5rem 0;\r\n\t\tpadding: 0;\r\n\t\tcolor: $white;\r\n\t}\r\n\r\n\t.alert-links {\r\n\t\t@include row-cols(1);\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: row;\r\n\t\tgap: 2rem;\r\n\r\n\t\t> * {\r\n\t\t\tflex: unset !important;\r\n\t\t\twidth: unset !important;\r\n\t\t}\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.btn {\r\n\t\t\tmax-width: 360px;\r\n\t\t\tmargin: auto;\r\n\t\t\t.svg-icon {\r\n\t\t\t\tdisplay: none;\r\n\t\t\t\tvisibility: hidden;\r\n\t\t\t\tmargin-left: 0.25rem;\r\n\t\t\t}\r\n\t\t}\r\n\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\tflex-direction: column;\r\n\t\t\tgap: 0.5rem;\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\t.text-wrap {\r\n\t\t\t\tmax-width: unset;\r\n\t\t\t\ta {\r\n\t\t\t\t\ttext-decoration: underline;\r\n\t\t\t\t}\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.kdx-cookie {\r\n\t\t> .container {\r\n\t\t\tpadding: 0 35px;\r\n\t\t}\r\n\r\n\t\t.alert-links {\r\n\t\t\tpadding: 0;\r\n\t\t\tmargin: 15px 0 0;\r\n\t\t\tgap: 0;\r\n\r\n\t\t\t.btn {\r\n\t\t\t\twidth: 100% !important;\r\n\t\t\t\t.svg-icon {\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tvisibility: visible;\r\n\t\t\t\t}\r\n\t\t\t\t&.btn-underline {\r\n\t\t\t\t\tpadding: 0.85rem 3.5rem 0.75rem;\r\n\t\t\t\t\ttext-decoration: none;\r\n\t\t\t\t}\r\n\t\t\t}\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}\r\n\r\n@include media-breakpoint-down(xl) {\r\n\t.kdx-cookie {\r\n\t\t.alert-links {\r\n\t\t\tflex-direction: column;\r\n\t\t\tgap: 1rem;\r\n\t\t\t.btn-underline {\r\n\t\t\t\torder: 2;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import { Component, ComponentInterface, h, Prop, Listen } from '@stencil/core';\r\nimport { getCookie, guid, setCookie } from 'utils';\r\n\r\ndeclare var onCookieAccept;\r\n\r\n@Component({\r\n tag: 'kdx-cookie-message',\r\n styleUrl: 'kdx-cookie-message.scss',\r\n shadow: false,\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 = `kdx-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 input to change URL of alert's first button\r\n\t */\r\n\t@Prop() btnHref: string;\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 label of alert's first button; btnClasses should also be provided when using this.\r\n\t */\r\n\t@Prop() btnLabel: 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() btnIcon: 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 * 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) {\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 { Component, ComponentInterface, h, Prop } from '@stencil/core';\r\n\r\ndeclare const assetPath;\r\ndeclare const iconSheet;\r\n\r\n@Component({\r\n tag: 'kdx-icon',\r\n shadow: false,\r\n})\r\nexport class StIcon implements ComponentInterface {\r\n\r\n @Prop() cssClass: string;\r\n @Prop() icon: string;\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n}\r\n","@include media-breakpoint-up(xl) {\r\n .app-nav {\r\n display: flex;\r\n max-height: none !important; //override JS style from mobile\r\n\r\n &__parent {\r\n a {\r\n position: relative;\r\n display: block;\r\n color: #fff;\r\n padding: 25px;\r\n @include text-size(18);\r\n font-weight: 500;\r\n text-decoration: none;\r\n\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n width: 33.33%;\r\n height: 3px;\r\n background: $secondary;\r\n opacity: 0;\r\n transition: all 300ms;\r\n }\r\n }\r\n }\r\n\r\n &__parent-toggle {\r\n display: none;\r\n }\r\n\r\n &__sub {\r\n display: none;\r\n position: absolute;\r\n background: #fff;\r\n\r\n &.mega-children {\r\n left: 0;\r\n width: 100%;\r\n min-height: 280px;\r\n\r\n &.no-break {\r\n left: auto;\r\n min-width: 250px;\r\n width: auto;\r\n }\r\n }\r\n\r\n &.simple-children {\r\n display: none;\r\n min-width: 250px;\r\n width: auto;\r\n min-height: 280px;\r\n\r\n .simple-children__links {\r\n width: 250px;\r\n padding: 24px;\r\n\r\n a {\r\n display: flex;\r\n align-items: center;\r\n color: $primary;\r\n @include text-size(15);\r\n font-weight: 600;\r\n margin-bottom: 38px;\r\n text-decoration: none;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tspan.nav-child-arrow-desktop {\r\n\t\t\t\t\t\t\tbackground-image: url(/ui/www/assets/img/gold-arrow_short.svg);\r\n\t\t\t\t\t\t\tbackground-repeat: no-repeat;\r\n\t\t\t\t\t\t\tbackground-position: center;\r\n\t\t\t\t\t\t\tbackground-size: contain;\r\n\t\t\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\t\t\twidth: 1rem;\r\n\t\t\t\t\t\t\theight: 0.5rem;\r\n\t\t\t\t\t\t\tmargin: 0 0 0.1rem 0.5rem;\r\n\t\t\t\t\t\t}\r\n \r\n svg {\r\n @include svg-format(16px, 16px, currentColor);\r\n transform: translateX(5px);\r\n transition: all 300ms;\r\n }\r\n \r\n &:hover {\r\n color: $darker-gold;\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tspan.nav-child-arrow-desktop {\r\n\t\t\t\t\t\t\t\tbackground-image: url(/ui/www/assets/img/gold-arrow_long.svg);\r\n\t\t\t\t\t\t\t\twidth: 2rem;\r\n\t\t\t\t\t\t\t\theight: 1rem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\r\n svg {\r\n transform: translateX(10px);\r\n circle {\r\n fill: $primary;\r\n }\r\n line {\r\n stroke: $white;\r\n }\r\n }\r\n }\r\n }\r\n } \r\n }\r\n }\r\n\r\n &__node {\r\n &:hover {\r\n .app-nav__parent {\r\n a {\r\n background: #fff;\r\n color: $primary;\r\n\r\n &:after {\r\n opacity: 1;\r\n width: 100%;\r\n }\r\n }\r\n }\r\n\r\n .app-nav__sub {\r\n display: flex;\r\n animation: subNavIn 200ms linear forwards;\r\n\r\n &.simple-children {\r\n display: flex;\r\n }\r\n }\r\n }\r\n\r\n &:focus-within {\r\n .app-nav__parent {\r\n a {\r\n background: #fff;\r\n color: $primary;\r\n\r\n &:after {\r\n opacity: 1;\r\n width: 100%;\r\n }\r\n }\r\n }\r\n\r\n .app-nav__sub {\r\n display: flex;\r\n animation: subNavIn 200ms linear forwards;\r\n\r\n &.simple-children {\r\n display: flex;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &__children {\r\n padding: 24px;\r\n display: flex;\r\n // flex-wrap: wrap;\r\n flex-direction: column;\r\n flex-grow: 1;\r\n }\r\n\r\n &__children-mobile {\r\n display: none;\r\n }\r\n\r\n &__child {\r\n margin-bottom: 20px;\r\n\r\n a {\r\n display: flex;\r\n align-items: center;\r\n color: $primary;\r\n @include text-size(15);\r\n font-weight: 700;\r\n text-decoration: none;\r\n\r\n svg {\r\n width: 100%;\r\n max-width: 16px;\r\n max-height: 16px;\r\n transform: translateX(5px);\r\n transition: all 300ms;\r\n }\r\n\r\n &:hover {\r\n color: $darker-gold;\r\n\r\n svg {\r\n transform: translateX(10px);\r\n circle {\r\n fill: $primary !important;\r\n }\r\n line {\r\n stroke: #fff !important;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n &__third-level {\r\n margin: 0 0 1.5rem 1rem;\r\n \r\n &:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n a {\r\n display: inline-block;\r\n margin-bottom: 1rem;\r\n color: #000;\r\n text-decoration: none;\r\n font-size: 1rem;\r\n line-height: 1.5rem;\r\n font-weight: 400;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n color: $darker-gold;\r\n }\r\n }\r\n }\r\n\r\n &__cta {\r\n height: 100%;\r\n }\r\n }\r\n\r\n body.menu-entered .menu-overlay {\r\n display: block;\r\n animation: subNavIn 200ms linear forwards;\r\n }\r\n}\r\n\r\n.menu-overlay {\r\n background: rgba(0, 0, 0, 0.5);\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 9;\r\n display: none;\r\n}\r\n\r\n.app-nav {\r\n align-items: center;\r\n\r\n &__cta {\r\n position: relative;\r\n width: 287px;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-end;\r\n background-size: cover;\r\n background-position: center;\r\n\r\n &:after {\r\n content: \"\";\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: $primary;\r\n opacity: .5;\r\n }\r\n }\r\n\r\n &__cta-content {\r\n position: relative;\r\n padding: 30px;\r\n color: #fff;\r\n z-index: 2;\r\n\r\n .cta-title {\r\n @include text-size(20);\r\n font-weight: 700;\r\n margin-bottom: 10px;\r\n }\r\n\r\n .cta-description {\r\n @include text-size(15);\r\n @include line-height(20);\r\n font-weight: 500;\r\n margin-bottom: 20px;\r\n }\r\n }\r\n}\r\n\r\n@include media-breakpoint-down(xl) {\r\n .app-nav {\r\n background: #fff;\r\n position: absolute;\r\n left: 0;\r\n top: 81px;\r\n width: calc(100% - 20px);\r\n margin-top: -2px;\r\n opacity: 0;\r\n overflow-y: auto;\r\n padding-bottom: 26px;\r\n transform: translateX(-105%);\r\n transition: opacity 300ms, transform 300ms;\r\n\r\n &.open {\r\n opacity: 1;\r\n transform: translateX(0);\r\n }\r\n\r\n &__sub {\r\n display: none;\r\n }\r\n\r\n &__parent-toggle {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 50px;\r\n border-left: 2px solid #f4f4f4;\r\n\r\n svg {\r\n @include svg-format(10px, 12px, #333);\r\n transition: all 350ms;\r\n }\r\n }\r\n\r\n &__parent,\r\n &__child-link {\r\n display: flex;\r\n border-bottom: 2px solid #f4f4f4;\r\n\r\n a {\r\n display: block;\r\n flex-grow: 1;\r\n @include text-size(16);\r\n font-weight: 600;\r\n color: #333;\r\n text-decoration: none;\r\n padding: 1rem;\r\n inline-size: min-content;\r\n user-select: none;\r\n }\r\n }\r\n\r\n &__children {\r\n display: none;\r\n }\r\n\r\n &__node {\r\n &:first-of-type {\r\n .app-nav__parent {\r\n border-top: 2px solid #f4f4f4;\r\n }\r\n }\r\n\r\n &.open {\r\n .app-nav__parent {\r\n background: $quinary;\r\n border: none;\r\n\r\n a {\r\n color: $primary;\r\n }\r\n\r\n .app-nav__parent-toggle {\r\n background-color: $primary;\r\n\r\n svg {\r\n fill: #fff;\r\n transform: rotate(180deg);\r\n }\r\n }\r\n }\r\n\r\n .app-nav__sub {\r\n display: block;\r\n border-bottom: 2px solid #959595;\r\n }\r\n }\r\n }\r\n\r\n &__children-mobile {\r\n display: block;\r\n padding: 15px;\r\n .app-nav__child {\r\n .app-nav__child-link {\r\n .app-nav__parent-toggle {\r\n border: none !important;\r\n background-color: transparent !important;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &__child-link {\r\n a {\r\n color: $primary;\r\n padding: 9px 18px 9.5px 18px;\r\n @include text-size(15);\r\n }\r\n\r\n .app-nav__parent-toggle {\r\n width: 38px;\r\n\r\n svg {\r\n fill: $primary;\r\n }\r\n }\r\n }\r\n\r\n &__child {\r\n &:first-of-type {\r\n .app-nav__child-link {\r\n border: none;\r\n }\r\n }\r\n\r\n &.open {\r\n .app-nav__child-link {\r\n a {\r\n color: $darker-gold;\r\n }\r\n .app-nav__parent-toggle {\r\n background: $primary;\r\n\r\n svg {\r\n fill: #fff;\r\n transform: rotate(180deg);\r\n }\r\n }\r\n }\r\n\r\n .app-nav__third-level {\r\n background: $quinary;\r\n border: none;\r\n display: block;\r\n padding: 6px 0;\r\n a {\r\n font-weight: 500;\r\n span.nav-chevron {\r\n background-image: url(../assets/img/chevron-gold_mobile.svg);\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-size: contain;\r\n display: inline-block;\r\n height: 7px;\r\n width: 7px;\r\n margin: 0 0 0 7px;\r\n rotate: 90deg;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n .simple-children {\r\n padding: 15px;\r\n\r\n a {\r\n display: block;\r\n @include text-size(15);\r\n text-decoration: none;\r\n font-weight: 500;\r\n padding: 12px 18px;\r\n border-top: 2px solid #f4f4f4;\r\n\r\n svg {\r\n display: none;\r\n }\r\n\r\n &:last-of-type {\r\n border-bottom: 2px solid #f4f4f4;\r\n }\r\n }\r\n\r\n .app-nav__cta {\r\n padding: 15px 0 0 0;\r\n }\r\n }\r\n\r\n &__third-level {\r\n display: none;\r\n background: #f8f8f8;\r\n border: none;\r\n margin-left: 1rem;\r\n\r\n a {\r\n padding: 11px 22px;\r\n display: block;\r\n @include text-size(15);\r\n color: $primary;\r\n text-decoration: none;\r\n }\r\n }\r\n\r\n &__cta {\r\n background-image: none !important;\r\n width: 100%;\r\n margin-top: 5px;\r\n padding: 0 15px 25px 15px;\r\n border-bottom: 2px solid #f4f4f4;\r\n\r\n &:after {\r\n display: none;\r\n }\r\n }\r\n\r\n &__cta-content {\r\n background: $primary;\r\n padding: 15px 25px 25px 25px;\r\n }\r\n }\r\n\r\n body.menu-open .menu-overlay {\r\n display: block;\r\n animation: subNavIn 200ms linear forwards;\r\n }\r\n}\r\n\r\n@keyframes subNavIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}","import { Component, h, Prop, Listen } from '@stencil/core';\r\nimport { PageNode } from 'interfaces/PageNode';\r\n\r\n@Component({\r\n tag: 'kdx-mega-nav',\r\n styleUrl: 'kdx-mega-nav.scss',\r\n shadow: false\r\n})\r\nexport class KdxMegaNav {\r\n\r\n @Prop() pageNodes: string = '';\r\n pageNodeArray: Array = [];\r\n\r\n @Prop() utilityNavLinks: string = '';\r\n utilityNavLinkArray: Array = [];\r\n\r\n /* When event is emitted from alert close, recalculate nav positions*/\r\n\t@Listen('dismissTriggered', {target: 'window'})\r\n\thandleDismissTriggered() {\r\n setTimeout(() => {\r\n this.calculateNavPositions();\r\n }, 50);\r\n\t}\r\n\r\n /*Recalculate nav positions on screen resize*/\r\n @Listen('resize', { target: 'window' })\r\n handleScreenResize() {\r\n this.calculateNavPositions();\r\n }\r\n \r\n componentWillLoad() {\r\n if (this.pageNodes !== '') {\r\n this.pageNodeArray = JSON.parse(this.pageNodes);\r\n }\r\n\r\n if (this.utilityNavLinks !== '') {\r\n this.utilityNavLinkArray = JSON.parse(this.utilityNavLinks);\r\n }\r\n\r\n this.enableStickyNav();\r\n }\r\n\r\n componentDidRender() {\r\n this.toggleMobileNav();\r\n this.toggleDesktopSearch();\r\n this.toggleLogin();\r\n this.calculateNavPositions();\r\n this.handleDismissTriggered();\r\n }\r\n\r\n createChildrenMarkup(children: Array) {\r\n let output = '';\r\n let isStartOfCol = true;\r\n\r\n children.forEach((child) => {\r\n if (isStartOfCol) {\r\n if (children.some(child => child.Break === 'true')) {\r\n output += '
';\r\n }\r\n else {\r\n output += '
';\r\n }\r\n isStartOfCol = false;\r\n }\r\n\r\n output += ``;\r\n\r\n if (child.Nodes && child.Nodes.length) {\r\n output += '
';\r\n\r\n child.Nodes.forEach((thirdLevel) => {\r\n output += ``;\r\n });\r\n\r\n output += '
';\r\n }\r\n\r\n if (child.Break && child.Break == 'true') {\r\n output += '
';\r\n isStartOfCol = true;\r\n }\r\n });\r\n\r\n return output;\r\n }\r\n\r\n hasThirdLevel(children : Array) {\r\n var thirdLevels = children.filter((child) => {\r\n return child.Nodes && child.Nodes.length;\r\n });\r\n\r\n return thirdLevels.length > 0;\r\n }\r\n\r\n menuEntered(state) {\r\n if (state == 'enter') {\r\n if (globalThis.closeOlb) {\r\n globalThis.closeOlb();\r\n }\r\n\r\n document.querySelector('body').classList.add('menu-entered');\r\n } else {\r\n document.querySelector('body').classList.remove('menu-entered');\r\n }\r\n }\r\n\r\n enableStickyNav() {\r\n const header = document.querySelector('.site-header__nav');\r\n \r\n if (!header) {\r\n return;\r\n }\r\n\r\n let isSticky = false;\r\n\r\n const headerPos = window.scrollY + header.getBoundingClientRect().top;\r\n \r\n window.addEventListener('scroll', () => {\r\n if (window.scrollY > (headerPos + 200) && !isSticky) {\r\n document.querySelector('body').classList.add('sticky-nav');\r\n isSticky = true;\r\n } else if (isSticky && window.scrollY < (headerPos + 200)) {\r\n document.querySelector('body').classList.remove('sticky-nav');\r\n isSticky = false;\r\n }\r\n });\r\n }\r\n\r\n mobileNavToggle(level: string, nodeIndex: number, childIndex: number = null) {\r\n const levels = {\r\n '1': '.app-nav__node',\r\n '2': '.app-nav__child'\r\n };\r\n\r\n let target = null;\r\n\r\n if (level == '1') {\r\n target = document.querySelectorAll('.app-nav__node')[nodeIndex];\r\n } else if (level == '2') {\r\n target = document.querySelectorAll('.app-nav__node')[nodeIndex].querySelector('.app-nav__children-mobile').querySelectorAll('.app-nav__child')[childIndex];\r\n }\r\n\r\n if (target) {\r\n target.classList.add('changing');\r\n\r\n document.querySelectorAll(levels[level]).forEach((node: HTMLElement) => {\r\n if (!node.classList.contains('changing')) {\r\n node.classList.remove('open');\r\n }\r\n });\r\n\r\n target.classList.toggle('open');\r\n target.classList.remove('changing');\r\n }\r\n }\r\n\r\n calculateNavPositions() {\r\n var header: HTMLElement = document.querySelector('.site-header');\r\n var nav: HTMLElement = document.querySelector('.app-nav');\r\n var searchBar: HTMLElement = document.querySelector('.site-header__utils');\r\n var navBar: HTMLElement = document.querySelector('.site-header__nav');\r\n var navNodes: NodeListOf = document.querySelectorAll('.app-nav .app-nav__node');\r\n var utilLinks: HTMLElement = document.querySelector('.header-util-nav-links');\r\n var loginFormWrap: HTMLElement = document.querySelector('#login-wrapper');\r\n var alertBanners: NodeListOf = document.querySelectorAll('.alert-banner');\r\n var dismissedAlerts: NodeListOf = document.querySelectorAll('.dismissed-alert.hide');\r\n var loginFormWrap = document.querySelector('#login-wrapper') as HTMLElement;\r\n \r\n //Get element heights\r\n var windowHeight = window.innerHeight;\r\n var headerHeight = header.offsetHeight;\r\n var navBarHeight = navBar.offsetHeight;\r\n var searchHeight = searchBar.offsetHeight;\r\n var utilLinksHeight = utilLinks.offsetHeight; \r\n let alertBannersHeight = 0;\r\n let navNodesTotalHeight = 0;\r\n navNodes.forEach(node => {\r\n var nodeHeight = (node as HTMLElement).offsetHeight;\r\n navNodesTotalHeight += nodeHeight;\r\n });\r\n\r\n if (!nav || !searchBar || !header) {\r\n return;\r\n }\r\n\r\n //Set util links mobile-offest value if notification banner is open\r\n if (alertBanners) {\r\n alertBanners.forEach((banner) => {\r\n alertBannersHeight += banner.offsetHeight;\r\n });\r\n var mobileNavOffsetBannerShown = (headerHeight + searchHeight) - alertBannersHeight;\r\n nav.style.top = mobileNavOffsetBannerShown + 'px';\r\n } else {\r\n nav.style.top = (headerHeight + searchHeight) + 'px';\r\n }\r\n\r\n //Set max-height of Login wrap\r\n loginFormWrap.style.maxHeight = (windowHeight - headerHeight) + 'px';\r\n\r\n //Set position of aux elements\r\n searchBar.style.top = headerHeight + 'px';\r\n loginFormWrap.style.top = headerHeight + 'px';\r\n\r\n //Position utils links below nav on mobile\r\n if (window.innerWidth < 1200) {\r\n utilLinks.style.position = 'relative';\r\n //If there are banners, and not all of them have been dismissed\r\n if (alertBanners && (dismissedAlerts.length < alertBanners.length)) {\r\n nav.style.height = `calc(100vh - ${searchHeight}px - ${navBarHeight}px - ${alertBannersHeight}px)`;\r\n //If all banners have been dismissed and the nav overflows the bottom of the screen\r\n } else if ((dismissedAlerts.length >= alertBanners.length) && (window.innerHeight < (navBarHeight + searchHeight + navNodesTotalHeight + utilLinksHeight))) {\r\n nav.style.height = `calc(100vh - ${searchHeight}px - ${navBarHeight}px)`;\r\n //If all banners have been dismissed and the nav does not overflow the bottom of the screen\r\n } else if ((dismissedAlerts.length >= alertBanners.length) && (window.innerHeight >= (navBarHeight + searchHeight + navNodesTotalHeight + utilLinksHeight))) {\r\n nav.style.height = navNodesTotalHeight + utilLinksHeight + 'px';\r\n }\r\n //Position util links above nav on desktop\r\n } else if (window.innerWidth >= 1200) {\r\n utilLinks.style.position = 'absolute';\r\n utilLinks.style.top = '0';\r\n nav.style.height = '100%';\r\n }\r\n }\r\n\r\n toggleMobileNav() {\r\n var header: HTMLElement = document.querySelector('header.site-header');\r\n var toggle: HTMLElement = document.querySelector('.mobile-nav-toggle');\r\n var utils: HTMLElement = document.querySelector('.site-header__utils');\r\n var nav: HTMLElement = document.querySelector('.app-nav');\r\n var utilLinks: HTMLElement = document.querySelector('.header-util-nav-links');\r\n var loginFormWrap: HTMLElement = document.querySelector('#login-wrapper');\r\n var loginMobileIcon: HTMLElement = document.querySelector('.login-mobile-icon');\r\n\r\n if (!toggle || !utils || !nav || !utilLinks) {\r\n return;\r\n }\r\n\r\n toggle.onclick = () => {\r\n this.calculateNavPositions();\r\n\r\n //Close Login if open\r\n if (loginMobileIcon.classList.contains('login-open') || loginFormWrap.classList.contains('login-open')) {\r\n loginMobileIcon.classList.remove('login-open');\r\n loginFormWrap.classList.remove('login-open');\r\n header.classList.remove('menu-open');\r\n document.querySelector('body').classList.remove('menu-open');\r\n document.documentElement.classList.remove('menu-open');\r\n }\r\n \r\n utils.classList.toggle('open');\r\n nav.classList.toggle('open');\r\n toggle.classList.toggle('open');\r\n utilLinks.classList.toggle('open');\r\n header.classList.toggle('menu-open');\r\n document.querySelector('body').classList.toggle('menu-open');\r\n document.documentElement.classList.toggle('menu-open');\r\n };\r\n\r\n window.addEventListener('resize', () => {\r\n if (document.querySelector('body').classList.contains('menu-open') || document.documentElement.classList.contains('menu-open')) {\r\n this.calculateNavPositions();\r\n }\r\n });\r\n }\r\n\r\n searchKybrdCntrl() {\r\n var utilWrap: HTMLElement = document.querySelector('.site-header__utils');\r\n var searchBox: HTMLElement = document.querySelector('.search-text-box');\r\n\r\n if (utilWrap.classList.contains(\"search-open\")) {\r\n searchBox.tabIndex = 0;\r\n searchBox.focus();\r\n } else {\r\n searchBox.tabIndex = -1;\r\n searchBox.blur();\r\n }\r\n }\r\n\r\n toggleDesktopSearch() {\r\n var loginDeskToggle: HTMLElement = document.querySelector('#login-desktop-btn'); \r\n var loginFormWrap: HTMLElement = document.querySelector('#login-wrapper');\r\n var searchToggle: HTMLElement = document.querySelector('#search-icon-desktop-nav');\r\n var utilWrap: HTMLElement = document.querySelector('.site-header__utils');\r\n var searchDescendants: NodeListOf = utilWrap.querySelectorAll('*');\r\n\r\n\r\n var checkSearchFocus = () => {\r\n let hasFocus = false;\r\n \r\n searchDescendants.forEach(element => {\r\n if (element === document.activeElement) {\r\n hasFocus = true;\r\n }\r\n });\r\n \r\n if (hasFocus) {\r\n // Open Search if anything in the Search Wrapper has focus\r\n utilWrap.classList.add('search-open');\r\n searchToggle.classList.add('search-open');\r\n document.querySelector('body').classList.add('menu-open');\r\n } else {\r\n // Close Search if nothing in the Search Wrapper has focus\r\n utilWrap.classList.remove('search-open');\r\n searchToggle.classList.remove('search-open');\r\n document.querySelector('body').classList.remove('menu-open');\r\n }\r\n };\r\n\r\n //Event listeners to listen for focus or blur on elements in the Search Wrapper\r\n searchDescendants.forEach(descendant => {\r\n descendant.addEventListener('focus', () => {\r\n checkSearchFocus();\r\n });\r\n descendant.addEventListener('blur', () => {\r\n setTimeout(() => {\r\n let hasFocus = false;\r\n searchDescendants.forEach(element => {\r\n if (element === document.activeElement) {\r\n hasFocus = true;\r\n }\r\n });\r\n \r\n if (!hasFocus) {\r\n utilWrap.classList.remove('search-open');\r\n searchToggle.classList.remove('search-open');\r\n document.querySelector('body').classList.remove('menu-open');\r\n }\r\n }, 250); // Delay to allow focus to move to another element\r\n });\r\n });\r\n ///*** END OPEN/CLOSE SEARCH ON KEYBOARD FOCUS/BLUR ***///\r\n\r\n searchToggle.onclick = () => {\r\n\r\n this.calculateNavPositions();\r\n\r\n //Close Login if open\r\n if (loginDeskToggle.classList.contains('login-open')) {\r\n loginDeskToggle.classList.remove('login-open');\r\n document.querySelector('body').classList.remove('menu-open');\r\n }\r\n if (loginFormWrap.classList.contains('login-open')) {\r\n loginFormWrap.classList.remove('login-open');\r\n document.querySelector('body').classList.remove('menu-open');\r\n }\r\n\r\n //Open/close Search\r\n utilWrap.classList.toggle('search-open');\r\n searchToggle.classList.toggle('search-open');\r\n document.querySelector('body').classList.toggle('menu-open');\r\n\r\n this.searchKybrdCntrl();\r\n };\r\n }\r\n\r\n toggleLogin() {\r\n var header: HTMLElement = document.querySelector('header.site-header');\r\n var loginDeskToggle: HTMLElement = document.querySelector('#login-desktop-btn'); \r\n var loginFormWrap: HTMLElement = document.querySelector('#login-wrapper');\r\n var loginMobileIcon: HTMLElement = document.querySelector('.login-mobile-icon');\r\n var nav: HTMLElement = document.querySelector('.app-nav');\r\n var utilWrap: HTMLElement = document.querySelector('.site-header__utils');\r\n var utilLinks: HTMLElement = document.querySelector('.header-util-nav-links');\r\n var mobileNavToggle: HTMLElement = document.querySelector('.mobile-nav-toggle');\r\n var deskSearchIcon: HTMLElement = document.querySelector('#search-icon-desktop-nav');\r\n var radioBtnFieldset: HTMLElement = document.querySelector('#radio-btn-fieldset');\r\n var radioBtnWrap: HTMLElement = document.querySelector('.radio-wrap');\r\n var focusableElements: NodeListOf = loginFormWrap.querySelectorAll('input, button, select, textarea, a[href]');\r\n\r\n // Close Login Form if none of the focuable elements have focus\r\n focusableElements.forEach(element => {\r\n element.addEventListener('blur', () => {\r\n setTimeout(() => {\r\n let hasFocus = false;\r\n focusableElements.forEach(element => {\r\n if (element === document.activeElement) {\r\n hasFocus = true;\r\n }\r\n });\r\n \r\n if (!hasFocus) {\r\n loginDeskToggle.classList.remove('login-open');\r\n loginFormWrap.classList.remove('login-open');\r\n radioBtnFieldset.setAttribute('disabled', 'disabled');\r\n focusableElements.forEach(element => {\r\n if (element.hasAttribute('tabindex')) {\r\n if (element.tabIndex === 0) {\r\n element.tabIndex = -1;\r\n }\r\n }\r\n })\r\n if (!utilWrap.classList.contains('search-open')) {\r\n document.querySelector('body').classList.remove('menu-open');\r\n }\r\n }\r\n }, 375); // Delay to allow focus to move to another element\r\n });\r\n });\r\n\r\n //Puts focus on the selected radio button option if the form is clicked anywhere that is not a focusable element, which prevents the Login Form from closing as a result of the focusableElements forEach loop above\r\n loginFormWrap.addEventListener('click', (event) => {\r\n var target = event.target as HTMLElement;\r\n if (!target.closest('input, button, select, textarea, a[href]')) {\r\n let selectedRadioBtn: HTMLInputElement | null = document.querySelector('.login-radio:checked');\r\n selectedRadioBtn.focus();\r\n }\r\n });\r\n\r\n loginDeskToggle.onclick = () => {\r\n this.calculateNavPositions();\r\n\r\n //Close Search if open\r\n if (utilWrap.classList.contains('search-open') || deskSearchIcon.classList.contains('search-open')) {\r\n utilWrap.classList.remove('search-open');\r\n deskSearchIcon.classList.remove('search-open');\r\n }\r\n\r\n loginDeskToggle.classList.toggle('login-open');\r\n loginFormWrap.classList.toggle('login-open');\r\n \r\n \r\n //Make Login elements keyboard focusable if Login open, not focusable if Login closed\r\n focusableElements.forEach(element => {\r\n if (element.hasAttribute('tabindex')) {\r\n if (element.tabIndex === -1) {\r\n element.tabIndex = 0;\r\n } else if (element.tabIndex === 0) {\r\n element.tabIndex = -1;\r\n }\r\n }\r\n });\r\n\r\n if (radioBtnFieldset.hasAttribute('disabled')) {\r\n radioBtnFieldset.removeAttribute('disabled');\r\n }\r\n\r\n // Put focus on first radio button, or first input, and give body overlay\r\n setTimeout(() => {\r\n if (loginFormWrap.classList.contains('login-open') && radioBtnFieldset && (radioBtnWrap.style.display !== \"none\")) {\r\n let selectedRadioBtn: HTMLInputElement | null = document.querySelector('.login-radio:checked');\r\n selectedRadioBtn.focus();\r\n document.querySelector('body').classList.add('menu-open');\r\n } else if (loginFormWrap.classList.contains('login-open') && (radioBtnWrap.style.display === \"none\")) {\r\n let loginForm = document.querySelector('.login-form');\r\n let firstInput = loginForm.querySelector('input');\r\n firstInput.focus();\r\n document.querySelector('body').classList.add('menu-open');\r\n }\r\n }, 250);\r\n };\r\n\r\n loginMobileIcon.onclick = () => {\r\n this.calculateNavPositions();\r\n\r\n //Close mobile nav if open\r\n if (utilWrap.classList.contains('open') || nav.classList.contains('open') || utilLinks.classList.contains('open') || mobileNavToggle.classList.contains('open')) {\r\n utilWrap.classList.remove('open');\r\n nav.classList.remove('open');\r\n utilLinks.classList.remove('open');\r\n mobileNavToggle.classList.remove('open');\r\n header.classList.remove('menu-open');\r\n document.querySelector('body').classList.remove('menu-open');\r\n document.documentElement.classList.remove('menu-open');\r\n }\r\n\r\n document.querySelector('body').classList.toggle('menu-open');\r\n loginMobileIcon.classList.toggle('login-open');\r\n loginFormWrap.classList.toggle('login-open');\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}","import { Component, h, Prop } from '@stencil/core';\r\nimport { PageNodeCTA } from 'interfaces/PageNode';\r\n\r\n@Component({\r\n tag: 'kdx-mega-nav-cta',\r\n shadow: false,\r\n})\r\nexport class KdxMegaNavCta {\r\n\r\n @Prop() CTA: PageNodeCTA;\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
{this.CTA.Title}
\r\n {Boolean(this.CTA.Description) &&
{this.CTA.Description}
}\r\n \r\n {this.CTA.LinkTitle}\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n}",".btn-scroll-to-top {\r\n display: none;\r\n position: fixed;\r\n bottom: 50px;\r\n right: 50px;\r\n height: 50px;\r\n width: 50px;\r\n border: solid 1px #fff;\r\n border-radius: 50%;\r\n background-color: #FFF;\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: 50;\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(15px, 15px, $darker-gold);\r\n @include transitionDefault(fill);\r\n }\r\n }\r\n\r\n &:hover,\r\n &:focus {\r\n transform: translateY(-5px);\r\n background-color: $secondary;\r\n border: 2px solid $darker-gold;\r\n @include transitionDefault(all);\r\n\r\n .svg-icon {\r\n svg {\r\n fill: $white;\r\n @include transitionDefault(fill);\r\n }\r\n }\r\n }\r\n}","import { Component, h } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kdx-scroll-top',\r\n styleUrl: 'kdx-scroll-top.scss',\r\n shadow: false,\r\n})\r\nexport class KdxScrollTop {\r\n\r\n private isShown = false;\r\n\r\n componentDidRender() {\r\n const btn: HTMLElement = document.querySelector('.btn-scroll-to-top');\r\n\r\n window.addEventListener('scroll', () => {\r\n if (window.scrollY > 350 && !this.isShown) {\r\n globalThis.fade_in(btn);\r\n this.isShown = true;\r\n } else if (window.scrollY <= 350 && this.isShown) {\r\n globalThis.fade_out(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",".speedbump {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n position: fixed;\r\n width: 100vw;\r\n height: 100vh;\r\n z-index: 100;\r\n top: 0;\r\n left: 0;\r\n animation: speedbumpIn 250ms linear forwards;\r\n\r\n\r\n &__overlay {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.7);\r\n }\r\n\r\n &__inner {\r\n position: absolute;\r\n width: 90%;\r\n max-width: 600px;\r\n background: #fff;\r\n padding: 4rem;\r\n button.close-speedbump {\r\n appearance: none;\r\n -webkit-appearance: none;\r\n -moz-appearance: none;\r\n position: absolute;\r\n top: 1.5rem;\r\n right: 1.5rem;\r\n height: 1.75rem !important;\r\n width: 1.75rem;\r\n padding: 0 ;\r\n border: none;\r\n background: transparent;\r\n cursor: pointer;\r\n kdx-icon {\r\n width: 100%;\r\n height: 100%;\r\n svg {\r\n height: 100%;\r\n width: 100%;\r\n }\r\n }\r\n }\r\n h2,\r\n p {\r\n text-align: center;\r\n }\r\n h2 {\r\n position: relative;\r\n padding-top: 1.5rem;\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n left: calc(50% - 2rem);\r\n top: 0;\r\n height: 0.5rem;\r\n width: 4rem;\r\n background-color: #9A8749;\r\n }\r\n }\r\n }\r\n\r\n &__actions {\r\n width: fit-content;\r\n margin: 2rem auto 0;\r\n a {\r\n margin-right: 20px;\r\n &.btn-underline {\r\n font-weight: 900;\r\n margin-top: 0.75rem;\r\n margin-bottom: 0.75rem;\r\n }\r\n }\r\n }\r\n}\r\n\r\n@keyframes speedbumpIn {\r\n from {\r\n opacity: 0;\r\n }\r\n to {\r\n opacity: 1;\r\n }\r\n}\r\n","import { Component, h, Prop, State, Host, Listen, Element } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'kdx-speedbump',\r\n styleUrl: 'kdx-speedbump.scss',\r\n shadow: false,\r\n})\r\nexport class AppSpeedbump {\r\n\r\n @Element() root: HTMLElement;\r\n\r\n primaryLink!: HTMLAnchorElement;\r\n\r\n @Prop() returnText: string = 'Cancel';\r\n @Prop() continueText: string = 'Continue to Site';\r\n @Prop() defaultMessage: string = 'By accessing this link, you will be leaving this website and entering a website hosted by another party.';\r\n @Prop() headerText: string = 'You are leaving the site';\r\n\r\n @State() info = {\r\n open: false,\r\n message: '',\r\n url: ''\r\n };\r\n\r\n @Listen('click', { target: 'document' })\r\n openSpeedbump(e: PointerEvent) {\r\n const speedbumpLink = (e.target as Element).closest('a.speedbump-link') as HTMLAnchorElement;\r\n if (!speedbumpLink)\r\n return;\r\n\r\n e.preventDefault();\r\n\r\n this.info = {\r\n open: true,\r\n message: this.defaultMessage,\r\n url: speedbumpLink.href\r\n };\r\n window.addEventListener('keydown', this.focusTrap);\r\n }\r\n\r\n componentDidRender() {\r\n if (this.info.open) {\r\n this.primaryLink.focus();\r\n }\r\n }\r\n\r\n closeSpeedbump(e, allowDefault = false) {\r\n if (!allowDefault) {\r\n e.preventDefault();\r\n }\r\n\r\n this.info = {\r\n open: false,\r\n message: '',\r\n url: ''\r\n };\r\n window.removeEventListener('keydown', this.focusTrap);\r\n }\r\n\r\n focusTrap(e) {\r\n if (e.keyCode === 9) {\r\n let focusable = document.querySelector('.speedbump__actions').querySelectorAll('input,button,select,textarea,a');\r\n if (focusable.length) {\r\n let first = focusable[0];\r\n let last = focusable[focusable.length - 1];\r\n let shift = e.shiftKey;\r\n if (shift && e.target === first) {\r\n (last as HTMLElement).focus();\r\n e.preventDefault();\r\n }\r\n else if (e.target === last) {\r\n (first as HTMLElement).focus();\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n if (!this.info.open) {\r\n return ();\r\n }\r\n\r\n return (\r\n
\r\n
{this.closeSpeedbump(e)}}>
\r\n
\r\n
\r\n \r\n
\r\n\r\n

{this.headerText}

\r\n\r\n

\r\n { this.info.message }\r\n

\r\n\r\n
\r\n {this.closeSpeedbump(e, true)}}>\r\n {this.continueText}\r\n \r\n this.primaryLink = e}\r\n href=\"#\"\r\n aria-label={this.returnText}\r\n onClick={(e) => {this.closeSpeedbump(e)}}\r\n class=\"btn btn-underline gold\">\r\n {this.returnText}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n}\r\n",".kdx-site-search {\r\n position: relative;\r\n overflow: hidden;\r\n padding: 0 0 2px;\r\n\r\n &.input-group {\r\n > .form-control {\r\n margin: 0;\r\n\r\n &:focus,\r\n &:active {\r\n z-index: auto; // Bootstrap override\r\n }\r\n }\r\n\r\n // Bootstrap override\r\n > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\r\n margin: 0;\r\n }\r\n }\r\n\r\n .input-group-text {\r\n background-color: #fff;\r\n border: none;\r\n border-radius: 0;\r\n }\r\n\r\n > .form-control {\r\n border: none;\r\n border-radius: 0;\r\n @include text-size(15);\r\n color: $senary;\r\n max-height: 25px;\r\n padding: 0;\r\n\r\n + .input-group-text {\r\n padding: 0;\r\n }\r\n\r\n &::placeholder {\r\n color: $senary;\r\n @include text-size(15);\r\n }\r\n\r\n &:active,\r\n &:focus {\r\n border: none;\r\n outline: none;\r\n box-shadow: none;\r\n }\r\n }\r\n\r\n .svg-icon {\r\n svg {\r\n @include svg-format(20px, 20px, $primary);\r\n }\r\n }\r\n\r\n &:before,\r\n &:after {\r\n content: '';\r\n position: absolute;\r\n display: block;\r\n width: 100%;\r\n height: 1px;\r\n background-color: $senary;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n transform: translateX(0);\r\n @include transitionDefault(transform);\r\n }\r\n\r\n &:before {\r\n background-color: $primary;\r\n transform: translateX(-100%);\r\n @include transitionDefault(transform);\r\n }\r\n\r\n &.has-focus {\r\n &:before,\r\n &:after {\r\n transform: translateX(100%);\r\n @include transitionDefault(transform);\r\n }\r\n\r\n &:before {\r\n box-shadow: 0px 0px 6px rgba(111, 178, 229, 1);\r\n transform: translateX(0);\r\n }\r\n }\r\n\r\n @include media-breakpoint-down(lg) {\r\n flex-wrap: nowrap;\r\n\r\n input[type=\"text\"] {\r\n padding: 10px;\r\n height: auto;\r\n max-height: none;\r\n }\r\n\r\n button[type=\"submit\"] {\r\n width: auto;\r\n padding-right: 10px !important;\r\n }\r\n }\r\n}\r\n","import { Component, h, ComponentInterface, Prop, Element, State } from '@stencil/core';\r\nimport { getQueryStringValue, guid } from 'utils';\r\n\r\n\r\n@Component({\r\n tag: 'kdx-web-search',\r\n styleUrl: 'kdx-sitefinity-search.scss',\r\n shadow: false\r\n})\r\nexport class StSitefinitySearch implements ComponentInterface {\r\n\r\n @State() guid: string = guid();\r\n\r\n @Element() root: HTMLElement;\r\n @Prop() resultsUrl: string;\r\n @Prop() label: string;\r\n @Prop() placeholder: string;\r\n @Prop() searchId: string = `site-search`;\r\n\r\n public searchValue: string;\r\n\r\n componentDidRender() {\r\n const searchTermQs = getQueryStringValue('searchQuery');\r\n\r\n if (searchTermQs && searchTermQs != '') {\r\n const searchInput: HTMLInputElement = this.root.querySelector('input.form-control');\r\n searchInput.value = searchTermQs;\r\n }\r\n }\r\n\r\n handleFocus() {\r\n this.root.querySelector('.kdx-site-search').classList.add('has-focus');\r\n }\r\n\r\n handleBlur() {\r\n this.root.querySelector('.kdx-site-search').classList.remove('has-focus');\r\n }\r\n\r\n handleClick(event: Event) {\r\n event.preventDefault();\r\n (event.target as HTMLElement).closest('.input-group').querySelector('.form-control').classList.toggle('show');\r\n\r\n Array.from((event.target as HTMLElement).closest('.input-group').querySelectorAll('.kdx-show-mobile-search .svg-icon')).forEach((icon) => {\r\n icon.classList.toggle('d-none');\r\n });\r\n }\r\n\r\n searchSubmit(e) {\r\n e.preventDefault();\r\n var term = this.searchValue;\r\n\r\n if(typeof term !== 'undefined' && (term + '').trim() != ''){\r\n var qs = `?searchText=` + encodeURIComponent(term);\r\n window.location.href = this.resultsUrl + qs;\r\n }\r\n }\r\n\r\n setValue(e) {\r\n this.searchValue = e.target.value;\r\n }\r\n\r\n render() {\r\n return (\r\n { this.searchSubmit(e) }}>\r\n \r\n { this.handleFocus() }}\r\n onBlur={() => { this.handleBlur() }}\r\n onKeyUp={(e) => { this.setValue(e) }} />\r\n \r\n \r\n );\r\n }\r\n}"],"mappings":"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"}