{"version":3,"file":"main.js","mappings":"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","sources":["webpack://rcs-markup/./src/js/constants.js","webpack://rcs-markup/./src/js/utils.js","webpack://rcs-markup/./src/js/menuHandler.js","webpack://rcs-markup/./src/js/navbar.js","webpack://rcs-markup/./node_modules/@splidejs/splide/dist/js/splide.esm.js","webpack://rcs-markup/./src/js/tabs.js","webpack://rcs-markup/./src/js/dropdown.js","webpack://rcs-markup/./src/js/leadership.js","webpack://rcs-markup/./src/js/range.js","webpack://rcs-markup/./src/js/loan-calculator.js","webpack://rcs-markup/./src/js/debounce.js","webpack://rcs-markup/./src/js/regex.js","webpack://rcs-markup/./src/js/input.js","webpack://rcs-markup/./src/js/features-list.js","webpack://rcs-markup/./src/js/switch.js","webpack://rcs-markup/./src/js/form.js","webpack://rcs-markup/./src/js/textarea.js","webpack://rcs-markup/./src/js/filter.js","webpack://rcs-markup/./src/js/shopping-network.js","webpack://rcs-markup/./src/js/searchableDropdown.js","webpack://rcs-markup/./src/js/modal.js","webpack://rcs-markup/./src/js/promo-section.js","webpack://rcs-markup/./src/js/media.js","webpack://rcs-markup/./src/js/search-results.js","webpack://rcs-markup/./src/js/checkbox.js","webpack://rcs-markup/./src/js/product-qualification.js","webpack://rcs-markup/./src/js/faq.js","webpack://rcs-markup/./src/js/anchor-widget.js","webpack://rcs-markup/./src/js/accordion.js","webpack://rcs-markup/./src/js/footer.js","webpack://rcs-markup/./src/js/tabsContainer.js","webpack://rcs-markup/./src/js/maintenance-banner.js","webpack://rcs-markup/./src/js/main.js","webpack://rcs-markup/./src/js/scrollHandler.js","webpack://rcs-markup/./src/js/header-banner.js","webpack://rcs-markup/./src/js/cards-module.js","webpack://rcs-markup/./src/js/testimonials-carousel.js","webpack://rcs-markup/./src/js/month-picker.js","webpack://rcs-markup/./src/js/promoted-item.js","webpack://rcs-markup/./src/js/media-details.js","webpack://rcs-markup/./src/js/general-content.js","webpack://rcs-markup/./src/js/legal.js","webpack://rcs-markup/./src/js/simple-calculator.js","webpack://rcs-markup/./src/js/gridWrapper.js"],"sourcesContent":["// NEEDS TO MATCH SCSS BREAKPOINTS\r\nexport const BREAKPOINTS = {\r\n SM: 480,\r\n MD: 768,\r\n LG: 1024,\r\n XL: 1200,\r\n XXL: 1400,\r\n};\r\n","import { BREAKPOINTS } from './constants';\r\n\r\nexport const isMobileScreen = (mobileBreakpoint = BREAKPOINTS.MD) => window.innerWidth < mobileBreakpoint;\r\nexport const isXxlScreen = (xxlBreakpoint = BREAKPOINTS.XXL) => window.innerWidth >= xxlBreakpoint;\r\n\r\nexport const detectVisibleItem = (items, cb, threshold = 0.8) => {\r\n const observer = new IntersectionObserver((entries) =>\r\n entries.forEach((entry) => entry.intersectionRatio >= threshold ? cb(entry?.target) : null)\r\n , { threshold: threshold });\r\n\r\n items.forEach((item) =>\r\n observer.observe(item)\r\n );\r\n};\r\n\r\nexport const convertStringToNumber = (value) => Number(value.replace(/[^0-9]/g, ''));\r\n\r\nexport const isJsonString = (str) => {\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nexport const queryBuilder = (query) => {\r\n\r\n const url = location.href;\r\n const stringUrl = url.toString();\r\n\r\n const hasQuery = stringUrl?.indexOf('?');\r\n const oldQuery = stringUrl.substring(hasQuery, stringUrl?.length);\r\n\r\n let newQuery = oldQuery;\r\n\r\n for (const [key, value] of Object.entries(query)) {\r\n newQuery = replaceUrlParam(newQuery, key, value);\r\n }\r\n\r\n history.replaceState(null, null, newQuery);\r\n};\r\n\r\nexport const clearQuery = () => {\r\n\r\n const url = location.href;\r\n const stringUrl = url.toString();\r\n\r\n const hasQuery = stringUrl?.indexOf('?');\r\n\r\n if (!hasQuery) return;\r\n const newUrl = stringUrl.substring(0, hasQuery);\r\n\r\n history.pushState({ path: newUrl }, '', newUrl);\r\n};\r\n\r\nconst replaceUrlParam = (url, paramName, paramValue) => {\r\n\r\n if (paramValue === null || paramValue === '') return removeParam(url, paramName);\r\n\r\n const pattern = new RegExp('\\\\b(' + paramName + '=).*?(&|#|$)');\r\n\r\n if (url.search(pattern) >= 0) return url.replace(pattern, '$1' + paramValue + '$2');\r\n url = url.replace(/[?#]$/, '');\r\n\r\n return url + (url.indexOf('?') > -1 ? '&' : '?') + paramName + '=' + paramValue;\r\n};\r\n\r\nconst removeParam = (url, paramName) => {\r\n const pattern = new RegExp('[?&]' + paramName + '=[^&#]*[&#]?', 'g');\r\n return url.replace(pattern, '').replace(/[?&]$/, '');\r\n};\r\n\r\nexport const getParamFromUrl = (param) => {\r\n if (!param) return;\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n\r\n return urlParams.get(param);\r\n};\r\n\r\nexport const currencyFormater = (value) => {\r\n const formatedPrice = new Intl.NumberFormat('en-ZA', {\r\n style: 'currency',\r\n currency: 'ZAR',\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2,\r\n }).format(convertStringToNumber(value));\r\n\r\n return formatedPrice;\r\n};\r\n\r\nexport function debounce(func, delay = 300) {\r\n let timeoutId;\r\n return function (...args) {\r\n clearTimeout(timeoutId);\r\n timeoutId = setTimeout(() => func.apply(this, args), delay);\r\n };\r\n}\r\n","import { isMobileScreen } from './utils';\r\nimport { BREAKPOINTS } from './constants';\r\n\r\nconst shrink = (item) => {\r\n item?.classList.remove('expand--open');\r\n item.setAttribute('aria-expanded', 'false');\r\n};\r\n\r\nconst expand = (item) => {\r\n item?.classList.add('expand--open');\r\n item.setAttribute('aria-expanded', 'true');\r\n};\r\n\r\nconst rowHandler = (row, menu) => {\r\n if (row.classList.contains('expand--open')) return shrink(row);\r\n menu?.querySelectorAll('.expand--open').forEach((item) => shrink(item));\r\n expand(row);\r\n};\r\n\r\nconst menuHandler = (menu) => {\r\n const firstMenuRow = menu?.querySelectorAll('.menu__list-container ul > .menu__list-item--tier1');\r\n const event = isMobileScreen(BREAKPOINTS.LG) ? 'click' : 'mouseover';\r\n\r\n if (!firstMenuRow) return;\r\n\r\n firstMenuRow.forEach((item) => {\r\n\r\n item.addEventListener(event, (e) => {\r\n const targetEl = e?.target;\r\n const isAnchorTag = targetEl?.tagName === 'A';\r\n const isFirstRow = isAnchorTag && targetEl?.parentElement === item;\r\n\r\n if (isFirstRow) return rowHandler(item, menu);\r\n\r\n const isSecondRow = isAnchorTag && targetEl?.parentElement.classList.contains('menu__list-item--tier2');\r\n\r\n if (isSecondRow) return rowHandler(targetEl?.parentElement, targetEl?.parentElement?.parentElement);\r\n\r\n });\r\n });\r\n};\r\n\r\nexport default menuHandler;\r\n","import { isMobileScreen } from './utils';\r\nimport { BREAKPOINTS } from './constants';\r\nimport menuHandler from './menuHandler';\r\n\r\nconst toggleMenu = (menu, menuOpen, menuClose) => {\r\n if (!menu || !menuOpen || !menuClose) return;\r\n\r\n window.addEventListener('scroll', (e) => {\r\n e.preventDefault();\r\n menu.classList.contains('menu--open') ? window.scrollTo(0, 0) : document.documentElement.style.setProperty('--scroll-y', `${window.scrollY}px`);\r\n });\r\n\r\n \r\n const customCareButton = document.getElementById('custom-care-button');\r\n const html = document.getElementsByTagName('html')[0];\r\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\n let timeout = null;\r\n menuOpen.onclick = (event) => {\r\n event.preventDefault();\r\n document.body.style.position = '';\r\n document.body.style.scrollbarGutter = 'stable';\r\n menu.classList.add('menu--open');\r\n document.getElementsByTagName('main')[0].marginTop = '0px';\r\n if (isMobileScreen(BREAKPOINTS.LG)) {\r\n document.body.style.height = '-webkit-fill-available';\r\n document.documentElement.style.height = '-webkit-fill-available';\r\n\r\n }\r\n const ot = document.getElementById('ot-sdk-btn-floating');\r\n if (ot) {\r\n ot.style.display = 'none';\r\n }\r\n\r\n if (customCareButton) {\r\n customCareButton.style.display = 'none';\r\n }\r\n\r\n if (isSafari) {\r\n timeout = setTimeout(() => {\r\n html.style.overflow = 'hidden';\r\n document.body.style.overflow = 'hidden';\r\n menu.style.overflow = 'hidden';\r\n }, 1000);\r\n\r\n }\r\n html.classList.add('menu__scroll');\r\n document.body.style.scrollbarColor = '#c2c2c2 transparent';\r\n };\r\n\r\n menuClose.onclick = (event) => {\r\n event.preventDefault();\r\n const scrollY = document.body.style.top;\r\n document.body.style.position = '';\r\n document.body.style.scrollbarGutter = '';\r\n document.body.style.top = '';\r\n document.documentElement.style.overflow = '';\r\n window.scrollTo(0, parseInt(scrollY || '0') * -1);\r\n menu.classList.remove('menu--open');\r\n document.getElementsByTagName('main')[0].marginTop = '76px';\r\n if (isMobileScreen(BREAKPOINTS.LG)) {\r\n document.body.style.height = '100%';\r\n document.documentElement.removeAttribute('style');\r\n }\r\n const ot = document.getElementById('ot-sdk-btn-floating');\r\n if (ot) {\r\n ot.style.display = 'block';\r\n }\r\n\r\n if (customCareButton) {\r\n customCareButton.style.display = 'block';\r\n }\r\n\r\n html.classList.remove('menu__scroll');\r\n document.body.style.scrollbarColor = 'unset';\r\n if (isSafari) {\r\n clearTimeout(timeout);\r\n }\r\n };\r\n};\r\n\r\nconst expandItems = (expand) => {\r\n\r\n const open = expand.classList.contains('expand--open');\r\n const openedElements = expand.parentElement.querySelectorAll('.expand--open');\r\n\r\n if (!open) {\r\n openedElements.forEach((item) => {\r\n item.classList.remove('expand--open');\r\n item.setAttribute('aria-expanded', 'false');\r\n\r\n if (!item.classList.contains('menu__list-item')) {\r\n const dropdown = item.querySelector('.nav__list-item-dropdown');\r\n if (dropdown) dropdown.style.maxHeight = '0';\r\n }\r\n });\r\n\r\n expand.classList.add('expand--open');\r\n expand.setAttribute('aria-expanded', 'true');\r\n const dropdown = expand.querySelector('.nav__list-item-dropdown');\r\n if (dropdown && !expand.classList.contains('menu__list-item')) {\r\n dropdown.style.maxHeight = dropdown.scrollHeight + 'px';\r\n dropdown.addEventListener('mouseleave', () => {\r\n expand.classList.remove('expand--open');\r\n expand.setAttribute('aria-expanded', 'false');\r\n dropdown.style.maxHeight = '0';\r\n dropdown.removeEventListener('mouseleave', null);\r\n });\r\n }\r\n\r\n expand.addEventListener('click', () => {\r\n expand.classList.remove('expand--open');\r\n expand.setAttribute('aria-expanded', 'false');\r\n expand.removeEventListener('click', null);\r\n });\r\n return;\r\n }\r\n};\r\n\r\nconst onMouseOver = (e) => {\r\n e.preventDefault();\r\n const targetEl = e.target;\r\n\r\n if (targetEl.classList.contains('expand')) return expandItems(targetEl);\r\n expandItems(targetEl);\r\n\r\n};\r\n\r\nconst onNavbarLoad = () => {\r\n const expand = document.querySelectorAll('.nav .nav__left .nav__list-item');\r\n\r\n if (!expand) return;\r\n\r\n expand.forEach((item) => {\r\n item.addEventListener('mouseenter', onMouseOver);\r\n });\r\n\r\n const menu = document.querySelector('.menu');\r\n const menuOpen = document.querySelector('#menuOpen');\r\n const menuClose = document.querySelector('#menuClose');\r\n toggleMenu(menu, menuOpen, menuClose);\r\n menuHandler(menu);\r\n};\r\n\r\nexport default onNavbarLoad;\r\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n forEach(keys || ownKeys(object), function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, x, y, exclusive) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_OVERFLOW = \"overflow\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\nvar EVENT_SLIDE_KEYDOWN = \"sk\";\nvar EVENT_SHIFTED = \"sh\";\nvar EVENT_END_INDEX_CHANGED = \"ei\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n id = raf(update);\n }\n }\n\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval = RequestInterval(duration || 0, func, null, 1);\n return function () {\n interval.isPaused() && interval.start();\n };\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, base, notify) {\n merge(options, opts);\n base && merge(Object.getPrototypeOf(options), opts);\n\n if (notify || !state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_PREFIX = PROJECT_CODE + \"__\";\nvar STATUS_CLASS_PREFIX = \"is-\";\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = CLASS_PREFIX + \"track\";\nvar CLASS_LIST = CLASS_PREFIX + \"list\";\nvar CLASS_SLIDE = CLASS_PREFIX + \"slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = CLASS_PREFIX + \"arrows\";\nvar CLASS_ARROW = CLASS_PREFIX + \"arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = CLASS_PREFIX + \"pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = CLASS_PREFIX + \"progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = CLASS_PREFIX + \"toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = CLASS_PREFIX + \"spinner\";\nvar CLASS_SR = CLASS_PREFIX + \"sr\";\nvar CLASS_INITIALIZED = STATUS_CLASS_PREFIX + \"initialized\";\nvar CLASS_ACTIVE = STATUS_CLASS_PREFIX + \"active\";\nvar CLASS_PREV = STATUS_CLASS_PREFIX + \"prev\";\nvar CLASS_NEXT = STATUS_CLASS_PREFIX + \"next\";\nvar CLASS_VISIBLE = STATUS_CLASS_PREFIX + \"visible\";\nvar CLASS_LOADING = STATUS_CLASS_PREFIX + \"loading\";\nvar CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + \"focus-in\";\nvar CLASS_OVERFLOW = STATUS_CLASS_PREFIX + \"overflow\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(queryAll(slide, options.focusableNodes || \"\"), TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n\n function resize(force) {\n var newRect = rect(root);\n\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n\n if (overflow !== (overflow = isOverflow())) {\n toggleClass(root, CLASS_OVERFLOW, overflow);\n emit(EVENT_OVERFLOW, overflow);\n }\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n function isOverflow() {\n return Splide2.is(FADE) || sliderSize(true) > listSize();\n }\n\n return {\n mount: mount,\n resize: resize,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding,\n isOverflow: isOverflow\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on;\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n on(EVENT_REFRESH, remount);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n event.destroy();\n }\n\n function observe() {\n var count = computeCloneCount();\n\n if (cloneCount !== count) {\n if (cloneCount < count || !count) {\n event.emit(EVENT_REFRESH);\n }\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize(true) - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var endIndex;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init);\n on(EVENT_RESIZED, onResized);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function onResized() {\n if (endIndex !== getEnd()) {\n emit(EVENT_END_INDEX_CHANGED);\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n var index = loop(Move.toIndex(getPosition()));\n setIndex(omitEnd ? min(index, endIndex) : index);\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, endIndex);\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : endIndex;\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > endIndex) {\n if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? endIndex : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n\n while (omitEnd && end-- > 0) {\n if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n }\n\n return clamp(end, 0, slideCount - 1);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n\n function toPage(index) {\n return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, endIndex) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var placeholder = Elements.arrows,\n track = Elements.track;\n var wrapper = placeholder;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(placeholder ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = placeholder || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !placeholder && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"
\";\n html += \"\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"
\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"
\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"\";\n html += \"
\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n\n html += \"
\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_OVERFLOW, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_END_INDEX_CHANGED, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_OVERFLOW, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n","export const tabsHandler = (tabs, nextElement, cb = null) => {\r\n\r\n if (!tabs) return;\r\n\r\n cb?.(Array.from(tabs?.children)?.[0].getAttribute('data-tab-value'));\r\n\r\n tabs.addEventListener('click', (e) => {\r\n const targetElement = e.target.closest('li');\r\n\r\n if (!targetElement) return;\r\n\r\n const activeTab = tabs.querySelector('[data-active]');\r\n activeTab?.removeAttribute('data-active');\r\n targetElement.setAttribute('data-active', '');\r\n cb?.(targetElement.getAttribute('data-tab-value'));\r\n\r\n });\r\n\r\n tabs.addEventListener('keydown', (e) => {\r\n const targetElement = e.target.closest('li');\r\n\r\n if (!targetElement) return;\r\n\r\n if (e.key === 'Tab' && document.activeElement === tabs?.children?.[tabs?.children?.length - 1]) {\r\n e?.preventDefault();\r\n tabs?.children?.[0].focus();\r\n }\r\n\r\n if (e?.key === 'Enter' || e?.key === ' ') {\r\n e?.preventDefault();\r\n const activeTab = tabs?.querySelector('[data-active]');\r\n activeTab?.removeAttribute('data-active');\r\n targetElement.setAttribute('data-active', '');\r\n cb?.(targetElement.getAttribute('data-tab-value'));\r\n\r\n if (nextElement) {\r\n nextElement?.focus();\r\n }\r\n }\r\n\r\n });\r\n};\r\n","import { getParamFromUrl } from './utils';\r\n\r\nexport const dropdownHandler = (dropdown, cb = null) => {\r\n\r\n if (!dropdown) return;\r\n\r\n const dropdownList = dropdown.querySelector('ul');\r\n\r\n if (!dropdownList) return;\r\n\r\n const isRequired = dropdown.getAttribute('required') === 'true';\r\n const errorMessage = dropdown.querySelector('[data-error]');\r\n const dropdownArrow = dropdown.querySelector('[data-dropdown-arrow]');\r\n\r\n const select = dropdown.querySelector('[data-dropdown] select');\r\n const selectedOption = select.querySelector('option[selected]');\r\n const selectFieldContainer = dropdown.querySelector('.dropdown_selected');\r\n const selectField = selectFieldContainer.querySelector('[data-selected-value]');\r\n\r\n let isOpen = false;\r\n\r\n const onLoad = () => {\r\n const param = getParamFromUrl(dropdown.id);\r\n if (param) {\r\n select?.querySelector('option[selected]')?.removeAttribute('selected');\r\n const selectedElement = select?.querySelector(`option[value='${param}']`);\r\n selectedElement?.setAttribute('selected', '');\r\n select.value = param;\r\n selectField.textContent = selectedElement.textContent;\r\n cb?.(select.value);\r\n return;\r\n }\r\n select.value = selectedOption.value;\r\n selectField.textContent = selectedOption.textContent;\r\n cb?.(select.value);\r\n };\r\n\r\n const toggleDropdown = () => {\r\n dropdownList.classList.toggle('hidden');\r\n isOpen = !isOpen;\r\n dropdownArrow.setAttribute('aria-expanded', isOpen);\r\n dropdownArrow.setAttribute('aria-hidden', !isOpen);\r\n dropdownList.setAttribute('aria-hidden', !isOpen);\r\n\r\n if (isRequired && dropdownList.classList?.contains('hidden')) {\r\n select?.value ? errorMessage?.classList?.add('hidden') : errorMessage?.classList?.remove('hidden');\r\n select?.value ? selectFieldContainer?.classList?.remove('input_error') : selectFieldContainer?.classList?.add('input_error');\r\n }\r\n };\r\n\r\n const onSelectItem = (el) => {\r\n const selectedValue = el?.closest('li').getAttribute('data-value');\r\n select.value = selectedValue;\r\n selectField.textContent = el.textContent;\r\n select?.querySelector('option[selected]')?.removeAttribute('selected');\r\n select?.querySelector(`option[value='${selectedValue}']`)?.setAttribute('selected', '');\r\n };\r\n\r\n dropdown.addEventListener('mousedown', (e) => {\r\n const element = e.target;\r\n\r\n if (element.hasAttribute('data-value') || element.parentElement.hasAttribute('data-value')) onSelectItem(element);\r\n\r\n if (!dropdownList.classList?.contains('hidden')) {\r\n cb?.(select.value);\r\n selectFieldContainer.removeEventListener('blur', null);\r\n }\r\n\r\n if (dropdownList.classList?.contains('hidden')) {\r\n selectFieldContainer.addEventListener('blur', (e) => {\r\n e.preventDefault();\r\n\r\n if (!dropdownList.classList?.contains('hidden')) {\r\n toggleDropdown();\r\n cb?.(select.value);\r\n }\r\n });\r\n }\r\n\r\n toggleDropdown();\r\n });\r\n\r\n selectFieldContainer.addEventListener('keyup', (e) => {\r\n e.preventDefault();\r\n if (e.key === 'Enter') toggleDropdown();\r\n });\r\n\r\n dropdownList.addEventListener('keydown', (e) => {\r\n if (e.key === 'Tab' && document.activeElement === dropdownList?.children[dropdownList?.children?.length - 1]) {\r\n e.preventDefault();\r\n Array.from(dropdownList?.children)?.[0]?.focus();\r\n }\r\n\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n onSelectItem(e.target);\r\n toggleDropdown();\r\n }\r\n });\r\n\r\n onLoad();\r\n return (cb = null) => {\r\n cb?.();\r\n select.value = '';\r\n select?.querySelector('option[selected]')?.removeAttribute('selected');\r\n const defaultItem = select?.children?.[0];\r\n defaultItem.setAttribute('selected', '');\r\n selectField.textContent = defaultItem?.textContent ?? '';\r\n };\r\n};\r\n\r\nexport const addDataToDropdown = (dropdown, data, defaultValue = null) => {\r\n\r\n const select = dropdown.querySelector('select');\r\n const list = dropdown.querySelector('ul');\r\n\r\n let selectHtml = defaultValue ? `` : '';\r\n let listHtml = defaultValue ? `
  • ${defaultValue.text}

  • ` : '';\r\n\r\n data?.forEach((item, index) => {\r\n const formatedValues = JSON.stringify(item);\r\n selectHtml += ``;\r\n listHtml += `
  • ${Object.keys(item)}

  • `;\r\n\r\n });\r\n select.innerHTML = selectHtml;\r\n list.innerHTML = listHtml;\r\n};\r\n","import { detectVisibleItem, isMobileScreen } from './utils';\r\nimport { tabsHandler } from './tabs';\r\nimport { dropdownHandler } from './dropdown';\r\nimport { BREAKPOINTS } from './constants';\r\n\r\nconst onDetectVisibleCard = (card, dots) => {\r\n if (!dots.length) return;\r\n const dotsArr = Array.from(dots);\r\n const currentActiveCard = dotsArr?.[0].querySelector('[data-active]');\r\n const currentCard = card?.getAttribute('data-card-value');\r\n const cardIndex = Number(currentCard);\r\n\r\n currentActiveCard?.removeAttribute('data-active');\r\n dotsArr?.[0].children?.[cardIndex - 1]?.setAttribute('data-active', '');\r\n\r\n};\r\n\r\nconst carouselHandler = (carousel) => {\r\n let isDragStart = false;\r\n let prevPageX = 0;\r\n let prevScrollLeft = 0;\r\n\r\n const onDragStart = (e) => {\r\n isDragStart = true;\r\n prevPageX = e.pageX || e.touches[0].pageX;\r\n prevScrollLeft = carousel.scrollLeft;\r\n };\r\n\r\n const onDragging = (e) => {\r\n if (!isDragStart) return;\r\n const positionDiff = (e.pageX || e.touches[0].pageX) - prevPageX;\r\n carousel.scrollLeft = prevScrollLeft - positionDiff;\r\n };\r\n\r\n const onDragStop = () => isDragStart = false;\r\n\r\n carousel.addEventListener('mousedown', onDragStart);\r\n carousel.addEventListener('touchstart', onDragStart, { passive: true });\r\n\r\n carousel.addEventListener('mousemove', onDragging);\r\n carousel.addEventListener('touchmove', onDragging, { passive: true });\r\n\r\n carousel.addEventListener('mouseup', onDragStop);\r\n carousel.addEventListener('touchend', onDragStop, { passive: true });\r\n};\r\n\r\nconst updateDots = (length, dots) => {\r\n if (!dots[0]) return;\r\n let html = '';\r\n\r\n if (length === 1 || !length) return dots[0].innerHTML = '';\r\n\r\n for (let i = 0; i < length; i++) {\r\n html += i === 0 ? '
  • ' : '
  • ';\r\n }\r\n\r\n dots[0].innerHTML = html;\r\n\r\n};\r\n\r\nconst onTabDropdownSelect = (value, leadershipOptions, dots) => leadershipOptions.forEach((item) => {\r\n\r\n if (item.getAttribute('data-leadership-tab-value') === value) {\r\n item.classList.remove('hidden');\r\n if (isMobileScreen(BREAKPOINTS.XXL)) {\r\n updateDots(item?.children?.length, dots);\r\n }\r\n return;\r\n }\r\n item.classList.add('hidden');\r\n});\r\n\r\nconst onLeadreshipModuleLoad = () => {\r\n const leadershipModuleSection = document.querySelector('[data-leadership]');\r\n if (!leadershipModuleSection) return;\r\n const leadershipOptions = leadershipModuleSection.querySelectorAll('[data-leadership-tab-value]');\r\n const dots = leadershipModuleSection.querySelectorAll('[data-leadership-dots]');\r\n const dropdown = leadershipModuleSection.querySelector('[data-dropdown]');\r\n const tabs = leadershipModuleSection.querySelector('[data-tabs]');\r\n\r\n if (isMobileScreen(BREAKPOINTS.XXL)) {\r\n dropdownHandler(dropdown, (value) => {\r\n onTabDropdownSelect(value, leadershipOptions, dots);\r\n const leadershipCarousel = leadershipModuleSection.querySelector(`[data-leadership-tab-value=\"${value}\"]`);\r\n carouselHandler(leadershipCarousel);\r\n const articles = leadershipCarousel.querySelectorAll('article');\r\n detectVisibleItem(articles, (card) => onDetectVisibleCard(card, dots));\r\n });\r\n return;\r\n }\r\n const leadershipCarousel = leadershipModuleSection.querySelector('.leadership_carousel');\r\n\r\n tabsHandler(tabs, leadershipCarousel, (value) => onTabDropdownSelect(value, leadershipOptions));\r\n\r\n};\r\n\r\nexport default onLeadreshipModuleLoad;\r\n","const calculatePositionSliderPosition = (slider) => {\r\n const minValue = slider.getAttribute('min') ? Number(slider.getAttribute('min')) : 0;\r\n const maxValue = slider.getAttribute('max') ? Number(slider.getAttribute('max')) : 100;\r\n const currentValue = slider.value;\r\n\r\n if (currentValue < minValue || currentValue > maxValue) return;\r\n\r\n const percentage = ((currentValue - minValue) / (maxValue - minValue)) * 100;\r\n\r\n return percentage.toFixed(2);\r\n\r\n};\r\n\r\nconst setSliderPosition = (slider, cb) => {\r\n const currentValue = calculatePositionSliderPosition(slider);\r\n const valPercent = `${currentValue}%`;\r\n slider.style.setProperty('--valuePercent', valPercent);\r\n cb?.(slider.value);\r\n};\r\n\r\nexport const rangeHandler = (parent, cb = null) => {\r\n const slider = parent.querySelector('[data-range-slider]');\r\n\r\n if (!slider) return;\r\n setSliderPosition(slider, cb);\r\n slider.addEventListener('input', () => setSliderPosition(slider, cb));\r\n};\r\n\r\n","import { rangeHandler } from './range';\r\nimport { monthPickerHandler } from './month-picker';\r\nimport { convertStringToNumber } from './utils';\r\n\r\nconst AMOUNT_TYPE = 'AMOUNT_TYPE';\r\nconst TERM_TYPE = 'TERM_TYPE';\r\n\r\nconst onSetMonthlyRepayment = (\r\n value,\r\n calculator,\r\n type,\r\n interestRate,\r\n initiationFee,\r\n serviceFee,\r\n perThousandCharge\r\n) => {\r\n const inputs = calculator.querySelectorAll('[data-input-field]');\r\n const inputAmount = inputs?.[0].querySelector('input');\r\n const inputTerm = inputs?.[1].querySelector('input');\r\n\r\n const monthlyRepayment = calculator.querySelector('[data-monthly-repayment]');\r\n\r\n type === AMOUNT_TYPE\r\n ? (inputAmount.value = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2,\r\n }).format(value))\r\n : (inputTerm.value = value);\r\n\r\n const loanAmount = convertStringToNumber(inputAmount.value) / 100;\r\n const period = convertStringToNumber(inputTerm.value);\r\n const percentage = interestRate / 100;\r\n\r\n const price =\r\n (loanAmount * (percentage / 12 * Math.pow(1 + percentage / 12, period))) / (Math.pow(1 + percentage / 12, period) - 1) +\r\n serviceFee +\r\n initiationFee / period +\r\n (loanAmount / 1000) * perThousandCharge;\r\n\r\n const formatedPrice = new Intl.NumberFormat('en-US', {\r\n style: 'decimal',\r\n maximumFractionDigits: 2,\r\n minimumFractionDigits: 2,\r\n }).format(price);\r\n\r\n monthlyRepayment.textContent = `R ${formatedPrice}`;\r\n monthlyRepayment.setAttribute(\r\n 'aria-label',\r\n `Estimated Monthly Repayment ${formatedPrice}`\r\n );\r\n};\r\n\r\nconst onLoanCalculatorLoad = () => {\r\n const calculator = document.querySelector('[data-loan-calculator]');\r\n\r\n if (!calculator) return;\r\n\r\n const interestRate = parseFloat(\r\n calculator.getAttribute('data-interest-rate')\r\n );\r\n const initiationFee = parseFloat(\r\n calculator.getAttribute('data-initiation-fee')\r\n );\r\n const serviceFee = parseFloat(calculator.getAttribute('data-service-fee'));\r\n const perThousandCharge = parseFloat(\r\n calculator.getAttribute('data-per-thousand-charge')\r\n );\r\n\r\n const nextElement = calculator.querySelector('[data-monthly-repayment]');\r\n\r\n rangeHandler(calculator, (value) =>\r\n onSetMonthlyRepayment(\r\n value,\r\n calculator,\r\n AMOUNT_TYPE,\r\n interestRate,\r\n initiationFee,\r\n serviceFee,\r\n perThousandCharge\r\n )\r\n );\r\n monthPickerHandler(calculator, nextElement, (value) =>\r\n onSetMonthlyRepayment(\r\n value,\r\n calculator,\r\n TERM_TYPE,\r\n interestRate,\r\n initiationFee,\r\n serviceFee,\r\n perThousandCharge\r\n )\r\n );\r\n};\r\n\r\nexport default onLoanCalculatorLoad;\r\n","export function debounce(func, wait) {\r\n let timeoutId;\r\n\r\n return function(...args) {\r\n clearTimeout(timeoutId);\r\n\r\n timeoutId = setTimeout(() => {\r\n func.apply(this, args);\r\n }, wait);\r\n };\r\n}\r\n","/* eslint-disable no-useless-escape */\r\n\r\nexport const EMAIL_REGEX = /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\r\n\r\nexport const PHONE_NUMBER_REGEX = /^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/im;\r\n\r\nconst luhnAlgo = (value) => {\r\n\r\n if (!value) return false;\r\n\r\n const arr = [...value];\r\n let sum = 0;\r\n const n = arr?.length;\r\n\r\n for (let i = 0; i < n; i++) {\r\n arr[i] = parseInt(arr[i]);\r\n }\r\n\r\n for (let i = 1; i < n; i = i + 2) {\r\n const v = arr[n - 1 - i] * 2;\r\n if (v > 9) {\r\n arr[n - 1 - i] = v - 9;\r\n } else {\r\n arr[n - 1 - i] = v;\r\n }\r\n }\r\n\r\n arr?.forEach((item) => sum += item);\r\n\r\n if (sum % 10 === 0) return true;\r\n return false;\r\n};\r\n\r\nexport const validator = (value, type, luhn = false, isPhoneNumber = false) => {\r\n\r\n if (isPhoneNumber) return value.match(PHONE_NUMBER_REGEX);\r\n\r\n if (luhn) return luhnAlgo(value);\r\n\r\n if (type === 'text') return value?.length > 0;\r\n\r\n if (type === 'email') return value.match(EMAIL_REGEX);\r\n\r\n if (type === 'number') return !isNaN(value) && value?.length <= 20 && value?.length >= 1;\r\n\r\n return true;\r\n};\r\n\r\n","import { debounce } from './debounce';\r\nimport { validator } from './regex';\r\nimport { getParamFromUrl } from './utils';\r\n\r\nexport const inputHandler = (inputWrapper, cb) => {\r\n\r\n if (!inputWrapper) return;\r\n\r\n const input = inputWrapper.querySelector('input');\r\n\r\n if (!input) return;\r\n\r\n if (input.hasAttribute('disabled')) return;\r\n const errorMsg = inputWrapper.querySelector('[data-error]');\r\n const dataSearchButton = inputWrapper.querySelector('[data-search-button]');\r\n const luhnAlgo = input.hasAttribute('data-luhn-algo');\r\n const isPhoneNumber = input.hasAttribute('data-phone');\r\n\r\n const isRequired = input.getAttribute('required') === 'true';\r\n\r\n const cleanUp = ({ cleanUpCbFn = null }) => {\r\n input.classList.remove('input_error');\r\n input.value = '';\r\n cb?.(input.value);\r\n cleanUpCbFn?.(input.value);\r\n\r\n if (dataSearchButton) searchIconHandler(input.value, dataSearchButton);\r\n };\r\n\r\n const onInput = (value) => {\r\n\r\n if (isRequired && errorMsg) {\r\n const isValid = validator(value, input.type, luhnAlgo, isPhoneNumber);\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (isPhoneNumber) {\r\n const isValid = isRequired || value.length > 0 ? validator(value, input.type, false, isPhoneNumber) : true;\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (!isRequired && input.type === 'number') {\r\n const isValid = value.length > 0 ? validator(value, input.type, luhnAlgo, isPhoneNumber) : true;\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (!isRequired && input.type === 'email' && input.value.length > 0 && errorMsg) {\r\n const isValid = validator(value, input.type);\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (dataSearchButton) searchIconHandler(input.value, dataSearchButton);\r\n cb?.(value);\r\n };\r\n\r\n const onLoad = (value) => {\r\n if (isRequired && errorMsg && value) {\r\n const isValid = validator(value, input.type, luhnAlgo, isPhoneNumber);\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (isPhoneNumber && value) {\r\n const isValid = isRequired || value.length > 0 ? validator(value, input.type, false, isPhoneNumber) : true;\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (!isRequired && input.type === 'email' && input.value.length > 0) {\r\n const isValid = validator(value, input.type);\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (!isRequired && input.type === 'number') {\r\n const isValid = value.length > 0 ? validator(value, input.type, luhnAlgo, isPhoneNumber) : true;\r\n isValid ? input.classList.remove('input_error') : input.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n if (dataSearchButton) searchIconHandler(input.value, dataSearchButton);\r\n cb?.(value);\r\n };\r\n\r\n input.addEventListener('input', debounce((e) => {\r\n\r\n if (e.isComposing) return;\r\n input.classList.remove('input_error');\r\n if (errorMsg && isRequired) errorMsg.classList.add('hidden');\r\n if (!isRequired && input.type === 'email') errorMsg.classList.add('hidden');\r\n if (dataSearchButton) searchIconHandler(input.value, dataSearchButton);\r\n }), 500);\r\n\r\n input.addEventListener('keyup', debounce((e) => {\r\n if (e.isComposing) return;\r\n onInput(e.target.value);\r\n }, 500));\r\n\r\n if (dataSearchButton) {\r\n dataSearchButton.addEventListener('click', cleanUp);\r\n\r\n dataSearchButton.addEventListener('keydown', (e) => {\r\n if (e.key === 'ENTER' || e.key === '') {\r\n cleanUp();\r\n }\r\n });\r\n }\r\n if (getParamFromUrl(input.id)) {\r\n input.value = getParamFromUrl(input?.id).length > 0 ? getParamFromUrl(input?.id) : input.value;\r\n }\r\n onLoad(input.value);\r\n return cleanUp;\r\n};\r\n\r\nexport const searchIconHandler = (value, searchButton) => {\r\n\r\n if (!searchButton) return;\r\n\r\n const searchButtonClasses = searchButton.classList;\r\n\r\n if (value?.length) {\r\n searchButtonClasses.remove('icon-dsk-search');\r\n searchButtonClasses.add('icon-close');\r\n return;\r\n }\r\n searchButtonClasses.add('icon-dsk-search');\r\n searchButtonClasses.remove('icon-close');\r\n};\r\n","import { isMobileScreen, isXxlScreen } from './utils';\r\n\r\nconst setColumns = (featuresList, featuresListItems) => {\r\n const numberOfItems = featuresListItems?.length;\r\n\r\n if (isMobileScreen() || !numberOfItems) return;\r\n\r\n // If it's not an XXL screen, we limit the columns to 2\r\n // otherwise we calculate based on the number of items\r\n const columnsCount = isXxlScreen()\r\n ? Math.min(numberOfItems, 3)\r\n : Math.min(numberOfItems, 2);\r\n\r\n featuresList.style.gridTemplateColumns = `repeat(${columnsCount}, 1fr)`;\r\n};\r\n\r\nconst hasMoreItems = (slicedList, endPosition) =>\r\n slicedList.length >= endPosition;\r\n\r\nconst loadItems = (list) =>\r\n list?.forEach((item) => item?.classList?.remove('hidden'));\r\n\r\nconst featureLoader = (startPostion, endPosition, featuresList) => {\r\n const slicedList = Array.from(featuresList)?.splice(\r\n startPostion,\r\n endPosition\r\n );\r\n const hasMore = hasMoreItems(slicedList, endPosition);\r\n\r\n loadItems(slicedList);\r\n\r\n return hasMore;\r\n};\r\n\r\nconst setItemsHeight = (items) => {\r\n let maxHeight = 0;\r\n Array.from(items?.children)?.forEach((el) => {\r\n const currentElementHeight = el?.getBoundingClientRect();\r\n maxHeight =\r\n maxHeight > currentElementHeight.height\r\n ? maxHeight\r\n : currentElementHeight.height;\r\n });\r\n\r\n Array.from(items?.children)?.forEach((el) => {\r\n el.style.height = `${maxHeight}px`;\r\n });\r\n};\r\n\r\nconst setPElementsDisplay = () => {\r\n const pElementsWithDirectLinkChild = document.querySelectorAll(\r\n '.features-list_btn-container > p'\r\n );\r\n pElementsWithDirectLinkChild.forEach((p) => {\r\n if (p.querySelector('a')) {\r\n p.style.display = 'initial';\r\n }\r\n });\r\n};\r\n\r\nconst onFeaturesListLoad = () => {\r\n const featuresListContainer = document.querySelectorAll(\r\n '[data-features-list]'\r\n );\r\n\r\n if (!featuresListContainer?.length < 0) return;\r\n\r\n Array.from(featuresListContainer)?.forEach((item) => {\r\n const featuresList = item.querySelector('[data-features-list-items]');\r\n const featuresListItems = featuresList.querySelectorAll(\r\n '.features-list_item'\r\n );\r\n const loadMoreBtn = item.querySelector('[data-features-load-btn]');\r\n\r\n const pagination = Number(\r\n item.getAttribute(\r\n isMobileScreen() ? 'data-mobile-pagination' : 'data-desktop-pagination'\r\n )\r\n );\r\n\r\n window.addEventListener('resize', () => setColumns(featuresList, featuresListItems));\r\n\r\n featureLoader(0, pagination, featuresListItems);\r\n setColumns(featuresList, featuresListItems);\r\n setItemsHeight(featuresList);\r\n setPElementsDisplay();\r\n\r\n if (featuresListItems.length <= pagination) return;\r\n let counter = pagination;\r\n loadMoreBtn.classList.remove('hidden');\r\n\r\n loadMoreBtn.addEventListener('click', () => {\r\n const hasMoreItems = featureLoader(\r\n counter,\r\n pagination,\r\n featuresListItems\r\n );\r\n counter += pagination;\r\n\r\n if (!hasMoreItems) loadMoreBtn.classList.add('hidden');\r\n });\r\n });\r\n};\r\n\r\nexport default onFeaturesListLoad;\r\n","const disableFields = (value, fields) => {\r\n if (!fields) return;\r\n\r\n Array.from(fields)?.forEach((el) => {\r\n\r\n if (value === 'yes') {\r\n el.removeAttribute('disabled');\r\n el.setAttribute('required', el.initialValue);\r\n el?.parentElement?.classList.remove('hidden');\r\n } else {\r\n el?.parentElement?.classList.add('hidden');\r\n el.setAttribute('disabled', 'true');\r\n el.setAttribute('required', 'false');\r\n }\r\n });\r\n};\r\n\r\nconst queryRelatedFields = (input) => {\r\n const relatedFieldsIds = input.getAttribute('disableForIds');\r\n const query = relatedFieldsIds?.split(',')?.map((item) => `#${item}`).join(',');\r\n if (query) return document.querySelectorAll(query);\r\n};\r\n\r\nconst storeInitialValues = (fields) => {\r\n Array.from(fields)?.forEach((el) => {\r\n el.initialValue = el.getAttribute('required');\r\n });\r\n};\r\n\r\nexport const switchHandler = (sw, cb = null) => {\r\n\r\n if (!sw) return;\r\n\r\n const switchInput = sw.querySelector('input');\r\n const switchButton = sw.querySelector('.switch');\r\n\r\n if (!switchInput || !switchButton) return;\r\n\r\n let initialValue = Boolean(switchInput.hasAttribute('checked'));\r\n const relatedFields = queryRelatedFields(switchInput);\r\n storeInitialValues(relatedFields);\r\n switchInput.value = initialValue ? 'yes' : 'no';\r\n disableFields(switchInput.value, relatedFields);\r\n\r\n const onSwitch = () => {\r\n initialValue = !initialValue;\r\n initialValue ? switchInput.setAttribute('checked', '') : switchInput.removeAttribute('checked');\r\n switchButton.setAttribute('aria-label', `${initialValue ? 'YES' : 'NO'} selected`);\r\n switchInput.value = initialValue ? 'yes' : 'no';\r\n disableFields(switchInput.value, relatedFields);\r\n\r\n cb?.(initialValue);\r\n };\r\n\r\n switchInput.addEventListener('click', onSwitch);\r\n\r\n switchButton.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter' || e.key === '') {\r\n onSwitch();\r\n }\r\n });\r\n};\r\n","import { switchHandler } from './switch';\r\nimport { dropdownHandler } from './dropdown';\r\nimport { inputHandler } from './input';\r\nimport { textareaHandler } from './textarea';\r\nimport { isJsonString } from './utils';\r\n\r\nconst fieldValidationCondition = (item) => {\r\n\r\n if (item.hasAttribute('disabled')) return true;\r\n\r\n if (item.tagName === 'SELECT') {\r\n const parent = item.parentElement;\r\n const isRequired = parent.getAttribute('required') === 'true';\r\n const hasError = parent.querySelector('.dropdown_selected')?.classList.contains('input_error');\r\n\r\n if (isRequired) return item?.value?.length > 0 && !hasError;\r\n\r\n return true;\r\n }\r\n\r\n const isRequired = item.getAttribute('required') === 'true';\r\n const hasError = item.classList.contains('input_error');\r\n\r\n if (!isRequired && item.type === 'email') return !hasError;\r\n\r\n if (isRequired) return item.value?.length > 0 && !hasError;\r\n\r\n return true;\r\n};\r\n\r\nconst onFormSubmit = async(e) => {\r\n\r\n e.preventDefault();\r\n const form = e.target;\r\n\r\n if (!form) return;\r\n\r\n const formFields = Array.from(form.querySelectorAll('input, select, textarea'));\r\n const labels = Array.from(form.querySelectorAll('label'));\r\n\r\n const fields = [];\r\n\r\n let receiverEmailAddress = form.getAttribute('data-receiver-email-address');\r\n\r\n let isValid = true;\r\n\r\n for (let i = 0; i < formFields.length; i++) {\r\n\r\n if (formFields[i].name === '__RequestVerificationToken') continue;\r\n\r\n const isFieldValid = fieldValidationCondition(formFields[i]);\r\n if (!isFieldValid) {\r\n isValid = false;\r\n break;\r\n }\r\n\r\n const labelElement = labels.find((lb) => lb.getAttribute('for') === formFields[i]?.id);\r\n const label = formFields[i]?.type === 'checkbox' ? labelElement?.firstElementChild?.textContent : labelElement?.textContent;\r\n const sanitizedLabel = label?.replace('(optional)', '')?.trim();\r\n\r\n let value = formFields[i]?.value;\r\n\r\n if (formFields[i].tagName === 'SELECT' && isJsonString(formFields[i]?.value)) {\r\n const parseValue = JSON.parse(formFields[i]?.value);\r\n value = parseValue?.value;\r\n receiverEmailAddress = parseValue?.receiverEmailAddress;\r\n }\r\n\r\n const fieldItem = {\r\n label: sanitizedLabel ?? '',\r\n value,\r\n required: formFields[i].getAttribute('required') === 'true',\r\n FieldType: formFields[i].tagName === 'SELECT' ? 'select' : formFields[i]?.type\r\n };\r\n\r\n fields.push(fieldItem);\r\n }\r\n\r\n if (isValid) {\r\n const parent = e.target.parentElement;\r\n\r\n const tokenElement = document.querySelector('input[name=\"__RequestVerificationToken\"]');\r\n const token = tokenElement.value;\r\n\r\n const apiUrl = form.getAttribute('data-api-url');\r\n const senderEmailAddress = form.getAttribute('data-sender-email-address');\r\n const subject = form.getAttribute('data-form-subject');\r\n const formKey = form.getAttribute('data-form-key');\r\n const recaptchaPublicKey = form.getAttribute('data-recaptcha-public-key');\r\n\r\n window.grecaptcha.ready(async function () {\r\n try {\r\n const recaptchaToken = await window.grecaptcha.execute(recaptchaPublicKey, { action: 'submit' });\r\n\r\n const requestBody = {\r\n formKey,\r\n senderEmailAddress,\r\n receiverEmailAddress,\r\n subject,\r\n fields,\r\n recaptchaToken\r\n };\r\n\r\n const res = await fetch(apiUrl, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'RequestVerificationToken': token\r\n },\r\n body: JSON.stringify(requestBody)\r\n });\r\n\r\n const html = await res.text();\r\n if (html) parent.innerHTML = html;\r\n\r\n } catch (error) {\r\n console.log(error);\r\n const errorHtml = await error.text();\r\n\r\n if (errorHtml) parent.innerHTML = errorHtml;\r\n }\r\n });\r\n }\r\n};\r\n\r\nconst checkIfFormIsValid = (submitButton, fields) => {\r\n\r\n if (!fields) return;\r\n\r\n let isValid = true;\r\n\r\n for (let i = 0; i < fields.length; i++) {\r\n\r\n if (fields[i].name === '__RequestVerificationToken') continue;\r\n\r\n const isFieldValid = fieldValidationCondition(fields[i]);\r\n if (!isFieldValid) {\r\n isValid = false;\r\n break;\r\n }\r\n }\r\n\r\n if (isValid) {\r\n return submitButton.removeAttribute('disabled');\r\n }\r\n return submitButton.setAttribute('disabled', '');\r\n};\r\n\r\nconst onFormLoad = () => {\r\n const forms = document.querySelectorAll('[data-form]');\r\n\r\n if (!forms) return;\r\n\r\n Array.from(forms)?.forEach((form) => {\r\n const inputs = form.querySelectorAll('[data-input-field]');\r\n const switches = form.querySelectorAll('[data-switch]');\r\n const textareas = form.querySelectorAll('[data-textarea]');\r\n const dropdowns = form.querySelectorAll('[data-dropdown]');\r\n const submitButton = form.querySelector('button[type=\"submit\"]');\r\n const fields = Array.from(form.querySelectorAll('input, select, textarea'));\r\n\r\n inputs?.forEach((input) => inputHandler(input, () => checkIfFormIsValid(submitButton, fields)));\r\n dropdowns?.forEach((dropdown) => dropdownHandler(dropdown, () => checkIfFormIsValid(submitButton, fields)));\r\n switches?.forEach((sw) => switchHandler(sw, () => checkIfFormIsValid(submitButton, fields)));\r\n textareas?.forEach((txtArea) => textareaHandler(txtArea, () => checkIfFormIsValid(submitButton, fields)));\r\n\r\n form.addEventListener('submit', onFormSubmit);\r\n });\r\n\r\n};\r\n\r\nexport default onFormLoad;\r\n\r\n","import { debounce } from './debounce';\r\nimport { validator } from './regex';\r\n\r\nexport const textareaHandler = (textAreaWrapper, cb) => {\r\n\r\n if (!textAreaWrapper) return;\r\n\r\n const textArea = textAreaWrapper.querySelector('textarea');\r\n\r\n if (!textArea) return;\r\n\r\n const errorMsg = textAreaWrapper.querySelector('[data-error]');\r\n\r\n const isRequired = textArea.getAttribute('required') === 'true';\r\n\r\n textArea.addEventListener('input', (e) => {\r\n if (e.isComposing || e.keyCode === 229) return;\r\n textArea.classList.remove('input_error');\r\n if (errorMsg && isRequired) errorMsg.classList.add('hidden');\r\n });\r\n\r\n textArea.addEventListener('keyup', debounce((e) => {\r\n if (e.isComposing || e.keyCode === 229) return;\r\n\r\n if (isRequired && errorMsg) {\r\n const isValid = validator(e?.target.value, 'text');\r\n isValid ? textArea.classList.remove('input_error') : textArea.classList.add('input_error');\r\n isValid ? errorMsg.classList.add('hidden') : errorMsg.classList.remove('hidden');\r\n }\r\n\r\n cb?.(e?.target.value);\r\n }, 500));\r\n};\r\n","import { dropdownHandler } from './dropdown';\r\nimport { inputHandler } from './input';\r\nimport { clearQuery } from './utils';\r\n\r\nexport const filterHandler = (parentSelector, onFilter) => {\r\n const filter = parentSelector.querySelector('[data-filter-fields]');\r\n const clearButton = parentSelector.querySelector('[data-clear-button]');\r\n\r\n if (!filter || !clearButton) return;\r\n const dropdowns = filter.querySelectorAll('[data-dropdown]');\r\n const search = filter.querySelector('[data-input-search]');\r\n const searchWrapper = search.closest('[data-input-field]');\r\n\r\n const dropdownCleanupFn = [];\r\n const body = {};\r\n\r\n const clearInputValue = inputHandler(searchWrapper, (value) => {\r\n const trimmedValue = value.trimEnd();\r\n\r\n body[search?.id] = trimmedValue;\r\n if (Object.keys(body).length === dropdowns?.length + 1) {\r\n onFilter(body);\r\n }\r\n });\r\n\r\n Array.from(dropdowns)?.forEach((item) => {\r\n const dropdownCleanup = dropdownHandler(item, (value) => {\r\n body[item?.id] = value;\r\n if (Object.keys(body).length === 3) onFilter(body);\r\n });\r\n dropdownCleanupFn.push(dropdownCleanup);\r\n }\r\n );\r\n\r\n const resetValues = () => {\r\n Object.keys(body).forEach((k) => body[k] = '');\r\n\r\n dropdownCleanupFn?.forEach((fn) => fn());\r\n clearInputValue({ cleanUpCbFn: null });\r\n clearQuery();\r\n onFilter(body);\r\n };\r\n\r\n clearButton?.addEventListener('click', () => {\r\n resetValues();\r\n }\r\n );\r\n\r\n clearButton?.addEventListener('keydown', (e) => {\r\n if (e.key === 'Enter' || e.key === '') {\r\n resetValues();\r\n }\r\n });\r\n\r\n};\r\n","import { filterHandler } from './filter';\r\nimport { closeModal, modalHandler } from './modal';\r\nimport { dropdownHandler, addDataToDropdown } from './dropdown';\r\nimport { searchableDropdownHandler } from './searchableDropdown';\r\nimport { inputHandler } from './input';\r\nimport { isJsonString, queryBuilder, isMobileScreen } from './utils';\r\nimport { BREAKPOINTS } from './constants';\r\n\r\nconst fetchItems = async(page, body, parent) => {\r\n const shoppingNetwork = document.getElementById('shopping-network');\r\n const pageKey = shoppingNetwork.getAttribute('data-page-key');\r\n const pageSize = shoppingNetwork.getAttribute('data-page-size');\r\n const filterUrl = shoppingNetwork.getAttribute('data-filter-url');\r\n const params = new URLSearchParams({\r\n pageKey: pageKey,\r\n numberOfItemsPerPage: pageSize,\r\n searchTerm: body['shopping-search-input'],\r\n page: page,\r\n category: body.category,\r\n type: body.type,\r\n });\r\n try {\r\n const response = await fetch(filterUrl + '?' + params.toString(), {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n const htmlContent = await response.text();\r\n parent.innerHTML = htmlContent;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n};\r\n\r\nconst onFilter = (body, shoppingCards, page) => {\r\n queryBuilder(body);\r\n fetchItems(page, body, shoppingCards);\r\n};\r\n\r\nconst updateModalFields = (data, fields) => {\r\n if (!isJsonString(data)) return;\r\n const parsedData = JSON.parse(data);\r\n const key = Object.keys(parsedData)[0];\r\n const values = parsedData[key];\r\n\r\n Array.from(fields)?.forEach((item) => {\r\n if (!item?.id) return;\r\n\r\n const linkProps = values?.CallToActionLink;\r\n const linkSecondaryProps = values?.CallToActionLinkSecondary;\r\n\r\n switch (item.id) {\r\n case 'shopping-network-name':\r\n item.textContent = values?.Name;\r\n break;\r\n case 'shopping-network-address':\r\n item.textContent = values?.Address;\r\n break;\r\n case 'shopping-network-phone':\r\n item.textContent = values?.Phone;\r\n break;\r\n case 'shopping-network-hours':\r\n item.textContent = values?.OperatingHours;\r\n break;\r\n case 'shopping-network-cta':\r\n if (!linkProps?.Name) return;\r\n item.textContent = linkProps?.Name;\r\n item.setAttribute('target', linkProps?.Target);\r\n item.setAttribute('href', linkProps?.Url);\r\n item.setAttribute('type', linkProps?.Type);\r\n item.classList.remove('hidden');\r\n break;\r\n case 'shopping-network-secondary-cta':\r\n if (!linkSecondaryProps?.Name) return;\r\n item.textContent = linkSecondaryProps?.Name;\r\n item.setAttribute('target', linkSecondaryProps?.Target);\r\n item.setAttribute('href', linkSecondaryProps?.Url);\r\n item.setAttribute('type', linkSecondaryProps?.Type);\r\n item.classList.remove('hidden');\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n};\r\n\r\nconst resetModalFields = (fields) => {\r\n Array.from(fields)?.forEach((item) => {\r\n if (!item?.id) return;\r\n\r\n switch (item.id) {\r\n case 'shopping-network-name':\r\n item.textContent = '';\r\n break;\r\n case 'shopping-network-address':\r\n item.textContent = '';\r\n break;\r\n case 'shopping-network-phone':\r\n item.textContent = '';\r\n break;\r\n case 'shopping-network-hours':\r\n item.textContent = '';\r\n break;\r\n case 'shopping-network-cta':\r\n item.textContent = '';\r\n item.setAttribute('target', '');\r\n item.setAttribute('href', '');\r\n item.setAttribute('type', '');\r\n item.classList.add('hidden');\r\n break;\r\n case 'shopping-network-secondary-cta':\r\n item.textContent = '';\r\n item.setAttribute('target', '');\r\n item.setAttribute('href', '');\r\n item.setAttribute('type', '');\r\n item.classList.add('hidden');\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n};\r\n\r\nconst updateSearchList = (data, list) => {\r\n let listHtml = '';\r\n data?.forEach(\r\n (item) =>\r\n (listHtml += `
  • `),\r\n );\r\n list.innerHTML = listHtml;\r\n};\r\n\r\nconst filterDataByProvince = (stores, province) => {\r\n const provinceId = Object.values(province)?.[0]?.Id;\r\n if (!provinceId) return stores;\r\n return stores?.filter((store) => Object.values(store)?.[0]?.ProvinceId === provinceId);\r\n};\r\n\r\nconst formatDropdownData = (data) => JSON.parse(data)?.map((item) => ({\r\n [item.Name]: item,\r\n}));\r\n\r\nconst removeListeners = (modal) => {\r\n const oldListeners = isMobileScreen(BREAKPOINTS.LG) ? modal.querySelectorAll('#shopping-network-map-mb-dropdown, [data-searchable-dropdown]')\r\n : modal.querySelectorAll('#shopping-network-map-dropdown, .shopping-network_modal_locations_list, [data-input-field] ');\r\n\r\n Array.from(oldListeners).forEach((item) => {\r\n const newElement = item.cloneNode(true);\r\n item.parentNode.replaceChild(newElement, item);\r\n });\r\n};\r\n\r\nconst handleMobileModal = (modal, formatedProvincesData, formatedStoresData, fields) => {\r\n removeListeners(modal);\r\n const provinceDropdown = modal.querySelector('#shopping-network-map-mb-dropdown');\r\n addDataToDropdown(provinceDropdown, formatedProvincesData, { value: '', text: 'All' });\r\n const searchableDropdown = modal.querySelector('[data-searchable-dropdown]');\r\n\r\n dropdownHandler(provinceDropdown, (data) => {\r\n\r\n if (!isJsonString(data)) {\r\n addDataToDropdown(searchableDropdown, formatedStoresData);\r\n return;\r\n }\r\n const parsedData = JSON.parse(data);\r\n const filteredData = filterDataByProvince(formatedStoresData, parsedData);\r\n\r\n if (!filteredData) return;\r\n addDataToDropdown(searchableDropdown, filteredData);\r\n });\r\n\r\n searchableDropdownHandler(searchableDropdown, (value) => updateModalFields(value, fields));\r\n\r\n};\r\n\r\nconst generateModalData = (stores, provinces, modal) => {\r\n if (!stores || !isJsonString(stores) || !modal || !isJsonString(provinces)) return;\r\n\r\n const fields = modal.querySelectorAll(\r\n '#shopping-network-name,#shopping-network-address, #shopping-network-phone,#shopping-network-hours,#shopping-network-cta,#shopping-network-secondary-cta'\r\n );\r\n\r\n const formatedProvincesData = formatDropdownData(provinces);\r\n const formatedStoresData = formatDropdownData(stores);\r\n\r\n if (isMobileScreen(BREAKPOINTS.LG)) return handleMobileModal(modal, formatedProvincesData, formatedStoresData, fields);\r\n\r\n removeListeners(modal);\r\n const provinceDropdown = modal.querySelector('#shopping-network-map-dropdown');\r\n const list = modal.querySelector('.shopping-network_modal_locations_list');\r\n const input = modal.querySelector('[data-input-field]');\r\n\r\n addDataToDropdown(provinceDropdown, formatedProvincesData, { value: '', text: 'All' });\r\n\r\n let filteredData = [];\r\n dropdownHandler(provinceDropdown, (data) => {\r\n if (!isJsonString(data)) {\r\n filteredData = filterDataByProvince(formatedStoresData, {});\r\n return updateSearchList(filteredData, list);\r\n }\r\n const parsedData = JSON.parse(data);\r\n filteredData = filterDataByProvince(formatedStoresData, parsedData);\r\n updateSearchList(filteredData, list);\r\n });\r\n\r\n let listData = [];\r\n inputHandler(input, (value) => {\r\n if (value) listData = filteredData?.filter((store) => Object.values(store)?.[0]?.Name?.toUpperCase()?.includes(value?.toUpperCase()));\r\n else listData = filteredData;\r\n updateSearchList(listData, list);\r\n });\r\n\r\n updateModalFields(list?.children?.[0]?.getAttribute('data-value'), fields);\r\n\r\n list.addEventListener('click', (e) => {\r\n\r\n const liTag = e.target.closest('li');\r\n\r\n if (liTag?.hasAttribute('data-value')) {\r\n updateModalFields(liTag?.getAttribute('data-value'), fields);\r\n }\r\n });\r\n};\r\n\r\nconst showModal = (el, modal, body, shoppingCards) => {\r\n const tagName = el.tagName;\r\n\r\n if (tagName === 'BUTTON' && el?.hasAttribute('data-load-more')) {\r\n const nextPage = el?.getAttribute('data-next-page');\r\n el.classList.add('button--progress');\r\n onFilter(body, shoppingCards, nextPage);\r\n return;\r\n }\r\n\r\n if (!el.hasAttribute('data-load-more') && (tagName === 'BUTTON' || tagName === 'IMG')) {\r\n const stores = tagName === 'IMG' ? el.closest('button')?.getAttribute('data-card') : el.getAttribute('data-card');\r\n const provinces = tagName === 'IMG' ? el.closest('button')?.getAttribute('data-provinces') : el.getAttribute('data-provinces');\r\n generateModalData(stores, provinces, modal);\r\n if (!stores || stores === '[]') return;\r\n modal.showModal();\r\n modalHandler(modal);\r\n window.scrollTo(0, 0);\r\n return;\r\n }\r\n};\r\n\r\nconst onShoppingNetworkLoad = () => {\r\n const shoopingNetwork = document.getElementById('shopping-network');\r\n\r\n if (!shoopingNetwork) return;\r\n const shoopingCards = shoopingNetwork.querySelector('[data-shopping-cards]');\r\n const shoopingFilter = shoopingNetwork.querySelector('[data-filter]');\r\n const modal = document.querySelector('[data-modal]');\r\n\r\n let body = {};\r\n filterHandler(shoopingFilter, (data) => {\r\n body = data;\r\n onFilter(body, shoopingCards, 1);\r\n });\r\n\r\n shoopingCards?.addEventListener('click', (e) =>\r\n showModal(e.target, modal, body, shoopingCards),\r\n );\r\n\r\n const onModalClose = () => {\r\n const fields = modal.querySelectorAll(\r\n '#shopping-network-name,#shopping-network-address, #shopping-network-phone,#shopping-network-hours,#shopping-network-cta,#shopping-network-secondary-cta'\r\n );\r\n resetModalFields(fields);\r\n };\r\n\r\n modal?.addEventListener('click', (e) => {\r\n closeModal(e, modal, onModalClose);\r\n });\r\n};\r\n\r\nexport default onShoppingNetworkLoad;\r\n","import { getParamFromUrl } from './utils';\r\nimport { debounce } from './debounce';\r\n\r\nexport const searchableDropdownHandler = (dropdown, cb = null) => {\r\n\r\n if (!dropdown) return;\r\n\r\n const dropdownList = dropdown.querySelector('ul');\r\n\r\n if (!dropdownList) return;\r\n\r\n const isRequired = dropdown.getAttribute('required') === 'true';\r\n const errorMessage = dropdown.querySelector('[data-error]');\r\n const dropdownArrow = dropdown.querySelector('[data-dropdown-arrow]');\r\n\r\n const select = dropdown.querySelector('[data-searchable-dropdown] select');\r\n const selectedOption = select.querySelector('option[selected]');\r\n const selectFieldContainer = dropdown.querySelector('.dropdown_selected_input');\r\n const selectField = selectFieldContainer.querySelector('input');\r\n\r\n let isOpen = false;\r\n\r\n const onLoad = () => {\r\n const param = getParamFromUrl(dropdown.id);\r\n\r\n if (param) {\r\n select?.querySelector('option[selected]')?.removeAttribute('selected');\r\n const selectedElement = select?.querySelector(`option[value='${param}']`);\r\n selectedElement?.setAttribute('selected', '');\r\n select.value = param;\r\n selectField.value = selectedElement.value;\r\n onInput(selectField.value);\r\n cb?.(select.value);\r\n return;\r\n }\r\n\r\n select.value = selectedOption.value;\r\n selectField.value = selectedOption.textContent;\r\n onInput(selectField.value);\r\n cb?.(select.value);\r\n };\r\n\r\n const toggleDropdown = () => {\r\n\r\n dropdownList.classList.toggle('hidden');\r\n isOpen = !isOpen;\r\n dropdownArrow.setAttribute('aria-expanded', isOpen);\r\n dropdownArrow.setAttribute('aria-hidden', !isOpen);\r\n dropdownList.setAttribute('aria-hidden', !isOpen);\r\n\r\n dropdownList.classList?.contains('hidden') ? selectField.setAttribute('readonly', '') : selectField.removeAttribute('readonly');\r\n\r\n if (isRequired && dropdownList.classList?.contains('hidden')) {\r\n select?.value ? errorMessage?.classList?.add('hidden') : errorMessage?.classList?.remove('hidden');\r\n select?.value ? selectFieldContainer?.classList?.remove('input_error') : selectFieldContainer?.classList?.add('input_error');\r\n }\r\n };\r\n\r\n const onSelectItem = (el) => {\r\n\r\n const selectedValue = el?.closest('li').getAttribute('data-value');\r\n select.value = selectedValue;\r\n selectField.value = el.textContent;\r\n select?.querySelector('option[selected]')?.removeAttribute('selected');\r\n select?.querySelector(`option[value='${selectedValue}']`)?.setAttribute('selected', '');\r\n };\r\n\r\n const onInput = (searchTerm) => {\r\n let listHtml = '';\r\n\r\n if (searchTerm) {\r\n Array.from(select.children)?.forEach((item) => {\r\n if (item.getAttribute('value')?.toUpperCase()?.includes(searchTerm?.toUpperCase())) {\r\n listHtml += `
  • ${item.textContent}

  • `;\r\n }\r\n });\r\n } else {\r\n Array.from(select.children)?.forEach((item) => {\r\n listHtml += `
  • ${item.textContent}

  • `;\r\n });\r\n }\r\n\r\n dropdownList.innerHTML = listHtml;\r\n };\r\n\r\n selectField.addEventListener('keyup', debounce((e) => {\r\n if (e.isComposing || e.keyCode === 229) return;\r\n onInput(e.target.value);\r\n }, 500));\r\n\r\n dropdown.addEventListener('mousedown', (e) => {\r\n const element = e.target;\r\n\r\n if (element.hasAttribute('data-value') || element.parentElement.hasAttribute('data-value')) onSelectItem(element);\r\n\r\n if (!dropdownList.classList?.contains('hidden')) {\r\n cb?.(select.value);\r\n selectFieldContainer.removeEventListener('blur', null);\r\n }\r\n\r\n if (dropdownList.classList?.contains('hidden')) {\r\n selectFieldContainer.addEventListener('blur', (e) => {\r\n e.preventDefault();\r\n\r\n if (!dropdownList.classList?.contains('hidden')) {\r\n toggleDropdown();\r\n cb?.(select.value);\r\n }\r\n });\r\n }\r\n\r\n toggleDropdown();\r\n });\r\n\r\n selectFieldContainer.addEventListener('keyup', (e) => {\r\n e.preventDefault();\r\n if (e.key === 'Enter') toggleDropdown();\r\n });\r\n\r\n dropdownList.addEventListener('keydown', (e) => {\r\n if (e.key === 'Tab' && document.activeElement === dropdownList?.children[dropdownList?.children?.length - 1]) {\r\n e.preventDefault();\r\n Array.from(dropdownList?.children)?.[0]?.focus();\r\n }\r\n\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n onSelectItem(e.target);\r\n toggleDropdown();\r\n }\r\n });\r\n\r\n onLoad();\r\n return (cb = null) => {\r\n cb?.();\r\n select.value = '';\r\n select?.querySelector('option[selected]')?.removeAttribute('selected');\r\n const defaultItem = select?.children?.[0];\r\n defaultItem.setAttribute('selected', '');\r\n selectField.value = defaultItem?.textContent ?? '';\r\n };\r\n};\r\n\r\n","export const closeModal = (e, modal, cb = null) => {\r\n const dialogDimensions = modal.getBoundingClientRect();\r\n\r\n if (e.clientX < dialogDimensions.left ||\r\n e.clientX > dialogDimensions.right ||\r\n e.clientY < dialogDimensions.top ||\r\n e.clientY > dialogDimensions.bottom\r\n ) {\r\n modal.close();\r\n cb?.();\r\n const body = document.body;\r\n const scrollY = body.style.top;\r\n body.style.position = '';\r\n body.style.top = '';\r\n window.scrollTo(0, parseInt(scrollY || '0') * -1);\r\n }\r\n};\r\n\r\nexport const modalHandler = (modal) => {\r\n const closeButton = modal.querySelector('#modal-close-button');\r\n showDialog();\r\n if (closeButton) closeButton.addEventListener('click', () => modal.close());\r\n};\r\n\r\nconst showDialog = () => {\r\n const scrollY = document.documentElement.style.getPropertyValue('--scroll-y');\r\n const body = document.body;\r\n body.style.position = 'relative';\r\n body.style.top = `-${scrollY}`;\r\n};\r\n","import Splide from '@splidejs/splide';\r\n\r\nconst INTERVAL = 3000;\r\nconst MAX_PAGINATION_DOTS = 5;\r\nconst OPTIONS = {\r\n type: 'loop',\r\n gap: '24px',\r\n perPage: 3,\r\n pagination: true,\r\n autoplay: true,\r\n interval: INTERVAL,\r\n breakpoints: {\r\n 768: {\r\n perPage: 1\r\n },\r\n 1024: {\r\n perPage: 2\r\n }\r\n }\r\n};\r\n\r\nconst addDots = (dotsToShow, dataItems, indices) => {\r\n indices.forEach(index => {\r\n if (dataItems[index] === undefined) return;\r\n dotsToShow.push(dataItems[index]);\r\n });\r\n};\r\n\r\nconst showDots = dotsToShow => {\r\n dotsToShow\r\n .filter(dot => dot !== undefined)\r\n .forEach(dot => dot.button.classList.add('show'));\r\n};\r\n\r\nconst shrinkDot = dot => {\r\n dot.button.classList.add('shrink');\r\n};\r\n\r\nconst requiresPagination = data => {\r\n const totalDots = data.items.length;\r\n return totalDots > MAX_PAGINATION_DOTS;\r\n};\r\n\r\nconst setUpPagination = data => {\r\n if (!requiresPagination(data)) return;\r\n\r\n if (!data?.list?.classList?.contains('limit-pagination')) {\r\n data.list.classList.add('limit-pagination');\r\n }\r\n};\r\n\r\nconst handlePaginationLimit = data => {\r\n if (!requiresPagination(data)) return;\r\n const totalDots = data.items.length;\r\n\r\n const activeDot = data.items.find(item =>\r\n item?.button?.classList?.contains('is-active')\r\n );\r\n\r\n if (!activeDot) return;\r\n\r\n // reset\r\n data.items.forEach(dot => dot?.button?.classList?.remove('show', 'shrink'));\r\n\r\n const dotsToShow = [];\r\n\r\n const isPage1 = activeDot.page === 0;\r\n const isPage2 = activeDot.page === 1;\r\n const isLastPage = activeDot.page === totalDots - 1;\r\n const is2ndLastPage = activeDot.page === totalDots - 2;\r\n\r\n // add dots based on current page position\r\n if (isPage1) {\r\n addDots(dotsToShow, data.items, [\r\n activeDot.page,\r\n activeDot.page + 1,\r\n activeDot.page + 2,\r\n activeDot.page + 3,\r\n activeDot.page + 4\r\n ]);\r\n shrinkDot(data.items[activeDot.page + 4]);\r\n } else if (isPage2) {\r\n addDots(dotsToShow, data.items, [\r\n activeDot.page - 1,\r\n activeDot.page,\r\n activeDot.page + 1,\r\n activeDot.page + 2,\r\n activeDot.page + 3\r\n ]);\r\n shrinkDot(data.items[activeDot.page + 3]);\r\n } else if (isLastPage) {\r\n addDots(dotsToShow, data.items, [\r\n activeDot.page - 4,\r\n activeDot.page - 3,\r\n activeDot.page - 2,\r\n activeDot.page - 1,\r\n activeDot.page\r\n ]);\r\n shrinkDot(data.items[activeDot.page - 4]);\r\n } else if (is2ndLastPage) {\r\n addDots(dotsToShow, data.items, [\r\n activeDot.page - 3,\r\n activeDot.page - 2,\r\n activeDot.page - 1,\r\n activeDot.page,\r\n activeDot.page + 1\r\n ]);\r\n shrinkDot(data.items[activeDot.page - 3]);\r\n } else {\r\n addDots(dotsToShow, data.items, [\r\n activeDot.page - 2,\r\n activeDot.page - 1,\r\n activeDot.page,\r\n activeDot.page + 1,\r\n activeDot.page + 2\r\n ]);\r\n shrinkDot(data.items[activeDot.page - 2]);\r\n shrinkDot(data.items[activeDot.page + 2]);\r\n }\r\n\r\n showDots(dotsToShow);\r\n};\r\n\r\nconst onPromoSectionLoad = () => {\r\n const promoSections = document.querySelectorAll('.promo-section__carousel');\r\n if (!promoSections) return;\r\n\r\n Array.from(promoSections).forEach(section => {\r\n const splide = new Splide(section, OPTIONS);\r\n splide.on('pagination:mounted', data => {\r\n setUpPagination(data);\r\n handlePaginationLimit(data);\r\n });\r\n splide.on('moved', data => {\r\n const paginationData = splide.Components.Pagination;\r\n handlePaginationLimit(paginationData);\r\n });\r\n splide.mount();\r\n });\r\n};\r\n\r\nexport default onPromoSectionLoad;\r\n","import { filterHandler } from './filter';\r\nimport { queryBuilder } from './utils';\r\n\r\nconst fetchItems = async(page, body, parent) => {\r\n const media = document.getElementById('media');\r\n const pageKey = media.getAttribute('data-page-key');\r\n const pageSize = media.getAttribute('data-page-size');\r\n const filterUrl = media.getAttribute('data-filter-url');\r\n\r\n const params = new URLSearchParams({\r\n pageKey: pageKey,\r\n numberOfItemsPerPage: pageSize,\r\n searchTerm: body['media-search-input'],\r\n page: page,\r\n category: body.category,\r\n type: body.type,\r\n });\r\n\r\n try {\r\n const res = await fetch(filterUrl + '?' + params.toString(), {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n const htmlContent = await res.text();\r\n parent.innerHTML = htmlContent;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n\r\n};\r\n\r\nconst onFilter = (body, mediaCards, page) => {\r\n queryBuilder(body);\r\n fetchItems(page, body, mediaCards);\r\n};\r\n\r\nconst onLoadMore = (el, body, mediaCards) => {\r\n\r\n if (el.tagName === 'BUTTON' && el.hasAttribute('data-load-more')) {\r\n const nextPage = el.getAttribute('data-next-page');\r\n el.classList.add('button--progress');\r\n onFilter(body, mediaCards, nextPage);\r\n return;\r\n }\r\n};\r\n\r\nconst onMediaLoad = () => {\r\n const media = document.getElementById('media');\r\n\r\n if (!media) return;\r\n const mediaCards = media.querySelector('[data-media-cards]');\r\n const mediaFilter = media.querySelector('[data-filter]');\r\n\r\n let body = {};\r\n filterHandler(mediaFilter, (data) => {\r\n body = data;\r\n onFilter(body, mediaCards, 1);\r\n });\r\n\r\n mediaCards?.addEventListener('click', (e) => onLoadMore(e.target, body, mediaCards));\r\n};\r\n\r\nexport default onMediaLoad;\r\n","import { tabsHandler } from './tabs';\r\nimport { dropdownHandler } from './dropdown';\r\nimport { inputHandler } from './input';\r\n\r\nconst onFilter = async(body, list, searchResultHtml, page) => {\r\n const searchResults = document.getElementById('search-results');\r\n\r\n const apiUrl = searchResults.getAttribute('data-api-url');\r\n const numberOfItemsPerPage = searchResults.getAttribute('data-number-of-items-per-page');\r\n\r\n const params = new URLSearchParams({\r\n query: body.search,\r\n numberOfItemsPerPage: numberOfItemsPerPage,\r\n page: page,\r\n category: body.tabMenu,\r\n });\r\n\r\n const fetchUrl = apiUrl + '?' + params.toString();\r\n\r\n try {\r\n const res = await fetch(fetchUrl, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n });\r\n\r\n const htmlResponse = await res.text();\r\n\r\n if (htmlResponse) {\r\n const searchResultsMessage = htmlResponse.substring(0, htmlResponse.indexOf('