{"mappings":"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","sources":["","js/main.ts","js/global.ts","js/header.ts","js/hero.ts","js/category-block.ts","node_modules/@splidejs/splide/dist/js/splide.esm.js","js/recipe-pages.ts","js/save-recipes.ts","js/rate-recipe.ts","js/product-page.ts"],"sourcesContent":["(function () {\n/**\r\n * Import libraries and ts-files.\r\n */ const $4c24304ff1ca3959$export$a2b865600a4d763c = ()=>{\n /**\r\n * Show-more-function\r\n */ const heroShowMore = ()=>{\n const heroReadMoreToggle = document.querySelector(\".hero__show-more-toggle\");\n const heroTextContainer = document.querySelector(\".hero__text\");\n if (heroReadMoreToggle && heroTextContainer) heroReadMoreToggle.addEventListener(\"click\", ()=>{\n heroReadMoreToggle.classList.toggle(\"active\");\n heroTextContainer.classList.toggle(\"active\");\n });\n };\n heroShowMore();\n const textShowMore = ()=>{\n const heroReadMoreToggles = document.querySelectorAll(\".text-image-block__show-more-toggle\");\n heroReadMoreToggles.forEach((heroReadMoreToggle)=>{\n const heroTextContainer = heroReadMoreToggle.closest(\".text-image-block\").querySelector(\".text-image__text\");\n if (heroReadMoreToggle && heroTextContainer) heroReadMoreToggle.addEventListener(\"click\", ()=>{\n heroReadMoreToggle.classList.toggle(\"active\");\n heroTextContainer.classList.toggle(\"active\");\n });\n });\n };\n textShowMore();\n const contactShowMore = ()=>{\n const toggleButtons = document.querySelectorAll(\".contacts-puff-block__show-more-toggle\");\n const textContainers = document.querySelectorAll(\".contacts-puff-block__contact-puff--text\");\n toggleButtons.forEach((button, index)=>{\n button.addEventListener(\"click\", ()=>{\n button.classList.toggle(\"active\");\n textContainers[index].classList.toggle(\"contacts-puff-block__contact-puff--text-active\");\n // Loop through all buttons to apply styling\n //toggleButtons.forEach((btn, idx) => {\n // if (idx !== index) {\n // (btn as HTMLElement).style.margin = \"0\"; // Apply styling to all buttons except the clicked one\n // }\n // if (idx == index) {\n // (btn as HTMLElement).style.margin = \"auto\"; // Apply styling to all buttons except the clicked one\n // }\n //});\n });\n });\n };\n contactShowMore();\n const tableShowMore = ()=>{\n const heroReadMoreToggle = document.querySelector(\".text-box__header--show-more-toggle\");\n const heroTextContainer = document.querySelector(\".text-box__table\");\n if (heroReadMoreToggle && heroTextContainer) heroReadMoreToggle.addEventListener(\"click\", ()=>{\n heroReadMoreToggle.classList.toggle(\"text-box__header--active\");\n heroTextContainer.classList.toggle(\"text-box__table--active\");\n console.log(\"test\");\n });\n };\n tableShowMore();\n const initializeImageVideoControls = ()=>{\n const imageVideosArray = document.querySelectorAll(\".text-image-block\");\n imageVideosArray.forEach((imageVideoControls)=>{\n const playPauseButton = imageVideoControls.querySelector(\".text-image-block__play-pause-button\");\n if (playPauseButton) playPauseButton.addEventListener(\"click\", ()=>{\n playPauseButton.classList.toggle(\"active\");\n const videos = imageVideoControls.querySelectorAll(\".text-image-block__video\");\n videos.forEach((video)=>{\n const videoElement = video;\n if (videoElement.paused) videoElement.play();\n else videoElement.pause();\n });\n });\n });\n };\n initializeImageVideoControls();\n};\n\n\nconst $11d0680e1da7e92b$export$311ccb8ac074141f = ()=>{\n const header = document.querySelector(\".site-header\");\n /**\r\n * Lock Scroll to current position\r\n */ let scrollLocked = false;\n let scrollPosition = null;\n const lockScroll = ()=>{\n if (!scrollLocked) {\n scrollPosition = window.scrollY;\n document.body.style.overflow = \"hidden\";\n document.body.style.position = \"fixed\";\n document.body.style.top = `-${scrollPosition}px`;\n scrollLocked = true;\n }\n };\n const unlockScroll = ()=>{\n if (scrollLocked) {\n document.body.style.overflow = \"auto\";\n document.body.style.position = \"static\";\n document.body.style.top = \"auto\";\n if (scrollPosition !== null) {\n window.scrollTo(0, scrollPosition);\n scrollPosition = null;\n }\n scrollLocked = false;\n }\n };\n const toggleScrollLock = ()=>{\n if (scrollLocked) unlockScroll();\n else lockScroll();\n };\n /**\r\n * Mobile Navigation\r\n */ const navToggle = document.querySelector(\"#nav-toggle\");\n navToggle.addEventListener(\"click\", (e)=>{\n document.body.classList.toggle(\"scroll--disabled\");\n header.classList.toggle(\"mobile-nav--open\");\n navToggle.classList.toggle(\"nav-toggle--active\");\n });\n /**\r\n * Window Scroll Header\r\n */ window.onscroll = ()=>{\n if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {\n header.classList.add(\"scrolled\");\n document.body.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n document.body.classList.remove(\"scrolled\");\n }\n };\n /**\r\n * Toggle Saved Recipes Container\r\n */ const savedRecipesListToggle = document.querySelectorAll(\".recipes-toggle\");\n const savedRecipesList = document.querySelector(\".saved-recipes-section\");\n const overlay = document.getElementById(\"body-overlay-id\");\n const overlayHeader = document.querySelector(\".header-overlay\");\n const toggleOverlay = ()=>{\n if (overlay.style.display == \"block\") {\n overlay.style.display = \"none\";\n overlayHeader.style.display = \"none\";\n } else {\n overlay.style.display = \"block\";\n overlayHeader.style.display = \"block\";\n }\n };\n // Event listener for the \"ESC\" key press\n document.addEventListener(\"keydown\", (event)=>{\n if (event.key == \"Escape\" || event.key === \"Esc\") {\n savedRecipesList.classList.remove(\"saved-recipes-section--open\");\n overlay.style.display = \"none\";\n overlayHeader.style.display = \"none\";\n // toggleScrollLock();\n }\n });\n savedRecipesListToggle.forEach((button)=>{\n button.addEventListener(\"click\", ()=>{\n savedRecipesList.classList.toggle(\"saved-recipes-section--open\");\n toggleOverlay();\n // toggleScrollLock();\n });\n });\n const adjustGridSpan = ()=>{\n const sublinkContainers = document.querySelectorAll(\".sublinks\");\n sublinkContainers.forEach((container)=>{\n const sublinksLinks = container.querySelectorAll(\".sublinks__link\");\n if (sublinksLinks.length > 5) {\n const dropdownItem = container.closest(\".dropdown__item\");\n if (dropdownItem) dropdownItem.classList.add(\"grid-span-2\");\n }\n });\n };\n const checkDropdownsAndAddClass = ()=>{\n const dropdowns = document.querySelectorAll(\".dropdown\");\n dropdowns.forEach((dropdown)=>{\n const dropdownItems = dropdown.querySelectorAll(\".dropdown__item\");\n dropdownItems.forEach((dropdownItem)=>{\n const sublinkLinks = dropdownItem.querySelectorAll(\".sublinks__link\");\n if (sublinkLinks.length === 0) {\n const dropdownList = dropdown.querySelector(\".dropdown__list\");\n if (dropdownList) dropdownList.classList.add(\"no-grid\");\n }\n });\n });\n };\n const checkSublinkItems = ()=>{\n // Select all elements with the class \".sublink\"\n const sublinks = document.querySelectorAll(\".sublinks\");\n // Iterate through each \".sublink\" element\n sublinks.forEach((sublink)=>{\n // Select all elements with the class \".sublinkks__item\" inside the current \".sublink\"\n const sublinkItems = sublink.querySelectorAll(\".sublinks__item\");\n // Check if there are more than x \".sublinkks__item\" elements\n if (sublinkItems.length > 9) sublink.classList.add(\"more-than-x\");\n });\n };\n const addClassToLastItem = ()=>{\n const dropdowns = document.querySelectorAll(\".dropdown\");\n dropdowns.forEach((dropdown)=>{\n const dropdownItems = Array.from(dropdown.querySelectorAll(\".dropdown__item\"));\n if (dropdownItems.length >= 2) {\n const lastItem = dropdownItems[dropdownItems.length - 1];\n const nextToLastItem = dropdownItems[dropdownItems.length - 2];\n if (!lastItem.classList.contains(\"grid-span-2\")) lastItem.classList.add(\"last-item\");\n if (!nextToLastItem.classList.contains(\"grid-span-2\")) nextToLastItem.classList.add(\"last-item\");\n }\n });\n };\n // Call the function when the document is ready\n document.addEventListener(\"DOMContentLoaded\", ()=>{\n adjustGridSpan();\n checkDropdownsAndAddClass();\n checkSublinkItems();\n addClassToLastItem();\n });\n};\n\n\nconst $9d98a66a6730cb48$export$9c309e2e513159f1 = ()=>{\n const playPauseButton = document.querySelector(\".play-pause-button\");\n const video = document.querySelector(\".picture-section__video\");\n if (playPauseButton) playPauseButton.addEventListener(\"click\", ()=>{\n playPauseButton.classList.toggle(\"active\");\n if (video.paused) video.play();\n else video.pause();\n });\n};\n\n\nfunction $02e68f8ca5696f61$var$_defineProperties(target, props) {\n for(var i = 0; i < props.length; i++){\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction $02e68f8ca5696f61$var$_createClass(Constructor, protoProps, staticProps) {\n if (protoProps) $02e68f8ca5696f61$var$_defineProperties(Constructor.prototype, protoProps);\n if (staticProps) $02e68f8ca5696f61$var$_defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n/*!\n * Splide.js\n * Version : 4.1.4\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */ var $02e68f8ca5696f61$var$MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar $02e68f8ca5696f61$var$CREATED = 1;\nvar $02e68f8ca5696f61$var$MOUNTED = 2;\nvar $02e68f8ca5696f61$var$IDLE = 3;\nvar $02e68f8ca5696f61$var$MOVING = 4;\nvar $02e68f8ca5696f61$var$SCROLLING = 5;\nvar $02e68f8ca5696f61$var$DRAGGING = 6;\nvar $02e68f8ca5696f61$var$DESTROYED = 7;\nvar $02e68f8ca5696f61$var$STATES = {\n CREATED: $02e68f8ca5696f61$var$CREATED,\n MOUNTED: $02e68f8ca5696f61$var$MOUNTED,\n IDLE: $02e68f8ca5696f61$var$IDLE,\n MOVING: $02e68f8ca5696f61$var$MOVING,\n SCROLLING: $02e68f8ca5696f61$var$SCROLLING,\n DRAGGING: $02e68f8ca5696f61$var$DRAGGING,\n DESTROYED: $02e68f8ca5696f61$var$DESTROYED\n};\nfunction $02e68f8ca5696f61$var$empty(array) {\n array.length = 0;\n}\nfunction $02e68f8ca5696f61$var$slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\nfunction $02e68f8ca5696f61$var$apply(func) {\n return func.bind.apply(func, [\n null\n ].concat($02e68f8ca5696f61$var$slice(arguments, 1)));\n}\nvar $02e68f8ca5696f61$var$nextTick = setTimeout;\nvar $02e68f8ca5696f61$var$noop = function noop() {};\nfunction $02e68f8ca5696f61$var$raf(func) {\n return requestAnimationFrame(func);\n}\nfunction $02e68f8ca5696f61$var$typeOf(type, subject) {\n return typeof subject === type;\n}\nfunction $02e68f8ca5696f61$var$isObject(subject) {\n return !$02e68f8ca5696f61$var$isNull(subject) && $02e68f8ca5696f61$var$typeOf(\"object\", subject);\n}\nvar $02e68f8ca5696f61$var$isArray = Array.isArray;\nvar $02e68f8ca5696f61$var$isFunction = $02e68f8ca5696f61$var$apply($02e68f8ca5696f61$var$typeOf, \"function\");\nvar $02e68f8ca5696f61$var$isString = $02e68f8ca5696f61$var$apply($02e68f8ca5696f61$var$typeOf, \"string\");\nvar $02e68f8ca5696f61$var$isUndefined = $02e68f8ca5696f61$var$apply($02e68f8ca5696f61$var$typeOf, \"undefined\");\nfunction $02e68f8ca5696f61$var$isNull(subject) {\n return subject === null;\n}\nfunction $02e68f8ca5696f61$var$isHTMLElement(subject) {\n try {\n return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement;\n } catch (e) {\n return false;\n }\n}\nfunction $02e68f8ca5696f61$var$toArray(value) {\n return $02e68f8ca5696f61$var$isArray(value) ? value : [\n value\n ];\n}\nfunction $02e68f8ca5696f61$var$forEach(values, iteratee) {\n $02e68f8ca5696f61$var$toArray(values).forEach(iteratee);\n}\nfunction $02e68f8ca5696f61$var$includes(array, value) {\n return array.indexOf(value) > -1;\n}\nfunction $02e68f8ca5696f61$var$push(array, items) {\n array.push.apply(array, $02e68f8ca5696f61$var$toArray(items));\n return array;\n}\nfunction $02e68f8ca5696f61$var$toggleClass(elm, classes, add) {\n if (elm) $02e68f8ca5696f61$var$forEach(classes, function(name) {\n if (name) elm.classList[add ? \"add\" : \"remove\"](name);\n });\n}\nfunction $02e68f8ca5696f61$var$addClass(elm, classes) {\n $02e68f8ca5696f61$var$toggleClass(elm, $02e68f8ca5696f61$var$isString(classes) ? classes.split(\" \") : classes, true);\n}\nfunction $02e68f8ca5696f61$var$append(parent, children) {\n $02e68f8ca5696f61$var$forEach(children, parent.appendChild.bind(parent));\n}\nfunction $02e68f8ca5696f61$var$before(nodes, ref) {\n $02e68f8ca5696f61$var$forEach(nodes, function(node) {\n var parent = (ref || node).parentNode;\n if (parent) parent.insertBefore(node, ref);\n });\n}\nfunction $02e68f8ca5696f61$var$matches(elm, selector) {\n return $02e68f8ca5696f61$var$isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\nfunction $02e68f8ca5696f61$var$children(parent, selector) {\n var children2 = parent ? $02e68f8ca5696f61$var$slice(parent.children) : [];\n return selector ? children2.filter(function(child) {\n return $02e68f8ca5696f61$var$matches(child, selector);\n }) : children2;\n}\nfunction $02e68f8ca5696f61$var$child(parent, selector) {\n return selector ? $02e68f8ca5696f61$var$children(parent, selector)[0] : parent.firstElementChild;\n}\nvar $02e68f8ca5696f61$var$ownKeys = Object.keys;\nfunction $02e68f8ca5696f61$var$forOwn(object, iteratee, right) {\n if (object) (right ? $02e68f8ca5696f61$var$ownKeys(object).reverse() : $02e68f8ca5696f61$var$ownKeys(object)).forEach(function(key) {\n key !== \"__proto__\" && iteratee(object[key], key);\n });\n return object;\n}\nfunction $02e68f8ca5696f61$var$assign(object) {\n $02e68f8ca5696f61$var$slice(arguments, 1).forEach(function(source) {\n $02e68f8ca5696f61$var$forOwn(source, function(value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\nfunction $02e68f8ca5696f61$var$merge(object) {\n $02e68f8ca5696f61$var$slice(arguments, 1).forEach(function(source) {\n $02e68f8ca5696f61$var$forOwn(source, function(value, key) {\n if ($02e68f8ca5696f61$var$isArray(value)) object[key] = value.slice();\n else if ($02e68f8ca5696f61$var$isObject(value)) object[key] = $02e68f8ca5696f61$var$merge({}, $02e68f8ca5696f61$var$isObject(object[key]) ? object[key] : {}, value);\n else object[key] = value;\n });\n });\n return object;\n}\nfunction $02e68f8ca5696f61$var$omit(object, keys) {\n $02e68f8ca5696f61$var$forEach(keys || $02e68f8ca5696f61$var$ownKeys(object), function(key) {\n delete object[key];\n });\n}\nfunction $02e68f8ca5696f61$var$removeAttribute(elms, attrs) {\n $02e68f8ca5696f61$var$forEach(elms, function(elm) {\n $02e68f8ca5696f61$var$forEach(attrs, function(attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\nfunction $02e68f8ca5696f61$var$setAttribute(elms, attrs, value) {\n if ($02e68f8ca5696f61$var$isObject(attrs)) $02e68f8ca5696f61$var$forOwn(attrs, function(value2, name) {\n $02e68f8ca5696f61$var$setAttribute(elms, name, value2);\n });\n else $02e68f8ca5696f61$var$forEach(elms, function(elm) {\n $02e68f8ca5696f61$var$isNull(value) || value === \"\" ? $02e68f8ca5696f61$var$removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n}\nfunction $02e68f8ca5696f61$var$create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n if (attrs) $02e68f8ca5696f61$var$isString(attrs) ? $02e68f8ca5696f61$var$addClass(elm, attrs) : $02e68f8ca5696f61$var$setAttribute(elm, attrs);\n parent && $02e68f8ca5696f61$var$append(parent, elm);\n return elm;\n}\nfunction $02e68f8ca5696f61$var$style(elm, prop, value) {\n if ($02e68f8ca5696f61$var$isUndefined(value)) return getComputedStyle(elm)[prop];\n if (!$02e68f8ca5696f61$var$isNull(value)) elm.style[prop] = \"\" + value;\n}\nfunction $02e68f8ca5696f61$var$display(elm, display2) {\n $02e68f8ca5696f61$var$style(elm, \"display\", display2);\n}\nfunction $02e68f8ca5696f61$var$focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\nfunction $02e68f8ca5696f61$var$getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\nfunction $02e68f8ca5696f61$var$hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\nfunction $02e68f8ca5696f61$var$rect(target) {\n return target.getBoundingClientRect();\n}\nfunction $02e68f8ca5696f61$var$remove(nodes) {\n $02e68f8ca5696f61$var$forEach(nodes, function(node) {\n if (node && node.parentNode) node.parentNode.removeChild(node);\n });\n}\nfunction $02e68f8ca5696f61$var$parseHtml(html) {\n return $02e68f8ca5696f61$var$child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\nfunction $02e68f8ca5696f61$var$prevent(e, stopPropagation) {\n e.preventDefault();\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\nfunction $02e68f8ca5696f61$var$query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\nfunction $02e68f8ca5696f61$var$queryAll(parent, selector) {\n return selector ? $02e68f8ca5696f61$var$slice(parent.querySelectorAll(selector)) : [];\n}\nfunction $02e68f8ca5696f61$var$removeClass(elm, classes) {\n $02e68f8ca5696f61$var$toggleClass(elm, classes, false);\n}\nfunction $02e68f8ca5696f61$var$timeOf(e) {\n return e.timeStamp;\n}\nfunction $02e68f8ca5696f61$var$unit(value) {\n return $02e68f8ca5696f61$var$isString(value) ? value : value ? value + \"px\" : \"\";\n}\nvar $02e68f8ca5696f61$var$PROJECT_CODE = \"splide\";\nvar $02e68f8ca5696f61$var$DATA_ATTRIBUTE = \"data-\" + $02e68f8ca5696f61$var$PROJECT_CODE;\nfunction $02e68f8ca5696f61$var$assert(condition, message) {\n if (!condition) throw new Error(\"[\" + $02e68f8ca5696f61$var$PROJECT_CODE + \"] \" + (message || \"\"));\n}\nvar $02e68f8ca5696f61$var$min = Math.min, $02e68f8ca5696f61$var$max = Math.max, $02e68f8ca5696f61$var$floor = Math.floor, $02e68f8ca5696f61$var$ceil = Math.ceil, $02e68f8ca5696f61$var$abs = Math.abs;\nfunction $02e68f8ca5696f61$var$approximatelyEqual(x, y, epsilon) {\n return $02e68f8ca5696f61$var$abs(x - y) < epsilon;\n}\nfunction $02e68f8ca5696f61$var$between(number, x, y, exclusive) {\n var minimum = $02e68f8ca5696f61$var$min(x, y);\n var maximum = $02e68f8ca5696f61$var$max(x, y);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\nfunction $02e68f8ca5696f61$var$clamp(number, x, y) {\n var minimum = $02e68f8ca5696f61$var$min(x, y);\n var maximum = $02e68f8ca5696f61$var$max(x, y);\n return $02e68f8ca5696f61$var$min($02e68f8ca5696f61$var$max(minimum, number), maximum);\n}\nfunction $02e68f8ca5696f61$var$sign(x) {\n return +(x > 0) - +(x < 0);\n}\nfunction $02e68f8ca5696f61$var$camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\nfunction $02e68f8ca5696f61$var$format(string, replacements) {\n $02e68f8ca5696f61$var$forEach(replacements, function(replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\nfunction $02e68f8ca5696f61$var$pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\nvar $02e68f8ca5696f61$var$ids = {};\nfunction $02e68f8ca5696f61$var$uniqueId(prefix) {\n return \"\" + prefix + $02e68f8ca5696f61$var$pad($02e68f8ca5696f61$var$ids[prefix] = ($02e68f8ca5696f61$var$ids[prefix] || 0) + 1);\n}\nfunction $02e68f8ca5696f61$export$c473e36ef1bda729() {\n var listeners = [];\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([\n target,\n event,\n namespace,\n callback,\n 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 return true;\n });\n });\n }\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n if (typeof CustomEvent === \"function\") 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 target.dispatchEvent(e);\n return e;\n }\n function forEachEvent(targets, events, iteratee) {\n $02e68f8ca5696f61$var$forEach(targets, function(target) {\n target && $02e68f8ca5696f61$var$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 function destroy() {\n listeners.forEach(function(data) {\n data[4]();\n });\n $02e68f8ca5696f61$var$empty(listeners);\n }\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\nvar $02e68f8ca5696f61$export$d300dc1a2634364b = \"mounted\";\nvar $02e68f8ca5696f61$export$d8dac49b4532735a = \"ready\";\nvar $02e68f8ca5696f61$export$2aa493d7c3275167 = \"move\";\nvar $02e68f8ca5696f61$export$fe5802204b967f0d = \"moved\";\nvar $02e68f8ca5696f61$export$5adb665701eda1ce = \"click\";\nvar $02e68f8ca5696f61$export$92e3eae133acac4c = \"active\";\nvar $02e68f8ca5696f61$export$6bcbb81035c12cea = \"inactive\";\nvar $02e68f8ca5696f61$export$6a5b3445e4066a53 = \"visible\";\nvar $02e68f8ca5696f61$export$8c5c7a21d54563e9 = \"hidden\";\nvar $02e68f8ca5696f61$export$7f4701ac5e05e39f = \"refresh\";\nvar $02e68f8ca5696f61$export$db40ab7c0855fa5c = \"updated\";\nvar $02e68f8ca5696f61$export$7e019dae5103a285 = \"resize\";\nvar $02e68f8ca5696f61$export$d637eba1e9e28482 = \"resized\";\nvar $02e68f8ca5696f61$export$e84bf5065c9087ac = \"drag\";\nvar $02e68f8ca5696f61$export$8e9f636d2c722196 = \"dragging\";\nvar $02e68f8ca5696f61$export$90ea576bd3fdeb60 = \"dragged\";\nvar $02e68f8ca5696f61$export$49801896908b5e33 = \"scroll\";\nvar $02e68f8ca5696f61$export$ff8164bff3202b9 = \"scrolled\";\nvar $02e68f8ca5696f61$export$6cbac5b662a31e1b = \"overflow\";\nvar $02e68f8ca5696f61$export$88c4cf7419e470cd = \"destroy\";\nvar $02e68f8ca5696f61$export$8647f6b043e04e9d = \"arrows:mounted\";\nvar $02e68f8ca5696f61$export$d467f9343b961f75 = \"arrows:updated\";\nvar $02e68f8ca5696f61$export$bf89a4e4349c9778 = \"pagination:mounted\";\nvar $02e68f8ca5696f61$export$eb2019082ed6de0b = \"pagination:updated\";\nvar $02e68f8ca5696f61$export$84015c33508f94ec = \"navigation:mounted\";\nvar $02e68f8ca5696f61$export$23663268a31b79e2 = \"autoplay:play\";\nvar $02e68f8ca5696f61$export$185723258309b608 = \"autoplay:playing\";\nvar $02e68f8ca5696f61$export$16a1e4f3d0368265 = \"autoplay:pause\";\nvar $02e68f8ca5696f61$export$9f64346e17f0ec8e = \"lazyload:loaded\";\nvar $02e68f8ca5696f61$export$6d5af59619d10e6a = \"sk\";\nvar $02e68f8ca5696f61$export$f0af896383d5adff = \"sh\";\nvar $02e68f8ca5696f61$export$28dea85f216954dc = \"ei\";\nfunction $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = $02e68f8ca5696f61$export$c473e36ef1bda729();\n function on(events, callback) {\n binder.bind(bus, $02e68f8ca5696f61$var$toArray(events).join(\" \"), function(e) {\n callback.apply(callback, $02e68f8ca5696f61$var$isArray(e.detail) ? e.detail : []);\n });\n }\n function emit(event) {\n binder.dispatch(bus, event, $02e68f8ca5696f61$var$slice(arguments, 1));\n }\n if (Splide2) Splide2.event.on($02e68f8ca5696f61$export$88c4cf7419e470cd, binder.destroy);\n return $02e68f8ca5696f61$var$assign(binder, {\n bus: bus,\n on: on,\n off: $02e68f8ca5696f61$var$apply(binder.unbind, bus),\n emit: emit\n });\n}\nfunction $02e68f8ca5696f61$export$46ad21b25b6dccf0(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 function update() {\n if (!paused) {\n rate = interval ? $02e68f8ca5696f61$var$min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n if (rate >= 1) {\n onInterval();\n startTime = now();\n if (limit && ++count >= limit) return pause();\n }\n id = $02e68f8ca5696f61$var$raf(update);\n }\n }\n function start(resume) {\n resume || cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n id = $02e68f8ca5696f61$var$raf(update);\n }\n function pause() {\n paused = true;\n }\n function rewind() {\n startTime = now();\n rate = 0;\n if (onUpdate) onUpdate(rate);\n }\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n function set(time) {\n interval = time;\n }\n function isPaused() {\n return paused;\n }\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\nfunction $02e68f8ca5696f61$export$7254cc27399e90bd(initialState) {\n var state = initialState;\n function set(value) {\n state = value;\n }\n function is(states) {\n return $02e68f8ca5696f61$var$includes($02e68f8ca5696f61$var$toArray(states), state);\n }\n return {\n set: set,\n is: is\n };\n}\nfunction $02e68f8ca5696f61$export$efff0f5979573c99(func, duration) {\n var interval = $02e68f8ca5696f61$export$46ad21b25b6dccf0(duration || 0, func, null, 1);\n return function() {\n interval.isPaused() && interval.start();\n };\n}\nfunction $02e68f8ca5696f61$var$Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = $02e68f8ca5696f61$export$c473e36ef1bda729();\n var queries = [];\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n $02e68f8ca5696f61$var$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, $02e68f8ca5696f61$var$MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n function destroy(completely) {\n if (completely) binder.destroy();\n }\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([\n options2,\n queryList\n ]);\n }\n function update() {\n var destroyed = state.is($02e68f8ca5696f61$var$DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function(merged2, entry) {\n return $02e68f8ca5696f61$var$merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n $02e68f8ca5696f61$var$omit(options);\n set(merged);\n if (options.destroy) Splide2.destroy(options.destroy === \"completely\");\n else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else direction !== options.direction && Splide2.refresh();\n }\n function reduce(enable) {\n if (matchMedia($02e68f8ca5696f61$var$MEDIA_PREFERS_REDUCED_MOTION).matches) enable ? $02e68f8ca5696f61$var$merge(options, reducedMotion) : $02e68f8ca5696f61$var$omit(options, $02e68f8ca5696f61$var$ownKeys(reducedMotion));\n }\n function set(opts, base, notify) {\n $02e68f8ca5696f61$var$merge(options, opts);\n base && $02e68f8ca5696f61$var$merge(Object.getPrototypeOf(options), opts);\n if (notify || !state.is($02e68f8ca5696f61$var$CREATED)) Splide2.emit($02e68f8ca5696f61$export$db40ab7c0855fa5c, options);\n }\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\nvar $02e68f8ca5696f61$var$ARROW = \"Arrow\";\nvar $02e68f8ca5696f61$var$ARROW_LEFT = $02e68f8ca5696f61$var$ARROW + \"Left\";\nvar $02e68f8ca5696f61$var$ARROW_RIGHT = $02e68f8ca5696f61$var$ARROW + \"Right\";\nvar $02e68f8ca5696f61$var$ARROW_UP = $02e68f8ca5696f61$var$ARROW + \"Up\";\nvar $02e68f8ca5696f61$var$ARROW_DOWN = $02e68f8ca5696f61$var$ARROW + \"Down\";\nvar $02e68f8ca5696f61$export$373e92e0788ff06e = \"ltr\";\nvar $02e68f8ca5696f61$export$850f7749a2909601 = \"rtl\";\nvar $02e68f8ca5696f61$export$97170d9824b89709 = \"ttb\";\nvar $02e68f8ca5696f61$var$ORIENTATION_MAP = {\n width: [\n \"height\"\n ],\n left: [\n \"top\",\n \"right\"\n ],\n right: [\n \"bottom\",\n \"left\"\n ],\n x: [\n \"y\"\n ],\n X: [\n \"Y\"\n ],\n Y: [\n \"X\"\n ],\n ArrowLeft: [\n $02e68f8ca5696f61$var$ARROW_UP,\n $02e68f8ca5696f61$var$ARROW_RIGHT\n ],\n ArrowRight: [\n $02e68f8ca5696f61$var$ARROW_DOWN,\n $02e68f8ca5696f61$var$ARROW_LEFT\n ]\n};\nfunction $02e68f8ca5696f61$var$Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === $02e68f8ca5696f61$export$850f7749a2909601 && !axisOnly ? 1 : direction === $02e68f8ca5696f61$export$97170d9824b89709 ? 0 : -1;\n return $02e68f8ca5696f61$var$ORIENTATION_MAP[prop] && $02e68f8ca5696f61$var$ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function(match, offset) {\n var replacement = $02e68f8ca5696f61$var$ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n function orient(value) {\n return value * (options.direction === $02e68f8ca5696f61$export$850f7749a2909601 ? 1 : -1);\n }\n return {\n resolve: resolve,\n orient: orient\n };\n}\nvar $02e68f8ca5696f61$var$ROLE = \"role\";\nvar $02e68f8ca5696f61$var$TAB_INDEX = \"tabindex\";\nvar $02e68f8ca5696f61$var$DISABLED = \"disabled\";\nvar $02e68f8ca5696f61$var$ARIA_PREFIX = \"aria-\";\nvar $02e68f8ca5696f61$var$ARIA_CONTROLS = $02e68f8ca5696f61$var$ARIA_PREFIX + \"controls\";\nvar $02e68f8ca5696f61$var$ARIA_CURRENT = $02e68f8ca5696f61$var$ARIA_PREFIX + \"current\";\nvar $02e68f8ca5696f61$var$ARIA_SELECTED = $02e68f8ca5696f61$var$ARIA_PREFIX + \"selected\";\nvar $02e68f8ca5696f61$var$ARIA_LABEL = $02e68f8ca5696f61$var$ARIA_PREFIX + \"label\";\nvar $02e68f8ca5696f61$var$ARIA_LABELLEDBY = $02e68f8ca5696f61$var$ARIA_PREFIX + \"labelledby\";\nvar $02e68f8ca5696f61$var$ARIA_HIDDEN = $02e68f8ca5696f61$var$ARIA_PREFIX + \"hidden\";\nvar $02e68f8ca5696f61$var$ARIA_ORIENTATION = $02e68f8ca5696f61$var$ARIA_PREFIX + \"orientation\";\nvar $02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION = $02e68f8ca5696f61$var$ARIA_PREFIX + \"roledescription\";\nvar $02e68f8ca5696f61$var$ARIA_LIVE = $02e68f8ca5696f61$var$ARIA_PREFIX + \"live\";\nvar $02e68f8ca5696f61$var$ARIA_BUSY = $02e68f8ca5696f61$var$ARIA_PREFIX + \"busy\";\nvar $02e68f8ca5696f61$var$ARIA_ATOMIC = $02e68f8ca5696f61$var$ARIA_PREFIX + \"atomic\";\nvar $02e68f8ca5696f61$var$ALL_ATTRIBUTES = [\n $02e68f8ca5696f61$var$ROLE,\n $02e68f8ca5696f61$var$TAB_INDEX,\n $02e68f8ca5696f61$var$DISABLED,\n $02e68f8ca5696f61$var$ARIA_CONTROLS,\n $02e68f8ca5696f61$var$ARIA_CURRENT,\n $02e68f8ca5696f61$var$ARIA_LABEL,\n $02e68f8ca5696f61$var$ARIA_LABELLEDBY,\n $02e68f8ca5696f61$var$ARIA_HIDDEN,\n $02e68f8ca5696f61$var$ARIA_ORIENTATION,\n $02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION\n];\nvar $02e68f8ca5696f61$var$CLASS_PREFIX = $02e68f8ca5696f61$var$PROJECT_CODE + \"__\";\nvar $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX = \"is-\";\nvar $02e68f8ca5696f61$export$93b21159ad85c843 = $02e68f8ca5696f61$var$PROJECT_CODE;\nvar $02e68f8ca5696f61$export$7738b09ac0a98952 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"track\";\nvar $02e68f8ca5696f61$export$19cc2a5451235cae = $02e68f8ca5696f61$var$CLASS_PREFIX + \"list\";\nvar $02e68f8ca5696f61$export$8d922915837a38d3 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"slide\";\nvar $02e68f8ca5696f61$export$2c1ba4a4f1aa4947 = $02e68f8ca5696f61$export$8d922915837a38d3 + \"--clone\";\nvar $02e68f8ca5696f61$export$e9ba7e444ba60a12 = $02e68f8ca5696f61$export$8d922915837a38d3 + \"__container\";\nvar $02e68f8ca5696f61$export$a26cbd955fecf11e = $02e68f8ca5696f61$var$CLASS_PREFIX + \"arrows\";\nvar $02e68f8ca5696f61$export$516e7d18e13a2dca = $02e68f8ca5696f61$var$CLASS_PREFIX + \"arrow\";\nvar $02e68f8ca5696f61$export$58ea3db24c33b76 = $02e68f8ca5696f61$export$516e7d18e13a2dca + \"--prev\";\nvar $02e68f8ca5696f61$export$4885afd7098a65c2 = $02e68f8ca5696f61$export$516e7d18e13a2dca + \"--next\";\nvar $02e68f8ca5696f61$export$cbf8e5a0ab95eda3 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"pagination\";\nvar $02e68f8ca5696f61$export$52f2cca6a5eee805 = $02e68f8ca5696f61$export$cbf8e5a0ab95eda3 + \"__page\";\nvar $02e68f8ca5696f61$export$4c82dc32b1c4ace5 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"progress\";\nvar $02e68f8ca5696f61$export$2c9b091c749f4409 = $02e68f8ca5696f61$export$4c82dc32b1c4ace5 + \"__bar\";\nvar $02e68f8ca5696f61$export$a29701deef84b825 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"toggle\";\nvar $02e68f8ca5696f61$export$d9d247d51b430dbb = $02e68f8ca5696f61$export$a29701deef84b825 + \"__play\";\nvar $02e68f8ca5696f61$export$3529f201a419925b = $02e68f8ca5696f61$export$a29701deef84b825 + \"__pause\";\nvar $02e68f8ca5696f61$export$3e5381ee3fab8374 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"spinner\";\nvar $02e68f8ca5696f61$export$bb78d7c200da8960 = $02e68f8ca5696f61$var$CLASS_PREFIX + \"sr\";\nvar $02e68f8ca5696f61$export$7761661e2d5b9388 = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"initialized\";\nvar $02e68f8ca5696f61$export$72d36ecf3758cb4b = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"active\";\nvar $02e68f8ca5696f61$export$e423ac4972f5e196 = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"prev\";\nvar $02e68f8ca5696f61$export$457a2d20827a2779 = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"next\";\nvar $02e68f8ca5696f61$export$53ca4621bbab9a = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"visible\";\nvar $02e68f8ca5696f61$export$d22ec4ccb7996ba2 = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"loading\";\nvar $02e68f8ca5696f61$export$b6f202a162a09100 = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"focus-in\";\nvar $02e68f8ca5696f61$export$cd908cd1dd625e29 = $02e68f8ca5696f61$var$STATUS_CLASS_PREFIX + \"overflow\";\nvar $02e68f8ca5696f61$export$49f9eaea10ebf193 = [\n $02e68f8ca5696f61$export$72d36ecf3758cb4b,\n $02e68f8ca5696f61$export$53ca4621bbab9a,\n $02e68f8ca5696f61$export$e423ac4972f5e196,\n $02e68f8ca5696f61$export$457a2d20827a2779,\n $02e68f8ca5696f61$export$d22ec4ccb7996ba2,\n $02e68f8ca5696f61$export$b6f202a162a09100,\n $02e68f8ca5696f61$export$cd908cd1dd625e29\n];\nvar $02e68f8ca5696f61$export$ba41d43e4a419565 = {\n slide: $02e68f8ca5696f61$export$8d922915837a38d3,\n clone: $02e68f8ca5696f61$export$2c1ba4a4f1aa4947,\n arrows: $02e68f8ca5696f61$export$a26cbd955fecf11e,\n arrow: $02e68f8ca5696f61$export$516e7d18e13a2dca,\n prev: $02e68f8ca5696f61$export$58ea3db24c33b76,\n next: $02e68f8ca5696f61$export$4885afd7098a65c2,\n pagination: $02e68f8ca5696f61$export$cbf8e5a0ab95eda3,\n page: $02e68f8ca5696f61$export$52f2cca6a5eee805,\n spinner: $02e68f8ca5696f61$export$3e5381ee3fab8374\n};\nfunction $02e68f8ca5696f61$var$closest(from, selector) {\n if ($02e68f8ca5696f61$var$isFunction(from.closest)) return from.closest(selector);\n var elm = from;\n while(elm && elm.nodeType === 1){\n if ($02e68f8ca5696f61$var$matches(elm, selector)) break;\n elm = elm.parentElement;\n }\n return elm;\n}\nvar $02e68f8ca5696f61$var$FRICTION = 5;\nvar $02e68f8ca5696f61$var$LOG_INTERVAL = 200;\nvar $02e68f8ca5696f61$var$POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar $02e68f8ca5696f61$var$POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar $02e68f8ca5696f61$var$POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\nfunction $02e68f8ca5696f61$var$Elements(Splide2, Components2, options) {\n var _EventInterface = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2), on = _EventInterface.on, bind = _EventInterface.bind;\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 function setup() {\n collect();\n init();\n update();\n }\n function mount() {\n on($02e68f8ca5696f61$export$7f4701ac5e05e39f, destroy);\n on($02e68f8ca5696f61$export$7f4701ac5e05e39f, setup);\n on($02e68f8ca5696f61$export$db40ab7c0855fa5c, update);\n bind(document, $02e68f8ca5696f61$var$POINTER_DOWN_EVENTS + \" keydown\", function(e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function() {\n $02e68f8ca5696f61$var$toggleClass(root, $02e68f8ca5696f61$export$b6f202a162a09100, !!isUsingKey);\n });\n }\n function destroy(completely) {\n var attrs = $02e68f8ca5696f61$var$ALL_ATTRIBUTES.concat(\"style\");\n $02e68f8ca5696f61$var$empty(slides);\n $02e68f8ca5696f61$var$removeClass(root, rootClasses);\n $02e68f8ca5696f61$var$removeClass(track, trackClasses);\n $02e68f8ca5696f61$var$removeAttribute([\n track,\n list\n ], attrs);\n $02e68f8ca5696f61$var$removeAttribute(root, completely ? attrs : [\n \"style\",\n $02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION\n ]);\n }\n function update() {\n $02e68f8ca5696f61$var$removeClass(root, rootClasses);\n $02e68f8ca5696f61$var$removeClass(track, trackClasses);\n rootClasses = getClasses($02e68f8ca5696f61$export$93b21159ad85c843);\n trackClasses = getClasses($02e68f8ca5696f61$export$7738b09ac0a98952);\n $02e68f8ca5696f61$var$addClass(root, rootClasses);\n $02e68f8ca5696f61$var$addClass(track, trackClasses);\n $02e68f8ca5696f61$var$setAttribute(root, $02e68f8ca5696f61$var$ARIA_LABEL, options.label);\n $02e68f8ca5696f61$var$setAttribute(root, $02e68f8ca5696f61$var$ARIA_LABELLEDBY, options.labelledby);\n }\n function collect() {\n track = find(\".\" + $02e68f8ca5696f61$export$7738b09ac0a98952);\n list = $02e68f8ca5696f61$var$child(track, \".\" + $02e68f8ca5696f61$export$19cc2a5451235cae);\n $02e68f8ca5696f61$var$assert(track && list, \"A track/list element is missing.\");\n $02e68f8ca5696f61$var$push(slides, $02e68f8ca5696f61$var$children(list, \".\" + $02e68f8ca5696f61$export$8d922915837a38d3 + \":not(.\" + $02e68f8ca5696f61$export$2c1ba4a4f1aa4947 + \")\"));\n $02e68f8ca5696f61$var$forOwn({\n arrows: $02e68f8ca5696f61$export$a26cbd955fecf11e,\n pagination: $02e68f8ca5696f61$export$cbf8e5a0ab95eda3,\n prev: $02e68f8ca5696f61$export$58ea3db24c33b76,\n next: $02e68f8ca5696f61$export$4885afd7098a65c2,\n bar: $02e68f8ca5696f61$export$2c9b091c749f4409,\n toggle: $02e68f8ca5696f61$export$a29701deef84b825\n }, function(className, key) {\n elements[key] = find(\".\" + className);\n });\n $02e68f8ca5696f61$var$assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n function init() {\n var id = root.id || $02e68f8ca5696f61$var$uniqueId($02e68f8ca5696f61$var$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 if (!$02e68f8ca5696f61$var$getAttribute(root, $02e68f8ca5696f61$var$ROLE) && root.tagName !== \"SECTION\" && role) $02e68f8ca5696f61$var$setAttribute(root, $02e68f8ca5696f61$var$ROLE, role);\n $02e68f8ca5696f61$var$setAttribute(root, $02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION, i18n.carousel);\n $02e68f8ca5696f61$var$setAttribute(list, $02e68f8ca5696f61$var$ROLE, \"presentation\");\n }\n function find(selector) {\n var elm = $02e68f8ca5696f61$var$query(root, selector);\n return elm && $02e68f8ca5696f61$var$closest(elm, \".\" + $02e68f8ca5696f61$export$93b21159ad85c843) === root ? elm : void 0;\n }\n function getClasses(base) {\n return [\n base + \"--\" + options.type,\n base + \"--\" + options.direction,\n options.drag && base + \"--draggable\",\n options.isNavigation && base + \"--nav\",\n base === $02e68f8ca5696f61$export$93b21159ad85c843 && $02e68f8ca5696f61$export$72d36ecf3758cb4b\n ];\n }\n return $02e68f8ca5696f61$var$assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\nvar $02e68f8ca5696f61$export$e5a58a5ee5b54c22 = \"slide\";\nvar $02e68f8ca5696f61$export$f42383286ed1223d = \"loop\";\nvar $02e68f8ca5696f61$export$742b62a5690c060 = \"fade\";\nfunction $02e68f8ca5696f61$var$Slide$1(Splide2, index, slideIndex, slide) {\n var event = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2);\n var on = event.on, emit = event.emit, bind = event.bind;\n var Components = Splide2.Components, root = Splide2.root, options = Splide2.options;\n var isNavigation = options.isNavigation, updateOnMove = options.updateOnMove, i18n = options.i18n, pagination = options.pagination, slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = $02e68f8ca5696f61$var$getAttribute(slide, \"style\");\n var label = $02e68f8ca5696f61$var$getAttribute(slide, $02e68f8ca5696f61$var$ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = $02e68f8ca5696f61$var$child(slide, \".\" + $02e68f8ca5696f61$export$e9ba7e444ba60a12);\n var destroyed;\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + $02e68f8ca5696f61$var$pad(index + 1);\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ROLE, pagination ? \"tabpanel\" : \"group\");\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION, i18n.slide);\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_LABEL, label || $02e68f8ca5696f61$var$format(i18n.slideLabel, [\n index + 1,\n Splide2.length\n ]));\n }\n listen();\n }\n function listen() {\n bind(slide, \"click\", $02e68f8ca5696f61$var$apply(emit, $02e68f8ca5696f61$export$5adb665701eda1ce, self));\n bind(slide, \"keydown\", $02e68f8ca5696f61$var$apply(emit, $02e68f8ca5696f61$export$6d5af59619d10e6a, self));\n on([\n $02e68f8ca5696f61$export$fe5802204b967f0d,\n $02e68f8ca5696f61$export$f0af896383d5adff,\n $02e68f8ca5696f61$export$ff8164bff3202b9\n ], update);\n on($02e68f8ca5696f61$export$84015c33508f94ec, initNavigation);\n if (updateOnMove) on($02e68f8ca5696f61$export$2aa493d7c3275167, onMove);\n }\n function destroy() {\n destroyed = true;\n event.destroy();\n $02e68f8ca5696f61$var$removeClass(slide, $02e68f8ca5696f61$export$49f9eaea10ebf193);\n $02e68f8ca5696f61$var$removeAttribute(slide, $02e68f8ca5696f61$var$ALL_ATTRIBUTES);\n $02e68f8ca5696f61$var$setAttribute(slide, \"style\", styles);\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_LABEL, label || \"\");\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 $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_LABEL, $02e68f8ca5696f61$var$format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_CONTROLS, controls);\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && $02e68f8ca5696f61$var$removeAttribute(slide, $02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION);\n }\n function onMove() {\n if (!destroyed) update();\n }\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n $02e68f8ca5696f61$var$toggleClass(slide, $02e68f8ca5696f61$export$e423ac4972f5e196, index === curr - 1);\n $02e68f8ca5696f61$var$toggleClass(slide, $02e68f8ca5696f61$export$457a2d20827a2779, index === curr + 1);\n }\n }\n function updateActivity() {\n var active = isActive();\n if (active !== $02e68f8ca5696f61$var$hasClass(slide, $02e68f8ca5696f61$export$72d36ecf3758cb4b)) {\n $02e68f8ca5696f61$var$toggleClass(slide, $02e68f8ca5696f61$export$72d36ecf3758cb4b, active);\n $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? $02e68f8ca5696f61$export$92e3eae133acac4c : $02e68f8ca5696f61$export$6bcbb81035c12cea, self);\n }\n }\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n if (!Splide2.state.is([\n $02e68f8ca5696f61$var$MOVING,\n $02e68f8ca5696f61$var$SCROLLING\n ])) $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$ARIA_HIDDEN, hidden || \"\");\n $02e68f8ca5696f61$var$setAttribute($02e68f8ca5696f61$var$queryAll(slide, options.focusableNodes || \"\"), $02e68f8ca5696f61$var$TAB_INDEX, hidden ? -1 : \"\");\n if (slideFocus) $02e68f8ca5696f61$var$setAttribute(slide, $02e68f8ca5696f61$var$TAB_INDEX, hidden ? -1 : 0);\n if (visible !== $02e68f8ca5696f61$var$hasClass(slide, $02e68f8ca5696f61$export$53ca4621bbab9a)) {\n $02e68f8ca5696f61$var$toggleClass(slide, $02e68f8ca5696f61$export$53ca4621bbab9a, visible);\n emit(visible ? $02e68f8ca5696f61$export$6a5b3445e4066a53 : $02e68f8ca5696f61$export$8c5c7a21d54563e9, self);\n }\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && $02e68f8ca5696f61$var$focus(Slide2.slide);\n }\n }\n function style$1(prop, value, useContainer) {\n $02e68f8ca5696f61$var$style(useContainer && container || slide, prop, value);\n }\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n function isVisible() {\n if (Splide2.is($02e68f8ca5696f61$export$742b62a5690c060)) return isActive();\n var trackRect = $02e68f8ca5696f61$var$rect(Components.Elements.track);\n var slideRect = $02e68f8ca5696f61$var$rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return $02e68f8ca5696f61$var$floor(trackRect[left]) <= $02e68f8ca5696f61$var$ceil(slideRect[left]) && $02e68f8ca5696f61$var$floor(slideRect[right]) <= $02e68f8ca5696f61$var$ceil(trackRect[right]);\n }\n function isWithin(from, distance) {\n var diff = $02e68f8ca5696f61$var$abs(from - index);\n if (!isClone && (options.rewind || Splide2.is($02e68f8ca5696f61$export$f42383286ed1223d))) diff = $02e68f8ca5696f61$var$min(diff, Splide2.length - diff);\n return diff <= distance;\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}\nfunction $02e68f8ca5696f61$var$Slides(Splide2, Components2, options) {\n var _EventInterface2 = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2), on = _EventInterface2.on, emit = _EventInterface2.emit, bind = _EventInterface2.bind;\n var _Components2$Elements = Components2.Elements, slides = _Components2$Elements.slides, list = _Components2$Elements.list;\n var Slides2 = [];\n function mount() {\n init();\n on($02e68f8ca5696f61$export$7f4701ac5e05e39f, destroy);\n on($02e68f8ca5696f61$export$7f4701ac5e05e39f, init);\n }\n function init() {\n slides.forEach(function(slide, index) {\n register(slide, index, -1);\n });\n }\n function destroy() {\n forEach$1(function(Slide2) {\n Slide2.destroy();\n });\n $02e68f8ca5696f61$var$empty(Slides2);\n }\n function update() {\n forEach$1(function(Slide2) {\n Slide2.update();\n });\n }\n function register(slide, index, slideIndex) {\n var object = $02e68f8ca5696f61$var$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 function get(excludeClones) {\n return excludeClones ? filter(function(Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\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 $02e68f8ca5696f61$var$between(Slide2.index, index, index + max - 1);\n });\n }\n function getAt(index) {\n return filter(index)[0];\n }\n function add(items, index) {\n $02e68f8ca5696f61$var$forEach(items, function(slide) {\n if ($02e68f8ca5696f61$var$isString(slide)) slide = $02e68f8ca5696f61$var$parseHtml(slide);\n if ($02e68f8ca5696f61$var$isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? $02e68f8ca5696f61$var$before(slide, ref) : $02e68f8ca5696f61$var$append(list, slide);\n $02e68f8ca5696f61$var$addClass(slide, options.classes.slide);\n observeImages(slide, $02e68f8ca5696f61$var$apply(emit, $02e68f8ca5696f61$export$7e019dae5103a285));\n }\n });\n emit($02e68f8ca5696f61$export$7f4701ac5e05e39f);\n }\n function remove$1(matcher) {\n $02e68f8ca5696f61$var$remove(filter(matcher).map(function(Slide2) {\n return Slide2.slide;\n }));\n emit($02e68f8ca5696f61$export$7f4701ac5e05e39f);\n }\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n function filter(matcher) {\n return Slides2.filter($02e68f8ca5696f61$var$isFunction(matcher) ? matcher : function(Slide2) {\n return $02e68f8ca5696f61$var$isString(matcher) ? $02e68f8ca5696f61$var$matches(Slide2.slide, matcher) : $02e68f8ca5696f61$var$includes($02e68f8ca5696f61$var$toArray(matcher), Slide2.index);\n });\n }\n function style(prop, value, useContainer) {\n forEach$1(function(Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n function observeImages(elm, callback) {\n var images = $02e68f8ca5696f61$var$queryAll(elm, \"img\");\n var length = images.length;\n if (length) images.forEach(function(img) {\n bind(img, \"load error\", function() {\n if (!--length) callback();\n });\n });\n else callback();\n }\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n function isEnough() {\n return Slides2.length > options.perPage;\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}\nfunction $02e68f8ca5696f61$var$Layout(Splide2, Components2, options) {\n var _EventInterface3 = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2), on = _EventInterface3.on, bind = _EventInterface3.bind, emit = _EventInterface3.emit;\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements, root = _Components2$Elements2.root, track = _Components2$Elements2.track, list = _Components2$Elements2.list;\n var getAt = Slides.getAt, styleSlides = Slides.style;\n var vertical;\n var rootRect;\n var overflow;\n function mount() {\n init();\n bind(window, \"resize load\", $02e68f8ca5696f61$export$efff0f5979573c99($02e68f8ca5696f61$var$apply(emit, $02e68f8ca5696f61$export$7e019dae5103a285)));\n on([\n $02e68f8ca5696f61$export$db40ab7c0855fa5c,\n $02e68f8ca5696f61$export$7f4701ac5e05e39f\n ], init);\n on($02e68f8ca5696f61$export$7e019dae5103a285, resize);\n }\n function init() {\n vertical = options.direction === $02e68f8ca5696f61$export$97170d9824b89709;\n $02e68f8ca5696f61$var$style(root, \"maxWidth\", $02e68f8ca5696f61$var$unit(options.width));\n $02e68f8ca5696f61$var$style(track, resolve(\"paddingLeft\"), cssPadding(false));\n $02e68f8ca5696f61$var$style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize(true);\n }\n function resize(force) {\n var newRect = $02e68f8ca5696f61$var$rect(root);\n if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n $02e68f8ca5696f61$var$style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), $02e68f8ca5696f61$var$unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit($02e68f8ca5696f61$export$d637eba1e9e28482);\n if (overflow !== (overflow = isOverflow())) {\n $02e68f8ca5696f61$var$toggleClass(root, $02e68f8ca5696f61$export$cd908cd1dd625e29, overflow);\n emit($02e68f8ca5696f61$export$6cbac5b662a31e1b, overflow);\n }\n }\n }\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && $02e68f8ca5696f61$var$unit(padding[prop] || ($02e68f8ca5696f61$var$isObject(padding) ? 0 : padding)) || \"0px\";\n }\n function cssTrackHeight() {\n var height = \"\";\n if (vertical) {\n height = cssHeight();\n $02e68f8ca5696f61$var$assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n return height;\n }\n function cssHeight() {\n return $02e68f8ca5696f61$var$unit(options.height || $02e68f8ca5696f61$var$rect(list).width * options.heightRatio);\n }\n function cssSlideWidth() {\n return options.autoWidth ? null : $02e68f8ca5696f61$var$unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n function cssSlideHeight() {\n return $02e68f8ca5696f61$var$unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n function cssSlideSize() {\n var gap = $02e68f8ca5696f61$var$unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n function listSize() {\n return $02e68f8ca5696f61$var$rect(list)[resolve(\"width\")];\n }\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? $02e68f8ca5696f61$var$rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n if (Slide) {\n var right = $02e68f8ca5696f61$var$rect(Slide.slide)[resolve(\"right\")];\n var left = $02e68f8ca5696f61$var$rect(list)[resolve(\"left\")];\n return $02e68f8ca5696f61$var$abs(right - left) + (withoutGap ? 0 : getGap());\n }\n return 0;\n }\n function sliderSize(withoutGap) {\n return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap);\n }\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat($02e68f8ca5696f61$var$style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n function getPadding(right) {\n return parseFloat($02e68f8ca5696f61$var$style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n function isOverflow() {\n return Splide2.is($02e68f8ca5696f61$export$742b62a5690c060) || sliderSize(true) > listSize();\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}\nvar $02e68f8ca5696f61$var$MULTIPLIER = 2;\nfunction $02e68f8ca5696f61$var$Clones(Splide2, Components2, options) {\n var event = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2);\n var on = event.on;\n var Elements = Components2.Elements, Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n function mount() {\n on($02e68f8ca5696f61$export$7f4701ac5e05e39f, remount);\n on([\n $02e68f8ca5696f61$export$db40ab7c0855fa5c,\n $02e68f8ca5696f61$export$7e019dae5103a285\n ], observe);\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n Components2.Layout.resize(true);\n }\n }\n function remount() {\n destroy();\n mount();\n }\n function destroy() {\n $02e68f8ca5696f61$var$remove(clones);\n $02e68f8ca5696f61$var$empty(clones);\n event.destroy();\n }\n function observe() {\n var count = computeCloneCount();\n if (cloneCount !== count) {\n if (cloneCount < count || !count) event.emit($02e68f8ca5696f61$export$7f4701ac5e05e39f);\n }\n }\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n if (length) {\n while(slides.length < count)$02e68f8ca5696f61$var$push(slides, slides);\n $02e68f8ca5696f61$var$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 ? $02e68f8ca5696f61$var$before(clone, slides[0].slide) : $02e68f8ca5696f61$var$append(Elements.list, clone);\n $02e68f8ca5696f61$var$push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n $02e68f8ca5696f61$var$addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + $02e68f8ca5696f61$var$pad(index + 1);\n return clone;\n }\n function computeCloneCount() {\n var clones2 = options.clones;\n if (!Splide2.is($02e68f8ca5696f61$export$f42383286ed1223d)) clones2 = 0;\n else if ($02e68f8ca5696f61$var$isUndefined(clones2)) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && $02e68f8ca5696f61$var$ceil($02e68f8ca5696f61$var$rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * $02e68f8ca5696f61$var$MULTIPLIER;\n }\n return clones2;\n }\n return {\n mount: mount,\n destroy: destroy\n };\n}\nfunction $02e68f8ca5696f61$var$Move(Splide2, Components2, options) {\n var _EventInterface4 = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2), on = _EventInterface4.on, emit = _EventInterface4.emit;\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout, slideSize = _Components2$Layout.slideSize, getPadding = _Components2$Layout.getPadding, totalSize = _Components2$Layout.totalSize, listSize = _Components2$Layout.listSize, sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction, resolve = _Components2$Directio.resolve, orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements, list = _Components2$Elements3.list, track = _Components2$Elements3.track;\n var Transition;\n function mount() {\n Transition = Components2.Transition;\n on([\n $02e68f8ca5696f61$export$d300dc1a2634364b,\n $02e68f8ca5696f61$export$d637eba1e9e28482,\n $02e68f8ca5696f61$export$db40ab7c0855fa5c,\n $02e68f8ca5696f61$export$7f4701ac5e05e39f\n ], reposition);\n }\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\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 set($02e68f8ca5696f61$var$MOVING);\n emit($02e68f8ca5696f61$export$2aa493d7c3275167, index, prev, dest);\n Transition.start(index, function() {\n set($02e68f8ca5696f61$var$IDLE);\n emit($02e68f8ca5696f61$export$fe5802204b967f0d, index, prev, dest);\n callback && callback();\n });\n }\n function jump(index) {\n translate(toPosition(index, true));\n }\n function translate(position, preventLoop) {\n if (!Splide2.is($02e68f8ca5696f61$export$742b62a5690c060)) {\n var destination = preventLoop ? position : loop(position);\n $02e68f8ca5696f61$var$style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit($02e68f8ca5696f61$export$f0af896383d5adff);\n }\n }\n function loop(position) {\n if (Splide2.is($02e68f8ca5696f61$export$f42383286ed1223d)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n if (exceededMin || exceededMax) position = shift(position, exceededMax);\n }\n return position;\n }\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * ($02e68f8ca5696f61$var$ceil($02e68f8ca5696f61$var$abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n function cancel() {\n translate(getPosition(), true);\n Transition.cancel();\n }\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n for(var i = 0; i < Slides.length; i++){\n var slideIndex = Slides[i].index;\n var distance = $02e68f8ca5696f61$var$abs(toPosition(slideIndex, true) - position);\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else break;\n }\n return index;\n }\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n function getPosition() {\n var left = resolve(\"left\");\n return $02e68f8ca5696f61$var$rect(list)[left] - $02e68f8ca5696f61$var$rect(track)[left] + orient(getPadding(false));\n }\n function trim(position) {\n if (options.trimSpace && Splide2.is($02e68f8ca5696f61$export$e5a58a5ee5b54c22)) position = $02e68f8ca5696f61$var$clamp(position, 0, orient(sliderSize(true) - listSize()));\n return position;\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 function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - $02e68f8ca5696f61$var$rect(track)[resolve(\"width\")];\n }\n function exceededLimit(max, position) {\n position = $02e68f8ca5696f61$var$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 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}\nfunction $02e68f8ca5696f61$var$Controller(Splide2, Components2, options) {\n var _EventInterface5 = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2), on = _EventInterface5.on, emit = _EventInterface5.emit;\n var Move = Components2.Move;\n var getPosition = Move.getPosition, getLimit = Move.getLimit, toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides, isEnough = _Components2$Slides.isEnough, getLength = _Components2$Slides.getLength;\n var omitEnd = options.omitEnd;\n var isLoop = Splide2.is($02e68f8ca5696f61$export$f42383286ed1223d);\n var isSlide = Splide2.is($02e68f8ca5696f61$export$e5a58a5ee5b54c22);\n var getNext = $02e68f8ca5696f61$var$apply(getAdjacent, false);\n var getPrev = $02e68f8ca5696f61$var$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 function mount() {\n init();\n on([\n $02e68f8ca5696f61$export$db40ab7c0855fa5c,\n $02e68f8ca5696f61$export$7f4701ac5e05e39f,\n $02e68f8ca5696f61$export$28dea85f216954dc\n ], init);\n on($02e68f8ca5696f61$export$d637eba1e9e28482, onResized);\n }\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n endIndex = getEnd();\n var index = $02e68f8ca5696f61$var$clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1);\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n function onResized() {\n if (endIndex !== getEnd()) emit($02e68f8ca5696f61$export$28dea85f216954dc);\n }\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\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 ? $02e68f8ca5696f61$var$min(index, endIndex) : index);\n callback && callback();\n });\n }\n function parse(control) {\n var index = currIndex;\n if ($02e68f8ca5696f61$var$isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [], indicator = _ref[1], number = _ref[2];\n if (indicator === \"+\" || indicator === \"-\") index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n else if (indicator === \">\") index = number ? toIndex(+number) : getNext(true);\n else if (indicator === \"<\") index = getPrev(true);\n } else index = isLoop ? control : $02e68f8ca5696f61$var$clamp(control, 0, endIndex);\n return index;\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 if (dest === -1 && isSlide) {\n if (!$02e68f8ca5696f61$var$approximatelyEqual(getPosition(), getLimit(!prev), 1)) return prev ? 0 : endIndex;\n }\n return destination ? dest : loop(dest);\n }\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough() || hasFocus()) {\n var index = computeMovableDestIndex(dest);\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n if (dest < 0 || dest > endIndex) {\n if (!perMove && ($02e68f8ca5696f61$var$between(0, dest, from, true) || $02e68f8ca5696f61$var$between(endIndex, from, dest, true))) dest = toIndex(toPage(dest));\n else {\n if (isLoop) dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n else if (options.rewind) dest = dest < 0 ? endIndex : 0;\n else dest = -1;\n }\n } else if (snapPage && dest !== from) dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n } else dest = -1;\n return dest;\n }\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n while(position === toPosition(dest, true) && $02e68f8ca5696f61$var$between(dest, 0, Splide2.length - 1, !options.rewind))dest < currIndex ? --dest : ++dest;\n }\n return dest;\n }\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n function getEnd() {\n var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage);\n while(omitEnd && end-- > 0)if (toPosition(slideCount - 1, true) !== toPosition(end, true)) {\n end++;\n break;\n }\n return $02e68f8ca5696f61$var$clamp(end, 0, slideCount - 1);\n }\n function toIndex(page) {\n return $02e68f8ca5696f61$var$clamp(hasFocus() ? page : perPage * page, 0, endIndex);\n }\n function toPage(index) {\n return hasFocus() ? $02e68f8ca5696f61$var$min(index, endIndex) : $02e68f8ca5696f61$var$floor((index >= endIndex ? slideCount - 1 : index) / perPage);\n }\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? $02e68f8ca5696f61$var$clamp(closest, 0, endIndex) : closest;\n }\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n function hasFocus() {\n return !$02e68f8ca5696f61$var$isUndefined(options.focus) || options.isNavigation;\n }\n function isBusy() {\n return Splide2.state.is([\n $02e68f8ca5696f61$var$MOVING,\n $02e68f8ca5696f61$var$SCROLLING\n ]) && !!options.waitForTransition;\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}\nvar $02e68f8ca5696f61$var$XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar $02e68f8ca5696f61$var$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 $02e68f8ca5696f61$var$SIZE = 40;\nfunction $02e68f8ca5696f61$var$Arrows(Splide2, Components2, options) {\n var event = $02e68f8ca5696f61$export$f188226459c8a3ff(Splide2);\n var on = event.on, bind = event.bind, emit = event.emit;\n var classes = options.classes, i18n = options.i18n;\n var Elements = Components2.Elements, Controller = Components2.Controller;\n var placeholder = Elements.arrows, 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 function mount() {\n init();\n on($02e68f8ca5696f61$export$db40ab7c0855fa5c, remount);\n }\n function remount() {\n destroy();\n mount();\n }\n function init() {\n var enabled = options.arrows;\n if (enabled && !(prev && next)) createArrows();\n if (prev && next) {\n $02e68f8ca5696f61$var$assign(arrows, {\n prev: prev,\n next: next\n });\n $02e68f8ca5696f61$var$display(wrapper, enabled ? \"\" : \"none\");\n $02e68f8ca5696f61$var$addClass(wrapper, wrapperClasses = $02e68f8ca5696f61$export$a26cbd955fecf11e + \"--\" + options.direction);\n if (enabled) {\n listen();\n update();\n $02e68f8ca5696f61$var$setAttribute([\n prev,\n next\n ], $02e68f8ca5696f61$var$ARIA_CONTROLS, track.id);\n emit($02e68f8ca5696f61$export$8647f6b043e04e9d, prev, next);\n }\n }\n }\n function destroy() {\n event.destroy();\n $02e68f8ca5696f61$var$removeClass(wrapper, wrapperClasses);\n if (created) {\n $02e68f8ca5696f61$var$remove(placeholder ? [\n prev,\n next\n ] : wrapper);\n prev = next = null;\n } else $02e68f8ca5696f61$var$removeAttribute([\n prev,\n next\n ], $02e68f8ca5696f61$var$ALL_ATTRIBUTES);\n }\n function listen() {\n on([\n $02e68f8ca5696f61$export$d300dc1a2634364b,\n $02e68f8ca5696f61$export$fe5802204b967f0d,\n $02e68f8ca5696f61$export$7f4701ac5e05e39f,\n $02e68f8ca5696f61$export$ff8164bff3202b9,\n $02e68f8ca5696f61$export$28dea85f216954dc\n ], update);\n bind(next, \"click\", $02e68f8ca5696f61$var$apply(go, \">\"));\n bind(prev, \"click\", $02e68f8ca5696f61$var$apply(go, \"<\"));\n }\n function go(control) {\n Controller.go(control, true);\n }\n function createArrows() {\n wrapper = placeholder || $02e68f8ca5696f61$var$create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n $02e68f8ca5696f61$var$append(wrapper, [\n prev,\n next\n ]);\n !placeholder && $02e68f8ca5696f61$var$before(wrapper, track);\n }\n function createArrow(prev2) {\n var arrow = '';\n };\n _proto3.html = function html() {\n var _this$config = this.config, rootClass = _this$config.rootClass, listTag = _this$config.listTag, arrows = _this$config.arrows, beforeTrack = _this$config.beforeTrack, afterTrack = _this$config.afterTrack, slider = _this$config.slider, beforeSlider = _this$config.beforeSlider, afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += '
';\n html += \"\";\n if (slider) {\n html += beforeSlider || \"\";\n html += '
';\n }\n html += beforeTrack || \"\";\n if (arrows) html += this.renderArrows();\n html += '
';\n html += \"<\" + listTag + ' class=\"splide__list\">';\n html += this.renderSlides();\n html += \"\";\n html += \"
\";\n html += afterTrack || \"\";\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n html += \"
\";\n return html;\n };\n return SplideRenderer;\n}();\n\n\nconst $db4c2f2fc5fd67fb$export$94aebdb670af267 = ()=>{\n /**\r\n * Splide slider on mobile\r\n */ const categoryPuffBlock = document.querySelector(\".category-puff-block\");\n if (categoryPuffBlock) new (0, $02e68f8ca5696f61$export$24494c7438c070bf)(\".splide-category-puff\", {\n perPage: 1,\n gap: 16,\n lazyLoad: \"nearby\",\n label: \"Kategoripuffar\",\n pagination: false,\n focus: 0,\n omitEnd: true,\n reducedMotion: {\n speed: 0,\n rewindSpeed: 0\n },\n mediaQuery: \"min\",\n breakpoints: {\n 1430: {\n destroy: true\n }\n }\n }).mount();\n};\n\n\nconst $94621af5561b012d$export$3a69145104aab10d = ()=>{\n const recipeArchive = document.querySelector(\".recipe-archive\");\n const recipePage = document.querySelector(\".recipe-page\");\n const recipePageType = document.querySelector(\".recipe-pagetype\");\n const productArchive = document.querySelector(\".product-archive\");\n const productPage = document.querySelector(\".product-page\");\n const productPageType = document.querySelector(\".product-pagetype\");\n if (recipePageType) {\n /**\r\n * Toggle navigation on mobile & tablet.\r\n */ const buttonOpen = recipePageType.querySelector(\".button--open\");\n const buttonClose = recipePageType.querySelector(\".button--close\");\n buttonOpen.addEventListener(\"click\", ()=>{\n recipePageType.classList.add(\"nav--open\");\n });\n buttonClose.addEventListener(\"click\", ()=>{\n recipePageType.classList.remove(\"nav--open\");\n });\n }\n if (productPageType) {\n /**\r\n * Toggle navigation on mobile & tablet.\r\n */ const buttonOpen = productPageType.querySelector(\".button--open\");\n const buttonClose = productPageType.querySelector(\".button--close\");\n buttonOpen.addEventListener(\"click\", ()=>{\n productPageType.classList.add(\"nav--open\");\n });\n buttonClose.addEventListener(\"click\", ()=>{\n productPageType.classList.remove(\"nav--open\");\n });\n }\n if (recipeArchive) {\n /**\r\n * Update amount of hits when user have searched\r\n * & Hide CategoryPuffs while a search is active.\r\n */ const numberOfHitsSpan = recipeArchive.querySelector(\".number-of-hits\");\n const numberOfHitsText = recipeArchive.querySelector(\".number-of-hits-text\");\n if (numberOfHitsSpan) {\n const numberOfHits = recipeArchive.querySelectorAll(\".recipe-puff-item\");\n numberOfHitsSpan.textContent = numberOfHits.length.toString();\n if (numberOfHits.length == 1) numberOfHitsText.textContent = \"Tr\\xe4ff p\\xe5\";\n const categoryPuffBlock = document.querySelector(\".category-puff-block\");\n if (categoryPuffBlock) categoryPuffBlock.classList.add(\"display--none\");\n }\n const herbDropdown = document.getElementById(\"herbDropdown\");\n if (herbDropdown) herbDropdown.onchange = submitHerbSearch;\n function submitHerbSearch() {\n const herbDropdown = document.getElementById(\"herbDropdown\");\n const selectedHerb = herbDropdown.value;\n let query = selectedHerb === \"all\" ? \"\" : selectedHerb;\n const newUrl = `${window.location.origin}${window.location.pathname}?q=${encodeURIComponent(query)}`;\n window.location.href = newUrl;\n }\n }\n const recipe = document.querySelector(\".recipe-puff\");\n if (recipe) {\n const saveButtons = document.querySelectorAll(\".recipe-puff__save-button\");\n saveButtons.forEach((button)=>{\n button.addEventListener(\"click\", ()=>{\n button.classList.toggle(\"recipe--saved\");\n });\n });\n }\n if (recipePage) {\n /**\r\n * Swap between ingredients and instructions\r\n */ const ingredientsButton = recipePage.querySelector(\".ingredients-button\");\n const instructionsButton = recipePage.querySelector(\".instructions-button\");\n const ingredientsSection = recipePage.querySelector(\".ingredients-section\");\n const instructionsSection = recipePage.querySelector(\".instructions-section\");\n ingredientsButton.addEventListener(\"click\", ()=>{\n ingredientsButton.classList.add(\"active\");\n instructionsButton.classList.remove(\"active\");\n ingredientsSection.classList.add(\"active\");\n instructionsSection.classList.remove(\"active\");\n });\n instructionsButton.addEventListener(\"click\", ()=>{\n instructionsButton.classList.add(\"active\");\n ingredientsButton.classList.remove(\"active\");\n instructionsSection.classList.add(\"active\");\n ingredientsSection.classList.remove(\"active\");\n });\n /**\r\n * Check checkboxes and save in session-storage\r\n */ const isCheckboxChecked = (index)=>{\n const checkboxes = document.querySelectorAll(\".checkbox\");\n let isChecked = false;\n checkboxes.forEach((checkbox, currentIndex)=>{\n if (currentIndex === index) {\n const checkboxId = checkbox.id;\n const isCheckedInStorage = sessionStorage.getItem(checkboxId);\n isChecked = isCheckedInStorage === \"true\";\n }\n });\n return isChecked;\n };\n document.querySelectorAll(\".checkbox\").forEach((checkbox, index)=>{\n checkbox.addEventListener(\"click\", ()=>{\n checkbox.classList.toggle(\"checked\");\n checkbox.parentElement.classList.toggle(\"line-through\");\n // Determine the checkbox's index from its id\n const checkboxId = checkbox.id;\n const index = checkboxId;\n // Save the state in sessionStorage\n const isChecked = checkbox.classList.contains(\"checked\");\n sessionStorage.setItem(`${index}`, isChecked.toString());\n });\n // Check sessionStorage to restore the state on page load\n if (isCheckboxChecked(index)) {\n checkbox.classList.add(\"checked\");\n checkbox.parentElement.classList.toggle(\"line-through\");\n }\n });\n console.log(sessionStorage);\n /**\r\n * Copy page URL when click on copy-button.\r\n */ const copyButton = document.querySelector(\".copy-button\");\n if (document.body.contains(copyButton)) {\n const currentURL = window.location.href;\n const copyTextContainer = document.querySelector(\".copy-status\");\n copyButton.addEventListener(\"click\", async (e)=>{\n try {\n await navigator.clipboard.writeText(currentURL);\n copyTextContainer.classList.add(\"copy-status--copied\");\n setTimeout(()=>{\n copyTextContainer.classList.remove(\"copy-status--copied\");\n }, 1000);\n } catch (err) {\n console.error(\"Unable to copy URL: \" + err);\n }\n });\n }\n /**\r\n * Print page when click on print-button.\r\n */ const printButton = document.querySelector(\".print-button\");\n if (document.body.contains(printButton)) printButton.addEventListener(\"click\", ()=>{\n window.print();\n });\n /**\r\n * Share page when click on share-button.\r\n */ const shareButton = document.querySelector(\".share-button\");\n if (document.body.contains(shareButton)) shareButton.addEventListener(\"click\", ()=>{\n const currentUrl = window.location.href;\n navigator.share({\n url: currentUrl\n });\n });\n }\n};\n\n\nconst $0a828b85fdc0fdef$export$f6c7087c59a3379a = ()=>{\n // Get all recipe elements on the page\n const recipeElements = document.querySelectorAll(\".recipe\");\n // Initialize saved recipes from local storage or an empty array\n let savedRecipes = JSON.parse(localStorage.getItem(\"savedRecipes\")) || [];\n // Check if a recipe is saved\n const isRecipeSaved = (recipeName)=>{\n return savedRecipes.some((recipe)=>recipe.name === recipeName);\n };\n // Save or unsave a recipe\n const toggleSaveRecipe = (recipeData)=>{\n const index = savedRecipes.findIndex((recipe)=>recipe.name === recipeData.name);\n if (index === -1) savedRecipes.push(recipeData);\n else savedRecipes.splice(index, 1);\n localStorage.setItem(\"savedRecipes\", JSON.stringify(savedRecipes));\n };\n // Update the heart button class\n const updateHeartButtonClass = (heartButton, isSaved)=>{\n heartButton.classList.toggle(\"recipe--saved\", isSaved);\n };\n // Reset the heart button on the current page\n const resetHeartButton = (recipeName, isSaved)=>{\n const recipeElement = document.querySelector(`.recipe[data-recipe-name=\"${recipeName}\"]`);\n if (recipeElement) {\n const heartButton = recipeElement.querySelector(\".heart-button\");\n if (heartButton) updateHeartButtonClass(heartButton, isSaved);\n }\n };\n // Remove a saved recipe\n const removeSavedRecipe = (recipeName)=>{\n const index = savedRecipes.findIndex((recipe)=>recipe.name === recipeName);\n if (index !== -1) {\n savedRecipes.splice(index, 1);\n localStorage.setItem(\"savedRecipes\", JSON.stringify(savedRecipes));\n displaySavedRecipes();\n isAnySaved();\n // Reset the heart button on the current page\n resetHeartButton(recipeName, false);\n }\n };\n // Create and attach a remove button to a saved recipe item\n const createRemoveButton = (recipeName)=>{\n const removeButton = document.createElement(\"button\");\n removeButton.textContent = \"\";\n removeButton.classList.add(\"remove-button\");\n removeButton.classList.add(\"recipe--saved\");\n removeButton.addEventListener(\"click\", ()=>{\n removeSavedRecipe(recipeName);\n isAnySaved();\n });\n return removeButton;\n };\n // Display saved recipes in the \"Saved Recipes\" section\n const displaySavedRecipes = ()=>{\n const savedRecipeList = document.getElementById(\"saved-recipe-list\");\n if (!savedRecipeList) return;\n savedRecipeList.innerHTML = \"\";\n savedRecipes.forEach((recipe)=>{\n // Create list items for each saved recipe\n const listItem = document.createElement(\"li\");\n const article = document.createElement(\"article\");\n article.classList.add(\"saved-recipe-item\");\n // Create HTML to display saved recipes\n article.innerHTML = `\r\n \r\n \r\n \"${recipe.name}\"\r\n \r\n
\r\n

${recipe.name}

\r\n
\r\n
\r\n `;\n // Create and attach the remove button\n const removeButton = createRemoveButton(recipe.name);\n article.appendChild(removeButton); // Append Remove Button to Article\n listItem.appendChild(article); // Append Article to List Item\n savedRecipeList.appendChild(listItem);\n isAnySaved();\n });\n };\n // Add click event listeners to the recipe elements\n recipeElements.forEach((recipeElement)=>{\n const heartButton = recipeElement.querySelector(\".heart-button\");\n if (!heartButton) return;\n const recipeName = recipeElement.getAttribute(\"data-recipe-name\");\n if (!recipeName) return;\n // Check if the recipe is saved and update the heart button class\n const isSaved = isRecipeSaved(recipeName);\n updateHeartButtonClass(heartButton, isSaved);\n heartButton.addEventListener(\"click\", ()=>{\n const recipeData = {\n name: recipeName,\n url: recipeElement.getAttribute(\"data-recipe-url\") || \"\",\n image: recipeElement.getAttribute(\"data-recipe-image\") || \"\"\n };\n toggleSaveRecipe(recipeData);\n updateHeartButtonClass(heartButton, isRecipeSaved(recipeName));\n displaySavedRecipes();\n isAnySaved();\n });\n });\n const isAnySaved = ()=>{\n /**\r\n * Modify heart on Toggle saved Recipes\r\n */ const openSavedRecipesButton = document.querySelector(\".toggle-saved-recipies\");\n if (savedRecipes.length > 0) openSavedRecipesButton.classList.add(\"contains-saved-recipes\");\n else openSavedRecipesButton.classList.remove(\"contains-saved-recipes\");\n };\n // Display saved recipes initially\n displaySavedRecipes();\n};\n\n\n// Define a function to initialize the rating functionality\nconst $0b533b183dbfd919$export$cd745d17361e59d9 = ()=>{\n const recipePage = document.querySelector(\".recipe-page\");\n if (recipePage) {\n // Check if star is clicked to turn of mouseleave for animation on stars.\n let starClicked = false;\n // Get the nodeId from the container's id\n const container = document.querySelector(\".recipe-page\");\n const nodeId = container.getAttribute(\"id\");\n const ratingSections = document.querySelectorAll(\".rating-section\");\n // Check if the user has already rated this recipe in localStorage\n const hasRated = localStorage.getItem(`rated_recipe_${nodeId}`);\n if (hasRated) // User has already rated, do not allow rating again\n ratingSections.forEach((section)=>{\n const ulElement = section.querySelector(\".rating-list\");\n if (ulElement) ulElement.classList.add(\"rated\");\n const titleElement = section.querySelector(\".rating-title\");\n if (titleElement) titleElement.textContent = \"Ditt betyg\";\n });\n // Initialize the rating button\n const ratingButtons = Array.from(document.querySelectorAll(\".rating-button\"));\n ratingButtons.forEach((ratingButton)=>{\n ratingButton.style.display = \"none\";\n let selectedRating = null;\n // Attach a click event listener to each star element\n const starElements = document.querySelectorAll(\".star\");\n starElements.forEach((star)=>{\n star.addEventListener(\"click\", (event)=>{\n // Continue with the rating process\n const starElement = event.target;\n selectedRating = starElement.getAttribute(\"data-rating\");\n // Highlight the selected rating and show filled stars up to the selected rating\n starElements.forEach((s)=>{\n const sRating = s.getAttribute(\"data-rating\");\n if (sRating) {\n const fillStar = parseInt(sRating, 10) <= parseInt(selectedRating || \"0\", 10);\n s.classList.toggle(\"selected\", sRating === selectedRating);\n s.classList.toggle(\"filled\", fillStar);\n }\n });\n // Show the rating button after selecting a rating\n ratingButton.style.display = \"block\";\n });\n });\n // Attach a click event listener to the rating button\n ratingButton.addEventListener(\"click\", ()=>{\n if (selectedRating) {\n // Continue with the rating process\n let starClicked = true;\n // Rest of the existing code...\n localStorage.setItem(`rated_recipe_${nodeId}`, selectedRating);\n const url = `/umbraco/api/rate?userRating=${selectedRating}&nodeId=${nodeId}`;\n fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n }).then((data)=>{\n // Handle the response from your controller\n console.log(data);\n }).catch((error)=>{\n // Handle any errors\n console.error(error);\n });\n // Update other elements after submitting the rating\n updateUIAfterRating();\n }\n });\n // Function to update other UI elements after submitting the rating\n const updateUIAfterRating = ()=>{\n // Update other UI elements as needed\n ratingSections.forEach((section)=>{\n const ulElement = section.querySelector(\".rating-list\");\n if (ulElement) ulElement.classList.add(\"rated\");\n const titleElement = section.querySelector(\".rating-title\");\n if (titleElement) titleElement.textContent = \"Ditt betyg\";\n });\n // Hide the rating button after submitting the rating\n ratingButton.style.display = \"none\";\n };\n });\n // Function to fill stars up to the specified rating\n const fillStars = (rating, element)=>{\n const starElements = element.querySelectorAll(\".star\");\n starElements.forEach((star, index)=>{\n if (index < rating) star.classList.add(\"star--filled\");\n });\n };\n // Hover functionality for places where rating is possible.\n const ratingContainers = document.querySelectorAll(\".rating--possible\");\n ratingContainers.forEach((container)=>{\n const stars = container.querySelectorAll(\".star\");\n if (stars) stars.forEach((star, index)=>{\n star.addEventListener(\"mouseenter\", ()=>{\n stars.forEach((s, i)=>{\n if (i <= index) s.classList.add(\"star--filled\");\n else s.classList.remove(\"star--filled\");\n });\n });\n // This code will run only when you leave the area and haven't clicked a star\n star.addEventListener(\"mouseleave\", ()=>{\n if (!starClicked) stars.forEach((s)=>s.classList.remove(\"star--filled\"));\n });\n });\n });\n ratingSections.forEach((section)=>{\n // Check if a rating is stored in localStorage and fill the stars\n const storedRating = localStorage.getItem(`rated_recipe_${nodeId}`);\n if (storedRating) fillStars(parseInt(storedRating, 10), section);\n });\n }\n}; // ...\n //export const initRateRecipe = () => {\n // const recipePage = document.querySelector(\".recipe-page\");\n // if (recipePage) {\n // let starClicked = false;\n // let ratingConfirmed = false;\n // let currentRating = 0;\n // const container = document.querySelector('.recipe-page') as HTMLElement;\n // const nodeId = container.getAttribute('id');\n // const ratingSections: NodeListOf = document.querySelectorAll('.rating-section');\n // const hasRated = localStorage.getItem(`rated_recipe_${nodeId}`);\n // if (hasRated && !ratingConfirmed) {\n // // Anv�ndaren har inte bekr�ftat �nnu, fyll stj�rnorna fr�n localStorage\n // currentRating = parseInt(hasRated, 10);\n // fillStars(currentRating, ratingSections);\n // }\n // const starElements = document.querySelectorAll('.star');\n // starElements.forEach(star => {\n // star.addEventListener('click', (event) => {\n // starClicked = true;\n // const starElement = event.target as HTMLElement;\n // currentRating = parseInt(starElement.getAttribute('data-rating') || \"0\", 10);\n // localStorage.setItem(`rated_recipe_${nodeId}`, currentRating.toString());\n // const ratingButton = document.querySelector('.rating-button') as HTMLElement;\n // ratingButton.style.display = 'inline';\n // const ratingSections = document.querySelectorAll('.rating-section');\n // function isHTMLElement(element: Element): element is HTMLElement {\n // return element instanceof HTMLElement;\n // }\n // ratingSections.forEach(section => {\n // if (isHTMLElement(section)) {\n // fillStars(currentRating, section as any);\n // const ulElement = section.querySelector(\".rating-list\");\n // if (ulElement) {\n // ulElement.classList.add(\"rated\");\n // }\n // const titleElement = section.querySelector(\".rating-title\");\n // if (titleElement) {\n // titleElement.textContent = \"Ditt betyg\";\n // }\n // }\n // });\n // });\n // });\n // const ratingButton = document.querySelector('.rating-button') as HTMLElement;\n // ratingButton.addEventListener('click', () => {\n // if (!ratingConfirmed) {\n // ratingConfirmed = true;\n // // Skicka betyget efter bekr�ftelse\n // const url = `/umbraco/api/rate?userRating=${currentRating}&nodeId=${nodeId}`;\n // fetch(url, {\n // method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json',\n // },\n // })\n // .then(data => {\n // console.log(data);\n // })\n // .catch(error => {\n // console.error(error);\n // });\n // ratingButton.style.display = 'none';\n // // Spara informationen om bekr�ftat betyg i localStorage\n // localStorage.setItem(`rating_confirmed_${nodeId}`, 'true');\n // localStorage.removeItem(`rated_recipe_${nodeId}`);\n // // Update the UI after voting\n // ratingSections.forEach(section => {\n // const isHTMLElement = (element: Element): element is HTMLElement => {\n // return element instanceof HTMLElement;\n // };\n // if (isHTMLElement(section)) {\n // fillStars(currentRating, section as any);\n // const ulElement = section.querySelector(\".rating-list\");\n // if (ulElement) {\n // ulElement.classList.add(\"rated\");\n // }\n // const titleElement = section.querySelector(\".rating-title\");\n // if (titleElement) {\n // titleElement.textContent = \"Ditt betyg\";\n // }\n // }\n // });\n // }\n // });\n // const ratingContainers: NodeListOf = document.querySelectorAll(\".rating--possible\");\n // ratingContainers.forEach((container: HTMLElement) => {\n // const stars: NodeListOf | null = container.querySelectorAll(\".star\");\n // if (stars) {\n // stars.forEach((star: HTMLElement, index: number) => {\n // star.addEventListener(\"mouseenter\", () => {\n // stars.forEach((s: HTMLElement, i: number) => {\n // if (i <= index) {\n // s.classList.add(\"star--filled\");\n // } else {\n // s.classList.remove(\"star--filled\");\n // }\n // });\n // });\n // star.addEventListener(\"mouseleave\", () => {\n // if (!starClicked) {\n // stars.forEach((s: HTMLElement) => s.classList.remove(\"star--filled\"));\n // }\n // });\n // });\n // }\n // });\n // }\n //};\n //const fillStars = (rating: number, sections: NodeListOf) => {\n // sections.forEach((section: HTMLElement) => {\n // const starElements = section.querySelectorAll('.star');\n // starElements.forEach((star: HTMLElement, index: number) => {\n // if (index < rating) {\n // star.classList.add('star--filled');\n // } else {\n // star.classList.remove('star--filled');\n // }\n // });\n // });\n //};\n //// Define a function to initialize the rating functionality\n //export const initRateRecipe = () => {\n // const recipePage = document.querySelector(\".recipe-page\");\n // const ratingButton = document.querySelector('.rating-button') as HTMLElement;\n // if (recipePage) {\n // // Check if star is clicked to turn off mouseleave for animation on stars.\n // let starClicked = false;\n // let selectedRating: string | null = null;\n // // Get the nodeId from the container's id\n // const container = document.querySelector('.recipe-page') as HTMLElement;\n // const nodeId = container.getAttribute('id');\n // const ratingSections = document.querySelectorAll('.rating-section');\n // // Check if the user has already rated this recipe in localStorage\n // const hasRated = localStorage.getItem(`rated_recipe_${nodeId}`);\n // if (hasRated) {\n // // User has already rated, do not allow rating again\n // disableStarClick();\n // ratingSections.forEach(section => {\n // const ulElement = section.querySelector(\".rating-list\");\n // if (ulElement) {\n // ulElement.classList.add(\"rated\");\n // }\n // const titleElement = section.querySelector(\".rating-title\");\n // if (titleElement) {\n // titleElement.textContent = \"Ditt betyg\";\n // }\n // });\n // }\n // // Attach a click event listener to each star element\n // const starElements = document.querySelectorAll('.star');\n // starElements.forEach(star => {\n // star.addEventListener('click', (event) => {\n // if (!starClicked) {\n // starClicked = true;\n // // Cast event.target to HTMLElement to access getAttribute\n // const starElement = event.target as HTMLElement;\n // // Get the data-rating attribute value\n // selectedRating = starElement.getAttribute('data-rating');\n // // Store the rating in localStorage and set the flag\n // localStorage.setItem(`rated_recipe_${nodeId}`, selectedRating);\n // // Fill the stars up to the rating\n // ratingSections.forEach(section => {\n // fillStars(parseInt(selectedRating!, 10), section);\n // const ulElement = section.querySelector(\".rating-list\");\n // if (ulElement) {\n // ulElement.classList.add(\"rated\");\n // }\n // const titleElement = section.querySelector(\".rating-title\");\n // if (titleElement) {\n // titleElement.textContent = \"Ditt betyg\";\n // }\n // });\n // // Show the rating button\n // ratingButton.style.display = 'block';\n // }\n // });\n // });\n // // Click event listener for the rating button\n // ratingButton.addEventListener('click', () => {\n // // Reset the starClicked flag\n // starClicked = false;\n // if (selectedRating) {\n // // Send the POST request only if a rating is selected\n // const url = `/umbraco/api/rate?userRating=${selectedRating}&nodeId=${nodeId}`;\n // fetch(url, {\n // method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json',\n // },\n // })\n // .then(data => {\n // // Handle the response from your controller\n // console.log(data);\n // })\n // .catch(error => {\n // // Handle any errors\n // console.error(error);\n // });\n // }\n // // Hide the rating button\n // ratingButton.style.display = 'none';\n // // You can add additional logic here for final approval if needed\n // // For demonstration purposes, you can clear the stored rating\n // const storedRating = localStorage.getItem(`rated_recipe_${nodeId}`);\n // if (storedRating) {\n // // Update the UI to reflect the approved rating\n // ratingSections.forEach(section => {\n // fillStars(parseInt(storedRating, 10), section);\n // const ulElement = section.querySelector(\".rating-list\");\n // if (ulElement) {\n // ulElement.classList.add(\"rated\");\n // }\n // const titleElement = section.querySelector(\".rating-title\");\n // if (titleElement) {\n // titleElement.textContent = \"Ditt betyg\";\n // }\n // });\n // // You can also send another request to update the server if needed\n // const url = `/umbraco/api/approveRating?userRating=${storedRating}&nodeId=${nodeId}`;\n // fetch(url, {\n // method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json',\n // },\n // })\n // .then(data => {\n // // Handle the response from your controller\n // console.log(data);\n // })\n // .catch(error => {\n // // Handle any errors\n // console.error(error);\n // });\n // }\n // // Disable star click after the button is pressed\n // disableStarClick();\n // });\n // // Function to fill stars up to the specified rating\n // const fillStars = (rating: number, element: any) => {\n // const starElements = element.querySelectorAll('.star');\n // starElements.forEach((star: any, index: number) => {\n // if (index < rating) {\n // star.classList.add('star--filled');\n // }\n // });\n // };\n // // Hover functionality for places where rating is possible.\n // const ratingContainers: NodeListOf = document.querySelectorAll(\".rating--possible\");\n // ratingContainers.forEach((container: HTMLElement) => {\n // const stars: NodeListOf | null = container.querySelectorAll(\".star\");\n // if (stars) {\n // stars.forEach((star: HTMLElement, index: number) => {\n // star.addEventListener(\"mouseenter\", () => {\n // stars.forEach((s: HTMLElement, i: number) => {\n // if (i <= index) {\n // s.classList.add(\"star--filled\");\n // } else {\n // s.classList.remove(\"star--filled\");\n // }\n // });\n // });\n // // This code will run only when you leave the area and haven't clicked a star\n // star.addEventListener(\"mouseleave\", () => {\n // if (!starClicked) {\n // stars.forEach((s: HTMLElement) => s.classList.remove(\"star--filled\"));\n // }\n // });\n // });\n // }\n // });\n // // Function to disable star click\n // function disableStarClick() {\n // starElements.forEach(star => {\n // const starElement = star as HTMLElement;\n // starElement.removeEventListener('click', starClickHandler);\n // starElement.style.pointerEvents = 'none';\n // });\n // }\n // // Click event handler for stars after the button is pressed\n // function starClickHandler(event: Event) {\n // event.preventDefault();\n // // Optionally, you can show a message to the user that they can't change their vote after pressing the button\n // }\n // }\n //};\n\n\nconst $c2b8862f66b08b93$export$72ea715c46d5cf91 = ()=>{\n const productPage = document.querySelector(\".product-page\");\n if (productPage) {\n /**\r\n * Show-More function on table\r\n */ const showMoreButton = document.getElementById(\"show-more-button\");\n const nutritionRows = document.querySelectorAll(\".nutrition-row\");\n if (showMoreButton) {\n showMoreButton.addEventListener(\"click\", ()=>{\n for(let i = 0; i < nutritionRows.length; i++)if (i >= 10) nutritionRows[i].classList.toggle(\"hidden\");\n showMoreButton.classList.toggle(\"show--active\");\n });\n /**\r\n * Adjust hight on load for both columns\r\n */ const layoutElement = document.querySelector(\".layout\");\n const pictureSectionElement = document.querySelector(\".picture-section__picture\");\n // Check if both elements exist\n if (layoutElement && pictureSectionElement) {\n const minWidth = 800; // Minimum screen width in pixels\n // Function to check screen width and set height\n const setHeightBasedOnScreenWidth = ()=>{\n if (window.innerWidth > minWidth) {\n const layoutHeight = layoutElement.clientHeight;\n pictureSectionElement.style.height = `${layoutHeight}px`;\n } else // Reset the height if the screen width is smaller than 1112px\n pictureSectionElement.style.height = \"auto\";\n };\n // Initial call to set the height based on the current screen width\n setHeightBasedOnScreenWidth();\n // Add an event listener to recheck when the window is resized\n window.addEventListener(\"resize\", setHeightBasedOnScreenWidth);\n }\n }\n }\n};\n\n\n/**\r\n * Initialize code.\r\n */ // TODO: Check if some components can be loaded only if they are needed, example CategoryBlock.\n// Lisa have some function that we can use.\n(0, $4c24304ff1ca3959$export$a2b865600a4d763c)();\n// Components\n(0, $11d0680e1da7e92b$export$311ccb8ac074141f)();\n(0, $9d98a66a6730cb48$export$9c309e2e513159f1)();\n// Blocks\n(0, $db4c2f2fc5fd67fb$export$94aebdb670af267)();\n// Pages\n(0, $94621af5561b012d$export$3a69145104aab10d)();\n// Save Recipes\n(0, $0a828b85fdc0fdef$export$f6c7087c59a3379a)();\n// Rate Recipes\n(0, $0b533b183dbfd919$export$cd745d17361e59d9)();\n// ProductPage\n(0, $c2b8862f66b08b93$export$72ea715c46d5cf91)();\n\n})();\n//# sourceMappingURL=main.js.map\n","/**\r\n * Import libraries and ts-files.\r\n */\r\n\r\nimport { initGlobal } from './global';\r\nimport { initHeader } from './header';\r\nimport { initHero } from './hero';\r\nimport { initCategoryBlock } from './category-block';\r\nimport { initRecipePages } from './recipe-pages';\r\nimport { initSaveRecipes } from './save-recipes';\r\nimport { initRateRecipe } from './rate-recipe';\r\nimport { initProductPage } from './product-page';\r\n\r\n\r\n/**\r\n * Initialize code.\r\n */\r\n// TODO: Check if some components can be loaded only if they are needed, example CategoryBlock.\r\n// Lisa have some function that we can use.\r\n\r\ninitGlobal();\r\n\r\n// Components\r\ninitHeader();\r\ninitHero();\r\n\r\n// Blocks\r\ninitCategoryBlock();\r\n\r\n// Pages\r\ninitRecipePages();\r\n\r\n// Save Recipes\r\ninitSaveRecipes();\r\n\r\n// Rate Recipes\r\ninitRateRecipe();\r\n\r\n// ProductPage\r\ninitProductPage();\r\n\r\n\r\n","export const initGlobal = () => {\r\n /**\r\n * Show-more-function\r\n */\r\n const heroShowMore = () => {\r\n const heroReadMoreToggle = document.querySelector(\".hero__show-more-toggle\") as HTMLButtonElement;\r\n const heroTextContainer = document.querySelector(\".hero__text\") as HTMLParagraphElement;\r\n\r\n if (heroReadMoreToggle && heroTextContainer) {\r\n heroReadMoreToggle.addEventListener(\"click\", () => {\r\n heroReadMoreToggle.classList.toggle(\"active\");\r\n heroTextContainer.classList.toggle(\"active\");\r\n });\r\n }\r\n }\r\n\r\n heroShowMore();\r\n\r\n\r\n const textShowMore = () => {\r\n\r\n const heroReadMoreToggles = document.querySelectorAll(\".text-image-block__show-more-toggle\");\r\n\r\n\r\n heroReadMoreToggles.forEach((heroReadMoreToggle) => {\r\n\r\n const heroTextContainer = heroReadMoreToggle.closest(\".text-image-block\").querySelector(\".text-image__text\") as HTMLParagraphElement;\r\n\r\n if (heroReadMoreToggle && heroTextContainer) {\r\n heroReadMoreToggle.addEventListener(\"click\", () => {\r\n heroReadMoreToggle.classList.toggle(\"active\");\r\n heroTextContainer.classList.toggle(\"active\");\r\n });\r\n }\r\n });\r\n }\r\n\r\n textShowMore();\r\n\r\n\r\n const contactShowMore = () => {\r\n const toggleButtons = document.querySelectorAll(\".contacts-puff-block__show-more-toggle\");\r\n const textContainers = document.querySelectorAll(\".contacts-puff-block__contact-puff--text\");\r\n\r\n toggleButtons.forEach((button, index) => {\r\n button.addEventListener(\"click\", () => {\r\n button.classList.toggle(\"active\");\r\n textContainers[index].classList.toggle(\"contacts-puff-block__contact-puff--text-active\");\r\n\r\n // Loop through all buttons to apply styling\r\n //toggleButtons.forEach((btn, idx) => {\r\n // if (idx !== index) {\r\n // (btn as HTMLElement).style.margin = \"0\"; // Apply styling to all buttons except the clicked one\r\n // }\r\n // if (idx == index) {\r\n // (btn as HTMLElement).style.margin = \"auto\"; // Apply styling to all buttons except the clicked one\r\n // }\r\n //});\r\n });\r\n });\r\n }\r\n\r\n contactShowMore();\r\n\r\n\r\n const tableShowMore = () => {\r\n const heroReadMoreToggle = document.querySelector(\".text-box__header--show-more-toggle\") as HTMLButtonElement;\r\n const heroTextContainer = document.querySelector(\".text-box__table\") as HTMLTableElement;\r\n\r\n if (heroReadMoreToggle && heroTextContainer) {\r\n heroReadMoreToggle.addEventListener(\"click\", () => {\r\n heroReadMoreToggle.classList.toggle(\"text-box__header--active\");\r\n heroTextContainer.classList.toggle(\"text-box__table--active\");\r\n console.log(\"test\");\r\n });\r\n }\r\n }\r\n\r\n tableShowMore();\r\n\r\n const initializeImageVideoControls = () => {\r\n \r\n const imageVideosArray = document.querySelectorAll(\".text-image-block\");\r\n\r\n imageVideosArray.forEach((imageVideoControls) => {\r\n const playPauseButton = imageVideoControls.querySelector(\".text-image-block__play-pause-button\") as HTMLButtonElement;\r\n\r\n if (playPauseButton) {\r\n playPauseButton.addEventListener(\"click\", () => {\r\n playPauseButton.classList.toggle(\"active\");\r\n\r\n \r\n const videos = imageVideoControls.querySelectorAll(\".text-image-block__video\");\r\n\r\n \r\n videos.forEach((video) => {\r\n const videoElement = video as HTMLVideoElement; \r\n\r\n if (videoElement.paused) {\r\n videoElement.play();\r\n } else {\r\n videoElement.pause();\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n initializeImageVideoControls();\r\n\r\n}\r\n\r\n\r\n","export const initHeader = () => {\r\n const header = document.querySelector(\".site-header\") as HTMLElement;\r\n\r\n /**\r\n * Lock Scroll to current position\r\n */\r\n let scrollLocked = false;\r\n let scrollPosition: number | null = null;\r\n\r\n const lockScroll = () => {\r\n if (!scrollLocked) {\r\n scrollPosition = window.scrollY;\r\n document.body.style.overflow = 'hidden';\r\n document.body.style.position = 'fixed';\r\n document.body.style.top = `-${scrollPosition}px`;\r\n scrollLocked = true;\r\n }\r\n };\r\n\r\n const unlockScroll = () => {\r\n if (scrollLocked) {\r\n document.body.style.overflow = 'auto';\r\n document.body.style.position = 'static';\r\n document.body.style.top = 'auto';\r\n if (scrollPosition !== null) {\r\n window.scrollTo(0, scrollPosition);\r\n scrollPosition = null;\r\n }\r\n scrollLocked = false;\r\n }\r\n };\r\n\r\n const toggleScrollLock = () => {\r\n if (scrollLocked) {\r\n unlockScroll();\r\n } else {\r\n lockScroll();\r\n }\r\n };\r\n\r\n /**\r\n * Mobile Navigation\r\n */\r\n const navToggle = document.querySelector(\"#nav-toggle\");\r\n\r\n navToggle.addEventListener(\"click\", (e) => {\r\n document.body.classList.toggle(\"scroll--disabled\");\r\n\r\n header.classList.toggle(\"mobile-nav--open\");\r\n navToggle.classList.toggle(\"nav-toggle--active\");\r\n\r\n });\r\n\r\n\r\n /**\r\n * Window Scroll Header\r\n */\r\n window.onscroll = () => {\r\n if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {\r\n header.classList.add(\"scrolled\");\r\n document.body.classList.add(\"scrolled\");\r\n } else {\r\n header.classList.remove(\"scrolled\");\r\n document.body.classList.remove(\"scrolled\");\r\n }\r\n };\r\n\r\n /**\r\n * Toggle Saved Recipes Container\r\n */\r\n const savedRecipesListToggle: NodeListOf = document.querySelectorAll('.recipes-toggle');\r\n const savedRecipesList: HTMLElement = document.querySelector(\".saved-recipes-section\");\r\n const overlay: HTMLElement = document.getElementById('body-overlay-id');\r\n const overlayHeader: HTMLElement = document.querySelector('.header-overlay');\r\n\r\n const toggleOverlay = (): void => {\r\n if (overlay.style.display == 'block') {\r\n overlay.style.display = 'none';\r\n overlayHeader.style.display = 'none';\r\n } else {\r\n overlay.style.display = 'block';\r\n overlayHeader.style.display = 'block';\r\n }\r\n };\r\n\r\n // Event listener for the \"ESC\" key press\r\n document.addEventListener(\"keydown\", (event: KeyboardEvent) => {\r\n if (event.key == \"Escape\" || event.key === \"Esc\") {\r\n savedRecipesList.classList.remove(\"saved-recipes-section--open\");\r\n overlay.style.display = 'none';\r\n overlayHeader.style.display = 'none';\r\n // toggleScrollLock();\r\n }\r\n });\r\n\r\n savedRecipesListToggle.forEach(button => {\r\n button.addEventListener(\"click\", () => {\r\n savedRecipesList.classList.toggle(\"saved-recipes-section--open\");\r\n toggleOverlay();\r\n // toggleScrollLock();\r\n });\r\n });\r\n\r\n /**\r\n * Check the amount of links per item in Desktop-dropdowns,\r\n * If the amount of links are more than X, add a span-attribute (scss) to the item so the item takes up 2 slots on the grid instead of one.\r\n */\r\n type DropdownItem = HTMLElement | null;\r\n\r\n const adjustGridSpan = () => {\r\n const sublinkContainers = document.querySelectorAll('.sublinks');\r\n\r\n sublinkContainers.forEach((container) => {\r\n const sublinksLinks = container.querySelectorAll('.sublinks__link');\r\n\r\n if (sublinksLinks.length > 5) {\r\n const dropdownItem = container.closest('.dropdown__item');\r\n if (dropdownItem) {\r\n dropdownItem.classList.add('grid-span-2');\r\n }\r\n }\r\n });\r\n };\r\n\r\n const checkDropdownsAndAddClass = () => {\r\n const dropdowns = document.querySelectorAll('.dropdown');\r\n\r\n dropdowns.forEach((dropdown) => {\r\n const dropdownItems = dropdown.querySelectorAll('.dropdown__item');\r\n\r\n dropdownItems.forEach((dropdownItem) => {\r\n const sublinkLinks = dropdownItem.querySelectorAll('.sublinks__link');\r\n\r\n if (sublinkLinks.length === 0) {\r\n const dropdownList = dropdown.querySelector('.dropdown__list');\r\n\r\n if (dropdownList) {\r\n dropdownList.classList.add('no-grid');\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n const checkSublinkItems = () => {\r\n // Select all elements with the class \".sublink\"\r\n const sublinks: NodeListOf = document.querySelectorAll(\".sublinks\");\r\n\r\n // Iterate through each \".sublink\" element\r\n sublinks.forEach((sublink: HTMLElement) => {\r\n // Select all elements with the class \".sublinkks__item\" inside the current \".sublink\"\r\n const sublinkItems: NodeListOf = sublink.querySelectorAll(\".sublinks__item\");\r\n\r\n // Check if there are more than x \".sublinkks__item\" elements\r\n if (sublinkItems.length > 9) {\r\n sublink.classList.add(\"more-than-x\");\r\n }\r\n });\r\n };\r\n\r\n const addClassToLastItem = () => {\r\n const dropdowns = document.querySelectorAll('.dropdown');\r\n \r\n dropdowns.forEach((dropdown) => {\r\n const dropdownItems = Array.from(dropdown.querySelectorAll('.dropdown__item'));\r\n \r\n if (dropdownItems.length >= 2) {\r\n const lastItem = dropdownItems[dropdownItems.length - 1];\r\n const nextToLastItem = dropdownItems[dropdownItems.length - 2];\r\n \r\n if (!lastItem.classList.contains('grid-span-2')) {\r\n lastItem.classList.add('last-item');\r\n }\r\n if (!nextToLastItem.classList.contains('grid-span-2')) {\r\n nextToLastItem.classList.add('last-item');\r\n }\r\n }\r\n });\r\n };\r\n\r\n // Call the function when the document is ready\r\n document.addEventListener('DOMContentLoaded', () => {\r\n adjustGridSpan();\r\n checkDropdownsAndAddClass();\r\n checkSublinkItems();\r\n addClassToLastItem();\r\n });\r\n}","export const initHero = () => {\r\n const playPauseButton = document.querySelector(\".play-pause-button\") as HTMLButtonElement;\r\n const video = document.querySelector(\".picture-section__video\") as HTMLVideoElement;\r\n\r\n if (playPauseButton) {\r\n playPauseButton.addEventListener(\"click\", () => {\r\n playPauseButton.classList.toggle(\"active\");\r\n\r\n if (video.paused) {\r\n video.play();\r\n } else {\r\n video.pause();\r\n }\r\n });\r\n }\r\n}","import Splide from '@splidejs/splide';\r\n\r\nexport const initCategoryBlock = () => {\r\n /**\r\n * Splide slider on mobile\r\n */\r\n const categoryPuffBlock = document.querySelector(\".category-puff-block\") as HTMLElement;\r\n if (categoryPuffBlock) {\r\n new Splide( '.splide-category-puff', {\r\n perPage: 1,\r\n gap: 16,\r\n lazyLoad: 'nearby',\r\n label: 'Kategoripuffar',\r\n pagination: false,\r\n focus: 0,\r\n omitEnd: true,\r\n reducedMotion: {\r\n speed: 0,\r\n rewindSpeed: 0,\r\n },\r\n mediaQuery: 'min',\r\n breakpoints: {\r\n 1430: {\r\n destroy: true,\r\n },\r\n }\r\n }).mount();\r\n \r\n \r\n // const updatePaginationText = () => {\r\n // const splidePaginationPages = document.querySelectorAll(\".splide__pagination__page\");\r\n // const maxNumber = splidePaginationPages.length;\r\n \r\n // splidePaginationPages.forEach((page, index) => {\r\n // page.textContent = `${index + 1} / ${maxNumber} slides`;\r\n // });\r\n // };\r\n\r\n // const paginationElement = document.querySelector('.splide__pagination');\r\n // const paginationArrows = document.querySelector('.splide__arrows');\r\n\r\n // const hideArrows = () => {\r\n // if (paginationArrows) {\r\n // paginationArrows.classList.toggle(\"hide\");\r\n // }\r\n // }\r\n\r\n // if (paginationElement && getComputedStyle(paginationElement).display !== 'none') {\r\n // updatePaginationText();\r\n // } else {\r\n // hideArrows();\r\n // window.addEventListener('resize', hideArrows);\r\n // }\r\n \r\n // window.addEventListener(\"resize\", updatePaginationText);\r\n }\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 initRecipePages = () => {\r\n const recipeArchive = document.querySelector(\".recipe-archive\") as HTMLElement;\r\n const recipePage = document.querySelector(\".recipe-page\") as HTMLElement;\r\n const recipePageType = document.querySelector(\".recipe-pagetype\") as HTMLElement;\r\n const productArchive = document.querySelector(\".product-archive\") as HTMLElement;\r\n const productPage = document.querySelector(\".product-page\") as HTMLElement;\r\n const productPageType = document.querySelector(\".product-pagetype\") as HTMLElement;\r\n if (recipePageType) {\r\n /**\r\n * Toggle navigation on mobile & tablet.\r\n */\r\n const buttonOpen = recipePageType.querySelector(\".button--open\") as HTMLButtonElement;\r\n const buttonClose = recipePageType.querySelector(\".button--close\") as HTMLButtonElement;\r\n\r\n buttonOpen.addEventListener(\"click\", () => {\r\n recipePageType.classList.add(\"nav--open\");\r\n });\r\n\r\n buttonClose.addEventListener(\"click\", () => {\r\n recipePageType.classList.remove(\"nav--open\");\r\n });\r\n }\r\n if (productPageType) {\r\n /**\r\n * Toggle navigation on mobile & tablet.\r\n */\r\n const buttonOpen = productPageType.querySelector(\".button--open\") as HTMLButtonElement;\r\n const buttonClose = productPageType.querySelector(\".button--close\") as HTMLButtonElement;\r\n\r\n buttonOpen.addEventListener(\"click\", () => {\r\n productPageType.classList.add(\"nav--open\");\r\n });\r\n\r\n buttonClose.addEventListener(\"click\", () => {\r\n productPageType.classList.remove(\"nav--open\");\r\n });\r\n }\r\n\r\n\r\n if (recipeArchive) {\r\n /**\r\n * Update amount of hits when user have searched\r\n * & Hide CategoryPuffs while a search is active.\r\n */\r\n const numberOfHitsSpan = recipeArchive.querySelector(\".number-of-hits\") as HTMLSpanElement;\r\n const numberOfHitsText = recipeArchive.querySelector(\".number-of-hits-text\") as HTMLSpanElement;\r\n if (numberOfHitsSpan) {\r\n const numberOfHits = recipeArchive.querySelectorAll(\".recipe-puff-item\");\r\n numberOfHitsSpan.textContent = numberOfHits.length.toString();\r\n\r\n if (numberOfHits.length == 1) {\r\n numberOfHitsText.textContent = \"Träff på\";\r\n }\r\n\r\n const categoryPuffBlock: HTMLElement = document.querySelector(\".category-puff-block\");\r\n if (categoryPuffBlock) {\r\n categoryPuffBlock.classList.add(\"display--none\");\r\n }\r\n }\r\n\r\n const herbDropdown = document.getElementById(\"herbDropdown\") as HTMLSelectElement;\r\n if (herbDropdown) {\r\n herbDropdown.onchange = submitHerbSearch;\r\n }\r\n\r\n function submitHerbSearch() {\r\n const herbDropdown = document.getElementById(\"herbDropdown\") as HTMLSelectElement;\r\n const selectedHerb = herbDropdown.value;\r\n\r\n let query = selectedHerb === \"all\" ? \"\" : selectedHerb;\r\n\r\n const newUrl = `${window.location.origin}${window.location.pathname}?q=${encodeURIComponent(query)}`;\r\n\r\n window.location.href = newUrl;\r\n }\r\n\r\n }\r\n\r\n const recipe = document.querySelector(\".recipe-puff\") as HTMLElement;\r\n if (recipe) {\r\n const saveButtons = document.querySelectorAll(\".recipe-puff__save-button\");\r\n\r\n saveButtons.forEach((button) => {\r\n button.addEventListener(\"click\", () => {\r\n button.classList.toggle(\"recipe--saved\");\r\n });\r\n });\r\n }\r\n\r\n if (recipePage) {\r\n /**\r\n * Swap between ingredients and instructions\r\n */\r\n const ingredientsButton = recipePage.querySelector(\".ingredients-button\") as HTMLButtonElement;\r\n const instructionsButton = recipePage.querySelector(\".instructions-button\") as HTMLButtonElement;\r\n const ingredientsSection = recipePage.querySelector(\".ingredients-section\") as HTMLElement;\r\n const instructionsSection = recipePage.querySelector(\".instructions-section\") as HTMLElement;\r\n\r\n ingredientsButton.addEventListener(\"click\", () => {\r\n ingredientsButton.classList.add(\"active\");\r\n instructionsButton.classList.remove(\"active\");\r\n ingredientsSection.classList.add(\"active\");\r\n instructionsSection.classList.remove(\"active\");\r\n });\r\n\r\n instructionsButton.addEventListener(\"click\", () => {\r\n instructionsButton.classList.add(\"active\");\r\n ingredientsButton.classList.remove(\"active\");\r\n instructionsSection.classList.add(\"active\");\r\n ingredientsSection.classList.remove(\"active\");\r\n });\r\n\r\n /**\r\n * Check checkboxes and save in session-storage\r\n */\r\n\r\n\r\n\r\n const isCheckboxChecked = (index: number): boolean => {\r\n const checkboxes = document.querySelectorAll('.checkbox');\r\n\r\n let isChecked = false;\r\n\r\n checkboxes.forEach((checkbox, currentIndex) => {\r\n if (currentIndex === index) {\r\n const checkboxId = checkbox.id;\r\n const isCheckedInStorage = sessionStorage.getItem(checkboxId);\r\n\r\n isChecked = isCheckedInStorage === 'true';\r\n }\r\n });\r\n\r\n return isChecked;\r\n };\r\n\r\n\r\n document.querySelectorAll('.checkbox').forEach((checkbox, index) => {\r\n checkbox.addEventListener('click', () => {\r\n checkbox.classList.toggle('checked');\r\n checkbox.parentElement.classList.toggle('line-through');\r\n\r\n // Determine the checkbox's index from its id\r\n const checkboxId = checkbox.id;\r\n const index = checkboxId;\r\n\r\n\r\n // Save the state in sessionStorage\r\n const isChecked = checkbox.classList.contains('checked');\r\n sessionStorage.setItem(`${index}`, isChecked.toString());\r\n });\r\n\r\n // Check sessionStorage to restore the state on page load\r\n if (isCheckboxChecked(index)) {\r\n checkbox.classList.add('checked');\r\n checkbox.parentElement.classList.toggle('line-through');\r\n }\r\n });\r\n console.log(sessionStorage);\r\n /**\r\n * Copy page URL when click on copy-button.\r\n */\r\n const copyButton: HTMLButtonElement | null = document.querySelector(\".copy-button\");\r\n\r\n if (document.body.contains(copyButton)) {\r\n const currentURL: string = window.location.href;\r\n const copyTextContainer: HTMLElement | null = document.querySelector(\".copy-status\") as HTMLElement;\r\n\r\n copyButton.addEventListener(\"click\", async (e) => {\r\n try {\r\n await navigator.clipboard.writeText(currentURL);\r\n copyTextContainer.classList.add(\"copy-status--copied\");\r\n\r\n setTimeout(() => {\r\n copyTextContainer.classList.remove(\"copy-status--copied\");\r\n }, 1000);\r\n } catch (err) {\r\n console.error(\"Unable to copy URL: \" + err);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Print page when click on print-button.\r\n */\r\n const printButton: HTMLButtonElement | null = document.querySelector(\".print-button\");\r\n\r\n if (document.body.contains(printButton)) {\r\n printButton.addEventListener(\"click\", () => {\r\n window.print();\r\n })\r\n }\r\n\r\n\r\n /**\r\n * Share page when click on share-button.\r\n */\r\n const shareButton: HTMLButtonElement | null = document.querySelector(\".share-button\");\r\n\r\n if (document.body.contains(shareButton)) {\r\n shareButton.addEventListener(\"click\", () => {\r\n const currentUrl = window.location.href;\r\n navigator.share({\r\n url: currentUrl\r\n });\r\n })\r\n }\r\n }\r\n}","export const initSaveRecipes = () => {\r\n /**\r\n * Following code makes it possible to save/remove and interact with saved recipes through both recipe-puffs, recipe-archive, all recipe-category and recipe-pages.\r\n */\r\n interface Recipe {\r\n name: string;\r\n url: string;\r\n image: string;\r\n }\r\n\r\n // Get all recipe elements on the page\r\n const recipeElements: NodeListOf = document.querySelectorAll('.recipe');\r\n\r\n // Initialize saved recipes from local storage or an empty array\r\n let savedRecipes: Recipe[] = JSON.parse(localStorage.getItem('savedRecipes')) || [];\r\n\r\n // Check if a recipe is saved\r\n const isRecipeSaved = (recipeName: string): boolean => {\r\n return savedRecipes.some((recipe) => recipe.name === recipeName);\r\n };\r\n\r\n // Save or unsave a recipe\r\n const toggleSaveRecipe = (recipeData: Recipe): void => {\r\n const index: number = savedRecipes.findIndex((recipe) => recipe.name === recipeData.name);\r\n if (index === -1) {\r\n savedRecipes.push(recipeData);\r\n } else {\r\n savedRecipes.splice(index, 1);\r\n }\r\n localStorage.setItem('savedRecipes', JSON.stringify(savedRecipes));\r\n };\r\n\r\n // Update the heart button class\r\n const updateHeartButtonClass = (heartButton: HTMLButtonElement, isSaved: boolean): void => {\r\n heartButton.classList.toggle('recipe--saved', isSaved);\r\n };\r\n\r\n // Reset the heart button on the current page\r\n const resetHeartButton = (recipeName: string, isSaved: boolean): void => {\r\n const recipeElement = document.querySelector(`.recipe[data-recipe-name=\"${recipeName}\"]`);\r\n if (recipeElement) {\r\n const heartButton: HTMLButtonElement | null = recipeElement.querySelector('.heart-button') as HTMLButtonElement | null;\r\n if (heartButton) {\r\n updateHeartButtonClass(heartButton, isSaved);\r\n }\r\n }\r\n };\r\n\r\n // Remove a saved recipe\r\n const removeSavedRecipe = (recipeName: string): void => {\r\n const index: number = savedRecipes.findIndex((recipe) => recipe.name === recipeName);\r\n if (index !== -1) {\r\n savedRecipes.splice(index, 1);\r\n localStorage.setItem('savedRecipes', JSON.stringify(savedRecipes));\r\n displaySavedRecipes();\r\n isAnySaved();\r\n\r\n // Reset the heart button on the current page\r\n resetHeartButton(recipeName, false);\r\n }\r\n };\r\n\r\n // Create and attach a remove button to a saved recipe item\r\n const createRemoveButton = (recipeName: string): HTMLButtonElement => {\r\n const removeButton: HTMLButtonElement = document.createElement('button');\r\n removeButton.textContent = '';\r\n removeButton.classList.add('remove-button');\r\n removeButton.classList.add('recipe--saved');\r\n removeButton.addEventListener('click', () => {\r\n removeSavedRecipe(recipeName);\r\n isAnySaved();\r\n });\r\n return removeButton;\r\n };\r\n\r\n // Display saved recipes in the \"Saved Recipes\" section\r\n const displaySavedRecipes = (): void => {\r\n const savedRecipeList: HTMLUListElement | null = document.getElementById('saved-recipe-list') as HTMLUListElement | null;\r\n if (!savedRecipeList) return;\r\n\r\n savedRecipeList.innerHTML = '';\r\n savedRecipes.forEach((recipe) => {\r\n // Create list items for each saved recipe\r\n const listItem: HTMLLIElement = document.createElement('li');\r\n const article: HTMLElement = document.createElement('article');\r\n\r\n article.classList.add('saved-recipe-item');\r\n\r\n // Create HTML to display saved recipes\r\n article.innerHTML = `\r\n \r\n \r\n \"${recipe.name}\"\r\n \r\n
\r\n

${recipe.name}

\r\n
\r\n
\r\n `;\r\n\r\n // Create and attach the remove button\r\n const removeButton: HTMLButtonElement = createRemoveButton(recipe.name);\r\n article.appendChild(removeButton); // Append Remove Button to Article\r\n\r\n listItem.appendChild(article); // Append Article to List Item\r\n\r\n savedRecipeList.appendChild(listItem);\r\n\r\n isAnySaved();\r\n });\r\n };\r\n\r\n // Add click event listeners to the recipe elements\r\n recipeElements.forEach((recipeElement) => {\r\n const heartButton: HTMLButtonElement | null = recipeElement.querySelector('.heart-button') as HTMLButtonElement | null;\r\n if (!heartButton) return;\r\n\r\n const recipeName: string | null = recipeElement.getAttribute('data-recipe-name');\r\n if (!recipeName) return;\r\n\r\n // Check if the recipe is saved and update the heart button class\r\n const isSaved: boolean = isRecipeSaved(recipeName);\r\n updateHeartButtonClass(heartButton, isSaved);\r\n\r\n heartButton.addEventListener('click', () => {\r\n const recipeData: Recipe = {\r\n name: recipeName,\r\n url: recipeElement.getAttribute('data-recipe-url') || '',\r\n image: recipeElement.getAttribute('data-recipe-image') || '',\r\n };\r\n toggleSaveRecipe(recipeData);\r\n updateHeartButtonClass(heartButton, isRecipeSaved(recipeName));\r\n displaySavedRecipes();\r\n isAnySaved();\r\n });\r\n });\r\n\r\n const isAnySaved = () => {\r\n /**\r\n * Modify heart on Toggle saved Recipes\r\n */\r\n const openSavedRecipesButton: HTMLButtonElement = document.querySelector(\".toggle-saved-recipies\");\r\n if (savedRecipes.length > 0) {\r\n openSavedRecipesButton.classList.add(\"contains-saved-recipes\");\r\n } else {\r\n openSavedRecipesButton.classList.remove(\"contains-saved-recipes\");\r\n }\r\n }\r\n\r\n // Display saved recipes initially\r\n displaySavedRecipes(); \r\n};","// Define a function to initialize the rating functionality\r\nexport const initRateRecipe = () => {\r\n const recipePage = document.querySelector(\".recipe-page\");\r\n\r\n if (recipePage) {\r\n // Check if star is clicked to turn of mouseleave for animation on stars.\r\n let starClicked = false;\r\n\r\n // Get the nodeId from the container's id\r\n const container = document.querySelector('.recipe-page') as HTMLElement;\r\n const nodeId = container.getAttribute('id');\r\n const ratingSections = document.querySelectorAll('.rating-section');\r\n\r\n // Check if the user has already rated this recipe in localStorage\r\n const hasRated = localStorage.getItem(`rated_recipe_${nodeId}`);\r\n if (hasRated) {\r\n // User has already rated, do not allow rating again\r\n ratingSections.forEach(section => {\r\n const ulElement = section.querySelector(\".rating-list\");\r\n if (ulElement) {\r\n ulElement.classList.add(\"rated\");\r\n }\r\n const titleElement = section.querySelector(\".rating-title\");\r\n if (titleElement) {\r\n titleElement.textContent = \"Ditt betyg\";\r\n }\r\n });\r\n }\r\n\r\n // Initialize the rating button\r\n const ratingButtons = Array.from(document.querySelectorAll('.rating-button')) as HTMLButtonElement[];\r\n\r\n ratingButtons.forEach(ratingButton => {\r\n \r\n ratingButton.style.display = 'none';\r\n \r\n \r\n\r\n let selectedRating: string | null = null;\r\n\r\n // Attach a click event listener to each star element\r\n const starElements = document.querySelectorAll('.star');\r\n starElements.forEach(star => {\r\n star.addEventListener('click', (event: MouseEvent) => {\r\n // Continue with the rating process\r\n const starElement = event.target as HTMLElement;\r\n selectedRating = starElement.getAttribute('data-rating');\r\n\r\n // Highlight the selected rating and show filled stars up to the selected rating\r\n starElements.forEach(s => {\r\n const sRating = s.getAttribute('data-rating');\r\n if (sRating) {\r\n const fillStar = parseInt(sRating, 10) <= parseInt(selectedRating || '0', 10);\r\n s.classList.toggle('selected', sRating === selectedRating);\r\n s.classList.toggle('filled', fillStar);\r\n }\r\n });\r\n\r\n // Show the rating button after selecting a rating\r\n ratingButton.style.display = 'block';\r\n });\r\n });\r\n\r\n // Attach a click event listener to the rating button\r\n ratingButton.addEventListener('click', () => {\r\n if (selectedRating) {\r\n // Continue with the rating process\r\n let starClicked = true;\r\n\r\n // Rest of the existing code...\r\n localStorage.setItem(`rated_recipe_${nodeId}`, selectedRating);\r\n\r\n const url = `/umbraco/api/rate?userRating=${selectedRating}&nodeId=${nodeId}`;\r\n\r\n fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n })\r\n .then(data => {\r\n // Handle the response from your controller\r\n console.log(data);\r\n })\r\n .catch(error => {\r\n // Handle any errors\r\n console.error(error);\r\n });\r\n\r\n // Update other elements after submitting the rating\r\n updateUIAfterRating();\r\n }\r\n });\r\n\r\n // Function to update other UI elements after submitting the rating\r\n const updateUIAfterRating = () => {\r\n // Update other UI elements as needed\r\n ratingSections.forEach(section => {\r\n const ulElement = section.querySelector(\".rating-list\");\r\n if (ulElement) {\r\n ulElement.classList.add(\"rated\");\r\n }\r\n const titleElement = section.querySelector(\".rating-title\");\r\n if (titleElement) {\r\n titleElement.textContent = \"Ditt betyg\";\r\n }\r\n });\r\n\r\n // Hide the rating button after submitting the rating\r\n ratingButton.style.display = 'none';\r\n };\r\n\r\n })\r\n\r\n\r\n\r\n\r\n // Function to fill stars up to the specified rating\r\n const fillStars = (rating: number, element: any) => {\r\n const starElements = element.querySelectorAll('.star');\r\n starElements.forEach((star: any, index: number) => {\r\n if (index < rating) {\r\n star.classList.add('star--filled');\r\n }\r\n });\r\n };\r\n\r\n // Hover functionality for places where rating is possible.\r\n const ratingContainers: NodeListOf = document.querySelectorAll(\".rating--possible\");\r\n\r\n ratingContainers.forEach((container: HTMLElement) => {\r\n const stars: NodeListOf | null = container.querySelectorAll(\".star\");\r\n\r\n if (stars) {\r\n stars.forEach((star: HTMLElement, index: number) => {\r\n star.addEventListener(\"mouseenter\", () => {\r\n stars.forEach((s: HTMLElement, i: number) => {\r\n if (i <= index) {\r\n s.classList.add(\"star--filled\");\r\n } else {\r\n s.classList.remove(\"star--filled\");\r\n }\r\n });\r\n });\r\n\r\n // This code will run only when you leave the area and haven't clicked a star\r\n star.addEventListener(\"mouseleave\", () => {\r\n if (!starClicked) {\r\n stars.forEach((s: HTMLElement) => s.classList.remove(\"star--filled\"));\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n ratingSections.forEach(section => {\r\n // Check if a rating is stored in localStorage and fill the stars\r\n const storedRating = localStorage.getItem(`rated_recipe_${nodeId}`);\r\n if (storedRating) {\r\n fillStars(parseInt(storedRating, 10), section);\r\n }\r\n });\r\n }\r\n};\r\n\r\n// ...\r\n//export const initRateRecipe = () => {\r\n// const recipePage = document.querySelector(\".recipe-page\");\r\n\r\n// if (recipePage) {\r\n// let starClicked = false;\r\n// let ratingConfirmed = false;\r\n// let currentRating = 0;\r\n\r\n// const container = document.querySelector('.recipe-page') as HTMLElement;\r\n// const nodeId = container.getAttribute('id');\r\n// const ratingSections: NodeListOf = document.querySelectorAll('.rating-section');\r\n\r\n// const hasRated = localStorage.getItem(`rated_recipe_${nodeId}`);\r\n// if (hasRated && !ratingConfirmed) {\r\n// // Anv�ndaren har inte bekr�ftat �nnu, fyll stj�rnorna fr�n localStorage\r\n// currentRating = parseInt(hasRated, 10);\r\n// fillStars(currentRating, ratingSections);\r\n// }\r\n\r\n// const starElements = document.querySelectorAll('.star');\r\n// starElements.forEach(star => {\r\n// star.addEventListener('click', (event) => {\r\n// starClicked = true;\r\n// const starElement = event.target as HTMLElement;\r\n// currentRating = parseInt(starElement.getAttribute('data-rating') || \"0\", 10);\r\n// localStorage.setItem(`rated_recipe_${nodeId}`, currentRating.toString());\r\n\r\n// const ratingButton = document.querySelector('.rating-button') as HTMLElement;\r\n// ratingButton.style.display = 'inline';\r\n\r\n// const ratingSections = document.querySelectorAll('.rating-section');\r\n\r\n// function isHTMLElement(element: Element): element is HTMLElement {\r\n// return element instanceof HTMLElement;\r\n// }\r\n\r\n// ratingSections.forEach(section => {\r\n// if (isHTMLElement(section)) {\r\n// fillStars(currentRating, section as any);\r\n\r\n// const ulElement = section.querySelector(\".rating-list\");\r\n// if (ulElement) {\r\n// ulElement.classList.add(\"rated\");\r\n// }\r\n\r\n// const titleElement = section.querySelector(\".rating-title\");\r\n// if (titleElement) {\r\n// titleElement.textContent = \"Ditt betyg\";\r\n// }\r\n// }\r\n// });\r\n// });\r\n// });\r\n\r\n// const ratingButton = document.querySelector('.rating-button') as HTMLElement;\r\n// ratingButton.addEventListener('click', () => {\r\n// if (!ratingConfirmed) {\r\n// ratingConfirmed = true;\r\n\r\n// // Skicka betyget efter bekr�ftelse\r\n// const url = `/umbraco/api/rate?userRating=${currentRating}&nodeId=${nodeId}`;\r\n// fetch(url, {\r\n// method: 'POST',\r\n// headers: {\r\n// 'Content-Type': 'application/json',\r\n// },\r\n// })\r\n// .then(data => {\r\n// console.log(data);\r\n// })\r\n// .catch(error => {\r\n// console.error(error);\r\n// });\r\n\r\n// ratingButton.style.display = 'none';\r\n\r\n// // Spara informationen om bekr�ftat betyg i localStorage\r\n// localStorage.setItem(`rating_confirmed_${nodeId}`, 'true');\r\n// localStorage.removeItem(`rated_recipe_${nodeId}`);\r\n\r\n// // Update the UI after voting\r\n// ratingSections.forEach(section => {\r\n// const isHTMLElement = (element: Element): element is HTMLElement => {\r\n// return element instanceof HTMLElement;\r\n// };\r\n// if (isHTMLElement(section)) {\r\n// fillStars(currentRating, section as any);\r\n\r\n// const ulElement = section.querySelector(\".rating-list\");\r\n// if (ulElement) {\r\n// ulElement.classList.add(\"rated\");\r\n// }\r\n\r\n// const titleElement = section.querySelector(\".rating-title\");\r\n// if (titleElement) {\r\n// titleElement.textContent = \"Ditt betyg\";\r\n// }\r\n// }\r\n// });\r\n// }\r\n// });\r\n\r\n// const ratingContainers: NodeListOf = document.querySelectorAll(\".rating--possible\");\r\n\r\n// ratingContainers.forEach((container: HTMLElement) => {\r\n// const stars: NodeListOf | null = container.querySelectorAll(\".star\");\r\n\r\n// if (stars) {\r\n// stars.forEach((star: HTMLElement, index: number) => {\r\n// star.addEventListener(\"mouseenter\", () => {\r\n// stars.forEach((s: HTMLElement, i: number) => {\r\n// if (i <= index) {\r\n// s.classList.add(\"star--filled\");\r\n// } else {\r\n// s.classList.remove(\"star--filled\");\r\n// }\r\n// });\r\n// });\r\n\r\n// star.addEventListener(\"mouseleave\", () => {\r\n// if (!starClicked) {\r\n// stars.forEach((s: HTMLElement) => s.classList.remove(\"star--filled\"));\r\n// }\r\n// });\r\n// });\r\n// }\r\n// });\r\n// }\r\n//};\r\n\r\n//const fillStars = (rating: number, sections: NodeListOf) => {\r\n// sections.forEach((section: HTMLElement) => {\r\n// const starElements = section.querySelectorAll('.star');\r\n// starElements.forEach((star: HTMLElement, index: number) => {\r\n// if (index < rating) {\r\n// star.classList.add('star--filled');\r\n// } else {\r\n// star.classList.remove('star--filled');\r\n// }\r\n// });\r\n// });\r\n//};\r\n\r\n\r\n\r\n//// Define a function to initialize the rating functionality\r\n//export const initRateRecipe = () => {\r\n// const recipePage = document.querySelector(\".recipe-page\");\r\n// const ratingButton = document.querySelector('.rating-button') as HTMLElement;\r\n\r\n// if (recipePage) {\r\n// // Check if star is clicked to turn off mouseleave for animation on stars.\r\n// let starClicked = false;\r\n// let selectedRating: string | null = null;\r\n\r\n// // Get the nodeId from the container's id\r\n// const container = document.querySelector('.recipe-page') as HTMLElement;\r\n// const nodeId = container.getAttribute('id');\r\n// const ratingSections = document.querySelectorAll('.rating-section');\r\n\r\n// // Check if the user has already rated this recipe in localStorage\r\n// const hasRated = localStorage.getItem(`rated_recipe_${nodeId}`);\r\n// if (hasRated) {\r\n// // User has already rated, do not allow rating again\r\n// disableStarClick();\r\n// ratingSections.forEach(section => {\r\n// const ulElement = section.querySelector(\".rating-list\");\r\n// if (ulElement) {\r\n// ulElement.classList.add(\"rated\");\r\n// }\r\n// const titleElement = section.querySelector(\".rating-title\");\r\n// if (titleElement) {\r\n// titleElement.textContent = \"Ditt betyg\";\r\n// }\r\n// });\r\n// }\r\n\r\n// // Attach a click event listener to each star element\r\n// const starElements = document.querySelectorAll('.star');\r\n// starElements.forEach(star => {\r\n// star.addEventListener('click', (event) => {\r\n// if (!starClicked) {\r\n// starClicked = true;\r\n\r\n// // Cast event.target to HTMLElement to access getAttribute\r\n// const starElement = event.target as HTMLElement;\r\n\r\n// // Get the data-rating attribute value\r\n// selectedRating = starElement.getAttribute('data-rating');\r\n\r\n// // Store the rating in localStorage and set the flag\r\n// localStorage.setItem(`rated_recipe_${nodeId}`, selectedRating);\r\n\r\n// // Fill the stars up to the rating\r\n// ratingSections.forEach(section => {\r\n// fillStars(parseInt(selectedRating!, 10), section);\r\n\r\n// const ulElement = section.querySelector(\".rating-list\");\r\n// if (ulElement) {\r\n// ulElement.classList.add(\"rated\");\r\n// }\r\n// const titleElement = section.querySelector(\".rating-title\");\r\n// if (titleElement) {\r\n// titleElement.textContent = \"Ditt betyg\";\r\n// }\r\n// });\r\n\r\n// // Show the rating button\r\n// ratingButton.style.display = 'block';\r\n// }\r\n// });\r\n// });\r\n\r\n// // Click event listener for the rating button\r\n// ratingButton.addEventListener('click', () => {\r\n// // Reset the starClicked flag\r\n// starClicked = false;\r\n\r\n// if (selectedRating) {\r\n// // Send the POST request only if a rating is selected\r\n// const url = `/umbraco/api/rate?userRating=${selectedRating}&nodeId=${nodeId}`;\r\n// fetch(url, {\r\n// method: 'POST',\r\n// headers: {\r\n// 'Content-Type': 'application/json',\r\n// },\r\n// })\r\n// .then(data => {\r\n// // Handle the response from your controller\r\n// console.log(data);\r\n// })\r\n// .catch(error => {\r\n// // Handle any errors\r\n// console.error(error);\r\n// });\r\n// }\r\n\r\n// // Hide the rating button\r\n// ratingButton.style.display = 'none';\r\n\r\n// // You can add additional logic here for final approval if needed\r\n\r\n// // For demonstration purposes, you can clear the stored rating\r\n// const storedRating = localStorage.getItem(`rated_recipe_${nodeId}`);\r\n// if (storedRating) {\r\n// // Update the UI to reflect the approved rating\r\n// ratingSections.forEach(section => {\r\n// fillStars(parseInt(storedRating, 10), section);\r\n\r\n// const ulElement = section.querySelector(\".rating-list\");\r\n// if (ulElement) {\r\n// ulElement.classList.add(\"rated\");\r\n// }\r\n// const titleElement = section.querySelector(\".rating-title\");\r\n// if (titleElement) {\r\n// titleElement.textContent = \"Ditt betyg\";\r\n// }\r\n// });\r\n\r\n// // You can also send another request to update the server if needed\r\n// const url = `/umbraco/api/approveRating?userRating=${storedRating}&nodeId=${nodeId}`;\r\n// fetch(url, {\r\n// method: 'POST',\r\n// headers: {\r\n// 'Content-Type': 'application/json',\r\n// },\r\n// })\r\n// .then(data => {\r\n// // Handle the response from your controller\r\n// console.log(data);\r\n// })\r\n// .catch(error => {\r\n// // Handle any errors\r\n// console.error(error);\r\n// });\r\n// }\r\n\r\n// // Disable star click after the button is pressed\r\n// disableStarClick();\r\n// });\r\n\r\n// // Function to fill stars up to the specified rating\r\n// const fillStars = (rating: number, element: any) => {\r\n// const starElements = element.querySelectorAll('.star');\r\n// starElements.forEach((star: any, index: number) => {\r\n// if (index < rating) {\r\n// star.classList.add('star--filled');\r\n// }\r\n// });\r\n// };\r\n\r\n// // Hover functionality for places where rating is possible.\r\n// const ratingContainers: NodeListOf = document.querySelectorAll(\".rating--possible\");\r\n\r\n// ratingContainers.forEach((container: HTMLElement) => {\r\n// const stars: NodeListOf | null = container.querySelectorAll(\".star\");\r\n\r\n// if (stars) {\r\n// stars.forEach((star: HTMLElement, index: number) => {\r\n// star.addEventListener(\"mouseenter\", () => {\r\n// stars.forEach((s: HTMLElement, i: number) => {\r\n// if (i <= index) {\r\n// s.classList.add(\"star--filled\");\r\n// } else {\r\n// s.classList.remove(\"star--filled\");\r\n// }\r\n// });\r\n// });\r\n\r\n// // This code will run only when you leave the area and haven't clicked a star\r\n// star.addEventListener(\"mouseleave\", () => {\r\n// if (!starClicked) {\r\n// stars.forEach((s: HTMLElement) => s.classList.remove(\"star--filled\"));\r\n// }\r\n// });\r\n// });\r\n// }\r\n// });\r\n\r\n \r\n// // Function to disable star click\r\n// function disableStarClick() {\r\n// starElements.forEach(star => {\r\n// const starElement = star as HTMLElement;\r\n// starElement.removeEventListener('click', starClickHandler);\r\n// starElement.style.pointerEvents = 'none';\r\n// });\r\n// }\r\n\r\n// // Click event handler for stars after the button is pressed\r\n// function starClickHandler(event: Event) {\r\n// event.preventDefault();\r\n// // Optionally, you can show a message to the user that they can't change their vote after pressing the button\r\n// }\r\n// }\r\n//};\r\n\r\n \r\n\r\n","export const initProductPage = () => {\r\n const productPage = document.querySelector(\".product-page\");\r\n\r\n if (productPage) {\r\n /**\r\n * Show-More function on table\r\n */\r\n const showMoreButton = document.getElementById(\"show-more-button\");\r\n const nutritionRows = document.querySelectorAll(\".nutrition-row\");\r\n\r\n if (showMoreButton) {\r\n showMoreButton.addEventListener(\"click\", () => {\r\n for (let i = 0; i < nutritionRows.length; i++) {\r\n if (i >= 10) {\r\n nutritionRows[i].classList.toggle(\"hidden\");\r\n }\r\n }\r\n \r\n showMoreButton.classList.toggle(\"show--active\")\r\n });\r\n\r\n /**\r\n * Adjust hight on load for both columns\r\n */\r\n const layoutElement = document.querySelector('.layout');\r\n const pictureSectionElement = document.querySelector('.picture-section__picture') as HTMLElement;\r\n\r\n // Check if both elements exist\r\n if (layoutElement && pictureSectionElement) {\r\n const minWidth = 800; // Minimum screen width in pixels\r\n\r\n // Function to check screen width and set height\r\n const setHeightBasedOnScreenWidth = () => {\r\n if (window.innerWidth > minWidth) {\r\n const layoutHeight = layoutElement.clientHeight;\r\n pictureSectionElement.style.height = `${layoutHeight}px`;\r\n } else {\r\n // Reset the height if the screen width is smaller than 1112px\r\n pictureSectionElement.style.height = 'auto';\r\n }\r\n };\r\n\r\n // Initial call to set the height based on the current screen width\r\n setHeightBasedOnScreenWidth();\r\n\r\n // Add an event listener to recheck when the window is resized\r\n window.addEventListener('resize', setHeightBasedOnScreenWidth);\r\n }\r\n }\r\n\r\n \r\n }\r\n};"],"names":["$02e68f8ca5696f61$var$_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","$02e68f8ca5696f61$var$MEDIA_PREFERS_REDUCED_MOTION","$02e68f8ca5696f61$var$empty","array","$02e68f8ca5696f61$var$slice","arrayLike","start","end","Array","prototype","slice","call","$02e68f8ca5696f61$var$apply","func","bind","apply","concat","arguments","$02e68f8ca5696f61$var$nextTick","setTimeout","$02e68f8ca5696f61$var$noop","$02e68f8ca5696f61$var$raf","requestAnimationFrame","$02e68f8ca5696f61$var$typeOf","type","subject","$02e68f8ca5696f61$var$isObject","$02e68f8ca5696f61$var$isArray","isArray","$02e68f8ca5696f61$var$isFunction","$02e68f8ca5696f61$var$isString","$02e68f8ca5696f61$var$isUndefined","$02e68f8ca5696f61$var$isHTMLElement","ownerDocument","defaultView","window","HTMLElement","e","$02e68f8ca5696f61$var$toArray","value","$02e68f8ca5696f61$var$forEach","values","iteratee","forEach","$02e68f8ca5696f61$var$includes","indexOf","$02e68f8ca5696f61$var$push","items","push","$02e68f8ca5696f61$var$toggleClass","elm","classes","add","name","classList","$02e68f8ca5696f61$var$addClass","split","$02e68f8ca5696f61$var$append","parent","children","appendChild","$02e68f8ca5696f61$var$before","nodes","ref","node","parentNode","insertBefore","$02e68f8ca5696f61$var$matches","selector","matches","$02e68f8ca5696f61$var$children","children2","filter","child","$02e68f8ca5696f61$var$child","firstElementChild","$02e68f8ca5696f61$var$ownKeys","keys","$02e68f8ca5696f61$var$forOwn","object","right","reverse","$02e68f8ca5696f61$var$assign","source","$02e68f8ca5696f61$var$merge","$02e68f8ca5696f61$var$omit","$02e68f8ca5696f61$var$removeAttribute","elms","attrs","attr","removeAttribute","$02e68f8ca5696f61$var$setAttribute","value2","$02e68f8ca5696f61$var$isNull","setAttribute","String","$02e68f8ca5696f61$var$create","tag","document","createElement","$02e68f8ca5696f61$var$style","prop","getComputedStyle","style","$02e68f8ca5696f61$var$display","display2","$02e68f8ca5696f61$var$focus","focus","preventScroll","$02e68f8ca5696f61$var$getAttribute","getAttribute","$02e68f8ca5696f61$var$hasClass","className","contains","$02e68f8ca5696f61$var$rect","getBoundingClientRect","$02e68f8ca5696f61$var$remove","removeChild","$02e68f8ca5696f61$var$parseHtml","html","DOMParser","parseFromString","body","$02e68f8ca5696f61$var$prevent","stopPropagation","preventDefault","stopImmediatePropagation","$02e68f8ca5696f61$var$query","querySelector","$02e68f8ca5696f61$var$queryAll","querySelectorAll","$02e68f8ca5696f61$var$removeClass","$02e68f8ca5696f61$var$timeOf","timeStamp","$02e68f8ca5696f61$var$unit","$02e68f8ca5696f61$var$PROJECT_CODE","$02e68f8ca5696f61$var$DATA_ATTRIBUTE","$02e68f8ca5696f61$var$assert","condition","message","Error","$02e68f8ca5696f61$var$min","Math","min","$02e68f8ca5696f61$var$max","max","$02e68f8ca5696f61$var$floor","floor","$02e68f8ca5696f61$var$ceil","ceil","$02e68f8ca5696f61$var$abs","abs","$02e68f8ca5696f61$var$between","number","x","y","exclusive","minimum","maximum","$02e68f8ca5696f61$var$clamp","$02e68f8ca5696f61$var$sign","$02e68f8ca5696f61$var$format","string","replacements","replacement","replace","$02e68f8ca5696f61$var$pad","$02e68f8ca5696f61$var$ids","$02e68f8ca5696f61$export$c473e36ef1bda729","listeners","forEachEvent","targets","events","events2","eventNS","fragment","callback","options","event","namespace","isEventTarget","remover","removeEventListener","addEventListener","unbind","listener","dispatch","detail","CustomEvent","bubbles","createEvent","initCustomEvent","dispatchEvent","destroy","data","$02e68f8ca5696f61$export$d300dc1a2634364b","$02e68f8ca5696f61$export$d8dac49b4532735a","$02e68f8ca5696f61$export$2aa493d7c3275167","$02e68f8ca5696f61$export$fe5802204b967f0d","$02e68f8ca5696f61$export$5adb665701eda1ce","$02e68f8ca5696f61$export$7f4701ac5e05e39f","$02e68f8ca5696f61$export$db40ab7c0855fa5c","$02e68f8ca5696f61$export$7e019dae5103a285","$02e68f8ca5696f61$export$d637eba1e9e28482","$02e68f8ca5696f61$export$49801896908b5e33","$02e68f8ca5696f61$export$ff8164bff3202b9","$02e68f8ca5696f61$export$88c4cf7419e470cd","$02e68f8ca5696f61$export$84015c33508f94ec","$02e68f8ca5696f61$export$23663268a31b79e2","$02e68f8ca5696f61$export$16a1e4f3d0368265","$02e68f8ca5696f61$export$9f64346e17f0ec8e","$02e68f8ca5696f61$export$f188226459c8a3ff","Splide2","bus","createDocumentFragment","binder","on","join","off","emit","$02e68f8ca5696f61$export$46ad21b25b6dccf0","interval","onInterval","onUpdate","limit","startTime","id","now","Date","rate","paused","count","update","pause","cancel","cancelAnimationFrame","resume","rewind","set","time","isPaused","$02e68f8ca5696f61$var$ARROW","$02e68f8ca5696f61$var$ARROW_LEFT","$02e68f8ca5696f61$var$ARROW_RIGHT","$02e68f8ca5696f61$var$ARROW_UP","$02e68f8ca5696f61$var$ARROW_DOWN","$02e68f8ca5696f61$var$ORIENTATION_MAP","width","left","X","Y","ArrowLeft","ArrowRight","$02e68f8ca5696f61$var$ROLE","$02e68f8ca5696f61$var$TAB_INDEX","$02e68f8ca5696f61$var$ARIA_PREFIX","$02e68f8ca5696f61$var$ARIA_CONTROLS","$02e68f8ca5696f61$var$ARIA_CURRENT","$02e68f8ca5696f61$var$ARIA_SELECTED","$02e68f8ca5696f61$var$ARIA_LABEL","$02e68f8ca5696f61$var$ARIA_LABELLEDBY","$02e68f8ca5696f61$var$ARIA_HIDDEN","$02e68f8ca5696f61$var$ARIA_ORIENTATION","$02e68f8ca5696f61$var$ARIA_ROLEDESCRIPTION","$02e68f8ca5696f61$var$ARIA_LIVE","$02e68f8ca5696f61$var$ARIA_BUSY","$02e68f8ca5696f61$var$ARIA_ATOMIC","$02e68f8ca5696f61$var$ALL_ATTRIBUTES","$02e68f8ca5696f61$var$CLASS_PREFIX","$02e68f8ca5696f61$export$7738b09ac0a98952","$02e68f8ca5696f61$export$19cc2a5451235cae","$02e68f8ca5696f61$export$8d922915837a38d3","$02e68f8ca5696f61$export$2c1ba4a4f1aa4947","$02e68f8ca5696f61$export$e9ba7e444ba60a12","$02e68f8ca5696f61$export$a26cbd955fecf11e","$02e68f8ca5696f61$export$516e7d18e13a2dca","$02e68f8ca5696f61$export$58ea3db24c33b76","$02e68f8ca5696f61$export$4885afd7098a65c2","$02e68f8ca5696f61$export$cbf8e5a0ab95eda3","$02e68f8ca5696f61$export$52f2cca6a5eee805","$02e68f8ca5696f61$export$2c9b091c749f4409","$02e68f8ca5696f61$export$4c82dc32b1c4ace5","$02e68f8ca5696f61$export$a29701deef84b825","$02e68f8ca5696f61$export$bb78d7c200da8960","$02e68f8ca5696f61$export$72d36ecf3758cb4b","$02e68f8ca5696f61$var$STATUS_CLASS_PREFIX","$02e68f8ca5696f61$export$e423ac4972f5e196","$02e68f8ca5696f61$export$457a2d20827a2779","$02e68f8ca5696f61$export$53ca4621bbab9a","$02e68f8ca5696f61$export$d22ec4ccb7996ba2","$02e68f8ca5696f61$export$b6f202a162a09100","$02e68f8ca5696f61$export$cd908cd1dd625e29","$02e68f8ca5696f61$export$49f9eaea10ebf193","$02e68f8ca5696f61$var$POINTER_DOWN_EVENTS","$02e68f8ca5696f61$var$POINTER_MOVE_EVENTS","$02e68f8ca5696f61$var$POINTER_UP_EVENTS","$02e68f8ca5696f61$export$e5a58a5ee5b54c22","$02e68f8ca5696f61$export$f42383286ed1223d","$02e68f8ca5696f61$export$742b62a5690c060","$02e68f8ca5696f61$var$INTERVAL_DATA_ATTRIBUTE","$02e68f8ca5696f61$var$SCROLL_LISTENER_OPTIONS","passive","capture","$02e68f8ca5696f61$var$NORMALIZATION_MAP","Spacebar","Right","Left","Up","Down","$02e68f8ca5696f61$var$normalizeKey","$02e68f8ca5696f61$var$KEYBOARD_EVENT","$02e68f8ca5696f61$var$SRC_DATA_ATTRIBUTE","$02e68f8ca5696f61$var$SRCSET_DATA_ATTRIBUTE","$02e68f8ca5696f61$var$IMAGE_SELECTOR","$02e68f8ca5696f61$var$TRIGGER_KEYS","$02e68f8ca5696f61$var$ComponentConstructors","freeze","__proto__","Media","Components2","state","breakpoints","reducedMotion","queries","completely","register","options2","query","queryList","matchMedia","destroyed","is","direction","merged","reduce","merged2","entry","mount","refresh","opts","base","notify","getPrototypeOf","setup","isMin","mediaQuery","sort","n","m","enable","Direction","resolve","axisOnly","index","match","offset","toLowerCase","charAt","toUpperCase","orient","Elements","track","list","isUsingKey","_EventInterface","root","i18n","elements","slides","rootClasses","trackClasses","role","find","arrows","pagination","prev","next","bar","toggle","tagName","carousel","getClasses","label","labelledby","$02e68f8ca5696f61$var$closest","from","closest","nodeType","parentElement","drag","isNavigation","Slides","_EventInterface2","_Components2$Elements","Slides2","init","slide","forEach$1","Slide2","slideIndex","$02e68f8ca5696f61$var$Slide$1","Components","updateOnMove","slideFocus","styles","isClone","container","initNavigation","controls","splides","map","splide","getAt","slideX","onMove","active","curr","isActive","self","updateVisibility","visible","isVisible","trackRect","slideRect","hidden","focusableNodes","activeElement","cloneStatus","slideLabel","useContainer","isWithin","distance","diff","Slide1","get","excludeClones","matcher","getIn","page","Controller","toIndex","hasFocus","perPage","images","img","remove","getLength","isEnough","Layout","vertical","rootRect","overflow","_EventInterface3","_Components2$Elements2","styleSlides","cssPadding","resize","force","height","newRect","cssHeight","gap","autoWidth","fixedWidth","cssSlideSize","fixedHeight","autoHeight","isOverflow","padding","heightRatio","listSize","slideSize","withoutGap","Slide","getGap","totalSize","sliderSize","parseFloat","getPadding","Clones","cloneCount","clones","remount","observe","computeCloneCount","generate","clone","isHead","cloneNode","clones2","fixedSize","fixedCount","Move","Transition","_EventInterface4","_Components2$Layout","_Components2$Directio","_Components2$Elements3","reposition","isBusy","Scroll","jump","translate","toPosition","position","preventLoop","destination","loop","exceededMax","getEnd","exceededMin","shift","backwards","excess","getLimit","size","getPosition","minDistance","Infinity","trimming","trimSpace","move","dest","shifted","exceededLimit","endIndex","slideCount","perMove","_EventInterface5","_Components2$Slides","omitEnd","isLoop","isSlide","getNext","getAdjacent","getPrev","currIndex","prevIndex","onResized","computeDestIndex","snapPage","computeMovableDestIndex","toPage","setIndex","waitForTransition","go","control","allowSameIndex","parse","_ref","indicator","scroll","duration","snap","getIndex","toDest","Arrows","created","wrapperClasses","placeholder","wrapper","enabled","createArrow","prev2","arrow","arrowPath","nextIndex","prevLabel","last","nextLabel","first","disabled","Autoplay","hovered","focused","_EventInterface6","_Components2$Elements4","autoplay","stopped","play","resetProgress","stop","autoToggle","pauseOnHover","pauseOnFocus","Cover","_EventInterface7","cover","cover2","src","_EventInterface8","friction","onScrolled","noConstrain","clear","noDistance","onEnd","to","easingFunc","pow","Drag","basePosition","baseEvent","prevBaseEvent","isFree","dragging","clickPrevented","_EventInterface9","_Components2$Directio2","exceeded","onPointerDown","target2","noDrag","isTouch","isTouchEvent","isDraggable","button","onPointerMove","onPointerUp","save","cancelable","diffCoord","thresholds","isObj","mouse","touch","expired","diffTime","hasExceeded","dragMinThreshold","velocity","computeVelocity","flickPower","flickMaxPages","rewindByDrag","onClick","orthogonal","coordOf","changedTouches","TouchEvent","disable","isDragging","Keyboard","_EventInterface10","keyboard","onKeydown","_disabled","LazyLoad","_EventInterface11","isSequential","lazyLoad","entries","srcset","spinner","loadNext","check","preloadPages","load","onLoad","Pagination","paginationClasses","dir","getDirection","nextPage","item","paginationDirection","_button","createPagination","select","li","class","text","pageX","paginationKeyboard","Sync","isParent","sync","Wheel","_EventInterface12","lastTime","onWheel","deltaY","_min","wheelMinThreshold","sleep","wheelSleep","releaseWheel","wheel","Live","_EventInterface13","live","sr","textContent","$02e68f8ca5696f61$export$f484e977a69c6ba6","speed","easing","rewindSpeed","$02e68f8ca5696f61$var$Fade","done","$02e68f8ca5696f61$var$Slide","endCallback","transition","getSpeed","useScroll","$02e68f8ca5696f61$var$_Splide","_Splide","states","_o","_E","defaults","JSON","create","protoProps","staticProps","_proto","Extensions","_this","_C","_T","Component","component","_this$event","Constructor","$02e68f8ca5696f61$export$24494c7438c070bf","STATES","CREATED","MOUNTED","IDLE","MOVING","SCROLLING","DRAGGING","DESTROYED","heroShowMore","heroReadMoreToggle","heroTextContainer","textShowMore","heroReadMoreToggles","contactShowMore","toggleButtons","textContainers","tableShowMore","console","log","initializeImageVideoControls","imageVideosArray","imageVideoControls","playPauseButton","videos","video","videoElement","header","navToggle","onscroll","scrollTop","documentElement","savedRecipesListToggle","savedRecipesList","overlay","getElementById","overlayHeader","toggleOverlay","display","adjustGridSpan","sublinkContainers","sublinksLinks","dropdownItem","checkDropdownsAndAddClass","dropdowns","dropdown","dropdownItems","sublinkLinks","dropdownList","checkSublinkItems","sublinks","sublink","sublinkItems","addClassToLastItem","lastItem","nextToLastItem","categoryPuffBlock","recipeArchive","recipePage","recipePageType","productPageType","buttonOpen","buttonClose","numberOfHitsSpan","numberOfHitsText","numberOfHits","toString","herbDropdown","onchange","selectedHerb","newUrl","location","origin","pathname","encodeURIComponent","href","recipe","saveButtons","ingredientsButton","instructionsButton","ingredientsSection","instructionsSection","isCheckboxChecked","checkboxes","isChecked","checkbox","currentIndex","checkboxId","isCheckedInStorage","sessionStorage","getItem","setItem","copyButton","currentURL","copyTextContainer","navigator","clipboard","writeText","err","error","printButton","print","shareButton","currentUrl","share","url","recipeElements","savedRecipes","localStorage","isRecipeSaved","recipeName","some","toggleSaveRecipe","recipeData","findIndex","splice","stringify","updateHeartButtonClass","heartButton","isSaved","resetHeartButton","recipeElement","removeSavedRecipe","displaySavedRecipes","isAnySaved","createRemoveButton","removeButton","savedRecipeList","innerHTML","listItem","article","image","openSavedRecipesButton","nodeId","ratingSections","hasRated","section","ulElement","titleElement","ratingButtons","ratingButton","selectedRating","starElements","star","starElement","s","sRating","fillStar","parseInt","fetch","method","headers","then","catch","updateUIAfterRating","fillStars","rating","element","ratingContainers","stars","storedRating","productPage","showMoreButton","nutritionRows","layoutElement","pictureSectionElement","setHeightBasedOnScreenWidth","innerWidth","layoutHeight","clientHeight"],"version":3,"file":"main.js.map"}