var $parcel$global = globalThis; var $parcel$modules = {}; var $parcel$inits = {}; var parcelRequire = $parcel$global["parcelRequire1478"]; if (parcelRequire == null) { parcelRequire = function(id) { if (id in $parcel$modules) { return $parcel$modules[id].exports; } if (id in $parcel$inits) { var init = $parcel$inits[id]; delete $parcel$inits[id]; var module = {id: id, exports: {}}; $parcel$modules[id] = module; init.call(module.exports, module, module.exports); return module.exports; } var err = new Error("Cannot find module '" + id + "'"); err.code = 'MODULE_NOT_FOUND'; throw err; }; parcelRequire.register = function register(id, init) { $parcel$inits[id] = init; }; $parcel$global["parcelRequire1478"] = parcelRequire; } var parcelRegister = parcelRequire.register; parcelRegister("8WeLi", function(module, exports) { const container = document.querySelector(".js-display-list"); if (!container) return; const tileBtn = container.querySelector(".js-tile"); const listBtn = container.querySelector(".js-list"); tileBtn.addEventListener("click", ()=>{ container.classList.remove("is-list"); tileBtn.classList.add("is-active"); listBtn.classList.remove("is-active"); }); listBtn.addEventListener("click", ()=>{ container.classList.add("is-list"); tileBtn.classList.remove("is-active"); listBtn.classList.add("is-active"); }); }); parcelRegister("jUaIl", function(module, exports) { const controlFromInput = (fromSlider, fromInput, toInput, controlSlider)=>{ const [from, to] = getParsed(fromInput, toInput); fillSlider(fromInput, toInput, "#e2e2e2", "#ff7f23", controlSlider); if (from > to) { fromSlider.value = to; fromInput.value = to; } else fromSlider.value = from; }; const controlToInput = (toSlider, fromInput, toInput, controlSlider)=>{ const [from, to] = getParsed(fromInput, toInput); fillSlider(fromInput, toInput, "#e2e2e2", "#ff7f23", controlSlider); setToggleAccessible(toInput); if (from <= to) { toSlider.value = to; toInput.value = to; } else toInput.value = from; }; const controlFromSlider = (fromSlider, toSlider, fromInput)=>{ const [from, to] = getParsed(fromSlider, toSlider); fillSlider(fromSlider, toSlider, "#e2e2e2", "#ff7f23", toSlider); if (from > to) { fromSlider.value = to; fromInput.value = to; } else fromInput.value = from; }; const controlToSlider = (fromSlider, toSlider, toInput)=>{ const [from, to] = getParsed(fromSlider, toSlider); fillSlider(fromSlider, toSlider, "#e2e2e2", "#ff7f23", toSlider); setToggleAccessible(toSlider); if (from <= to) { toSlider.value = to; toInput.value = to; } else { toInput.value = from; toSlider.value = from; } }; const getParsed = (currentFrom, currentTo)=>{ const from = parseInt(currentFrom.value, 10); const to = parseInt(currentTo.value, 10); return [ from, to ]; }; const fillSlider = (from, to, sliderColor, rangeColor, controlSlider)=>{ const rangeDistance = to.max - to.min; const fromPosition = from.value - to.min; const toPosition = to.value - to.min; controlSlider.style.background = `linear-gradient( to right, ${sliderColor} 0%, ${sliderColor} ${fromPosition / rangeDistance * 100}%, ${rangeColor} ${fromPosition / rangeDistance * 100}%, ${rangeColor} ${toPosition / rangeDistance * 100}%, ${sliderColor} ${toPosition / rangeDistance * 100}%, ${sliderColor} 100%)`; }; const setToggleAccessible = (currentTarget)=>{ if (Number(currentTarget.value) <= 0) currentTarget.style.zIndex = 2; else currentTarget.style.zIndex = 0; }; const range = document.querySelector(".js-range"); if (!range) return; const fromSlider = range.querySelector(".js-range-from"); const toSlider = range.querySelector(".js-range-to"); const fromInput = range.querySelector(".js-input-from"); const toInput = range.querySelector(".js-input-to"); if (fromSlider && toSlider && fromInput && toInput) { fillSlider(fromSlider, toSlider, "#e2e2e2", "#ff7f23", toSlider); setToggleAccessible(toSlider); fromSlider.oninput = ()=>controlFromSlider(fromSlider, toSlider, fromInput); toSlider.oninput = ()=>controlToSlider(fromSlider, toSlider, toInput); fromInput.oninput = ()=>controlFromInput(fromSlider, fromInput, toInput, toSlider); toInput.oninput = ()=>controlToInput(toSlider, fromInput, toInput, toSlider); } }); parcelRegister("6aHKA", function(module, exports) { const cartPopup = document.querySelector(".cart-popup__wrapper"); const closeBtn = document.querySelector(".js-cart__popup-close"); const cartOrderSuccess = document.querySelector(".js-cart__success-order"); const cartBreadcrumbs = document.querySelector(".js-cart__breadcrumbs"); const cartForm = document.getElementById("cart-form"); // Закрытие попапа крестом и кликом по фону closeBtn.addEventListener("click", e => { e.stopPropagation(); cartPopup.classList.add("cart-popup__wrapper--hidden"); }); cartPopup.addEventListener("click", e => { if (!e.target.closest(".cart-popup")) { cartPopup.classList.add("cart-popup__wrapper--hidden"); } }); // Переключение способов доставки const cartSelect = document.querySelector(".js-cart__order-select"); const cartSelfDelivery = document.querySelector(".js-cart__self-delivery"); const cartServiceDelivery= document.querySelectorAll(".js-cart__service-delivery"); cartSelect.addEventListener("change", () => { if (cartSelect.value === "self-delivery") { cartSelfDelivery.classList.remove("cart-popup__self-delivery--hidden"); cartServiceDelivery.forEach(i => i.classList.add("cart-popup__label-delivery--hidden")); } else { cartSelfDelivery.classList.add("cart-popup__self-delivery--hidden"); cartServiceDelivery.forEach(i => i.classList.remove("cart-popup__label-delivery--hidden")); } }); // AJAX-отправка формы if (cartForm) { cartForm.addEventListener("submit", function(e) { e.preventDefault(); const form = this; const submitBtn = form.querySelector("button[type=submit]"); submitBtn.disabled = true; submitBtn.classList.add("is-loading"); fetch(form.action, { method: "POST", body: new FormData(form) }) .then(res => { if (!res.ok) throw new Error(`HTTP ${res.status}`); return res.json(); }) .then(data => { if (data.success) { form.reset(); window.location.href = '/spasibo-tovary/'; // <<< правильное имя } else { showCartToast("Ошибка при отправке заявки", 3000, 'error'); } }) .catch(err => { console.error(err); showCartToast("Произошла ошибка при отправке", 3000, 'error'); }) .finally(() => { submitBtn.disabled = false; // <<< то же самое submitBtn.classList.remove("is-loading"); }); }); } }); /** * Swiper 11.1.12 * Most modern mobile touch slider and framework with hardware accelerated transitions * https://swiperjs.com * * Copyright 2014-2024 Vladimir Kharlampidi * * Released under the MIT License * * Released on: September 1, 2024 */ /** * SSR Window 4.0.2 * Better handling for window object in SSR environment * https://github.com/nolimits4web/ssr-window * * Copyright 2021, Vladimir Kharlampidi * * Licensed under MIT * * Released on: December 13, 2021 */ /* eslint-disable no-param-reassign */ function $189f45f12f88561c$var$isObject(obj) { return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object; } function $189f45f12f88561c$var$extend(target, src) { if (target === void 0) target = {}; if (src === void 0) src = {}; Object.keys(src).forEach((key)=>{ if (typeof target[key] === "undefined") target[key] = src[key]; else if ($189f45f12f88561c$var$isObject(src[key]) && $189f45f12f88561c$var$isObject(target[key]) && Object.keys(src[key]).length > 0) $189f45f12f88561c$var$extend(target[key], src[key]); }); } const $189f45f12f88561c$var$ssrDocument = { body: {}, addEventListener () {}, removeEventListener () {}, activeElement: { blur () {}, nodeName: "" }, querySelector () { return null; }, querySelectorAll () { return []; }, getElementById () { return null; }, createEvent () { return { initEvent () {} }; }, createElement () { return { children: [], childNodes: [], style: {}, setAttribute () {}, getElementsByTagName () { return []; } }; }, createElementNS () { return {}; }, importNode () { return null; }, location: { hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: "" } }; function $189f45f12f88561c$export$39b482c5e57630a8() { const doc = typeof document !== "undefined" ? document : {}; $189f45f12f88561c$var$extend(doc, $189f45f12f88561c$var$ssrDocument); return doc; } const $189f45f12f88561c$var$ssrWindow = { document: $189f45f12f88561c$var$ssrDocument, navigator: { userAgent: "" }, location: { hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: "" }, history: { replaceState () {}, pushState () {}, go () {}, back () {} }, CustomEvent: function CustomEvent() { return this; }, addEventListener () {}, removeEventListener () {}, getComputedStyle () { return { getPropertyValue () { return ""; } }; }, Image () {}, Date () {}, screen: {}, setTimeout () {}, clearTimeout () {}, matchMedia () { return {}; }, requestAnimationFrame (callback) { if (typeof setTimeout === "undefined") { callback(); return null; } return setTimeout(callback, 0); }, cancelAnimationFrame (id) { if (typeof setTimeout === "undefined") return; clearTimeout(id); } }; function $189f45f12f88561c$export$407448d2b89b1813() { const win = typeof window !== "undefined" ? window : {}; $189f45f12f88561c$var$extend(win, $189f45f12f88561c$var$ssrWindow); return win; } function $831683533b862e22$export$23f2a1d2818174ef(classes) { if (classes === void 0) classes = ""; return classes.trim().split(" ").filter((c)=>!!c.trim()); } function $831683533b862e22$export$d141bba7fdc215a3(obj) { const object = obj; Object.keys(object).forEach((key)=>{ try { object[key] = null; } catch (e) { // no getter for object } try { delete object[key]; } catch (e) { // something got wrong } }); } function $831683533b862e22$export$7ccc53e8f1e7dfc5(callback, delay) { if (delay === void 0) delay = 0; return setTimeout(callback, delay); } function $831683533b862e22$export$4368d992c4eafac0() { return Date.now(); } function $831683533b862e22$var$getComputedStyle(el) { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); let style; if (window1.getComputedStyle) style = window1.getComputedStyle(el, null); if (!style && el.currentStyle) style = el.currentStyle; if (!style) style = el.style; return style; } function $831683533b862e22$export$35e795649ee09318(el, axis) { if (axis === void 0) axis = "x"; const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); let matrix; let curTransform; let transformMatrix; const curStyle = $831683533b862e22$var$getComputedStyle(el); if (window1.WebKitCSSMatrix) { curTransform = curStyle.transform || curStyle.webkitTransform; if (curTransform.split(",").length > 6) curTransform = curTransform.split(", ").map((a)=>a.replace(",", ".")).join(", "); // Some old versions of Webkit choke when 'none' is passed; pass // empty string instead in this case transformMatrix = new window1.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform); } else { transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"); matrix = transformMatrix.toString().split(","); } if (axis === "x") { // Latest Chrome and webkits Fix if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m41; else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); else curTransform = parseFloat(matrix[4]); } if (axis === "y") { // Latest Chrome and webkits Fix if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m42; else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); else curTransform = parseFloat(matrix[5]); } return curTransform || 0; } function $831683533b862e22$export$882b5998b3b9117c(o) { return typeof o === "object" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === "Object"; } function $831683533b862e22$var$isNode(node) { // eslint-disable-next-line if (typeof window !== "undefined" && typeof window.HTMLElement !== "undefined") return node instanceof HTMLElement; return node && (node.nodeType === 1 || node.nodeType === 11); } function $831683533b862e22$export$efccba1c4a2ef57b() { const to = Object(arguments.length <= 0 ? undefined : arguments[0]); const noExtend = [ "__proto__", "constructor", "prototype" ]; for(let i = 1; i < arguments.length; i += 1){ const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; if (nextSource !== undefined && nextSource !== null && !$831683533b862e22$var$isNode(nextSource)) { const keysArray = Object.keys(Object(nextSource)).filter((key)=>noExtend.indexOf(key) < 0); for(let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1){ const nextKey = keysArray[nextIndex]; const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); if (desc !== undefined && desc.enumerable) { if ($831683533b862e22$export$882b5998b3b9117c(to[nextKey]) && $831683533b862e22$export$882b5998b3b9117c(nextSource[nextKey])) { if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey]; else $831683533b862e22$export$efccba1c4a2ef57b(to[nextKey], nextSource[nextKey]); } else if (!$831683533b862e22$export$882b5998b3b9117c(to[nextKey]) && $831683533b862e22$export$882b5998b3b9117c(nextSource[nextKey])) { to[nextKey] = {}; if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey]; else $831683533b862e22$export$efccba1c4a2ef57b(to[nextKey], nextSource[nextKey]); } else to[nextKey] = nextSource[nextKey]; } } } } return to; } function $831683533b862e22$export$2408f22a0fab9ae5(el, varName, varValue) { el.style.setProperty(varName, varValue); } function $831683533b862e22$export$625550452a3fa3ec(_ref) { let { swiper: swiper, targetPosition: targetPosition, side: side } = _ref; const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const startPosition = -swiper.translate; let startTime = null; let time; const duration = swiper.params.speed; swiper.wrapperEl.style.scrollSnapType = "none"; window1.cancelAnimationFrame(swiper.cssModeFrameID); const dir = targetPosition > startPosition ? "next" : "prev"; const isOutOfBound = (current, target)=>{ return dir === "next" && current >= target || dir === "prev" && current <= target; }; const animate = ()=>{ time = new Date().getTime(); if (startTime === null) startTime = time; const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); if (isOutOfBound(currentPosition, targetPosition)) currentPosition = targetPosition; swiper.wrapperEl.scrollTo({ [side]: currentPosition }); if (isOutOfBound(currentPosition, targetPosition)) { swiper.wrapperEl.style.overflow = "hidden"; swiper.wrapperEl.style.scrollSnapType = ""; setTimeout(()=>{ swiper.wrapperEl.style.overflow = ""; swiper.wrapperEl.scrollTo({ [side]: currentPosition }); }); window1.cancelAnimationFrame(swiper.cssModeFrameID); return; } swiper.cssModeFrameID = window1.requestAnimationFrame(animate); }; animate(); } function $831683533b862e22$export$39b482c5e57630a8(slideEl) { return slideEl.querySelector(".swiper-slide-transform") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(".swiper-slide-transform") || slideEl; } function $831683533b862e22$export$f1e1789686576879(element, selector) { if (selector === void 0) selector = ""; const children = [ ...element.children ]; if (element instanceof HTMLSlotElement) children.push(...element.assignedElements()); if (!selector) return children; return children.filter((el)=>el.matches(selector)); } function $831683533b862e22$export$90a7f3efeed30595(el, parent) { const isChild = parent.contains(el); if (!isChild && parent instanceof HTMLSlotElement) { const children = [ ...parent.assignedElements() ]; return children.includes(el); } return isChild; } function $831683533b862e22$export$3b14a55fb2447963(text) { try { console.warn(text); return; } catch (err) { // err } } function $831683533b862e22$export$db3b6bfb95261072(tag, classes) { if (classes === void 0) classes = []; const el = document.createElement(tag); el.classList.add(...Array.isArray(classes) ? classes : $831683533b862e22$export$23f2a1d2818174ef(classes)); return el; } function $831683533b862e22$export$8b22cf2602fb60ce(el) { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const document1 = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); const box = el.getBoundingClientRect(); const body = document1.body; const clientTop = el.clientTop || body.clientTop || 0; const clientLeft = el.clientLeft || body.clientLeft || 0; const scrollTop = el === window1 ? window1.scrollY : el.scrollTop; const scrollLeft = el === window1 ? window1.scrollX : el.scrollLeft; return { top: box.top + scrollTop - clientTop, left: box.left + scrollLeft - clientLeft }; } function $831683533b862e22$export$43caf9889c228507(el, selector) { const prevEls = []; while(el.previousElementSibling){ const prev = el.previousElementSibling; // eslint-disable-line if (selector) { if (prev.matches(selector)) prevEls.push(prev); } else prevEls.push(prev); el = prev; } return prevEls; } function $831683533b862e22$export$9e5f44173e64f162(el, selector) { const nextEls = []; while(el.nextElementSibling){ const next = el.nextElementSibling; // eslint-disable-line if (selector) { if (next.matches(selector)) nextEls.push(next); } else nextEls.push(next); el = next; } return nextEls; } function $831683533b862e22$export$ffb5f4729a158638(el, prop) { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); return window1.getComputedStyle(el, null).getPropertyValue(prop); } function $831683533b862e22$export$dda1d9f60106f0e9(el) { let child = el; let i; if (child) { i = 0; // eslint-disable-next-line while((child = child.previousSibling) !== null)if (child.nodeType === 1) i += 1; return i; } return undefined; } function $831683533b862e22$export$407448d2b89b1813(el, selector) { const parents = []; // eslint-disable-line let parent = el.parentElement; // eslint-disable-line while(parent){ if (selector) { if (parent.matches(selector)) parents.push(parent); } else parents.push(parent); parent = parent.parentElement; } return parents; } function $831683533b862e22$export$342063e11d6c3cad(el, callback) { function fireCallBack(e) { if (e.target !== el) return; callback.call(el, e); el.removeEventListener("transitionend", fireCallBack); } if (callback) el.addEventListener("transitionend", fireCallBack); } function $831683533b862e22$export$2d1720544b23b823(el, size, includeMargins) { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); if (includeMargins) return el[size === "width" ? "offsetWidth" : "offsetHeight"] + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-right" : "margin-top")) + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-left" : "margin-bottom")); return el.offsetWidth; } function $831683533b862e22$export$953cecd6e717a553(el) { return (Array.isArray(el) ? el : [ el ]).filter((e)=>!!e); } function $831683533b862e22$export$ae1af26003f05816(swiper) { return (v)=>{ if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) return v + 0.001; return v; }; } let $4e95c04dd8a5890d$var$support; function $4e95c04dd8a5890d$var$calcSupport() { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const document1 = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); return { smoothScroll: document1.documentElement && document1.documentElement.style && "scrollBehavior" in document1.documentElement.style, touch: !!("ontouchstart" in window1 || window1.DocumentTouch && document1 instanceof window1.DocumentTouch) }; } function $4e95c04dd8a5890d$var$getSupport() { if (!$4e95c04dd8a5890d$var$support) $4e95c04dd8a5890d$var$support = $4e95c04dd8a5890d$var$calcSupport(); return $4e95c04dd8a5890d$var$support; } let $4e95c04dd8a5890d$var$deviceCached; function $4e95c04dd8a5890d$var$calcDevice(_temp) { let { userAgent: userAgent } = _temp === void 0 ? {} : _temp; const support = $4e95c04dd8a5890d$var$getSupport(); const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const platform = window1.navigator.platform; const ua = userAgent || window1.navigator.userAgent; const device = { ios: false, android: false }; const screenWidth = window1.screen.width; const screenHeight = window1.screen.height; const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); const windows = platform === "Win32"; let macos = platform === "MacIntel"; // iPadOs 13 fix const iPadScreens = [ "1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810" ]; if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { ipad = ua.match(/(Version)\/([\d.]+)/); if (!ipad) ipad = [ 0, 1, "13_0_0" ]; macos = false; } // Android if (android && !windows) { device.os = "android"; device.android = true; } if (ipad || iphone || ipod) { device.os = "ios"; device.ios = true; } // Export object return device; } function $4e95c04dd8a5890d$var$getDevice(overrides) { if (overrides === void 0) overrides = {}; if (!$4e95c04dd8a5890d$var$deviceCached) $4e95c04dd8a5890d$var$deviceCached = $4e95c04dd8a5890d$var$calcDevice(overrides); return $4e95c04dd8a5890d$var$deviceCached; } let $4e95c04dd8a5890d$var$browser; function $4e95c04dd8a5890d$var$calcBrowser() { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const device = $4e95c04dd8a5890d$var$getDevice(); let needPerspectiveFix = false; function isSafari() { const ua = window1.navigator.userAgent.toLowerCase(); return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0; } if (isSafari()) { const ua = String(window1.navigator.userAgent); if (ua.includes("Version/")) { const [major, minor] = ua.split("Version/")[1].split(" ")[0].split(".").map((num)=>Number(num)); needPerspectiveFix = major < 16 || major === 16 && minor < 2; } } const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window1.navigator.userAgent); const isSafariBrowser = isSafari(); const need3dFix = isSafariBrowser || isWebView && device.ios; return { isSafari: needPerspectiveFix || isSafariBrowser, needPerspectiveFix: needPerspectiveFix, need3dFix: need3dFix, isWebView: isWebView }; } function $4e95c04dd8a5890d$var$getBrowser() { if (!$4e95c04dd8a5890d$var$browser) $4e95c04dd8a5890d$var$browser = $4e95c04dd8a5890d$var$calcBrowser(); return $4e95c04dd8a5890d$var$browser; } function $4e95c04dd8a5890d$var$Resize(_ref) { let { swiper: swiper, on: on, emit: emit } = _ref; const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); let observer = null; let animationFrame = null; const resizeHandler = ()=>{ if (!swiper || swiper.destroyed || !swiper.initialized) return; emit("beforeResize"); emit("resize"); }; const createObserver = ()=>{ if (!swiper || swiper.destroyed || !swiper.initialized) return; observer = new ResizeObserver((entries)=>{ animationFrame = window1.requestAnimationFrame(()=>{ const { width: width, height: height } = swiper; let newWidth = width; let newHeight = height; entries.forEach((_ref2)=>{ let { contentBoxSize: contentBoxSize, contentRect: contentRect, target: target } = _ref2; if (target && target !== swiper.el) return; newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; }); if (newWidth !== width || newHeight !== height) resizeHandler(); }); }); observer.observe(swiper.el); }; const removeObserver = ()=>{ if (animationFrame) window1.cancelAnimationFrame(animationFrame); if (observer && observer.unobserve && swiper.el) { observer.unobserve(swiper.el); observer = null; } }; const orientationChangeHandler = ()=>{ if (!swiper || swiper.destroyed || !swiper.initialized) return; emit("orientationchange"); }; on("init", ()=>{ if (swiper.params.resizeObserver && typeof window1.ResizeObserver !== "undefined") { createObserver(); return; } window1.addEventListener("resize", resizeHandler); window1.addEventListener("orientationchange", orientationChangeHandler); }); on("destroy", ()=>{ removeObserver(); window1.removeEventListener("resize", resizeHandler); window1.removeEventListener("orientationchange", orientationChangeHandler); }); } function $4e95c04dd8a5890d$var$Observer(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; const observers = []; const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const attach = function(target, options) { if (options === void 0) options = {}; const ObserverFunc = window1.MutationObserver || window1.WebkitMutationObserver; const observer = new ObserverFunc((mutations)=>{ // The observerUpdate event should only be triggered // once despite the number of mutations. Additional // triggers are redundant and are very costly if (swiper.__preventObserver__) return; if (mutations.length === 1) { emit("observerUpdate", mutations[0]); return; } const observerUpdate = function observerUpdate() { emit("observerUpdate", mutations[0]); }; if (window1.requestAnimationFrame) window1.requestAnimationFrame(observerUpdate); else window1.setTimeout(observerUpdate, 0); }); observer.observe(target, { attributes: typeof options.attributes === "undefined" ? true : options.attributes, childList: swiper.isElement || (typeof options.childList === "undefined" ? true : options).childList, characterData: typeof options.characterData === "undefined" ? true : options.characterData }); observers.push(observer); }; const init = ()=>{ if (!swiper.params.observer) return; if (swiper.params.observeParents) { const containerParents = (0, $831683533b862e22$export$407448d2b89b1813)(swiper.hostEl); for(let i = 0; i < containerParents.length; i += 1)attach(containerParents[i]); } // Observe container attach(swiper.hostEl, { childList: swiper.params.observeSlideChildren }); // Observe wrapper attach(swiper.wrapperEl, { attributes: false }); }; const destroy = ()=>{ observers.forEach((observer)=>{ observer.disconnect(); }); observers.splice(0, observers.length); }; extendParams({ observer: false, observeParents: false, observeSlideChildren: false }); on("init", init); on("destroy", destroy); } /* eslint-disable no-underscore-dangle */ var $4e95c04dd8a5890d$var$eventsEmitter = { on (events, handler, priority) { const self = this; if (!self.eventsListeners || self.destroyed) return self; if (typeof handler !== "function") return self; const method = priority ? "unshift" : "push"; events.split(" ").forEach((event)=>{ if (!self.eventsListeners[event]) self.eventsListeners[event] = []; self.eventsListeners[event][method](handler); }); return self; }, once (events, handler, priority) { const self = this; if (!self.eventsListeners || self.destroyed) return self; if (typeof handler !== "function") return self; function onceHandler() { self.off(events, onceHandler); if (onceHandler.__emitterProxy) delete onceHandler.__emitterProxy; for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key]; handler.apply(self, args); } onceHandler.__emitterProxy = handler; return self.on(events, onceHandler, priority); }, onAny (handler, priority) { const self = this; if (!self.eventsListeners || self.destroyed) return self; if (typeof handler !== "function") return self; const method = priority ? "unshift" : "push"; if (self.eventsAnyListeners.indexOf(handler) < 0) self.eventsAnyListeners[method](handler); return self; }, offAny (handler) { const self = this; if (!self.eventsListeners || self.destroyed) return self; if (!self.eventsAnyListeners) return self; const index = self.eventsAnyListeners.indexOf(handler); if (index >= 0) self.eventsAnyListeners.splice(index, 1); return self; }, off (events, handler) { const self = this; if (!self.eventsListeners || self.destroyed) return self; if (!self.eventsListeners) return self; events.split(" ").forEach((event)=>{ if (typeof handler === "undefined") self.eventsListeners[event] = []; else if (self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler, index)=>{ if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) self.eventsListeners[event].splice(index, 1); }); }); return self; }, emit () { const self = this; if (!self.eventsListeners || self.destroyed) return self; if (!self.eventsListeners) return self; let events; let data; let context; for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2]; if (typeof args[0] === "string" || Array.isArray(args[0])) { events = args[0]; data = args.slice(1, args.length); context = self; } else { events = args[0].events; data = args[0].data; context = args[0].context || self; } data.unshift(context); const eventsArray = Array.isArray(events) ? events : events.split(" "); eventsArray.forEach((event)=>{ if (self.eventsAnyListeners && self.eventsAnyListeners.length) self.eventsAnyListeners.forEach((eventHandler)=>{ eventHandler.apply(context, [ event, ...data ]); }); if (self.eventsListeners && self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler)=>{ eventHandler.apply(context, data); }); }); return self; } }; function $4e95c04dd8a5890d$var$updateSize() { const swiper = this; let width; let height; const el = swiper.el; if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) width = swiper.params.width; else width = el.clientWidth; if (typeof swiper.params.height !== "undefined" && swiper.params.height !== null) height = swiper.params.height; else height = el.clientHeight; if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) return; // Subtract paddings width = width - parseInt((0, $831683533b862e22$export$ffb5f4729a158638)(el, "padding-left") || 0, 10) - parseInt((0, $831683533b862e22$export$ffb5f4729a158638)(el, "padding-right") || 0, 10); height = height - parseInt((0, $831683533b862e22$export$ffb5f4729a158638)(el, "padding-top") || 0, 10) - parseInt((0, $831683533b862e22$export$ffb5f4729a158638)(el, "padding-bottom") || 0, 10); if (Number.isNaN(width)) width = 0; if (Number.isNaN(height)) height = 0; Object.assign(swiper, { width: width, height: height, size: swiper.isHorizontal() ? width : height }); } function $4e95c04dd8a5890d$var$updateSlides() { const swiper = this; function getDirectionPropertyValue(node, label) { return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); } const params = swiper.params; const { wrapperEl: wrapperEl, slidesEl: slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL: wrongRTL } = swiper; const isVirtual = swiper.virtual && params.virtual.enabled; const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; const slides = (0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; let snapGrid = []; const slidesGrid = []; const slidesSizesGrid = []; let offsetBefore = params.slidesOffsetBefore; if (typeof offsetBefore === "function") offsetBefore = params.slidesOffsetBefore.call(swiper); let offsetAfter = params.slidesOffsetAfter; if (typeof offsetAfter === "function") offsetAfter = params.slidesOffsetAfter.call(swiper); const previousSnapGridLength = swiper.snapGrid.length; const previousSlidesGridLength = swiper.slidesGrid.length; let spaceBetween = params.spaceBetween; let slidePosition = -offsetBefore; let prevSlideSize = 0; let index = 0; if (typeof swiperSize === "undefined") return; if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize; else if (typeof spaceBetween === "string") spaceBetween = parseFloat(spaceBetween); swiper.virtualSize = -spaceBetween; // reset margins slides.forEach((slideEl)=>{ if (rtl) slideEl.style.marginLeft = ""; else slideEl.style.marginRight = ""; slideEl.style.marginBottom = ""; slideEl.style.marginTop = ""; }); // reset cssMode offsets if (params.centeredSlides && params.cssMode) { (0, $831683533b862e22$export$2408f22a0fab9ae5)(wrapperEl, "--swiper-centered-offset-before", ""); (0, $831683533b862e22$export$2408f22a0fab9ae5)(wrapperEl, "--swiper-centered-offset-after", ""); } const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; if (gridEnabled) swiper.grid.initSlides(slides); else if (swiper.grid) swiper.grid.unsetSlides(); // Calc slides let slideSize; const shouldResetSlideSize = params.slidesPerView === "auto" && params.breakpoints && Object.keys(params.breakpoints).filter((key)=>{ return typeof params.breakpoints[key].slidesPerView !== "undefined"; }).length > 0; for(let i = 0; i < slidesLength; i += 1){ slideSize = 0; let slide; if (slides[i]) slide = slides[i]; if (gridEnabled) swiper.grid.updateSlide(i, slide, slides); if (slides[i] && (0, $831683533b862e22$export$ffb5f4729a158638)(slide, "display") === "none") continue; // eslint-disable-line if (params.slidesPerView === "auto") { if (shouldResetSlideSize) slides[i].style[swiper.getDirectionLabel("width")] = ``; const slideStyles = getComputedStyle(slide); const currentTransform = slide.style.transform; const currentWebKitTransform = slide.style.webkitTransform; if (currentTransform) slide.style.transform = "none"; if (currentWebKitTransform) slide.style.webkitTransform = "none"; if (params.roundLengths) slideSize = swiper.isHorizontal() ? (0, $831683533b862e22$export$2d1720544b23b823)(slide, "width", true) : (0, $831683533b862e22$export$2d1720544b23b823)(slide, "height", true); else { // eslint-disable-next-line const width = getDirectionPropertyValue(slideStyles, "width"); const paddingLeft = getDirectionPropertyValue(slideStyles, "padding-left"); const paddingRight = getDirectionPropertyValue(slideStyles, "padding-right"); const marginLeft = getDirectionPropertyValue(slideStyles, "margin-left"); const marginRight = getDirectionPropertyValue(slideStyles, "margin-right"); const boxSizing = slideStyles.getPropertyValue("box-sizing"); if (boxSizing && boxSizing === "border-box") slideSize = width + marginLeft + marginRight; else { const { clientWidth: clientWidth, offsetWidth: offsetWidth } = slide; slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); } } if (currentTransform) slide.style.transform = currentTransform; if (currentWebKitTransform) slide.style.webkitTransform = currentWebKitTransform; if (params.roundLengths) slideSize = Math.floor(slideSize); } else { slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; if (params.roundLengths) slideSize = Math.floor(slideSize); if (slides[i]) slides[i].style[swiper.getDirectionLabel("width")] = `${slideSize}px`; } if (slides[i]) slides[i].swiperSlideSize = slideSize; slidesSizesGrid.push(slideSize); if (params.centeredSlides) { slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; if (Math.abs(slidePosition) < 0.001) slidePosition = 0; if (params.roundLengths) slidePosition = Math.floor(slidePosition); if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); slidesGrid.push(slidePosition); } else { if (params.roundLengths) slidePosition = Math.floor(slidePosition); if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); slidesGrid.push(slidePosition); slidePosition = slidePosition + slideSize + spaceBetween; } swiper.virtualSize += slideSize + spaceBetween; prevSlideSize = slideSize; index += 1; } swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; if (params.setWrapperSize) wrapperEl.style[swiper.getDirectionLabel("width")] = `${swiper.virtualSize + spaceBetween}px`; if (gridEnabled) swiper.grid.updateWrapperSize(slideSize, snapGrid); // Remove last grid elements depending on width if (!params.centeredSlides) { const newSlidesGrid = []; for(let i = 0; i < snapGrid.length; i += 1){ let slidesGridItem = snapGrid[i]; if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); if (snapGrid[i] <= swiper.virtualSize - swiperSize) newSlidesGrid.push(slidesGridItem); } snapGrid = newSlidesGrid; if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) snapGrid.push(swiper.virtualSize - swiperSize); } if (isVirtual && params.loop) { const size = slidesSizesGrid[0] + spaceBetween; if (params.slidesPerGroup > 1) { const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); const groupSize = size * params.slidesPerGroup; for(let i = 0; i < groups; i += 1)snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); } for(let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1){ if (params.slidesPerGroup === 1) snapGrid.push(snapGrid[snapGrid.length - 1] + size); slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); swiper.virtualSize += size; } } if (snapGrid.length === 0) snapGrid = [ 0 ]; if (spaceBetween !== 0) { const key = swiper.isHorizontal() && rtl ? "marginLeft" : swiper.getDirectionLabel("marginRight"); slides.filter((_, slideIndex)=>{ if (!params.cssMode || params.loop) return true; if (slideIndex === slides.length - 1) return false; return true; }).forEach((slideEl)=>{ slideEl.style[key] = `${spaceBetween}px`; }); } if (params.centeredSlides && params.centeredSlidesBounds) { let allSlidesSize = 0; slidesSizesGrid.forEach((slideSizeValue)=>{ allSlidesSize += slideSizeValue + (spaceBetween || 0); }); allSlidesSize -= spaceBetween; const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; snapGrid = snapGrid.map((snap)=>{ if (snap <= 0) return -offsetBefore; if (snap > maxSnap) return maxSnap + offsetAfter; return snap; }); } if (params.centerInsufficientSlides) { let allSlidesSize = 0; slidesSizesGrid.forEach((slideSizeValue)=>{ allSlidesSize += slideSizeValue + (spaceBetween || 0); }); allSlidesSize -= spaceBetween; const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); if (allSlidesSize + offsetSize < swiperSize) { const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; snapGrid.forEach((snap, snapIndex)=>{ snapGrid[snapIndex] = snap - allSlidesOffset; }); slidesGrid.forEach((snap, snapIndex)=>{ slidesGrid[snapIndex] = snap + allSlidesOffset; }); } } Object.assign(swiper, { slides: slides, snapGrid: snapGrid, slidesGrid: slidesGrid, slidesSizesGrid: slidesSizesGrid }); if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { (0, $831683533b862e22$export$2408f22a0fab9ae5)(wrapperEl, "--swiper-centered-offset-before", `${-snapGrid[0]}px`); (0, $831683533b862e22$export$2408f22a0fab9ae5)(wrapperEl, "--swiper-centered-offset-after", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); const addToSnapGrid = -swiper.snapGrid[0]; const addToSlidesGrid = -swiper.slidesGrid[0]; swiper.snapGrid = swiper.snapGrid.map((v)=>v + addToSnapGrid); swiper.slidesGrid = swiper.slidesGrid.map((v)=>v + addToSlidesGrid); } if (slidesLength !== previousSlidesLength) swiper.emit("slidesLengthChange"); if (snapGrid.length !== previousSnapGridLength) { if (swiper.params.watchOverflow) swiper.checkOverflow(); swiper.emit("snapGridLengthChange"); } if (slidesGrid.length !== previousSlidesGridLength) swiper.emit("slidesGridLengthChange"); if (params.watchSlidesProgress) swiper.updateSlidesOffset(); swiper.emit("slidesUpdated"); if (!isVirtual && !params.cssMode && (params.effect === "slide" || params.effect === "fade")) { const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); if (slidesLength <= params.maxBackfaceHiddenSlides) { if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); } else if (hasClassBackfaceClassAdded) swiper.el.classList.remove(backFaceHiddenClass); } } function $4e95c04dd8a5890d$var$updateAutoHeight(speed) { const swiper = this; const activeSlides = []; const isVirtual = swiper.virtual && swiper.params.virtual.enabled; let newHeight = 0; let i; if (typeof speed === "number") swiper.setTransition(speed); else if (speed === true) swiper.setTransition(swiper.params.speed); const getSlideByIndex = (index)=>{ if (isVirtual) return swiper.slides[swiper.getSlideIndexByData(index)]; return swiper.slides[index]; }; // Find slides currently in view if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) { if (swiper.params.centeredSlides) (swiper.visibleSlides || []).forEach((slide)=>{ activeSlides.push(slide); }); else for(i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1){ const index = swiper.activeIndex + i; if (index > swiper.slides.length && !isVirtual) break; activeSlides.push(getSlideByIndex(index)); } } else activeSlides.push(getSlideByIndex(swiper.activeIndex)); // Find new height from highest slide in view for(i = 0; i < activeSlides.length; i += 1)if (typeof activeSlides[i] !== "undefined") { const height = activeSlides[i].offsetHeight; newHeight = height > newHeight ? height : newHeight; } // Update Height if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; } function $4e95c04dd8a5890d$var$updateSlidesOffset() { const swiper = this; const slides = swiper.slides; // eslint-disable-next-line const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; for(let i = 0; i < slides.length; i += 1)slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); } const $4e95c04dd8a5890d$var$toggleSlideClasses$1 = (slideEl, condition, className)=>{ if (condition && !slideEl.classList.contains(className)) slideEl.classList.add(className); else if (!condition && slideEl.classList.contains(className)) slideEl.classList.remove(className); }; function $4e95c04dd8a5890d$var$updateSlidesProgress(translate) { if (translate === void 0) translate = this && this.translate || 0; const swiper = this; const params = swiper.params; const { slides: slides, rtlTranslate: rtl, snapGrid: snapGrid } = swiper; if (slides.length === 0) return; if (typeof slides[0].swiperSlideOffset === "undefined") swiper.updateSlidesOffset(); let offsetCenter = -translate; if (rtl) offsetCenter = translate; swiper.visibleSlidesIndexes = []; swiper.visibleSlides = []; let spaceBetween = params.spaceBetween; if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiper.size; else if (typeof spaceBetween === "string") spaceBetween = parseFloat(spaceBetween); for(let i = 0; i < slides.length; i += 1){ const slide = slides[i]; let slideOffset = slide.swiperSlideOffset; if (params.cssMode && params.centeredSlides) slideOffset -= slides[0].swiperSlideOffset; const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); const slideBefore = -(offsetCenter - slideOffset); const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; if (isVisible) { swiper.visibleSlides.push(slide); swiper.visibleSlidesIndexes.push(i); } $4e95c04dd8a5890d$var$toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); $4e95c04dd8a5890d$var$toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); slide.progress = rtl ? -slideProgress : slideProgress; slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; } } function $4e95c04dd8a5890d$var$updateProgress(translate) { const swiper = this; if (typeof translate === "undefined") { const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line translate = swiper && swiper.translate && swiper.translate * multiplier || 0; } const params = swiper.params; const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); let { progress: progress, isBeginning: isBeginning, isEnd: isEnd, progressLoop: progressLoop } = swiper; const wasBeginning = isBeginning; const wasEnd = isEnd; if (translatesDiff === 0) { progress = 0; isBeginning = true; isEnd = true; } else { progress = (translate - swiper.minTranslate()) / translatesDiff; const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; isBeginning = isBeginningRounded || progress <= 0; isEnd = isEndRounded || progress >= 1; if (isBeginningRounded) progress = 0; if (isEndRounded) progress = 1; } if (params.loop) { const firstSlideIndex = swiper.getSlideIndexByData(0); const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; const translateAbs = Math.abs(translate); if (translateAbs >= firstSlideTranslate) progressLoop = (translateAbs - firstSlideTranslate) / translateMax; else progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; if (progressLoop > 1) progressLoop -= 1; } Object.assign(swiper, { progress: progress, progressLoop: progressLoop, isBeginning: isBeginning, isEnd: isEnd }); if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); if (isBeginning && !wasBeginning) swiper.emit("reachBeginning toEdge"); if (isEnd && !wasEnd) swiper.emit("reachEnd toEdge"); if (wasBeginning && !isBeginning || wasEnd && !isEnd) swiper.emit("fromEdge"); swiper.emit("progress", progress); } const $4e95c04dd8a5890d$var$toggleSlideClasses = (slideEl, condition, className)=>{ if (condition && !slideEl.classList.contains(className)) slideEl.classList.add(className); else if (!condition && slideEl.classList.contains(className)) slideEl.classList.remove(className); }; function $4e95c04dd8a5890d$var$updateSlidesClasses() { const swiper = this; const { slides: slides, params: params, slidesEl: slidesEl, activeIndex: activeIndex } = swiper; const isVirtual = swiper.virtual && params.virtual.enabled; const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; const getFilteredSlide = (selector)=>{ return (0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; }; let activeSlide; let prevSlide; let nextSlide; if (isVirtual) { if (params.loop) { let slideIndex = activeIndex - swiper.virtual.slidesBefore; if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); } else activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); } else if (gridEnabled) { activeSlide = slides.filter((slideEl)=>slideEl.column === activeIndex)[0]; nextSlide = slides.filter((slideEl)=>slideEl.column === activeIndex + 1)[0]; prevSlide = slides.filter((slideEl)=>slideEl.column === activeIndex - 1)[0]; } else activeSlide = slides[activeIndex]; if (activeSlide) { if (!gridEnabled) { // Next Slide nextSlide = (0, $831683533b862e22$export$9e5f44173e64f162)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; if (params.loop && !nextSlide) nextSlide = slides[0]; // Prev Slide prevSlide = (0, $831683533b862e22$export$43caf9889c228507)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; params.loop; } } slides.forEach((slideEl)=>{ $4e95c04dd8a5890d$var$toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); $4e95c04dd8a5890d$var$toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); $4e95c04dd8a5890d$var$toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); }); swiper.emitSlidesClasses(); } const $4e95c04dd8a5890d$var$processLazyPreloader = (swiper, imageEl)=>{ if (!swiper || swiper.destroyed || !swiper.params) return; const slideSelector = ()=>swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; const slideEl = imageEl.closest(slideSelector()); if (slideEl) { let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); if (!lazyEl && swiper.isElement) { if (slideEl.shadowRoot) lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); else // init later requestAnimationFrame(()=>{ if (slideEl.shadowRoot) { lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); if (lazyEl) lazyEl.remove(); } }); } if (lazyEl) lazyEl.remove(); } }; const $4e95c04dd8a5890d$var$unlazy = (swiper, index)=>{ if (!swiper.slides[index]) return; const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); if (imageEl) imageEl.removeAttribute("loading"); }; const $4e95c04dd8a5890d$var$preload = (swiper)=>{ if (!swiper || swiper.destroyed || !swiper.params) return; let amount = swiper.params.lazyPreloadPrevNext; const len = swiper.slides.length; if (!len || !amount || amount < 0) return; amount = Math.min(amount, len); const slidesPerView = swiper.params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); const activeIndex = swiper.activeIndex; if (swiper.params.grid && swiper.params.grid.rows > 1) { const activeColumn = activeIndex; const preloadColumns = [ activeColumn - amount ]; preloadColumns.push(...Array.from({ length: amount }).map((_, i)=>{ return activeColumn + slidesPerView + i; })); swiper.slides.forEach((slideEl, i)=>{ if (preloadColumns.includes(slideEl.column)) $4e95c04dd8a5890d$var$unlazy(swiper, i); }); return; } const slideIndexLastInView = activeIndex + slidesPerView - 1; if (swiper.params.rewind || swiper.params.loop) for(let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1){ const realIndex = (i % len + len) % len; if (realIndex < activeIndex || realIndex > slideIndexLastInView) $4e95c04dd8a5890d$var$unlazy(swiper, realIndex); } else { for(let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1)if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) $4e95c04dd8a5890d$var$unlazy(swiper, i); } }; function $4e95c04dd8a5890d$var$getActiveIndexByTranslate(swiper) { const { slidesGrid: slidesGrid, params: params } = swiper; const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; let activeIndex; for(let i = 0; i < slidesGrid.length; i += 1){ if (typeof slidesGrid[i + 1] !== "undefined") { if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) activeIndex = i; else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) activeIndex = i + 1; } else if (translate >= slidesGrid[i]) activeIndex = i; } // Normalize slideIndex if (params.normalizeSlideIndex) { if (activeIndex < 0 || typeof activeIndex === "undefined") activeIndex = 0; } return activeIndex; } function $4e95c04dd8a5890d$var$updateActiveIndex(newActiveIndex) { const swiper = this; const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; const { snapGrid: snapGrid, params: params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex } = swiper; let activeIndex = newActiveIndex; let snapIndex; const getVirtualRealIndex = (aIndex)=>{ let realIndex = aIndex - swiper.virtual.slidesBefore; if (realIndex < 0) realIndex = swiper.virtual.slides.length + realIndex; if (realIndex >= swiper.virtual.slides.length) realIndex -= swiper.virtual.slides.length; return realIndex; }; if (typeof activeIndex === "undefined") activeIndex = $4e95c04dd8a5890d$var$getActiveIndexByTranslate(swiper); if (snapGrid.indexOf(translate) >= 0) snapIndex = snapGrid.indexOf(translate); else { const skip = Math.min(params.slidesPerGroupSkip, activeIndex); snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); } if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; if (activeIndex === previousIndex && !swiper.params.loop) { if (snapIndex !== previousSnapIndex) { swiper.snapIndex = snapIndex; swiper.emit("snapIndexChange"); } return; } if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { swiper.realIndex = getVirtualRealIndex(activeIndex); return; } const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; // Get real index let realIndex; if (swiper.virtual && params.virtual.enabled && params.loop) realIndex = getVirtualRealIndex(activeIndex); else if (gridEnabled) { const firstSlideInColumn = swiper.slides.filter((slideEl)=>slideEl.column === activeIndex)[0]; let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute("data-swiper-slide-index"), 10); if (Number.isNaN(activeSlideIndex)) activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); realIndex = Math.floor(activeSlideIndex / params.grid.rows); } else if (swiper.slides[activeIndex]) { const slideIndex = swiper.slides[activeIndex].getAttribute("data-swiper-slide-index"); if (slideIndex) realIndex = parseInt(slideIndex, 10); else realIndex = activeIndex; } else realIndex = activeIndex; Object.assign(swiper, { previousSnapIndex: previousSnapIndex, snapIndex: snapIndex, previousRealIndex: previousRealIndex, realIndex: realIndex, previousIndex: previousIndex, activeIndex: activeIndex }); if (swiper.initialized) $4e95c04dd8a5890d$var$preload(swiper); swiper.emit("activeIndexChange"); swiper.emit("snapIndexChange"); if (swiper.initialized || swiper.params.runCallbacksOnInit) { if (previousRealIndex !== realIndex) swiper.emit("realIndexChange"); swiper.emit("slideChange"); } } function $4e95c04dd8a5890d$var$updateClickedSlide(el, path) { const swiper = this; const params = swiper.params; let slide = el.closest(`.${params.slideClass}, swiper-slide`); if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) [ ...path.slice(path.indexOf(el) + 1, path.length) ].forEach((pathEl)=>{ if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) slide = pathEl; }); let slideFound = false; let slideIndex; if (slide) { for(let i = 0; i < swiper.slides.length; i += 1)if (swiper.slides[i] === slide) { slideFound = true; slideIndex = i; break; } } if (slide && slideFound) { swiper.clickedSlide = slide; if (swiper.virtual && swiper.params.virtual.enabled) swiper.clickedIndex = parseInt(slide.getAttribute("data-swiper-slide-index"), 10); else swiper.clickedIndex = slideIndex; } else { swiper.clickedSlide = undefined; swiper.clickedIndex = undefined; return; } if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) swiper.slideToClickedSlide(); } var $4e95c04dd8a5890d$var$update = { updateSize: $4e95c04dd8a5890d$var$updateSize, updateSlides: $4e95c04dd8a5890d$var$updateSlides, updateAutoHeight: $4e95c04dd8a5890d$var$updateAutoHeight, updateSlidesOffset: $4e95c04dd8a5890d$var$updateSlidesOffset, updateSlidesProgress: $4e95c04dd8a5890d$var$updateSlidesProgress, updateProgress: $4e95c04dd8a5890d$var$updateProgress, updateSlidesClasses: $4e95c04dd8a5890d$var$updateSlidesClasses, updateActiveIndex: $4e95c04dd8a5890d$var$updateActiveIndex, updateClickedSlide: $4e95c04dd8a5890d$var$updateClickedSlide }; function $4e95c04dd8a5890d$var$getSwiperTranslate(axis) { if (axis === void 0) axis = this.isHorizontal() ? "x" : "y"; const swiper = this; const { params: params, rtlTranslate: rtl, translate: translate, wrapperEl: wrapperEl } = swiper; if (params.virtualTranslate) return rtl ? -translate : translate; if (params.cssMode) return translate; let currentTranslate = (0, $831683533b862e22$export$35e795649ee09318)(wrapperEl, axis); currentTranslate += swiper.cssOverflowAdjustment(); if (rtl) currentTranslate = -currentTranslate; return currentTranslate || 0; } function $4e95c04dd8a5890d$var$setTranslate(translate, byController) { const swiper = this; const { rtlTranslate: rtl, params: params, wrapperEl: wrapperEl, progress: progress } = swiper; let x = 0; let y = 0; const z = 0; if (swiper.isHorizontal()) x = rtl ? -translate : translate; else y = translate; if (params.roundLengths) { x = Math.floor(x); y = Math.floor(y); } swiper.previousTranslate = swiper.translate; swiper.translate = swiper.isHorizontal() ? x : y; if (params.cssMode) wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y; else if (!params.virtualTranslate) { if (swiper.isHorizontal()) x -= swiper.cssOverflowAdjustment(); else y -= swiper.cssOverflowAdjustment(); wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; } // Check if we need to update progress let newProgress; const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); if (translatesDiff === 0) newProgress = 0; else newProgress = (translate - swiper.minTranslate()) / translatesDiff; if (newProgress !== progress) swiper.updateProgress(translate); swiper.emit("setTranslate", swiper.translate, byController); } function $4e95c04dd8a5890d$var$minTranslate() { return -this.snapGrid[0]; } function $4e95c04dd8a5890d$var$maxTranslate() { return -this.snapGrid[this.snapGrid.length - 1]; } function $4e95c04dd8a5890d$var$translateTo(translate, speed, runCallbacks, translateBounds, internal) { if (translate === void 0) translate = 0; if (speed === void 0) speed = this.params.speed; if (runCallbacks === void 0) runCallbacks = true; if (translateBounds === void 0) translateBounds = true; const swiper = this; const { params: params, wrapperEl: wrapperEl } = swiper; if (swiper.animating && params.preventInteractionOnTransition) return false; const minTranslate = swiper.minTranslate(); const maxTranslate = swiper.maxTranslate(); let newTranslate; if (translateBounds && translate > minTranslate) newTranslate = minTranslate; else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate; else newTranslate = translate; // Update progress swiper.updateProgress(newTranslate); if (params.cssMode) { const isH = swiper.isHorizontal(); if (speed === 0) wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate; else { if (!swiper.support.smoothScroll) { (0, $831683533b862e22$export$625550452a3fa3ec)({ swiper: swiper, targetPosition: -newTranslate, side: isH ? "left" : "top" }); return true; } wrapperEl.scrollTo({ [isH ? "left" : "top"]: -newTranslate, behavior: "smooth" }); } return true; } if (speed === 0) { swiper.setTransition(0); swiper.setTranslate(newTranslate); if (runCallbacks) { swiper.emit("beforeTransitionStart", speed, internal); swiper.emit("transitionEnd"); } } else { swiper.setTransition(speed); swiper.setTranslate(newTranslate); if (runCallbacks) { swiper.emit("beforeTransitionStart", speed, internal); swiper.emit("transitionStart"); } if (!swiper.animating) { swiper.animating = true; if (!swiper.onTranslateToWrapperTransitionEnd) swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { if (!swiper || swiper.destroyed) return; if (e.target !== this) return; swiper.wrapperEl.removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); swiper.onTranslateToWrapperTransitionEnd = null; delete swiper.onTranslateToWrapperTransitionEnd; swiper.animating = false; if (runCallbacks) swiper.emit("transitionEnd"); }; swiper.wrapperEl.addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); } } return true; } var $4e95c04dd8a5890d$var$translate = { getTranslate: $4e95c04dd8a5890d$var$getSwiperTranslate, setTranslate: $4e95c04dd8a5890d$var$setTranslate, minTranslate: $4e95c04dd8a5890d$var$minTranslate, maxTranslate: $4e95c04dd8a5890d$var$maxTranslate, translateTo: $4e95c04dd8a5890d$var$translateTo }; function $4e95c04dd8a5890d$var$setTransition(duration, byController) { const swiper = this; if (!swiper.params.cssMode) { swiper.wrapperEl.style.transitionDuration = `${duration}ms`; swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ""; } swiper.emit("setTransition", duration, byController); } function $4e95c04dd8a5890d$var$transitionEmit(_ref) { let { swiper: swiper, runCallbacks: runCallbacks, direction: direction, step: step } = _ref; const { activeIndex: activeIndex, previousIndex: previousIndex } = swiper; let dir = direction; if (!dir) { if (activeIndex > previousIndex) dir = "next"; else if (activeIndex < previousIndex) dir = "prev"; else dir = "reset"; } swiper.emit(`transition${step}`); if (runCallbacks && activeIndex !== previousIndex) { if (dir === "reset") { swiper.emit(`slideResetTransition${step}`); return; } swiper.emit(`slideChangeTransition${step}`); if (dir === "next") swiper.emit(`slideNextTransition${step}`); else swiper.emit(`slidePrevTransition${step}`); } } function $4e95c04dd8a5890d$var$transitionStart(runCallbacks, direction) { if (runCallbacks === void 0) runCallbacks = true; const swiper = this; const { params: params } = swiper; if (params.cssMode) return; if (params.autoHeight) swiper.updateAutoHeight(); $4e95c04dd8a5890d$var$transitionEmit({ swiper: swiper, runCallbacks: runCallbacks, direction: direction, step: "Start" }); } function $4e95c04dd8a5890d$var$transitionEnd(runCallbacks, direction) { if (runCallbacks === void 0) runCallbacks = true; const swiper = this; const { params: params } = swiper; swiper.animating = false; if (params.cssMode) return; swiper.setTransition(0); $4e95c04dd8a5890d$var$transitionEmit({ swiper: swiper, runCallbacks: runCallbacks, direction: direction, step: "End" }); } var $4e95c04dd8a5890d$var$transition = { setTransition: $4e95c04dd8a5890d$var$setTransition, transitionStart: $4e95c04dd8a5890d$var$transitionStart, transitionEnd: $4e95c04dd8a5890d$var$transitionEnd }; function $4e95c04dd8a5890d$var$slideTo(index, speed, runCallbacks, internal, initial) { if (index === void 0) index = 0; if (runCallbacks === void 0) runCallbacks = true; if (typeof index === "string") index = parseInt(index, 10); const swiper = this; let slideIndex = index; if (slideIndex < 0) slideIndex = 0; const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, previousIndex: previousIndex, activeIndex: activeIndex, rtlTranslate: rtl, wrapperEl: wrapperEl, enabled: enabled } = swiper; if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) return false; if (typeof speed === "undefined") speed = swiper.params.speed; const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; const translate = -snapGrid[snapIndex]; // Normalize slideIndex if (params.normalizeSlideIndex) for(let i = 0; i < slidesGrid.length; i += 1){ const normalizedTranslate = -Math.floor(translate * 100); const normalizedGrid = Math.floor(slidesGrid[i] * 100); const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); if (typeof slidesGrid[i + 1] !== "undefined") { if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) slideIndex = i; else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) slideIndex = i + 1; } else if (normalizedTranslate >= normalizedGrid) slideIndex = i; } // Directions locks if (swiper.initialized && slideIndex !== activeIndex) { if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) return false; if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { if ((activeIndex || 0) !== slideIndex) return false; } } if (slideIndex !== (previousIndex || 0) && runCallbacks) swiper.emit("beforeSlideChangeStart"); // Update progress swiper.updateProgress(translate); let direction; if (slideIndex > activeIndex) direction = "next"; else if (slideIndex < activeIndex) direction = "prev"; else direction = "reset"; // initial virtual const isVirtual = swiper.virtual && swiper.params.virtual.enabled; const isInitialVirtual = isVirtual && initial; // Update Index if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { swiper.updateActiveIndex(slideIndex); // Update Height if (params.autoHeight) swiper.updateAutoHeight(); swiper.updateSlidesClasses(); if (params.effect !== "slide") swiper.setTranslate(translate); if (direction !== "reset") { swiper.transitionStart(runCallbacks, direction); swiper.transitionEnd(runCallbacks, direction); } return false; } if (params.cssMode) { const isH = swiper.isHorizontal(); const t = rtl ? translate : -translate; if (speed === 0) { if (isVirtual) { swiper.wrapperEl.style.scrollSnapType = "none"; swiper._immediateVirtual = true; } if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { swiper._cssModeVirtualInitialSet = true; requestAnimationFrame(()=>{ wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t; }); } else wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t; if (isVirtual) requestAnimationFrame(()=>{ swiper.wrapperEl.style.scrollSnapType = ""; swiper._immediateVirtual = false; }); } else { if (!swiper.support.smoothScroll) { (0, $831683533b862e22$export$625550452a3fa3ec)({ swiper: swiper, targetPosition: t, side: isH ? "left" : "top" }); return true; } wrapperEl.scrollTo({ [isH ? "left" : "top"]: t, behavior: "smooth" }); } return true; } swiper.setTransition(speed); swiper.setTranslate(translate); swiper.updateActiveIndex(slideIndex); swiper.updateSlidesClasses(); swiper.emit("beforeTransitionStart", speed, internal); swiper.transitionStart(runCallbacks, direction); if (speed === 0) swiper.transitionEnd(runCallbacks, direction); else if (!swiper.animating) { swiper.animating = true; if (!swiper.onSlideToWrapperTransitionEnd) swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { if (!swiper || swiper.destroyed) return; if (e.target !== this) return; swiper.wrapperEl.removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); swiper.onSlideToWrapperTransitionEnd = null; delete swiper.onSlideToWrapperTransitionEnd; swiper.transitionEnd(runCallbacks, direction); }; swiper.wrapperEl.addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); } return true; } function $4e95c04dd8a5890d$var$slideToLoop(index, speed, runCallbacks, internal) { if (index === void 0) index = 0; if (runCallbacks === void 0) runCallbacks = true; if (typeof index === "string") { const indexAsNumber = parseInt(index, 10); index = indexAsNumber; } const swiper = this; if (swiper.destroyed) return; if (typeof speed === "undefined") speed = swiper.params.speed; const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; let newIndex = index; if (swiper.params.loop) { if (swiper.virtual && swiper.params.virtual.enabled) // eslint-disable-next-line newIndex = newIndex + swiper.virtual.slidesBefore; else { let targetSlideIndex; if (gridEnabled) { const slideIndex = newIndex * swiper.params.grid.rows; targetSlideIndex = swiper.slides.filter((slideEl)=>slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex)[0].column; } else targetSlideIndex = swiper.getSlideIndexByData(newIndex); const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; const { centeredSlides: centeredSlides } = swiper.params; let slidesPerView = swiper.params.slidesPerView; if (slidesPerView === "auto") slidesPerView = swiper.slidesPerViewDynamic(); else { slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); if (centeredSlides && slidesPerView % 2 === 0) slidesPerView = slidesPerView + 1; } let needLoopFix = cols - targetSlideIndex < slidesPerView; if (centeredSlides) needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); if (internal && centeredSlides && swiper.params.slidesPerView !== "auto" && !gridEnabled) needLoopFix = false; if (needLoopFix) { const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? "prev" : "next" : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? "next" : "prev"; swiper.loopFix({ direction: direction, slideTo: true, activeSlideIndex: direction === "next" ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, slideRealIndex: direction === "next" ? swiper.realIndex : undefined }); } if (gridEnabled) { const slideIndex = newIndex * swiper.params.grid.rows; newIndex = swiper.slides.filter((slideEl)=>slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex)[0].column; } else newIndex = swiper.getSlideIndexByData(newIndex); } } requestAnimationFrame(()=>{ swiper.slideTo(newIndex, speed, runCallbacks, internal); }); return swiper; } /* eslint no-unused-vars: "off" */ function $4e95c04dd8a5890d$var$slideNext(speed, runCallbacks, internal) { if (runCallbacks === void 0) runCallbacks = true; const swiper = this; const { enabled: enabled, params: params, animating: animating } = swiper; if (!enabled || swiper.destroyed) return swiper; if (typeof speed === "undefined") speed = swiper.params.speed; let perGroup = params.slidesPerGroup; if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) perGroup = Math.max(swiper.slidesPerViewDynamic("current", true), 1); const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; const isVirtual = swiper.virtual && params.virtual.enabled; if (params.loop) { if (animating && !isVirtual && params.loopPreventsSliding) return false; swiper.loopFix({ direction: "next" }); // eslint-disable-next-line swiper._clientLeft = swiper.wrapperEl.clientLeft; if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { requestAnimationFrame(()=>{ swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); }); return true; } } if (params.rewind && swiper.isEnd) return swiper.slideTo(0, speed, runCallbacks, internal); return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); } /* eslint no-unused-vars: "off" */ function $4e95c04dd8a5890d$var$slidePrev(speed, runCallbacks, internal) { if (runCallbacks === void 0) runCallbacks = true; const swiper = this; const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, rtlTranslate: rtlTranslate, enabled: enabled, animating: animating } = swiper; if (!enabled || swiper.destroyed) return swiper; if (typeof speed === "undefined") speed = swiper.params.speed; const isVirtual = swiper.virtual && params.virtual.enabled; if (params.loop) { if (animating && !isVirtual && params.loopPreventsSliding) return false; swiper.loopFix({ direction: "prev" }); // eslint-disable-next-line swiper._clientLeft = swiper.wrapperEl.clientLeft; } const translate = rtlTranslate ? swiper.translate : -swiper.translate; function normalize(val) { if (val < 0) return -Math.floor(Math.abs(val)); return Math.floor(val); } const normalizedTranslate = normalize(translate); const normalizedSnapGrid = snapGrid.map((val)=>normalize(val)); let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; if (typeof prevSnap === "undefined" && params.cssMode) { let prevSnapIndex; snapGrid.forEach((snap, snapIndex)=>{ if (normalizedTranslate >= snap) // prevSnap = snap; prevSnapIndex = snapIndex; }); if (typeof prevSnapIndex !== "undefined") prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; } let prevIndex = 0; if (typeof prevSnap !== "undefined") { prevIndex = slidesGrid.indexOf(prevSnap); if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { prevIndex = prevIndex - swiper.slidesPerViewDynamic("previous", true) + 1; prevIndex = Math.max(prevIndex, 0); } } if (params.rewind && swiper.isBeginning) { const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; return swiper.slideTo(lastIndex, speed, runCallbacks, internal); } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { requestAnimationFrame(()=>{ swiper.slideTo(prevIndex, speed, runCallbacks, internal); }); return true; } return swiper.slideTo(prevIndex, speed, runCallbacks, internal); } /* eslint no-unused-vars: "off" */ function $4e95c04dd8a5890d$var$slideReset(speed, runCallbacks, internal) { if (runCallbacks === void 0) runCallbacks = true; const swiper = this; if (swiper.destroyed) return; if (typeof speed === "undefined") speed = swiper.params.speed; return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); } /* eslint no-unused-vars: "off" */ function $4e95c04dd8a5890d$var$slideToClosest(speed, runCallbacks, internal, threshold) { if (runCallbacks === void 0) runCallbacks = true; if (threshold === void 0) threshold = 0.5; const swiper = this; if (swiper.destroyed) return; if (typeof speed === "undefined") speed = swiper.params.speed; let index = swiper.activeIndex; const skip = Math.min(swiper.params.slidesPerGroupSkip, index); const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; if (translate >= swiper.snapGrid[snapIndex]) { // The current translate is on or after the current snap index, so the choice // is between the current index and the one after it. const currentSnap = swiper.snapGrid[snapIndex]; const nextSnap = swiper.snapGrid[snapIndex + 1]; if (translate - currentSnap > (nextSnap - currentSnap) * threshold) index += swiper.params.slidesPerGroup; } else { // The current translate is before the current snap index, so the choice // is between the current index and the one before it. const prevSnap = swiper.snapGrid[snapIndex - 1]; const currentSnap = swiper.snapGrid[snapIndex]; if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) index -= swiper.params.slidesPerGroup; } index = Math.max(index, 0); index = Math.min(index, swiper.slidesGrid.length - 1); return swiper.slideTo(index, speed, runCallbacks, internal); } function $4e95c04dd8a5890d$var$slideToClickedSlide() { const swiper = this; if (swiper.destroyed) return; const { params: params, slidesEl: slidesEl } = swiper; const slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView; let slideToIndex = swiper.clickedIndex; let realIndex; const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; if (params.loop) { if (swiper.animating) return; realIndex = parseInt(swiper.clickedSlide.getAttribute("data-swiper-slide-index"), 10); if (params.centeredSlides) { if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { swiper.loopFix(); slideToIndex = swiper.getSlideIndex((0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ swiper.slideTo(slideToIndex); }); } else swiper.slideTo(slideToIndex); } else if (slideToIndex > swiper.slides.length - slidesPerView) { swiper.loopFix(); slideToIndex = swiper.getSlideIndex((0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ swiper.slideTo(slideToIndex); }); } else swiper.slideTo(slideToIndex); } else swiper.slideTo(slideToIndex); } var $4e95c04dd8a5890d$var$slide = { slideTo: $4e95c04dd8a5890d$var$slideTo, slideToLoop: $4e95c04dd8a5890d$var$slideToLoop, slideNext: $4e95c04dd8a5890d$var$slideNext, slidePrev: $4e95c04dd8a5890d$var$slidePrev, slideReset: $4e95c04dd8a5890d$var$slideReset, slideToClosest: $4e95c04dd8a5890d$var$slideToClosest, slideToClickedSlide: $4e95c04dd8a5890d$var$slideToClickedSlide }; function $4e95c04dd8a5890d$var$loopCreate(slideRealIndex) { const swiper = this; const { params: params, slidesEl: slidesEl } = swiper; if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; const initSlides = ()=>{ const slides = (0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`); slides.forEach((el, index)=>{ el.setAttribute("data-swiper-slide-index", index); }); }; const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; const addBlankSlides = (amountOfSlides)=>{ for(let i = 0; i < amountOfSlides; i += 1){ const slideEl = swiper.isElement ? (0, $831683533b862e22$export$db3b6bfb95261072)("swiper-slide", [ params.slideBlankClass ]) : (0, $831683533b862e22$export$db3b6bfb95261072)("div", [ params.slideClass, params.slideBlankClass ]); swiper.slidesEl.append(slideEl); } }; if (shouldFillGroup) { if (params.loopAddBlankSlides) { const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; addBlankSlides(slidesToAdd); swiper.recalcSlides(); swiper.updateSlides(); } else (0, $831683533b862e22$export$3b14a55fb2447963)("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"); initSlides(); } else if (shouldFillGrid) { if (params.loopAddBlankSlides) { const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; addBlankSlides(slidesToAdd); swiper.recalcSlides(); swiper.updateSlides(); } else (0, $831683533b862e22$export$3b14a55fb2447963)("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)"); initSlides(); } else initSlides(); swiper.loopFix({ slideRealIndex: slideRealIndex, direction: params.centeredSlides ? undefined : "next" }); } function $4e95c04dd8a5890d$var$loopFix(_temp) { let { slideRealIndex: slideRealIndex, slideTo: slideTo = true, direction: direction, setTranslate: setTranslate, activeSlideIndex: activeSlideIndex, byController: byController, byMousewheel: byMousewheel } = _temp === void 0 ? {} : _temp; const swiper = this; if (!swiper.params.loop) return; swiper.emit("beforeLoopFix"); const { slides: slides, allowSlidePrev: allowSlidePrev, allowSlideNext: allowSlideNext, slidesEl: slidesEl, params: params } = swiper; const { centeredSlides: centeredSlides } = params; swiper.allowSlidePrev = true; swiper.allowSlideNext = true; if (swiper.virtual && params.virtual.enabled) { if (slideTo) { if (!params.centeredSlides && swiper.snapIndex === 0) swiper.slideTo(swiper.virtual.slides.length, 0, false, true); else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); else if (swiper.snapIndex === swiper.snapGrid.length - 1) swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); } swiper.allowSlidePrev = allowSlidePrev; swiper.allowSlideNext = allowSlideNext; swiper.emit("loopFix"); return; } let slidesPerView = params.slidesPerView; if (slidesPerView === "auto") slidesPerView = swiper.slidesPerViewDynamic(); else { slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); if (centeredSlides && slidesPerView % 2 === 0) slidesPerView = slidesPerView + 1; } const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; let loopedSlides = slidesPerGroup; if (loopedSlides % slidesPerGroup !== 0) loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; loopedSlides += params.loopAdditionalSlides; swiper.loopedSlides = loopedSlides; const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; if (slides.length < slidesPerView + loopedSlides) (0, $831683533b862e22$export$3b14a55fb2447963)("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters"); else if (gridEnabled && params.grid.fill === "row") (0, $831683533b862e22$export$3b14a55fb2447963)("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`"); const prependSlidesIndexes = []; const appendSlidesIndexes = []; let activeIndex = swiper.activeIndex; if (typeof activeSlideIndex === "undefined") activeSlideIndex = swiper.getSlideIndex(slides.filter((el)=>el.classList.contains(params.slideActiveClass))[0]); else activeIndex = activeSlideIndex; const isNext = direction === "next" || !direction; const isPrev = direction === "prev" || !direction; let slidesPrepended = 0; let slidesAppended = 0; const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === "undefined" ? -slidesPerView / 2 + 0.5 : 0); // prepend last slides before start if (activeColIndexWithShift < loopedSlides) { slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); for(let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1){ const index = i - Math.floor(i / cols) * cols; if (gridEnabled) { const colIndexToPrepend = cols - index - 1; for(let i = slides.length - 1; i >= 0; i -= 1)if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); // slides.forEach((slide, slideIndex) => { // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); // }); } else prependSlidesIndexes.push(cols - index - 1); } } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); for(let i = 0; i < slidesAppended; i += 1){ const index = i - Math.floor(i / cols) * cols; if (gridEnabled) slides.forEach((slide, slideIndex)=>{ if (slide.column === index) appendSlidesIndexes.push(slideIndex); }); else appendSlidesIndexes.push(index); } } swiper.__preventObserver__ = true; requestAnimationFrame(()=>{ swiper.__preventObserver__ = false; }); if (isPrev) prependSlidesIndexes.forEach((index)=>{ slides[index].swiperLoopMoveDOM = true; slidesEl.prepend(slides[index]); slides[index].swiperLoopMoveDOM = false; }); if (isNext) appendSlidesIndexes.forEach((index)=>{ slides[index].swiperLoopMoveDOM = true; slidesEl.append(slides[index]); slides[index].swiperLoopMoveDOM = false; }); swiper.recalcSlides(); if (params.slidesPerView === "auto") swiper.updateSlides(); else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) swiper.slides.forEach((slide, slideIndex)=>{ swiper.grid.updateSlide(slideIndex, slide, swiper.slides); }); if (params.watchSlidesProgress) swiper.updateSlidesOffset(); if (slideTo) { if (prependSlidesIndexes.length > 0 && isPrev) { if (typeof slideRealIndex === "undefined") { const currentSlideTranslate = swiper.slidesGrid[activeIndex]; const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; const diff = newSlideTranslate - currentSlideTranslate; if (byMousewheel) swiper.setTranslate(swiper.translate - diff); else { swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); if (setTranslate) { swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; } } } else if (setTranslate) { const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; swiper.slideTo(swiper.activeIndex + shift, 0, false, true); swiper.touchEventsData.currentTranslate = swiper.translate; } } else if (appendSlidesIndexes.length > 0 && isNext) { if (typeof slideRealIndex === "undefined") { const currentSlideTranslate = swiper.slidesGrid[activeIndex]; const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; const diff = newSlideTranslate - currentSlideTranslate; if (byMousewheel) swiper.setTranslate(swiper.translate - diff); else { swiper.slideTo(activeIndex - slidesAppended, 0, false, true); if (setTranslate) { swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; } } } else { const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; swiper.slideTo(swiper.activeIndex - shift, 0, false, true); } } } swiper.allowSlidePrev = allowSlidePrev; swiper.allowSlideNext = allowSlideNext; if (swiper.controller && swiper.controller.control && !byController) { const loopParams = { slideRealIndex: slideRealIndex, direction: direction, setTranslate: setTranslate, activeSlideIndex: activeSlideIndex, byController: true }; if (Array.isArray(swiper.controller.control)) swiper.controller.control.forEach((c)=>{ if (!c.destroyed && c.params.loop) c.loopFix({ ...loopParams, slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false }); }); else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) swiper.controller.control.loopFix({ ...loopParams, slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false }); } swiper.emit("loopFix"); } function $4e95c04dd8a5890d$var$loopDestroy() { const swiper = this; const { params: params, slidesEl: slidesEl } = swiper; if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; swiper.recalcSlides(); const newSlidesOrder = []; swiper.slides.forEach((slideEl)=>{ const index = typeof slideEl.swiperSlideIndex === "undefined" ? slideEl.getAttribute("data-swiper-slide-index") * 1 : slideEl.swiperSlideIndex; newSlidesOrder[index] = slideEl; }); swiper.slides.forEach((slideEl)=>{ slideEl.removeAttribute("data-swiper-slide-index"); }); newSlidesOrder.forEach((slideEl)=>{ slidesEl.append(slideEl); }); swiper.recalcSlides(); swiper.slideTo(swiper.realIndex, 0); } var $4e95c04dd8a5890d$var$loop = { loopCreate: $4e95c04dd8a5890d$var$loopCreate, loopFix: $4e95c04dd8a5890d$var$loopFix, loopDestroy: $4e95c04dd8a5890d$var$loopDestroy }; function $4e95c04dd8a5890d$var$setGrabCursor(moving) { const swiper = this; if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; const el = swiper.params.touchEventsTarget === "container" ? swiper.el : swiper.wrapperEl; if (swiper.isElement) swiper.__preventObserver__ = true; el.style.cursor = "move"; el.style.cursor = moving ? "grabbing" : "grab"; if (swiper.isElement) requestAnimationFrame(()=>{ swiper.__preventObserver__ = false; }); } function $4e95c04dd8a5890d$var$unsetGrabCursor() { const swiper = this; if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; if (swiper.isElement) swiper.__preventObserver__ = true; swiper[swiper.params.touchEventsTarget === "container" ? "el" : "wrapperEl"].style.cursor = ""; if (swiper.isElement) requestAnimationFrame(()=>{ swiper.__preventObserver__ = false; }); } var $4e95c04dd8a5890d$var$grabCursor = { setGrabCursor: $4e95c04dd8a5890d$var$setGrabCursor, unsetGrabCursor: $4e95c04dd8a5890d$var$unsetGrabCursor }; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd function $4e95c04dd8a5890d$var$closestElement(selector, base) { if (base === void 0) base = this; function __closestFrom(el) { if (!el || el === (0, $189f45f12f88561c$export$39b482c5e57630a8)() || el === (0, $189f45f12f88561c$export$407448d2b89b1813)()) return null; if (el.assignedSlot) el = el.assignedSlot; const found = el.closest(selector); if (!found && !el.getRootNode) return null; return found || __closestFrom(el.getRootNode().host); } return __closestFrom(base); } function $4e95c04dd8a5890d$var$preventEdgeSwipe(swiper, event, startX) { const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const { params: params } = swiper; const edgeSwipeDetection = params.edgeSwipeDetection; const edgeSwipeThreshold = params.edgeSwipeThreshold; if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window1.innerWidth - edgeSwipeThreshold)) { if (edgeSwipeDetection === "prevent") { event.preventDefault(); return true; } return false; } return true; } function $4e95c04dd8a5890d$var$onTouchStart(event) { const swiper = this; const document1 = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); let e = event; if (e.originalEvent) e = e.originalEvent; const data = swiper.touchEventsData; if (e.type === "pointerdown") { if (data.pointerId !== null && data.pointerId !== e.pointerId) return; data.pointerId = e.pointerId; } else if (e.type === "touchstart" && e.targetTouches.length === 1) data.touchId = e.targetTouches[0].identifier; if (e.type === "touchstart") { // don't proceed touch event $4e95c04dd8a5890d$var$preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); return; } const { params: params, touches: touches, enabled: enabled } = swiper; if (!enabled) return; if (!params.simulateTouch && e.pointerType === "mouse") return; if (swiper.animating && params.preventInteractionOnTransition) return; if (!swiper.animating && params.cssMode && params.loop) swiper.loopFix(); let targetEl = e.target; if (params.touchEventsTarget === "wrapper") { if (!(0, $831683533b862e22$export$90a7f3efeed30595)(targetEl, swiper.wrapperEl)) return; } if ("which" in e && e.which === 3) return; if ("button" in e && e.button > 0) return; if (data.isTouched && data.isMoved) return; // change target el for shadow root component const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ""; // eslint-disable-next-line const eventPath = e.composedPath ? e.composedPath() : e.path; if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) targetEl = eventPath[0]; const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element if (params.noSwiping && (isTargetShadow ? $4e95c04dd8a5890d$var$closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { swiper.allowClick = true; return; } if (params.swipeHandler) { if (!targetEl.closest(params.swipeHandler)) return; } touches.currentX = e.pageX; touches.currentY = e.pageY; const startX = touches.currentX; const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore if (!$4e95c04dd8a5890d$var$preventEdgeSwipe(swiper, e, startX)) return; Object.assign(data, { isTouched: true, isMoved: false, allowTouchCallbacks: true, isScrolling: undefined, startMoving: undefined }); touches.startX = startX; touches.startY = startY; data.touchStartTime = (0, $831683533b862e22$export$4368d992c4eafac0)(); swiper.allowClick = true; swiper.updateSize(); swiper.swipeDirection = undefined; if (params.threshold > 0) data.allowThresholdMove = false; let preventDefault = true; if (targetEl.matches(data.focusableElements)) { preventDefault = false; if (targetEl.nodeName === "SELECT") data.isTouched = false; } if (document1.activeElement && document1.activeElement.matches(data.focusableElements) && document1.activeElement !== targetEl) document1.activeElement.blur(); const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) e.preventDefault(); if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) swiper.freeMode.onTouchStart(); swiper.emit("touchStart", e); } function $4e95c04dd8a5890d$var$onTouchMove(event) { const document1 = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); const swiper = this; const data = swiper.touchEventsData; const { params: params, touches: touches, rtlTranslate: rtl, enabled: enabled } = swiper; if (!enabled) return; if (!params.simulateTouch && event.pointerType === "mouse") return; let e = event; if (e.originalEvent) e = e.originalEvent; if (e.type === "pointermove") { if (data.touchId !== null) return; // return from pointer if we use touch const id = e.pointerId; if (id !== data.pointerId) return; } let targetTouch; if (e.type === "touchmove") { targetTouch = [ ...e.changedTouches ].filter((t)=>t.identifier === data.touchId)[0]; if (!targetTouch || targetTouch.identifier !== data.touchId) return; } else targetTouch = e; if (!data.isTouched) { if (data.startMoving && data.isScrolling) swiper.emit("touchMoveOpposite", e); return; } const pageX = targetTouch.pageX; const pageY = targetTouch.pageY; if (e.preventedByNestedSwiper) { touches.startX = pageX; touches.startY = pageY; return; } if (!swiper.allowTouchMove) { if (!e.target.matches(data.focusableElements)) swiper.allowClick = false; if (data.isTouched) { Object.assign(touches, { startX: pageX, startY: pageY, currentX: pageX, currentY: pageY }); data.touchStartTime = (0, $831683533b862e22$export$4368d992c4eafac0)(); } return; } if (params.touchReleaseOnEdges && !params.loop) { if (swiper.isVertical()) // Vertical { if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { data.isTouched = false; data.isMoved = false; return; } } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) return; } if (document1.activeElement) { if (e.target === document1.activeElement && e.target.matches(data.focusableElements)) { data.isMoved = true; swiper.allowClick = false; return; } } if (data.allowTouchCallbacks) swiper.emit("touchMove", e); touches.previousX = touches.currentX; touches.previousY = touches.currentY; touches.currentX = pageX; touches.currentY = pageY; const diffX = touches.currentX - touches.startX; const diffY = touches.currentY - touches.startY; if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; if (typeof data.isScrolling === "undefined") { let touchAngle; if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) data.isScrolling = false; else // eslint-disable-next-line if (diffX * diffX + diffY * diffY >= 25) { touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; } } if (data.isScrolling) swiper.emit("touchMoveOpposite", e); if (typeof data.startMoving === "undefined") { if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) data.startMoving = true; } if (data.isScrolling || e.type === "touchmove" && data.preventTouchMoveFromPointerMove) { data.isTouched = false; return; } if (!data.startMoving) return; swiper.allowClick = false; if (!params.cssMode && e.cancelable) e.preventDefault(); if (params.touchMoveStopPropagation && !params.nested) e.stopPropagation(); let diff = swiper.isHorizontal() ? diffX : diffY; let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; if (params.oneWayMovement) { diff = Math.abs(diff) * (rtl ? 1 : -1); touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); } touches.diff = diff; diff *= params.touchRatio; if (rtl) { diff = -diff; touchesDiff = -touchesDiff; } const prevTouchesDirection = swiper.touchesDirection; swiper.swipeDirection = diff > 0 ? "prev" : "next"; swiper.touchesDirection = touchesDiff > 0 ? "prev" : "next"; const isLoop = swiper.params.loop && !params.cssMode; const allowLoopFix = swiper.touchesDirection === "next" && swiper.allowSlideNext || swiper.touchesDirection === "prev" && swiper.allowSlidePrev; if (!data.isMoved) { if (isLoop && allowLoopFix) swiper.loopFix({ direction: swiper.swipeDirection }); data.startTranslate = swiper.getTranslate(); swiper.setTransition(0); if (swiper.animating) { const evt = new window.CustomEvent("transitionend", { bubbles: true, cancelable: true, detail: { bySwiperTouchMove: true } }); swiper.wrapperEl.dispatchEvent(evt); } data.allowMomentumBounce = false; // Grab Cursor if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(true); swiper.emit("sliderFirstMove", e); } let loopFixed; new Date().getTime(); if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { Object.assign(touches, { startX: pageX, startY: pageY, currentX: pageX, currentY: pageY, startTranslate: data.currentTranslate }); data.loopSwapReset = true; data.startTranslate = data.currentTranslate; return; } swiper.emit("sliderMove", e); data.isMoved = true; data.currentTranslate = diff + data.startTranslate; let disableParentSwiper = true; let resistanceRatio = params.resistanceRatio; if (params.touchReleaseOnEdges) resistanceRatio = 0; if (diff > 0) { if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) swiper.loopFix({ direction: "prev", setTranslate: true, activeSlideIndex: 0 }); if (data.currentTranslate > swiper.minTranslate()) { disableParentSwiper = false; if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; } } else if (diff < 0) { if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) swiper.loopFix({ direction: "next", setTranslate: true, activeSlideIndex: swiper.slides.length - (params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) }); if (data.currentTranslate < swiper.maxTranslate()) { disableParentSwiper = false; if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; } } if (disableParentSwiper) e.preventedByNestedSwiper = true; // Directions locks if (!swiper.allowSlideNext && swiper.swipeDirection === "next" && data.currentTranslate < data.startTranslate) data.currentTranslate = data.startTranslate; if (!swiper.allowSlidePrev && swiper.swipeDirection === "prev" && data.currentTranslate > data.startTranslate) data.currentTranslate = data.startTranslate; if (!swiper.allowSlidePrev && !swiper.allowSlideNext) data.currentTranslate = data.startTranslate; // Threshold if (params.threshold > 0) { if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { if (!data.allowThresholdMove) { data.allowThresholdMove = true; touches.startX = touches.currentX; touches.startY = touches.currentY; data.currentTranslate = data.startTranslate; touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; return; } } else { data.currentTranslate = data.startTranslate; return; } } if (!params.followFinger || params.cssMode) return; // Update active index in free mode if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } if (params.freeMode && params.freeMode.enabled && swiper.freeMode) swiper.freeMode.onTouchMove(); // Update progress swiper.updateProgress(data.currentTranslate); // Update translate swiper.setTranslate(data.currentTranslate); } function $4e95c04dd8a5890d$var$onTouchEnd(event) { const swiper = this; const data = swiper.touchEventsData; let e = event; if (e.originalEvent) e = e.originalEvent; let targetTouch; const isTouchEvent = e.type === "touchend" || e.type === "touchcancel"; if (!isTouchEvent) { if (data.touchId !== null) return; // return from pointer if we use touch if (e.pointerId !== data.pointerId) return; targetTouch = e; } else { targetTouch = [ ...e.changedTouches ].filter((t)=>t.identifier === data.touchId)[0]; if (!targetTouch || targetTouch.identifier !== data.touchId) return; } if ([ "pointercancel", "pointerout", "pointerleave", "contextmenu" ].includes(e.type)) { const proceed = [ "pointercancel", "contextmenu" ].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); if (!proceed) return; } data.pointerId = null; data.touchId = null; const { params: params, touches: touches, rtlTranslate: rtl, slidesGrid: slidesGrid, enabled: enabled } = swiper; if (!enabled) return; if (!params.simulateTouch && e.pointerType === "mouse") return; if (data.allowTouchCallbacks) swiper.emit("touchEnd", e); data.allowTouchCallbacks = false; if (!data.isTouched) { if (data.isMoved && params.grabCursor) swiper.setGrabCursor(false); data.isMoved = false; data.startMoving = false; return; } // Return Grab Cursor if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(false); // Time diff const touchEndTime = (0, $831683533b862e22$export$4368d992c4eafac0)(); const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click if (swiper.allowClick) { const pathTree = e.path || e.composedPath && e.composedPath(); swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); swiper.emit("tap click", e); if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) swiper.emit("doubleTap doubleClick", e); } data.lastClickTime = (0, $831683533b862e22$export$4368d992c4eafac0)(); (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ if (!swiper.destroyed) swiper.allowClick = true; }); if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { data.isTouched = false; data.isMoved = false; data.startMoving = false; return; } data.isTouched = false; data.isMoved = false; data.startMoving = false; let currentPos; if (params.followFinger) currentPos = rtl ? swiper.translate : -swiper.translate; else currentPos = -data.currentTranslate; if (params.cssMode) return; if (params.freeMode && params.freeMode.enabled) { swiper.freeMode.onTouchEnd({ currentPos: currentPos }); return; } // Find current slide const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; let stopIndex = 0; let groupSize = swiper.slidesSizesGrid[0]; for(let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup){ const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; if (typeof slidesGrid[i + increment] !== "undefined") { if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { stopIndex = i; groupSize = slidesGrid[i + increment] - slidesGrid[i]; } } else if (swipeToLast || currentPos >= slidesGrid[i]) { stopIndex = i; groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; } } let rewindFirstIndex = null; let rewindLastIndex = null; if (params.rewind) { if (swiper.isBeginning) rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; else if (swiper.isEnd) rewindFirstIndex = 0; } // Find current slide size const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; if (timeDiff > params.longSwipesMs) { // Long touches if (!params.longSwipes) { swiper.slideTo(swiper.activeIndex); return; } if (swiper.swipeDirection === "next") { if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment); else swiper.slideTo(stopIndex); } if (swiper.swipeDirection === "prev") { if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment); else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) swiper.slideTo(rewindLastIndex); else swiper.slideTo(stopIndex); } } else { // Short swipes if (!params.shortSwipes) { swiper.slideTo(swiper.activeIndex); return; } const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); if (!isNavButtonTarget) { if (swiper.swipeDirection === "next") swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); if (swiper.swipeDirection === "prev") swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); } else if (e.target === swiper.navigation.nextEl) swiper.slideTo(stopIndex + increment); else swiper.slideTo(stopIndex); } } function $4e95c04dd8a5890d$var$onResize() { const swiper = this; const { params: params, el: el } = swiper; if (el && el.offsetWidth === 0) return; // Breakpoints if (params.breakpoints) swiper.setBreakpoint(); // Save locks const { allowSlideNext: allowSlideNext, allowSlidePrev: allowSlidePrev, snapGrid: snapGrid } = swiper; const isVirtual = swiper.virtual && swiper.params.virtual.enabled; // Disable locks on resize swiper.allowSlideNext = true; swiper.allowSlidePrev = true; swiper.updateSize(); swiper.updateSlides(); swiper.updateSlidesClasses(); const isVirtualLoop = isVirtual && params.loop; if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) swiper.slideTo(swiper.slides.length - 1, 0, false, true); else if (swiper.params.loop && !isVirtual) swiper.slideToLoop(swiper.realIndex, 0, false, true); else swiper.slideTo(swiper.activeIndex, 0, false, true); if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { clearTimeout(swiper.autoplay.resizeTimeout); swiper.autoplay.resizeTimeout = setTimeout(()=>{ if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) swiper.autoplay.resume(); }, 500); } // Return locks after resize swiper.allowSlidePrev = allowSlidePrev; swiper.allowSlideNext = allowSlideNext; if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow(); } function $4e95c04dd8a5890d$var$onClick(e) { const swiper = this; if (!swiper.enabled) return; if (!swiper.allowClick) { if (swiper.params.preventClicks) e.preventDefault(); if (swiper.params.preventClicksPropagation && swiper.animating) { e.stopPropagation(); e.stopImmediatePropagation(); } } } function $4e95c04dd8a5890d$var$onScroll() { const swiper = this; const { wrapperEl: wrapperEl, rtlTranslate: rtlTranslate, enabled: enabled } = swiper; if (!enabled) return; swiper.previousTranslate = swiper.translate; if (swiper.isHorizontal()) swiper.translate = -wrapperEl.scrollLeft; else swiper.translate = -wrapperEl.scrollTop; // eslint-disable-next-line if (swiper.translate === 0) swiper.translate = 0; swiper.updateActiveIndex(); swiper.updateSlidesClasses(); let newProgress; const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); if (translatesDiff === 0) newProgress = 0; else newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; if (newProgress !== swiper.progress) swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); swiper.emit("setTranslate", swiper.translate, false); } function $4e95c04dd8a5890d$var$onLoad(e) { const swiper = this; $4e95c04dd8a5890d$var$processLazyPreloader(swiper, e.target); if (swiper.params.cssMode || swiper.params.slidesPerView !== "auto" && !swiper.params.autoHeight) return; swiper.update(); } function $4e95c04dd8a5890d$var$onDocumentTouchStart() { const swiper = this; if (swiper.documentTouchHandlerProceeded) return; swiper.documentTouchHandlerProceeded = true; if (swiper.params.touchReleaseOnEdges) swiper.el.style.touchAction = "auto"; } const $4e95c04dd8a5890d$var$events = (swiper, method)=>{ const document1 = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); const { params: params, el: el, wrapperEl: wrapperEl, device: device } = swiper; const capture = !!params.nested; const domMethod = method === "on" ? "addEventListener" : "removeEventListener"; const swiperMethod = method; if (!el || typeof el === "string") return; // Touch Events document1[domMethod]("touchstart", swiper.onDocumentTouchStart, { passive: false, capture: capture }); el[domMethod]("touchstart", swiper.onTouchStart, { passive: false }); el[domMethod]("pointerdown", swiper.onTouchStart, { passive: false }); document1[domMethod]("touchmove", swiper.onTouchMove, { passive: false, capture: capture }); document1[domMethod]("pointermove", swiper.onTouchMove, { passive: false, capture: capture }); document1[domMethod]("touchend", swiper.onTouchEnd, { passive: true }); document1[domMethod]("pointerup", swiper.onTouchEnd, { passive: true }); document1[domMethod]("pointercancel", swiper.onTouchEnd, { passive: true }); document1[domMethod]("touchcancel", swiper.onTouchEnd, { passive: true }); document1[domMethod]("pointerout", swiper.onTouchEnd, { passive: true }); document1[domMethod]("pointerleave", swiper.onTouchEnd, { passive: true }); document1[domMethod]("contextmenu", swiper.onTouchEnd, { passive: true }); // Prevent Links Clicks if (params.preventClicks || params.preventClicksPropagation) el[domMethod]("click", swiper.onClick, true); if (params.cssMode) wrapperEl[domMethod]("scroll", swiper.onScroll); // Resize handler if (params.updateOnWindowResize) swiper[swiperMethod](device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", $4e95c04dd8a5890d$var$onResize, true); else swiper[swiperMethod]("observerUpdate", $4e95c04dd8a5890d$var$onResize, true); // Images loader el[domMethod]("load", swiper.onLoad, { capture: true }); }; function $4e95c04dd8a5890d$var$attachEvents() { const swiper = this; const { params: params } = swiper; swiper.onTouchStart = $4e95c04dd8a5890d$var$onTouchStart.bind(swiper); swiper.onTouchMove = $4e95c04dd8a5890d$var$onTouchMove.bind(swiper); swiper.onTouchEnd = $4e95c04dd8a5890d$var$onTouchEnd.bind(swiper); swiper.onDocumentTouchStart = $4e95c04dd8a5890d$var$onDocumentTouchStart.bind(swiper); if (params.cssMode) swiper.onScroll = $4e95c04dd8a5890d$var$onScroll.bind(swiper); swiper.onClick = $4e95c04dd8a5890d$var$onClick.bind(swiper); swiper.onLoad = $4e95c04dd8a5890d$var$onLoad.bind(swiper); $4e95c04dd8a5890d$var$events(swiper, "on"); } function $4e95c04dd8a5890d$var$detachEvents() { const swiper = this; $4e95c04dd8a5890d$var$events(swiper, "off"); } var $4e95c04dd8a5890d$var$events$1 = { attachEvents: $4e95c04dd8a5890d$var$attachEvents, detachEvents: $4e95c04dd8a5890d$var$detachEvents }; const $4e95c04dd8a5890d$var$isGridEnabled = (swiper, params)=>{ return swiper.grid && params.grid && params.grid.rows > 1; }; function $4e95c04dd8a5890d$var$setBreakpoint() { const swiper = this; const { realIndex: realIndex, initialized: initialized, params: params, el: el } = swiper; const breakpoints = params.breakpoints; if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; const breakpointParams = breakpointOnlyParams || swiper.originalParams; const wasMultiRow = $4e95c04dd8a5890d$var$isGridEnabled(swiper, params); const isMultiRow = $4e95c04dd8a5890d$var$isGridEnabled(swiper, breakpointParams); const wasGrabCursor = swiper.params.grabCursor; const isGrabCursor = breakpointParams.grabCursor; const wasEnabled = params.enabled; if (wasMultiRow && !isMultiRow) { el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); swiper.emitContainerClasses(); } else if (!wasMultiRow && isMultiRow) { el.classList.add(`${params.containerModifierClass}grid`); if (breakpointParams.grid.fill && breakpointParams.grid.fill === "column" || !breakpointParams.grid.fill && params.grid.fill === "column") el.classList.add(`${params.containerModifierClass}grid-column`); swiper.emitContainerClasses(); } if (wasGrabCursor && !isGrabCursor) swiper.unsetGrabCursor(); else if (!wasGrabCursor && isGrabCursor) swiper.setGrabCursor(); // Toggle navigation, pagination, scrollbar [ "navigation", "pagination", "scrollbar" ].forEach((prop)=>{ if (typeof breakpointParams[prop] === "undefined") return; const wasModuleEnabled = params[prop] && params[prop].enabled; const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; if (wasModuleEnabled && !isModuleEnabled) swiper[prop].disable(); if (!wasModuleEnabled && isModuleEnabled) swiper[prop].enable(); }); const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); const wasLoop = params.loop; if (directionChanged && initialized) swiper.changeDirection(); (0, $831683533b862e22$export$efccba1c4a2ef57b)(swiper.params, breakpointParams); const isEnabled = swiper.params.enabled; const hasLoop = swiper.params.loop; Object.assign(swiper, { allowTouchMove: swiper.params.allowTouchMove, allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev }); if (wasEnabled && !isEnabled) swiper.disable(); else if (!wasEnabled && isEnabled) swiper.enable(); swiper.currentBreakpoint = breakpoint; swiper.emit("_beforeBreakpoint", breakpointParams); if (initialized) { if (needsReLoop) { swiper.loopDestroy(); swiper.loopCreate(realIndex); swiper.updateSlides(); } else if (!wasLoop && hasLoop) { swiper.loopCreate(realIndex); swiper.updateSlides(); } else if (wasLoop && !hasLoop) swiper.loopDestroy(); } swiper.emit("breakpoint", breakpointParams); } function $4e95c04dd8a5890d$var$getBreakpoint(breakpoints, base, containerEl) { if (base === void 0) base = "window"; if (!breakpoints || base === "container" && !containerEl) return undefined; let breakpoint = false; const window1 = (0, $189f45f12f88561c$export$407448d2b89b1813)(); const currentHeight = base === "window" ? window1.innerHeight : containerEl.clientHeight; const points = Object.keys(breakpoints).map((point)=>{ if (typeof point === "string" && point.indexOf("@") === 0) { const minRatio = parseFloat(point.substr(1)); const value = currentHeight * minRatio; return { value: value, point: point }; } return { value: point, point: point }; }); points.sort((a, b)=>parseInt(a.value, 10) - parseInt(b.value, 10)); for(let i = 0; i < points.length; i += 1){ const { point: point, value: value } = points[i]; if (base === "window") { if (window1.matchMedia(`(min-width: ${value}px)`).matches) breakpoint = point; } else if (value <= containerEl.clientWidth) breakpoint = point; } return breakpoint || "max"; } var $4e95c04dd8a5890d$var$breakpoints = { setBreakpoint: $4e95c04dd8a5890d$var$setBreakpoint, getBreakpoint: $4e95c04dd8a5890d$var$getBreakpoint }; function $4e95c04dd8a5890d$var$prepareClasses(entries, prefix) { const resultClasses = []; entries.forEach((item)=>{ if (typeof item === "object") Object.keys(item).forEach((classNames)=>{ if (item[classNames]) resultClasses.push(prefix + classNames); }); else if (typeof item === "string") resultClasses.push(prefix + item); }); return resultClasses; } function $4e95c04dd8a5890d$var$addClasses() { const swiper = this; const { classNames: classNames, params: params, rtl: rtl, el: el, device: device } = swiper; // prettier-ignore const suffixes = $4e95c04dd8a5890d$var$prepareClasses([ "initialized", params.direction, { "free-mode": swiper.params.freeMode && params.freeMode.enabled }, { "autoheight": params.autoHeight }, { "rtl": rtl }, { "grid": params.grid && params.grid.rows > 1 }, { "grid-column": params.grid && params.grid.rows > 1 && params.grid.fill === "column" }, { "android": device.android }, { "ios": device.ios }, { "css-mode": params.cssMode }, { "centered": params.cssMode && params.centeredSlides }, { "watch-progress": params.watchSlidesProgress } ], params.containerModifierClass); classNames.push(...suffixes); el.classList.add(...classNames); swiper.emitContainerClasses(); } function $4e95c04dd8a5890d$var$removeClasses() { const swiper = this; const { el: el, classNames: classNames } = swiper; if (!el || typeof el === "string") return; el.classList.remove(...classNames); swiper.emitContainerClasses(); } var $4e95c04dd8a5890d$var$classes = { addClasses: $4e95c04dd8a5890d$var$addClasses, removeClasses: $4e95c04dd8a5890d$var$removeClasses }; function $4e95c04dd8a5890d$var$checkOverflow() { const swiper = this; const { isLocked: wasLocked, params: params } = swiper; const { slidesOffsetBefore: slidesOffsetBefore } = params; if (slidesOffsetBefore) { const lastSlideIndex = swiper.slides.length - 1; const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; swiper.isLocked = swiper.size > lastSlideRightEdge; } else swiper.isLocked = swiper.snapGrid.length === 1; if (params.allowSlideNext === true) swiper.allowSlideNext = !swiper.isLocked; if (params.allowSlidePrev === true) swiper.allowSlidePrev = !swiper.isLocked; if (wasLocked && wasLocked !== swiper.isLocked) swiper.isEnd = false; if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? "lock" : "unlock"); } var $4e95c04dd8a5890d$var$checkOverflow$1 = { checkOverflow: $4e95c04dd8a5890d$var$checkOverflow }; var $4e95c04dd8a5890d$export$4368d992c4eafac0 = { init: true, direction: "horizontal", oneWayMovement: false, swiperElementNodeName: "SWIPER-CONTAINER", touchEventsTarget: "wrapper", initialSlide: 0, speed: 300, cssMode: false, updateOnWindowResize: true, resizeObserver: true, nested: false, createElements: false, eventsPrefix: "swiper", enabled: true, focusableElements: "input, select, option, textarea, button, video, label", // Overrides width: null, height: null, // preventInteractionOnTransition: false, // ssr userAgent: null, url: null, // To support iOS's swipe-to-go-back gesture (when being used in-app). edgeSwipeDetection: false, edgeSwipeThreshold: 20, // Autoheight autoHeight: false, // Set wrapper width setWrapperSize: false, // Virtual Translate virtualTranslate: false, // Effects effect: "slide", // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' // Breakpoints breakpoints: undefined, breakpointsBase: "window", // Slides grid spaceBetween: 0, slidesPerView: 1, slidesPerGroup: 1, slidesPerGroupSkip: 0, slidesPerGroupAuto: false, centeredSlides: false, centeredSlidesBounds: false, slidesOffsetBefore: 0, // in px slidesOffsetAfter: 0, // in px normalizeSlideIndex: true, centerInsufficientSlides: false, // Disable swiper and hide navigation when container not overflow watchOverflow: true, // Round length roundLengths: false, // Touches touchRatio: 1, touchAngle: 45, simulateTouch: true, shortSwipes: true, longSwipes: true, longSwipesRatio: 0.5, longSwipesMs: 300, followFinger: true, allowTouchMove: true, threshold: 5, touchMoveStopPropagation: false, touchStartPreventDefault: true, touchStartForcePreventDefault: false, touchReleaseOnEdges: false, // Unique Navigation Elements uniqueNavElements: true, // Resistance resistance: true, resistanceRatio: 0.85, // Progress watchSlidesProgress: false, // Cursor grabCursor: false, // Clicks preventClicks: true, preventClicksPropagation: true, slideToClickedSlide: false, // loop loop: false, loopAddBlankSlides: true, loopAdditionalSlides: 0, loopPreventsSliding: true, // rewind rewind: false, // Swiping/no swiping allowSlidePrev: true, allowSlideNext: true, swipeHandler: null, // '.swipe-handler', noSwiping: true, noSwipingClass: "swiper-no-swiping", noSwipingSelector: null, // Passive Listeners passiveListeners: true, maxBackfaceHiddenSlides: 10, // NS containerModifierClass: "swiper-", // NEW slideClass: "swiper-slide", slideBlankClass: "swiper-slide-blank", slideActiveClass: "swiper-slide-active", slideVisibleClass: "swiper-slide-visible", slideFullyVisibleClass: "swiper-slide-fully-visible", slideNextClass: "swiper-slide-next", slidePrevClass: "swiper-slide-prev", wrapperClass: "swiper-wrapper", lazyPreloaderClass: "swiper-lazy-preloader", lazyPreloadPrevNext: 0, // Callbacks runCallbacksOnInit: true, // Internals _emitClasses: false }; function $4e95c04dd8a5890d$var$moduleExtendParams(params, allModulesParams) { return function extendParams(obj) { if (obj === void 0) obj = {}; const moduleParamName = Object.keys(obj)[0]; const moduleParams = obj[moduleParamName]; if (typeof moduleParams !== "object" || moduleParams === null) { (0, $831683533b862e22$export$efccba1c4a2ef57b)(allModulesParams, obj); return; } if (params[moduleParamName] === true) params[moduleParamName] = { enabled: true }; if (moduleParamName === "navigation" && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) params[moduleParamName].auto = true; if ([ "pagination", "scrollbar" ].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) params[moduleParamName].auto = true; if (!(moduleParamName in params && "enabled" in moduleParams)) { (0, $831683533b862e22$export$efccba1c4a2ef57b)(allModulesParams, obj); return; } if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) params[moduleParamName].enabled = true; if (!params[moduleParamName]) params[moduleParamName] = { enabled: false }; (0, $831683533b862e22$export$efccba1c4a2ef57b)(allModulesParams, obj); }; } /* eslint no-param-reassign: "off" */ const $4e95c04dd8a5890d$var$prototypes = { eventsEmitter: $4e95c04dd8a5890d$var$eventsEmitter, update: $4e95c04dd8a5890d$var$update, translate: $4e95c04dd8a5890d$var$translate, transition: $4e95c04dd8a5890d$var$transition, slide: $4e95c04dd8a5890d$var$slide, loop: $4e95c04dd8a5890d$var$loop, grabCursor: $4e95c04dd8a5890d$var$grabCursor, events: $4e95c04dd8a5890d$var$events$1, breakpoints: $4e95c04dd8a5890d$var$breakpoints, checkOverflow: $4e95c04dd8a5890d$var$checkOverflow$1, classes: $4e95c04dd8a5890d$var$classes }; const $4e95c04dd8a5890d$var$extendedDefaults = {}; class $4e95c04dd8a5890d$export$25ce5a424b770e84 { constructor(){ let el; let params; for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key]; if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === "Object") params = args[0]; else [el, params] = args; if (!params) params = {}; params = (0, $831683533b862e22$export$efccba1c4a2ef57b)({}, params); if (el && !params.el) params.el = el; const document1 = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); if (params.el && typeof params.el === "string" && document1.querySelectorAll(params.el).length > 1) { const swipers = []; document1.querySelectorAll(params.el).forEach((containerEl)=>{ const newParams = (0, $831683533b862e22$export$efccba1c4a2ef57b)({}, params, { el: containerEl }); swipers.push(new $4e95c04dd8a5890d$export$25ce5a424b770e84(newParams)); }); // eslint-disable-next-line no-constructor-return return swipers; } // Swiper Instance const swiper = this; swiper.__swiper__ = true; swiper.support = $4e95c04dd8a5890d$var$getSupport(); swiper.device = $4e95c04dd8a5890d$var$getDevice({ userAgent: params.userAgent }); swiper.browser = $4e95c04dd8a5890d$var$getBrowser(); swiper.eventsListeners = {}; swiper.eventsAnyListeners = []; swiper.modules = [ ...swiper.__modules__ ]; if (params.modules && Array.isArray(params.modules)) swiper.modules.push(...params.modules); const allModulesParams = {}; swiper.modules.forEach((mod)=>{ mod({ params: params, swiper: swiper, extendParams: $4e95c04dd8a5890d$var$moduleExtendParams(params, allModulesParams), on: swiper.on.bind(swiper), once: swiper.once.bind(swiper), off: swiper.off.bind(swiper), emit: swiper.emit.bind(swiper) }); }); // Extend defaults with modules params const swiperParams = (0, $831683533b862e22$export$efccba1c4a2ef57b)({}, $4e95c04dd8a5890d$export$4368d992c4eafac0, allModulesParams); // Extend defaults with passed params swiper.params = (0, $831683533b862e22$export$efccba1c4a2ef57b)({}, swiperParams, $4e95c04dd8a5890d$var$extendedDefaults, params); swiper.originalParams = (0, $831683533b862e22$export$efccba1c4a2ef57b)({}, swiper.params); swiper.passedParams = (0, $831683533b862e22$export$efccba1c4a2ef57b)({}, params); // add event listeners if (swiper.params && swiper.params.on) Object.keys(swiper.params.on).forEach((eventName)=>{ swiper.on(eventName, swiper.params.on[eventName]); }); if (swiper.params && swiper.params.onAny) swiper.onAny(swiper.params.onAny); // Extend Swiper Object.assign(swiper, { enabled: swiper.params.enabled, el: el, // Classes classNames: [], // Slides slides: [], slidesGrid: [], snapGrid: [], slidesSizesGrid: [], // isDirection isHorizontal () { return swiper.params.direction === "horizontal"; }, isVertical () { return swiper.params.direction === "vertical"; }, // Indexes activeIndex: 0, realIndex: 0, // isBeginning: true, isEnd: false, // Props translate: 0, previousTranslate: 0, progress: 0, velocity: 0, animating: false, cssOverflowAdjustment () { // Returns 0 unless `translate` is > 2**23 // Should be subtracted from css values to prevent overflow return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; }, // Locks allowSlideNext: swiper.params.allowSlideNext, allowSlidePrev: swiper.params.allowSlidePrev, // Touch Events touchEventsData: { isTouched: undefined, isMoved: undefined, allowTouchCallbacks: undefined, touchStartTime: undefined, isScrolling: undefined, currentTranslate: undefined, startTranslate: undefined, allowThresholdMove: undefined, // Form elements to match focusableElements: swiper.params.focusableElements, // Last click time lastClickTime: 0, clickTimeout: undefined, // Velocities velocities: [], allowMomentumBounce: undefined, startMoving: undefined, pointerId: null, touchId: null }, // Clicks allowClick: true, // Touches allowTouchMove: swiper.params.allowTouchMove, touches: { startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0 }, // Images imagesToLoad: [], imagesLoaded: 0 }); swiper.emit("_swiper"); // Init if (swiper.params.init) swiper.init(); // Return app instance // eslint-disable-next-line no-constructor-return return swiper; } getDirectionLabel(property) { if (this.isHorizontal()) return property; // prettier-ignore return ({ "width": "height", "margin-top": "margin-left", "margin-bottom ": "margin-right", "margin-left": "margin-top", "margin-right": "margin-bottom", "padding-left": "padding-top", "padding-right": "padding-bottom", "marginRight": "marginBottom" })[property]; } getSlideIndex(slideEl) { const { slidesEl: slidesEl, params: params } = this; const slides = (0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`); const firstSlideIndex = (0, $831683533b862e22$export$dda1d9f60106f0e9)(slides[0]); return (0, $831683533b862e22$export$dda1d9f60106f0e9)(slideEl) - firstSlideIndex; } getSlideIndexByData(index) { return this.getSlideIndex(this.slides.filter((slideEl)=>slideEl.getAttribute("data-swiper-slide-index") * 1 === index)[0]); } recalcSlides() { const swiper = this; const { slidesEl: slidesEl, params: params } = swiper; swiper.slides = (0, $831683533b862e22$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`); } enable() { const swiper = this; if (swiper.enabled) return; swiper.enabled = true; if (swiper.params.grabCursor) swiper.setGrabCursor(); swiper.emit("enable"); } disable() { const swiper = this; if (!swiper.enabled) return; swiper.enabled = false; if (swiper.params.grabCursor) swiper.unsetGrabCursor(); swiper.emit("disable"); } setProgress(progress, speed) { const swiper = this; progress = Math.min(Math.max(progress, 0), 1); const min = swiper.minTranslate(); const max = swiper.maxTranslate(); const current = (max - min) * progress + min; swiper.translateTo(current, typeof speed === "undefined" ? 0 : speed); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } emitContainerClasses() { const swiper = this; if (!swiper.params._emitClasses || !swiper.el) return; const cls = swiper.el.className.split(" ").filter((className)=>{ return className.indexOf("swiper") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; }); swiper.emit("_containerClasses", cls.join(" ")); } getSlideClasses(slideEl) { const swiper = this; if (swiper.destroyed) return ""; return slideEl.className.split(" ").filter((className)=>{ return className.indexOf("swiper-slide") === 0 || className.indexOf(swiper.params.slideClass) === 0; }).join(" "); } emitSlidesClasses() { const swiper = this; if (!swiper.params._emitClasses || !swiper.el) return; const updates = []; swiper.slides.forEach((slideEl)=>{ const classNames = swiper.getSlideClasses(slideEl); updates.push({ slideEl: slideEl, classNames: classNames }); swiper.emit("_slideClass", slideEl, classNames); }); swiper.emit("_slideClasses", updates); } slidesPerViewDynamic(view, exact) { if (view === void 0) view = "current"; if (exact === void 0) exact = false; const swiper = this; const { params: params, slides: slides, slidesGrid: slidesGrid, slidesSizesGrid: slidesSizesGrid, size: swiperSize, activeIndex: activeIndex } = swiper; let spv = 1; if (typeof params.slidesPerView === "number") return params.slidesPerView; if (params.centeredSlides) { let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; let breakLoop; for(let i = activeIndex + 1; i < slides.length; i += 1)if (slides[i] && !breakLoop) { slideSize += Math.ceil(slides[i].swiperSlideSize); spv += 1; if (slideSize > swiperSize) breakLoop = true; } for(let i = activeIndex - 1; i >= 0; i -= 1)if (slides[i] && !breakLoop) { slideSize += slides[i].swiperSlideSize; spv += 1; if (slideSize > swiperSize) breakLoop = true; } } else { // eslint-disable-next-line if (view === "current") for(let i = activeIndex + 1; i < slides.length; i += 1){ const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; if (slideInView) spv += 1; } else // previous for(let i = activeIndex - 1; i >= 0; i -= 1){ const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; if (slideInView) spv += 1; } } return spv; } update() { const swiper = this; if (!swiper || swiper.destroyed) return; const { snapGrid: snapGrid, params: params } = swiper; // Breakpoints if (params.breakpoints) swiper.setBreakpoint(); [ ...swiper.el.querySelectorAll('[loading="lazy"]') ].forEach((imageEl)=>{ if (imageEl.complete) $4e95c04dd8a5890d$var$processLazyPreloader(swiper, imageEl); }); swiper.updateSize(); swiper.updateSlides(); swiper.updateProgress(); swiper.updateSlidesClasses(); function setTranslate() { const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); swiper.setTranslate(newTranslate); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } let translated; if (params.freeMode && params.freeMode.enabled && !params.cssMode) { setTranslate(); if (params.autoHeight) swiper.updateAutoHeight(); } else { if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; translated = swiper.slideTo(slides.length - 1, 0, false, true); } else translated = swiper.slideTo(swiper.activeIndex, 0, false, true); if (!translated) setTranslate(); } if (params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow(); swiper.emit("update"); } changeDirection(newDirection, needUpdate) { if (needUpdate === void 0) needUpdate = true; const swiper = this; const currentDirection = swiper.params.direction; if (!newDirection) // eslint-disable-next-line newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal"; if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") return swiper; swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); swiper.emitContainerClasses(); swiper.params.direction = newDirection; swiper.slides.forEach((slideEl)=>{ if (newDirection === "vertical") slideEl.style.width = ""; else slideEl.style.height = ""; }); swiper.emit("changeDirection"); if (needUpdate) swiper.update(); return swiper; } changeLanguageDirection(direction) { const swiper = this; if (swiper.rtl && direction === "rtl" || !swiper.rtl && direction === "ltr") return; swiper.rtl = direction === "rtl"; swiper.rtlTranslate = swiper.params.direction === "horizontal" && swiper.rtl; if (swiper.rtl) { swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); swiper.el.dir = "rtl"; } else { swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); swiper.el.dir = "ltr"; } swiper.update(); } mount(element) { const swiper = this; if (swiper.mounted) return true; // Find el let el = element || swiper.params.el; if (typeof el === "string") el = document.querySelector(el); if (!el) return false; el.swiper = swiper; if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) swiper.isElement = true; const getWrapperSelector = ()=>{ return `.${(swiper.params.wrapperClass || "").trim().split(" ").join(".")}`; }; const getWrapper = ()=>{ if (el && el.shadowRoot && el.shadowRoot.querySelector) { const res = el.shadowRoot.querySelector(getWrapperSelector()); // Children needs to return slot items return res; } return (0, $831683533b862e22$export$f1e1789686576879)(el, getWrapperSelector())[0]; }; // Find Wrapper let wrapperEl = getWrapper(); if (!wrapperEl && swiper.params.createElements) { wrapperEl = (0, $831683533b862e22$export$db3b6bfb95261072)("div", swiper.params.wrapperClass); el.append(wrapperEl); (0, $831683533b862e22$export$f1e1789686576879)(el, `.${swiper.params.slideClass}`).forEach((slideEl)=>{ wrapperEl.append(slideEl); }); } Object.assign(swiper, { el: el, wrapperEl: wrapperEl, slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, hostEl: swiper.isElement ? el.parentNode.host : el, mounted: true, // RTL rtl: el.dir.toLowerCase() === "rtl" || (0, $831683533b862e22$export$ffb5f4729a158638)(el, "direction") === "rtl", rtlTranslate: swiper.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || (0, $831683533b862e22$export$ffb5f4729a158638)(el, "direction") === "rtl"), wrongRTL: (0, $831683533b862e22$export$ffb5f4729a158638)(wrapperEl, "display") === "-webkit-box" }); return true; } init(el) { const swiper = this; if (swiper.initialized) return swiper; const mounted = swiper.mount(el); if (mounted === false) return swiper; swiper.emit("beforeInit"); // Set breakpoint if (swiper.params.breakpoints) swiper.setBreakpoint(); // Add Classes swiper.addClasses(); // Update size swiper.updateSize(); // Update slides swiper.updateSlides(); if (swiper.params.watchOverflow) swiper.checkOverflow(); // Set Grab Cursor if (swiper.params.grabCursor && swiper.enabled) swiper.setGrabCursor(); // Slide To Initial Slide if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); else swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); // Create loop if (swiper.params.loop) swiper.loopCreate(); // Attach events swiper.attachEvents(); const lazyElements = [ ...swiper.el.querySelectorAll('[loading="lazy"]') ]; if (swiper.isElement) lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); lazyElements.forEach((imageEl)=>{ if (imageEl.complete) $4e95c04dd8a5890d$var$processLazyPreloader(swiper, imageEl); else imageEl.addEventListener("load", (e)=>{ $4e95c04dd8a5890d$var$processLazyPreloader(swiper, e.target); }); }); $4e95c04dd8a5890d$var$preload(swiper); // Init Flag swiper.initialized = true; $4e95c04dd8a5890d$var$preload(swiper); // Emit swiper.emit("init"); swiper.emit("afterInit"); return swiper; } destroy(deleteInstance, cleanStyles) { if (deleteInstance === void 0) deleteInstance = true; if (cleanStyles === void 0) cleanStyles = true; const swiper = this; const { params: params, el: el, wrapperEl: wrapperEl, slides: slides } = swiper; if (typeof swiper.params === "undefined" || swiper.destroyed) return null; swiper.emit("beforeDestroy"); // Init Flag swiper.initialized = false; // Detach events swiper.detachEvents(); // Destroy loop if (params.loop) swiper.loopDestroy(); // Cleanup styles if (cleanStyles) { swiper.removeClasses(); if (el && typeof el !== "string") el.removeAttribute("style"); if (wrapperEl) wrapperEl.removeAttribute("style"); if (slides && slides.length) slides.forEach((slideEl)=>{ slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); slideEl.removeAttribute("style"); slideEl.removeAttribute("data-swiper-slide-index"); }); } swiper.emit("destroy"); // Detach emitter events Object.keys(swiper.eventsListeners).forEach((eventName)=>{ swiper.off(eventName); }); if (deleteInstance !== false) { if (swiper.el && typeof swiper.el !== "string") swiper.el.swiper = null; (0, $831683533b862e22$export$d141bba7fdc215a3)(swiper); } swiper.destroyed = true; return null; } static extendDefaults(newDefaults) { (0, $831683533b862e22$export$efccba1c4a2ef57b)($4e95c04dd8a5890d$var$extendedDefaults, newDefaults); } static get extendedDefaults() { return $4e95c04dd8a5890d$var$extendedDefaults; } static get defaults() { return $4e95c04dd8a5890d$export$4368d992c4eafac0; } static installModule(mod) { if (!$4e95c04dd8a5890d$export$25ce5a424b770e84.prototype.__modules__) $4e95c04dd8a5890d$export$25ce5a424b770e84.prototype.__modules__ = []; const modules = $4e95c04dd8a5890d$export$25ce5a424b770e84.prototype.__modules__; if (typeof mod === "function" && modules.indexOf(mod) < 0) modules.push(mod); } static use(module) { if (Array.isArray(module)) { module.forEach((m)=>$4e95c04dd8a5890d$export$25ce5a424b770e84.installModule(m)); return $4e95c04dd8a5890d$export$25ce5a424b770e84; } $4e95c04dd8a5890d$export$25ce5a424b770e84.installModule(module); return $4e95c04dd8a5890d$export$25ce5a424b770e84; } } Object.keys($4e95c04dd8a5890d$var$prototypes).forEach((prototypeGroup)=>{ Object.keys($4e95c04dd8a5890d$var$prototypes[prototypeGroup]).forEach((protoMethod)=>{ $4e95c04dd8a5890d$export$25ce5a424b770e84.prototype[protoMethod] = $4e95c04dd8a5890d$var$prototypes[prototypeGroup][protoMethod]; }); }); $4e95c04dd8a5890d$export$25ce5a424b770e84.use([ $4e95c04dd8a5890d$var$Resize, $4e95c04dd8a5890d$var$Observer ]); function $4438d6a56c7fd83e$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; extendParams({ virtual: { enabled: false, slides: [], cache: true, renderSlide: null, renderExternal: null, renderExternalUpdate: true, addSlidesBefore: 0, addSlidesAfter: 0 } }); let cssModeTimeout; const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); swiper.virtual = { cache: {}, from: undefined, to: undefined, slides: [], offset: 0, slidesGrid: [] }; const tempDOM = document.createElement("div"); function renderSlide(slide, index) { const params = swiper.params.virtual; if (params.cache && swiper.virtual.cache[index]) return swiper.virtual.cache[index]; // eslint-disable-next-line let slideEl; if (params.renderSlide) { slideEl = params.renderSlide.call(swiper, slide, index); if (typeof slideEl === "string") { tempDOM.innerHTML = slideEl; slideEl = tempDOM.children[0]; } } else if (swiper.isElement) slideEl = (0, $831683533b862e22$export$db3b6bfb95261072)("swiper-slide"); else slideEl = (0, $831683533b862e22$export$db3b6bfb95261072)("div", swiper.params.slideClass); slideEl.setAttribute("data-swiper-slide-index", index); if (!params.renderSlide) slideEl.innerHTML = slide; if (params.cache) swiper.virtual.cache[index] = slideEl; return slideEl; } function update(force, beforeInit) { const { slidesPerView: slidesPerView, slidesPerGroup: slidesPerGroup, centeredSlides: centeredSlides, loop: isLoop, initialSlide: initialSlide } = swiper.params; if (beforeInit && !isLoop && initialSlide > 0) return; const { addSlidesBefore: addSlidesBefore, addSlidesAfter: addSlidesAfter } = swiper.params.virtual; const { from: previousFrom, to: previousTo, slides: slides, slidesGrid: previousSlidesGrid, offset: previousOffset } = swiper.virtual; if (!swiper.params.cssMode) swiper.updateActiveIndex(); const activeIndex = swiper.activeIndex || 0; let offsetProp; if (swiper.rtlTranslate) offsetProp = "right"; else offsetProp = swiper.isHorizontal() ? "left" : "top"; let slidesAfter; let slidesBefore; if (centeredSlides) { slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; } else { slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; } let from = activeIndex - slidesBefore; let to = activeIndex + slidesAfter; if (!isLoop) { from = Math.max(from, 0); to = Math.min(to, slides.length - 1); } let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); if (isLoop && activeIndex >= slidesBefore) { from -= slidesBefore; if (!centeredSlides) offset += swiper.slidesGrid[0]; } else if (isLoop && activeIndex < slidesBefore) { from = -slidesBefore; if (centeredSlides) offset += swiper.slidesGrid[0]; } Object.assign(swiper.virtual, { from: from, to: to, offset: offset, slidesGrid: swiper.slidesGrid, slidesBefore: slidesBefore, slidesAfter: slidesAfter }); function onRendered() { swiper.updateSlides(); swiper.updateProgress(); swiper.updateSlidesClasses(); emit("virtualUpdate"); } if (previousFrom === from && previousTo === to && !force) { if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) swiper.slides.forEach((slideEl)=>{ slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; }); swiper.updateProgress(); emit("virtualUpdate"); return; } if (swiper.params.virtual.renderExternal) { swiper.params.virtual.renderExternal.call(swiper, { offset: offset, from: from, to: to, slides: function getSlides() { const slidesToRender = []; for(let i = from; i <= to; i += 1)slidesToRender.push(slides[i]); return slidesToRender; }() }); if (swiper.params.virtual.renderExternalUpdate) onRendered(); else emit("virtualUpdate"); return; } const prependIndexes = []; const appendIndexes = []; const getSlideIndex = (index)=>{ let slideIndex = index; if (index < 0) slideIndex = slides.length + index; else if (slideIndex >= slides.length) // eslint-disable-next-line slideIndex = slideIndex - slides.length; return slideIndex; }; if (force) swiper.slides.filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach((slideEl)=>{ slideEl.remove(); }); else { for(let i = previousFrom; i <= previousTo; i += 1)if (i < from || i > to) { const slideIndex = getSlideIndex(i); swiper.slides.filter((el)=>el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach((slideEl)=>{ slideEl.remove(); }); } } const loopFrom = isLoop ? -slides.length : 0; const loopTo = isLoop ? slides.length * 2 : slides.length; for(let i = loopFrom; i < loopTo; i += 1)if (i >= from && i <= to) { const slideIndex = getSlideIndex(i); if (typeof previousTo === "undefined" || force) appendIndexes.push(slideIndex); else { if (i > previousTo) appendIndexes.push(slideIndex); if (i < previousFrom) prependIndexes.push(slideIndex); } } appendIndexes.forEach((index)=>{ swiper.slidesEl.append(renderSlide(slides[index], index)); }); if (isLoop) for(let i = prependIndexes.length - 1; i >= 0; i -= 1){ const index = prependIndexes[i]; swiper.slidesEl.prepend(renderSlide(slides[index], index)); } else { prependIndexes.sort((a, b)=>b - a); prependIndexes.forEach((index)=>{ swiper.slidesEl.prepend(renderSlide(slides[index], index)); }); } (0, $831683533b862e22$export$f1e1789686576879)(swiper.slidesEl, ".swiper-slide, swiper-slide").forEach((slideEl)=>{ slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; }); onRendered(); } function appendSlide(slides) { if (typeof slides === "object" && "length" in slides) { for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.push(slides[i]); } else swiper.virtual.slides.push(slides); update(true); } function prependSlide(slides) { const activeIndex = swiper.activeIndex; let newActiveIndex = activeIndex + 1; let numberOfNewSlides = 1; if (Array.isArray(slides)) { for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.unshift(slides[i]); newActiveIndex = activeIndex + slides.length; numberOfNewSlides = slides.length; } else swiper.virtual.slides.unshift(slides); if (swiper.params.virtual.cache) { const cache = swiper.virtual.cache; const newCache = {}; Object.keys(cache).forEach((cachedIndex)=>{ const cachedEl = cache[cachedIndex]; const cachedElIndex = cachedEl.getAttribute("data-swiper-slide-index"); if (cachedElIndex) cachedEl.setAttribute("data-swiper-slide-index", parseInt(cachedElIndex, 10) + numberOfNewSlides); newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; }); swiper.virtual.cache = newCache; } update(true); swiper.slideTo(newActiveIndex, 0); } function removeSlide(slidesIndexes) { if (typeof slidesIndexes === "undefined" || slidesIndexes === null) return; let activeIndex = swiper.activeIndex; if (Array.isArray(slidesIndexes)) for(let i = slidesIndexes.length - 1; i >= 0; i -= 1){ if (swiper.params.virtual.cache) { delete swiper.virtual.cache[slidesIndexes[i]]; // shift cache indexes Object.keys(swiper.virtual.cache).forEach((key)=>{ if (key > slidesIndexes) { swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; swiper.virtual.cache[key - 1].setAttribute("data-swiper-slide-index", key - 1); delete swiper.virtual.cache[key]; } }); } swiper.virtual.slides.splice(slidesIndexes[i], 1); if (slidesIndexes[i] < activeIndex) activeIndex -= 1; activeIndex = Math.max(activeIndex, 0); } else { if (swiper.params.virtual.cache) { delete swiper.virtual.cache[slidesIndexes]; // shift cache indexes Object.keys(swiper.virtual.cache).forEach((key)=>{ if (key > slidesIndexes) { swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; swiper.virtual.cache[key - 1].setAttribute("data-swiper-slide-index", key - 1); delete swiper.virtual.cache[key]; } }); } swiper.virtual.slides.splice(slidesIndexes, 1); if (slidesIndexes < activeIndex) activeIndex -= 1; activeIndex = Math.max(activeIndex, 0); } update(true); swiper.slideTo(activeIndex, 0); } function removeAllSlides() { swiper.virtual.slides = []; if (swiper.params.virtual.cache) swiper.virtual.cache = {}; update(true); swiper.slideTo(0, 0); } on("beforeInit", ()=>{ if (!swiper.params.virtual.enabled) return; let domSlidesAssigned; if (typeof swiper.passedParams.virtual.slides === "undefined") { const slides = [ ...swiper.slidesEl.children ].filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`)); if (slides && slides.length) { swiper.virtual.slides = [ ...slides ]; domSlidesAssigned = true; slides.forEach((slideEl, slideIndex)=>{ slideEl.setAttribute("data-swiper-slide-index", slideIndex); swiper.virtual.cache[slideIndex] = slideEl; slideEl.remove(); }); } } if (!domSlidesAssigned) swiper.virtual.slides = swiper.params.virtual.slides; swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); swiper.params.watchSlidesProgress = true; swiper.originalParams.watchSlidesProgress = true; update(false, true); }); on("setTranslate", ()=>{ if (!swiper.params.virtual.enabled) return; if (swiper.params.cssMode && !swiper._immediateVirtual) { clearTimeout(cssModeTimeout); cssModeTimeout = setTimeout(()=>{ update(); }, 100); } else update(); }); on("init update resize", ()=>{ if (!swiper.params.virtual.enabled) return; if (swiper.params.cssMode) (0, $831683533b862e22$export$2408f22a0fab9ae5)(swiper.wrapperEl, "--swiper-virtual-size", `${swiper.virtualSize}px`); }); Object.assign(swiper.virtual, { appendSlide: appendSlide, prependSlide: prependSlide, removeSlide: removeSlide, removeAllSlides: removeAllSlides, update: update }); } /* eslint-disable consistent-return */ function $b262de0fa94a90b2$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); swiper.keyboard = { enabled: false }; extendParams({ keyboard: { enabled: false, onlyInViewport: true, pageUpDown: true } }); function handle(event) { if (!swiper.enabled) return; const { rtlTranslate: rtl } = swiper; let e = event; if (e.originalEvent) e = e.originalEvent; // jquery fix const kc = e.keyCode || e.charCode; const pageUpDown = swiper.params.keyboard.pageUpDown; const isPageUp = pageUpDown && kc === 33; const isPageDown = pageUpDown && kc === 34; const isArrowLeft = kc === 37; const isArrowRight = kc === 39; const isArrowUp = kc === 38; const isArrowDown = kc === 40; // Directions locks if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) return false; if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) return false; if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) return undefined; if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === "input" || document.activeElement.nodeName.toLowerCase() === "textarea")) return undefined; if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { let inView = false; // Check that swiper should be inside of visible area of window if ((0, $831683533b862e22$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0, $831683533b862e22$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) return undefined; const el = swiper.el; const swiperWidth = el.clientWidth; const swiperHeight = el.clientHeight; const windowWidth = window.innerWidth; const windowHeight = window.innerHeight; const swiperOffset = (0, $831683533b862e22$export$8b22cf2602fb60ce)(el); if (rtl) swiperOffset.left -= el.scrollLeft; const swiperCoord = [ [ swiperOffset.left, swiperOffset.top ], [ swiperOffset.left + swiperWidth, swiperOffset.top ], [ swiperOffset.left, swiperOffset.top + swiperHeight ], [ swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight ] ]; for(let i = 0; i < swiperCoord.length; i += 1){ const point = swiperCoord[i]; if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line inView = true; } } if (!inView) return undefined; } if (swiper.isHorizontal()) { if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; } if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); } else { if (isPageUp || isPageDown || isArrowUp || isArrowDown) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; } if (isPageDown || isArrowDown) swiper.slideNext(); if (isPageUp || isArrowUp) swiper.slidePrev(); } emit("keyPress", kc); return undefined; } function enable() { if (swiper.keyboard.enabled) return; document.addEventListener("keydown", handle); swiper.keyboard.enabled = true; } function disable() { if (!swiper.keyboard.enabled) return; document.removeEventListener("keydown", handle); swiper.keyboard.enabled = false; } on("init", ()=>{ if (swiper.params.keyboard.enabled) enable(); }); on("destroy", ()=>{ if (swiper.keyboard.enabled) disable(); }); Object.assign(swiper.keyboard, { enable: enable, disable: disable }); } /* eslint-disable consistent-return */ function $7629c73f4b50d57c$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); extendParams({ mousewheel: { enabled: false, releaseOnEdges: false, invert: false, forceToAxis: false, sensitivity: 1, eventsTarget: "container", thresholdDelta: null, thresholdTime: null, noMousewheelClass: "swiper-no-mousewheel" } }); swiper.mousewheel = { enabled: false }; let timeout; let lastScrollTime = (0, $831683533b862e22$export$4368d992c4eafac0)(); let lastEventBeforeSnap; const recentWheelEvents = []; function normalize(e) { // Reasonable defaults const PIXEL_STEP = 10; const LINE_HEIGHT = 40; const PAGE_HEIGHT = 800; let sX = 0; let sY = 0; // spinX, spinY let pX = 0; let pY = 0; // pixelX, pixelY // Legacy if ("detail" in e) sY = e.detail; if ("wheelDelta" in e) sY = -e.wheelDelta / 120; if ("wheelDeltaY" in e) sY = -e.wheelDeltaY / 120; if ("wheelDeltaX" in e) sX = -e.wheelDeltaX / 120; // side scrolling on FF with DOMMouseScroll if ("axis" in e && e.axis === e.HORIZONTAL_AXIS) { sX = sY; sY = 0; } pX = sX * PIXEL_STEP; pY = sY * PIXEL_STEP; if ("deltaY" in e) pY = e.deltaY; if ("deltaX" in e) pX = e.deltaX; if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll pX = pY; pY = 0; } if ((pX || pY) && e.deltaMode) { if (e.deltaMode === 1) { // delta in LINE units pX *= LINE_HEIGHT; pY *= LINE_HEIGHT; } else { // delta in PAGE units pX *= PAGE_HEIGHT; pY *= PAGE_HEIGHT; } } // Fall-back if spin cannot be determined if (pX && !sX) sX = pX < 1 ? -1 : 1; if (pY && !sY) sY = pY < 1 ? -1 : 1; return { spinX: sX, spinY: sY, pixelX: pX, pixelY: pY }; } function handleMouseEnter() { if (!swiper.enabled) return; swiper.mouseEntered = true; } function handleMouseLeave() { if (!swiper.enabled) return; swiper.mouseEntered = false; } function animateSlider(newEvent) { if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) // Prevent if delta of wheel scroll delta is below configured threshold return false; if (swiper.params.mousewheel.thresholdTime && (0, $831683533b862e22$export$4368d992c4eafac0)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) // Prevent if time between scrolls is below configured threshold return false; // If the movement is NOT big enough and // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): // Don't go any further (avoid insignificant scroll movement). if (newEvent.delta >= 6 && (0, $831683533b862e22$export$4368d992c4eafac0)() - lastScrollTime < 60) // Return false as a default return true; // If user is scrolling towards the end: // If the slider hasn't hit the latest slide or // if the slider is a loop and // if the slider isn't moving right now: // Go to next slide and // emit a scroll event. // Else (the user is scrolling towards the beginning) and // if the slider hasn't hit the first slide or // if the slider is a loop and // if the slider isn't moving right now: // Go to prev slide and // emit a scroll event. if (newEvent.direction < 0) { if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { swiper.slideNext(); emit("scroll", newEvent.raw); } } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { swiper.slidePrev(); emit("scroll", newEvent.raw); } // If you got here is because an animation has been triggered so store the current time lastScrollTime = new window.Date().getTime(); // Return false as a default return false; } function releaseScroll(newEvent) { const params = swiper.params.mousewheel; if (newEvent.direction < 0) { if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges return true; } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges return true; return false; } function handle(event1) { let e = event1; let disableParentSwiper = true; if (!swiper.enabled) return; // Ignore event if the target or its parents have the swiper-no-mousewheel class if (event1.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; const params = swiper.params.mousewheel; if (swiper.params.cssMode) e.preventDefault(); let targetEl = swiper.el; if (swiper.params.mousewheel.eventsTarget !== "container") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); const targetElContainsTarget = targetEl && targetEl.contains(e.target); if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; if (e.originalEvent) e = e.originalEvent; // jquery fix let delta = 0; const rtlFactor = swiper.rtlTranslate ? -1 : 1; const data = normalize(e); if (params.forceToAxis) { if (swiper.isHorizontal()) { if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor; else return true; } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY; else return true; } else delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; if (delta === 0) return true; if (params.invert) delta = -delta; // Get the scroll positions let positions = swiper.getTranslate() + delta * params.sensitivity; if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true: // the disableParentSwiper will be true. // When loop is false: // if the scroll positions is not on edge, // then the disableParentSwiper will be true. // if the scroll on edge positions, // then the disableParentSwiper will be false. disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { // Register the new event in a variable which stores the relevant data const newEvent = { time: (0, $831683533b862e22$export$4368d992c4eafac0)(), delta: Math.abs(delta), direction: Math.sign(delta), raw: event1 }; // Keep the most recent events if (recentWheelEvents.length >= 2) recentWheelEvents.shift(); // only store the last N events const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; recentWheelEvents.push(newEvent); // If there is at least one previous recorded event: // If direction has changed or // if the scroll is quicker than the previous one: // Animate the slider. // Else (this is the first time the wheel is moved): // Animate the slider. if (prevEvent) { if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) animateSlider(newEvent); } else animateSlider(newEvent); // If it's time to release the scroll: // Return now so you don't hit the preventDefault. if (releaseScroll(newEvent)) return true; } else { // Freemode or scrollContainer: // If we recently snapped after a momentum scroll, then ignore wheel events // to give time for the deceleration to finish. Stop ignoring after 500 msecs // or if it's a new scroll (larger delta or inverse sign as last event before // an end-of-momentum snap). const newEvent = { time: (0, $831683533b862e22$export$4368d992c4eafac0)(), delta: Math.abs(delta), direction: Math.sign(delta) }; const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; if (!ignoreWheelEvents) { lastEventBeforeSnap = undefined; let position = swiper.getTranslate() + delta * params.sensitivity; const wasBeginning = swiper.isBeginning; const wasEnd = swiper.isEnd; if (position >= swiper.minTranslate()) position = swiper.minTranslate(); if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); swiper.setTransition(0); swiper.setTranslate(position); swiper.updateProgress(); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) swiper.updateSlidesClasses(); if (swiper.params.loop) swiper.loopFix({ direction: newEvent.direction < 0 ? "next" : "prev", byMousewheel: true }); if (swiper.params.freeMode.sticky) { // When wheel scrolling starts with sticky (aka snap) enabled, then detect // the end of a momentum scroll by storing recent (N=15?) wheel events. // 1. do all N events have decreasing or same (absolute value) delta? // 2. did all N events arrive in the last M (M=500?) msecs? // 3. does the earliest event have an (absolute value) delta that's // at least P (P=1?) larger than the most recent event's delta? // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. // Snap immediately and ignore remaining wheel events in this scroll. // See comment above for "remaining wheel events in this scroll" determination. // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. clearTimeout(timeout); timeout = undefined; if (recentWheelEvents.length >= 15) recentWheelEvents.shift(); // only store the last N events const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; const firstEvent = recentWheelEvents[0]; recentWheelEvents.push(newEvent); if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. recentWheelEvents.splice(0); else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { // We're at the end of the deceleration of a momentum scroll, so there's no need // to wait for more events. Snap ASAP on the next tick. // Also, because there's some remaining momentum we'll bias the snap in the // direction of the ongoing scroll because it's better UX for the scroll to snap // in the same direction as the scroll instead of reversing to snap. Therefore, // if it's already scrolled more than 20% in the current direction, keep going. const snapToThreshold = delta > 0 ? 0.8 : 0.2; lastEventBeforeSnap = newEvent; recentWheelEvents.splice(0); timeout = (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ if (swiper.destroyed || !swiper.params) return; swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); }, 0); // no delay; move on next tick } if (!timeout) // if we get here, then we haven't detected the end of a momentum scroll, so // we'll consider a scroll "complete" when there haven't been any wheel events // for 500ms. timeout = (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ if (swiper.destroyed || !swiper.params) return; const snapToThreshold = 0.5; lastEventBeforeSnap = newEvent; recentWheelEvents.splice(0); swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); }, 500); } // Emit event if (!ignoreWheelEvents) emit("scroll", e); // Stop autoplay if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) return true; } } if (e.preventDefault) e.preventDefault(); else e.returnValue = false; return false; } function events(method) { let targetEl = swiper.el; if (swiper.params.mousewheel.eventsTarget !== "container") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); targetEl[method]("mouseenter", handleMouseEnter); targetEl[method]("mouseleave", handleMouseLeave); targetEl[method]("wheel", handle); } function enable() { if (swiper.params.cssMode) { swiper.wrapperEl.removeEventListener("wheel", handle); return true; } if (swiper.mousewheel.enabled) return false; events("addEventListener"); swiper.mousewheel.enabled = true; return true; } function disable() { if (swiper.params.cssMode) { swiper.wrapperEl.addEventListener(event, handle); return true; } if (!swiper.mousewheel.enabled) return false; events("removeEventListener"); swiper.mousewheel.enabled = false; return true; } on("init", ()=>{ if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) disable(); if (swiper.params.mousewheel.enabled) enable(); }); on("destroy", ()=>{ if (swiper.params.cssMode) enable(); if (swiper.mousewheel.enabled) disable(); }); Object.assign(swiper.mousewheel, { enable: enable, disable: disable }); } function $75528d4699cb5574$export$db3b6bfb95261072(swiper, originalParams, params, checkProps) { if (swiper.params.createElements) Object.keys(checkProps).forEach((key)=>{ if (!params[key] && params.auto === true) { let element = (0, $831683533b862e22$export$f1e1789686576879)(swiper.el, `.${checkProps[key]}`)[0]; if (!element) { element = (0, $831683533b862e22$export$db3b6bfb95261072)("div", checkProps[key]); element.className = checkProps[key]; swiper.el.append(element); } params[key] = element; originalParams[key] = element; } }); return params; } function $3ede398f6665eb67$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; extendParams({ navigation: { nextEl: null, prevEl: null, hideOnClick: false, disabledClass: "swiper-button-disabled", hiddenClass: "swiper-button-hidden", lockClass: "swiper-button-lock", navigationDisabledClass: "swiper-navigation-disabled" } }); swiper.navigation = { nextEl: null, prevEl: null }; function getEl(el) { let res; if (el && typeof el === "string" && swiper.isElement) { res = swiper.el.querySelector(el); if (res) return res; } if (el) { if (typeof el === "string") res = [ ...document.querySelectorAll(el) ]; if (swiper.params.uniqueNavElements && typeof el === "string" && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) res = swiper.el.querySelector(el); else if (res && res.length === 1) res = res[0]; } if (el && !res) return el; // if (Array.isArray(res) && res.length === 1) res = res[0]; return res; } function toggleEl(el, disabled) { const params = swiper.params.navigation; el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ if (subEl) { subEl.classList[disabled ? "add" : "remove"](...params.disabledClass.split(" ")); if (subEl.tagName === "BUTTON") subEl.disabled = disabled; if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? "add" : "remove"](params.lockClass); } }); } function update() { // Update Navigation Buttons const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation; if (swiper.params.loop) { toggleEl(prevEl, false); toggleEl(nextEl, false); return; } toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); } function onPrevClick(e) { e.preventDefault(); if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; swiper.slidePrev(); emit("navigationPrev"); } function onNextClick(e) { e.preventDefault(); if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; swiper.slideNext(); emit("navigationNext"); } function init() { const params = swiper.params.navigation; swiper.params.navigation = (0, $75528d4699cb5574$export$db3b6bfb95261072)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { nextEl: "swiper-button-next", prevEl: "swiper-button-prev" }); if (!(params.nextEl || params.prevEl)) return; let nextEl = getEl(params.nextEl); let prevEl = getEl(params.prevEl); Object.assign(swiper.navigation, { nextEl: nextEl, prevEl: prevEl }); nextEl = (0, $831683533b862e22$export$953cecd6e717a553)(nextEl); prevEl = (0, $831683533b862e22$export$953cecd6e717a553)(prevEl); const initButton = (el, dir)=>{ if (el) el.addEventListener("click", dir === "next" ? onNextClick : onPrevClick); if (!swiper.enabled && el) el.classList.add(...params.lockClass.split(" ")); }; nextEl.forEach((el)=>initButton(el, "next")); prevEl.forEach((el)=>initButton(el, "prev")); } function destroy() { let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation; nextEl = (0, $831683533b862e22$export$953cecd6e717a553)(nextEl); prevEl = (0, $831683533b862e22$export$953cecd6e717a553)(prevEl); const destroyButton = (el, dir)=>{ el.removeEventListener("click", dir === "next" ? onNextClick : onPrevClick); el.classList.remove(...swiper.params.navigation.disabledClass.split(" ")); }; nextEl.forEach((el)=>destroyButton(el, "next")); prevEl.forEach((el)=>destroyButton(el, "prev")); } on("init", ()=>{ if (swiper.params.navigation.enabled === false) // eslint-disable-next-line disable(); else { init(); update(); } }); on("toEdge fromEdge lock unlock", ()=>{ update(); }); on("destroy", ()=>{ destroy(); }); on("enable disable", ()=>{ let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation; nextEl = (0, $831683533b862e22$export$953cecd6e717a553)(nextEl); prevEl = (0, $831683533b862e22$export$953cecd6e717a553)(prevEl); if (swiper.enabled) { update(); return; } [ ...nextEl, ...prevEl ].filter((el)=>!!el).forEach((el)=>el.classList.add(swiper.params.navigation.lockClass)); }); on("click", (_s, e)=>{ let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation; nextEl = (0, $831683533b862e22$export$953cecd6e717a553)(nextEl); prevEl = (0, $831683533b862e22$export$953cecd6e717a553)(prevEl); const targetEl = e.target; let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); if (swiper.isElement && !targetIsButton) { const path = e.path || e.composedPath && e.composedPath(); if (path) targetIsButton = path.find((pathEl)=>nextEl.includes(pathEl) || prevEl.includes(pathEl)); } if (swiper.params.navigation.hideOnClick && !targetIsButton) { if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; let isHidden; if (nextEl.length) isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); else if (prevEl.length) isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); if (isHidden === true) emit("navigationShow"); else emit("navigationHide"); [ ...nextEl, ...prevEl ].filter((el)=>!!el).forEach((el)=>el.classList.toggle(swiper.params.navigation.hiddenClass)); } }); const enable = ()=>{ swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(" ")); init(); update(); }; const disable = ()=>{ swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(" ")); destroy(); }; Object.assign(swiper.navigation, { enable: enable, disable: disable, update: update, init: init, destroy: destroy }); } function $568b5eab5472b7cb$export$db3b6bfb95261072(classes) { if (classes === void 0) classes = ""; return `.${classes.trim().replace(/([\.:!+\/])/g, "\\$1") // eslint-disable-line .replace(/ /g, ".")}`; } function $48396d89743015b3$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; const pfx = "swiper-pagination"; extendParams({ pagination: { el: null, bulletElement: "span", clickable: false, hideOnClick: false, renderBullet: null, renderProgressbar: null, renderFraction: null, renderCustom: null, progressbarOpposite: false, type: "bullets", // 'bullets' or 'progressbar' or 'fraction' or 'custom' dynamicBullets: false, dynamicMainBullets: 1, formatFractionCurrent: (number)=>number, formatFractionTotal: (number)=>number, bulletClass: `${pfx}-bullet`, bulletActiveClass: `${pfx}-bullet-active`, modifierClass: `${pfx}-`, currentClass: `${pfx}-current`, totalClass: `${pfx}-total`, hiddenClass: `${pfx}-hidden`, progressbarFillClass: `${pfx}-progressbar-fill`, progressbarOppositeClass: `${pfx}-progressbar-opposite`, clickableClass: `${pfx}-clickable`, lockClass: `${pfx}-lock`, horizontalClass: `${pfx}-horizontal`, verticalClass: `${pfx}-vertical`, paginationDisabledClass: `${pfx}-disabled` } }); swiper.pagination = { el: null, bullets: [] }; let bulletSize; let dynamicBulletIndex = 0; function isPaginationDisabled() { return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; } function setSideBullets(bulletEl, position) { const { bulletActiveClass: bulletActiveClass } = swiper.params.pagination; if (!bulletEl) return; bulletEl = bulletEl[`${position === "prev" ? "previous" : "next"}ElementSibling`]; if (bulletEl) { bulletEl.classList.add(`${bulletActiveClass}-${position}`); bulletEl = bulletEl[`${position === "prev" ? "previous" : "next"}ElementSibling`]; if (bulletEl) bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); } } function getMoveDirection(prevIndex, nextIndex, length) { prevIndex = prevIndex % length; nextIndex = nextIndex % length; if (nextIndex === prevIndex + 1) return "next"; else if (nextIndex === prevIndex - 1) return "previous"; return; } function onBulletClick(e) { const bulletEl = e.target.closest((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass)); if (!bulletEl) return; e.preventDefault(); const index = (0, $831683533b862e22$export$dda1d9f60106f0e9)(bulletEl) * swiper.params.slidesPerGroup; if (swiper.params.loop) { if (swiper.realIndex === index) return; const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); if (moveDirection === "next") swiper.slideNext(); else if (moveDirection === "previous") swiper.slidePrev(); else swiper.slideToLoop(index); } else swiper.slideTo(index); } function update() { // Render || Update Pagination bullets/items const rtl = swiper.rtl; const params = swiper.params.pagination; if (isPaginationDisabled()) return; let el = swiper.pagination.el; el = (0, $831683533b862e22$export$953cecd6e717a553)(el); // Current/Total let current; let previousIndex; const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; if (swiper.params.loop) { previousIndex = swiper.previousRealIndex || 0; current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; } else if (typeof swiper.snapIndex !== "undefined") { current = swiper.snapIndex; previousIndex = swiper.previousSnapIndex; } else { previousIndex = swiper.previousIndex || 0; current = swiper.activeIndex || 0; } // Types if (params.type === "bullets" && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { const bullets = swiper.pagination.bullets; let firstIndex; let lastIndex; let midIndex; if (params.dynamicBullets) { bulletSize = (0, $831683533b862e22$export$2d1720544b23b823)(bullets[0], swiper.isHorizontal() ? "width" : "height", true); el.forEach((subEl)=>{ subEl.style[swiper.isHorizontal() ? "width" : "height"] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; }); if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { dynamicBulletIndex += current - (previousIndex || 0); if (dynamicBulletIndex > params.dynamicMainBullets - 1) dynamicBulletIndex = params.dynamicMainBullets - 1; else if (dynamicBulletIndex < 0) dynamicBulletIndex = 0; } firstIndex = Math.max(current - dynamicBulletIndex, 0); lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); midIndex = (lastIndex + firstIndex) / 2; } bullets.forEach((bulletEl)=>{ const classesToRemove = [ ...[ "", "-next", "-next-next", "-prev", "-prev-prev", "-main" ].map((suffix)=>`${params.bulletActiveClass}${suffix}`) ].map((s)=>typeof s === "string" && s.includes(" ") ? s.split(" ") : s).flat(); bulletEl.classList.remove(...classesToRemove); }); if (el.length > 1) bullets.forEach((bullet)=>{ const bulletIndex = (0, $831683533b862e22$export$dda1d9f60106f0e9)(bullet); if (bulletIndex === current) bullet.classList.add(...params.bulletActiveClass.split(" ")); else if (swiper.isElement) bullet.setAttribute("part", "bullet"); if (params.dynamicBullets) { if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) bullet.classList.add(...`${params.bulletActiveClass}-main`.split(" ")); if (bulletIndex === firstIndex) setSideBullets(bullet, "prev"); if (bulletIndex === lastIndex) setSideBullets(bullet, "next"); } }); else { const bullet = bullets[current]; if (bullet) bullet.classList.add(...params.bulletActiveClass.split(" ")); if (swiper.isElement) bullets.forEach((bulletEl, bulletIndex)=>{ bulletEl.setAttribute("part", bulletIndex === current ? "bullet-active" : "bullet"); }); if (params.dynamicBullets) { const firstDisplayedBullet = bullets[firstIndex]; const lastDisplayedBullet = bullets[lastIndex]; for(let i = firstIndex; i <= lastIndex; i += 1)if (bullets[i]) bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(" ")); setSideBullets(firstDisplayedBullet, "prev"); setSideBullets(lastDisplayedBullet, "next"); } } if (params.dynamicBullets) { const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; const offsetProp = rtl ? "right" : "left"; bullets.forEach((bullet)=>{ bullet.style[swiper.isHorizontal() ? offsetProp : "top"] = `${bulletsOffset}px`; }); } } el.forEach((subEl, subElIndex)=>{ if (params.type === "fraction") { subEl.querySelectorAll((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(params.currentClass)).forEach((fractionEl)=>{ fractionEl.textContent = params.formatFractionCurrent(current + 1); }); subEl.querySelectorAll((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(params.totalClass)).forEach((totalEl)=>{ totalEl.textContent = params.formatFractionTotal(total); }); } if (params.type === "progressbar") { let progressbarDirection; if (params.progressbarOpposite) progressbarDirection = swiper.isHorizontal() ? "vertical" : "horizontal"; else progressbarDirection = swiper.isHorizontal() ? "horizontal" : "vertical"; const scale = (current + 1) / total; let scaleX = 1; let scaleY = 1; if (progressbarDirection === "horizontal") scaleX = scale; else scaleY = scale; subEl.querySelectorAll((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(params.progressbarFillClass)).forEach((progressEl)=>{ progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; progressEl.style.transitionDuration = `${swiper.params.speed}ms`; }); } if (params.type === "custom" && params.renderCustom) { subEl.innerHTML = params.renderCustom(swiper, current + 1, total); if (subElIndex === 0) emit("paginationRender", subEl); } else { if (subElIndex === 0) emit("paginationRender", subEl); emit("paginationUpdate", subEl); } if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? "add" : "remove"](params.lockClass); }); } function render() { // Render Container const params = swiper.params.pagination; if (isPaginationDisabled()) return; const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; let el = swiper.pagination.el; el = (0, $831683533b862e22$export$953cecd6e717a553)(el); let paginationHTML = ""; if (params.type === "bullets") { let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) numberOfBullets = slidesLength; for(let i = 0; i < numberOfBullets; i += 1)if (params.renderBullet) paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); else // prettier-ignore paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ""} class="${params.bulletClass}">`; } if (params.type === "fraction") { if (params.renderFraction) paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); else paginationHTML = `` + " / " + ``; } if (params.type === "progressbar") { if (params.renderProgressbar) paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); else paginationHTML = ``; } swiper.pagination.bullets = []; el.forEach((subEl)=>{ if (params.type !== "custom") subEl.innerHTML = paginationHTML || ""; if (params.type === "bullets") swiper.pagination.bullets.push(...subEl.querySelectorAll((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(params.bulletClass))); }); if (params.type !== "custom") emit("paginationRender", el[0]); } function init() { swiper.params.pagination = (0, $75528d4699cb5574$export$db3b6bfb95261072)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { el: "swiper-pagination" }); const params = swiper.params.pagination; if (!params.el) return; let el; if (typeof params.el === "string" && swiper.isElement) el = swiper.el.querySelector(params.el); if (!el && typeof params.el === "string") el = [ ...document.querySelectorAll(params.el) ]; if (!el) el = params.el; if (!el || el.length === 0) return; if (swiper.params.uniqueNavElements && typeof params.el === "string" && Array.isArray(el) && el.length > 1) { el = [ ...swiper.el.querySelectorAll(params.el) ]; // check if it belongs to another nested Swiper if (el.length > 1) el = el.filter((subEl)=>{ if ((0, $831683533b862e22$export$407448d2b89b1813)(subEl, ".swiper")[0] !== swiper.el) return false; return true; })[0]; } if (Array.isArray(el) && el.length === 1) el = el[0]; Object.assign(swiper.pagination, { el: el }); el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ if (params.type === "bullets" && params.clickable) subEl.classList.add(...(params.clickableClass || "").split(" ")); subEl.classList.add(params.modifierClass + params.type); subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); if (params.type === "bullets" && params.dynamicBullets) { subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); dynamicBulletIndex = 0; if (params.dynamicMainBullets < 1) params.dynamicMainBullets = 1; } if (params.type === "progressbar" && params.progressbarOpposite) subEl.classList.add(params.progressbarOppositeClass); if (params.clickable) subEl.addEventListener("click", onBulletClick); if (!swiper.enabled) subEl.classList.add(params.lockClass); }); } function destroy() { const params = swiper.params.pagination; if (isPaginationDisabled()) return; let el = swiper.pagination.el; if (el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.classList.remove(params.hiddenClass); subEl.classList.remove(params.modifierClass + params.type); subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); if (params.clickable) { subEl.classList.remove(...(params.clickableClass || "").split(" ")); subEl.removeEventListener("click", onBulletClick); } }); } if (swiper.pagination.bullets) swiper.pagination.bullets.forEach((subEl)=>subEl.classList.remove(...params.bulletActiveClass.split(" "))); } on("changeDirection", ()=>{ if (!swiper.pagination || !swiper.pagination.el) return; const params = swiper.params.pagination; let { el: el } = swiper.pagination; el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.classList.remove(params.horizontalClass, params.verticalClass); subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); }); }); on("init", ()=>{ if (swiper.params.pagination.enabled === false) // eslint-disable-next-line disable(); else { init(); render(); update(); } }); on("activeIndexChange", ()=>{ if (typeof swiper.snapIndex === "undefined") update(); }); on("snapIndexChange", ()=>{ update(); }); on("snapGridLengthChange", ()=>{ render(); update(); }); on("destroy", ()=>{ destroy(); }); on("enable disable", ()=>{ let { el: el } = swiper.pagination; if (el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>subEl.classList[swiper.enabled ? "remove" : "add"](swiper.params.pagination.lockClass)); } }); on("lock unlock", ()=>{ update(); }); on("click", (_s, e)=>{ const targetEl = e.target; const el = (0, $831683533b862e22$export$953cecd6e717a553)(swiper.pagination.el); if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); if (isHidden === true) emit("paginationShow"); else emit("paginationHide"); el.forEach((subEl)=>subEl.classList.toggle(swiper.params.pagination.hiddenClass)); } }); const enable = ()=>{ swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); let { el: el } = swiper.pagination; if (el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); } init(); render(); update(); }; const disable = ()=>{ swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); let { el: el } = swiper.pagination; if (el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); } destroy(); }; Object.assign(swiper.pagination, { enable: enable, disable: disable, render: render, update: update, init: init, destroy: destroy }); } function $f9936f97c4cb712c$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); let isTouched = false; let timeout = null; let dragTimeout = null; let dragStartPos; let dragSize; let trackSize; let divider; extendParams({ scrollbar: { el: null, dragSize: "auto", hide: false, draggable: false, snapOnRelease: true, lockClass: "swiper-scrollbar-lock", dragClass: "swiper-scrollbar-drag", scrollbarDisabledClass: "swiper-scrollbar-disabled", horizontalClass: `swiper-scrollbar-horizontal`, verticalClass: `swiper-scrollbar-vertical` } }); swiper.scrollbar = { el: null, dragEl: null }; function setTranslate() { if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper; const { dragEl: dragEl, el: el } = scrollbar; const params = swiper.params.scrollbar; const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; let newSize = dragSize; let newPos = (trackSize - dragSize) * progress; if (rtl) { newPos = -newPos; if (newPos > 0) { newSize = dragSize - newPos; newPos = 0; } else if (-newPos + dragSize > trackSize) newSize = trackSize + newPos; } else if (newPos < 0) { newSize = dragSize + newPos; newPos = 0; } else if (newPos + dragSize > trackSize) newSize = trackSize - newPos; if (swiper.isHorizontal()) { dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; dragEl.style.width = `${newSize}px`; } else { dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; dragEl.style.height = `${newSize}px`; } if (params.hide) { clearTimeout(timeout); el.style.opacity = 1; timeout = setTimeout(()=>{ el.style.opacity = 0; el.style.transitionDuration = "400ms"; }, 1000); } } function setTransition(duration) { if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; } function updateSize() { if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; const { scrollbar: scrollbar } = swiper; const { dragEl: dragEl, el: el } = scrollbar; dragEl.style.width = ""; dragEl.style.height = ""; trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); if (swiper.params.scrollbar.dragSize === "auto") dragSize = trackSize * divider; else dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); if (swiper.isHorizontal()) dragEl.style.width = `${dragSize}px`; else dragEl.style.height = `${dragSize}px`; if (divider >= 1) el.style.display = "none"; else el.style.display = ""; if (swiper.params.scrollbar.hide) el.style.opacity = 0; if (swiper.params.watchOverflow && swiper.enabled) scrollbar.el.classList[swiper.isLocked ? "add" : "remove"](swiper.params.scrollbar.lockClass); } function getPointerPosition(e) { return swiper.isHorizontal() ? e.clientX : e.clientY; } function setDragPosition(e) { const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper; const { el: el } = scrollbar; let positionRatio; positionRatio = (getPointerPosition(e) - (0, $831683533b862e22$export$8b22cf2602fb60ce)(el)[swiper.isHorizontal() ? "left" : "top"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); positionRatio = Math.max(Math.min(positionRatio, 1), 0); if (rtl) positionRatio = 1 - positionRatio; const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; swiper.updateProgress(position); swiper.setTranslate(position); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } function onDragStart(e) { const params = swiper.params.scrollbar; const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper; const { el: el, dragEl: dragEl } = scrollbar; isTouched = true; dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? "left" : "top"] : null; e.preventDefault(); e.stopPropagation(); wrapperEl.style.transitionDuration = "100ms"; dragEl.style.transitionDuration = "100ms"; setDragPosition(e); clearTimeout(dragTimeout); el.style.transitionDuration = "0ms"; if (params.hide) el.style.opacity = 1; if (swiper.params.cssMode) swiper.wrapperEl.style["scroll-snap-type"] = "none"; emit("scrollbarDragStart", e); } function onDragMove(e) { const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper; const { el: el, dragEl: dragEl } = scrollbar; if (!isTouched) return; if (e.preventDefault && e.cancelable) e.preventDefault(); else e.returnValue = false; setDragPosition(e); wrapperEl.style.transitionDuration = "0ms"; el.style.transitionDuration = "0ms"; dragEl.style.transitionDuration = "0ms"; emit("scrollbarDragMove", e); } function onDragEnd(e) { const params = swiper.params.scrollbar; const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper; const { el: el } = scrollbar; if (!isTouched) return; isTouched = false; if (swiper.params.cssMode) { swiper.wrapperEl.style["scroll-snap-type"] = ""; wrapperEl.style.transitionDuration = ""; } if (params.hide) { clearTimeout(dragTimeout); dragTimeout = (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ el.style.opacity = 0; el.style.transitionDuration = "400ms"; }, 1000); } emit("scrollbarDragEnd", e); if (params.snapOnRelease) swiper.slideToClosest(); } function events(method) { const { scrollbar: scrollbar, params: params } = swiper; const el = scrollbar.el; if (!el) return; const target = el; const activeListener = params.passiveListeners ? { passive: false, capture: false } : false; const passiveListener = params.passiveListeners ? { passive: true, capture: false } : false; if (!target) return; const eventMethod = method === "on" ? "addEventListener" : "removeEventListener"; target[eventMethod]("pointerdown", onDragStart, activeListener); document[eventMethod]("pointermove", onDragMove, activeListener); document[eventMethod]("pointerup", onDragEnd, passiveListener); } function enableDraggable() { if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; events("on"); } function disableDraggable() { if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; events("off"); } function init() { const { scrollbar: scrollbar, el: swiperEl } = swiper; swiper.params.scrollbar = (0, $75528d4699cb5574$export$db3b6bfb95261072)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { el: "swiper-scrollbar" }); const params = swiper.params.scrollbar; if (!params.el) return; let el; if (typeof params.el === "string" && swiper.isElement) el = swiper.el.querySelector(params.el); if (!el && typeof params.el === "string") { el = document.querySelectorAll(params.el); if (!el.length) return; } else if (!el) el = params.el; if (swiper.params.uniqueNavElements && typeof params.el === "string" && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) el = swiperEl.querySelector(params.el); if (el.length > 0) el = el[0]; el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); let dragEl; if (el) { dragEl = el.querySelector((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(swiper.params.scrollbar.dragClass)); if (!dragEl) { dragEl = (0, $831683533b862e22$export$db3b6bfb95261072)("div", swiper.params.scrollbar.dragClass); el.append(dragEl); } } Object.assign(scrollbar, { el: el, dragEl: dragEl }); if (params.draggable) enableDraggable(); if (el) el.classList[swiper.enabled ? "remove" : "add"](...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.params.scrollbar.lockClass)); } function destroy() { const params = swiper.params.scrollbar; const el = swiper.scrollbar.el; if (el) el.classList.remove(...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); disableDraggable(); } on("changeDirection", ()=>{ if (!swiper.scrollbar || !swiper.scrollbar.el) return; const params = swiper.params.scrollbar; let { el: el } = swiper.scrollbar; el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.classList.remove(params.horizontalClass, params.verticalClass); subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); }); }); on("init", ()=>{ if (swiper.params.scrollbar.enabled === false) // eslint-disable-next-line disable(); else { init(); updateSize(); setTranslate(); } }); on("update resize observerUpdate lock unlock changeDirection", ()=>{ updateSize(); }); on("setTranslate", ()=>{ setTranslate(); }); on("setTransition", (_s, duration)=>{ setTransition(duration); }); on("enable disable", ()=>{ const { el: el } = swiper.scrollbar; if (el) el.classList[swiper.enabled ? "remove" : "add"](...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.params.scrollbar.lockClass)); }); on("destroy", ()=>{ destroy(); }); const enable = ()=>{ swiper.el.classList.remove(...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass)); if (swiper.scrollbar.el) swiper.scrollbar.el.classList.remove(...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass)); init(); updateSize(); setTranslate(); }; const disable = ()=>{ swiper.el.classList.add(...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass)); if (swiper.scrollbar.el) swiper.scrollbar.el.classList.add(...(0, $831683533b862e22$export$23f2a1d2818174ef)(swiper.params.scrollbar.scrollbarDisabledClass)); destroy(); }; Object.assign(swiper.scrollbar, { enable: enable, disable: disable, updateSize: updateSize, setTranslate: setTranslate, init: init, destroy: destroy }); } function $a42f2eb4b8baf0d6$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ parallax: { enabled: false } }); const elementsSelector = "[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]"; const setTransform = (el, progress)=>{ const { rtl: rtl } = swiper; const rtlFactor = rtl ? -1 : 1; const p = el.getAttribute("data-swiper-parallax") || "0"; let x = el.getAttribute("data-swiper-parallax-x"); let y = el.getAttribute("data-swiper-parallax-y"); const scale = el.getAttribute("data-swiper-parallax-scale"); const opacity = el.getAttribute("data-swiper-parallax-opacity"); const rotate = el.getAttribute("data-swiper-parallax-rotate"); if (x || y) { x = x || "0"; y = y || "0"; } else if (swiper.isHorizontal()) { x = p; y = "0"; } else { y = p; x = "0"; } if (x.indexOf("%") >= 0) x = `${parseInt(x, 10) * progress * rtlFactor}%`; else x = `${x * progress * rtlFactor}px`; if (y.indexOf("%") >= 0) y = `${parseInt(y, 10) * progress}%`; else y = `${y * progress}px`; if (typeof opacity !== "undefined" && opacity !== null) { const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); el.style.opacity = currentOpacity; } let transform = `translate3d(${x}, ${y}, 0px)`; if (typeof scale !== "undefined" && scale !== null) { const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); transform += ` scale(${currentScale})`; } if (rotate && typeof rotate !== "undefined" && rotate !== null) { const currentRotate = rotate * progress * -1; transform += ` rotate(${currentRotate}deg)`; } el.style.transform = transform; }; const setTranslate = ()=>{ const { el: el, slides: slides, progress: progress, snapGrid: snapGrid, isElement: isElement } = swiper; const elements = (0, $831683533b862e22$export$f1e1789686576879)(el, elementsSelector); if (swiper.isElement) elements.push(...(0, $831683533b862e22$export$f1e1789686576879)(swiper.hostEl, elementsSelector)); elements.forEach((subEl)=>{ setTransform(subEl, progress); }); slides.forEach((slideEl, slideIndex)=>{ let slideProgress = slideEl.progress; if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== "auto") slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); slideProgress = Math.min(Math.max(slideProgress, -1), 1); slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach((subEl)=>{ setTransform(subEl, slideProgress); }); }); }; const setTransition = function(duration) { if (duration === void 0) duration = swiper.params.speed; const { el: el, hostEl: hostEl } = swiper; const elements = [ ...el.querySelectorAll(elementsSelector) ]; if (swiper.isElement) elements.push(...hostEl.querySelectorAll(elementsSelector)); elements.forEach((parallaxEl)=>{ let parallaxDuration = parseInt(parallaxEl.getAttribute("data-swiper-parallax-duration"), 10) || duration; if (duration === 0) parallaxDuration = 0; parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; }); }; on("beforeInit", ()=>{ if (!swiper.params.parallax.enabled) return; swiper.params.watchSlidesProgress = true; swiper.originalParams.watchSlidesProgress = true; }); on("init", ()=>{ if (!swiper.params.parallax.enabled) return; setTranslate(); }); on("setTranslate", ()=>{ if (!swiper.params.parallax.enabled) return; setTranslate(); }); on("setTransition", (_swiper, duration)=>{ if (!swiper.params.parallax.enabled) return; setTransition(duration); }); } function $da01103e1a8fa261$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref; const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); extendParams({ zoom: { enabled: false, limitToOriginalSize: false, maxRatio: 3, minRatio: 1, toggle: true, containerClass: "swiper-zoom-container", zoomedSlideClass: "swiper-slide-zoomed" } }); swiper.zoom = { enabled: false }; let currentScale = 1; let isScaling = false; let fakeGestureTouched; let fakeGestureMoved; const evCache = []; const gesture = { originX: 0, originY: 0, slideEl: undefined, slideWidth: undefined, slideHeight: undefined, imageEl: undefined, imageWrapEl: undefined, maxRatio: 3 }; const image = { isTouched: undefined, isMoved: undefined, currentX: undefined, currentY: undefined, minX: undefined, minY: undefined, maxX: undefined, maxY: undefined, width: undefined, height: undefined, startX: undefined, startY: undefined, touchesStart: {}, touchesCurrent: {} }; const velocity = { x: undefined, y: undefined, prevPositionX: undefined, prevPositionY: undefined, prevTime: undefined }; let scale = 1; Object.defineProperty(swiper.zoom, "scale", { get () { return scale; }, set (value) { if (scale !== value) { const imageEl = gesture.imageEl; const slideEl = gesture.slideEl; emit("zoomChange", value, imageEl, slideEl); } scale = value; } }); function getDistanceBetweenTouches() { if (evCache.length < 2) return 1; const x1 = evCache[0].pageX; const y1 = evCache[0].pageY; const x2 = evCache[1].pageX; const y2 = evCache[1].pageY; const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); return distance; } function getMaxRatio() { const params = swiper.params.zoom; const maxRatio = gesture.imageWrapEl.getAttribute("data-swiper-zoom") || params.maxRatio; if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; return Math.min(imageMaxRatio, maxRatio); } return maxRatio; } function getScaleOrigin() { if (evCache.length < 2) return { x: null, y: null }; const box = gesture.imageEl.getBoundingClientRect(); return [ (evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale ]; } function getSlideSelector() { return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; } function eventWithinSlide(e) { const slideSelector = getSlideSelector(); if (e.target.matches(slideSelector)) return true; if (swiper.slides.filter((slideEl)=>slideEl.contains(e.target)).length > 0) return true; return false; } function eventWithinZoomContainer(e) { const selector = `.${swiper.params.zoom.containerClass}`; if (e.target.matches(selector)) return true; if ([ ...swiper.hostEl.querySelectorAll(selector) ].filter((containerEl)=>containerEl.contains(e.target)).length > 0) return true; return false; } // Events function onGestureStart(e) { if (e.pointerType === "mouse") evCache.splice(0, evCache.length); if (!eventWithinSlide(e)) return; const params = swiper.params.zoom; fakeGestureTouched = false; fakeGestureMoved = false; evCache.push(e); if (evCache.length < 2) return; fakeGestureTouched = true; gesture.scaleStart = getDistanceBetweenTouches(); if (!gesture.slideEl) { gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); if (imageEl) imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]; gesture.imageEl = imageEl; if (imageEl) gesture.imageWrapEl = (0, $831683533b862e22$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0]; else gesture.imageWrapEl = undefined; if (!gesture.imageWrapEl) { gesture.imageEl = undefined; return; } gesture.maxRatio = getMaxRatio(); } if (gesture.imageEl) { const [originX, originY] = getScaleOrigin(); gesture.originX = originX; gesture.originY = originY; gesture.imageEl.style.transitionDuration = "0ms"; } isScaling = true; } function onGestureChange(e) { if (!eventWithinSlide(e)) return; const params = swiper.params.zoom; const zoom = swiper.zoom; const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId); if (pointerIndex >= 0) evCache[pointerIndex] = e; if (evCache.length < 2) return; fakeGestureMoved = true; gesture.scaleMove = getDistanceBetweenTouches(); if (!gesture.imageEl) return; zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; if (zoom.scale > gesture.maxRatio) zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; if (zoom.scale < params.minRatio) zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; } function onGestureEnd(e) { if (!eventWithinSlide(e)) return; if (e.pointerType === "mouse" && e.type === "pointerout") return; const params = swiper.params.zoom; const zoom = swiper.zoom; const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId); if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); if (!fakeGestureTouched || !fakeGestureMoved) return; fakeGestureTouched = false; fakeGestureMoved = false; if (!gesture.imageEl) return; zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; currentScale = zoom.scale; isScaling = false; if (zoom.scale > 1 && gesture.slideEl) gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); else if (zoom.scale <= 1 && gesture.slideEl) gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); if (zoom.scale === 1) { gesture.originX = 0; gesture.originY = 0; gesture.slideEl = undefined; } } let allowTouchMoveTimeout; function allowTouchMove() { swiper.touchEventsData.preventTouchMoveFromPointerMove = false; } function preventTouchMove() { clearTimeout(allowTouchMoveTimeout); swiper.touchEventsData.preventTouchMoveFromPointerMove = true; allowTouchMoveTimeout = setTimeout(()=>{ allowTouchMove(); }); } function onTouchStart(e) { const device = swiper.device; if (!gesture.imageEl) return; if (image.isTouched) return; if (device.android && e.cancelable) e.preventDefault(); image.isTouched = true; const event = evCache.length > 0 ? evCache[0] : e; image.touchesStart.x = event.pageX; image.touchesStart.y = event.pageY; } function onTouchMove(e) { if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return; const zoom = swiper.zoom; if (!gesture.imageEl) return; if (!image.isTouched || !gesture.slideEl) return; if (!image.isMoved) { image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; image.startX = (0, $831683533b862e22$export$35e795649ee09318)(gesture.imageWrapEl, "x") || 0; image.startY = (0, $831683533b862e22$export$35e795649ee09318)(gesture.imageWrapEl, "y") || 0; gesture.slideWidth = gesture.slideEl.offsetWidth; gesture.slideHeight = gesture.slideEl.offsetHeight; gesture.imageWrapEl.style.transitionDuration = "0ms"; } // Define if we need image drag const scaledWidth = image.width * zoom.scale; const scaledHeight = image.height * zoom.scale; image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); image.maxX = -image.minX; image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); image.maxY = -image.minY; image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); if (touchesDiff > 5) swiper.allowClick = false; if (!image.isMoved && !isScaling) { if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { image.isTouched = false; allowTouchMove(); return; } if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { image.isTouched = false; allowTouchMove(); return; } } if (e.cancelable) e.preventDefault(); e.stopPropagation(); preventTouchMove(); image.isMoved = true; const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); const { originX: originX, originY: originY } = gesture; image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); if (image.currentX < image.minX) image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; if (image.currentX > image.maxX) image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; if (image.currentY < image.minY) image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; if (image.currentY > image.maxY) image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; // Velocity if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; if (!velocity.prevTime) velocity.prevTime = Date.now(); velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; velocity.prevPositionX = image.touchesCurrent.x; velocity.prevPositionY = image.touchesCurrent.y; velocity.prevTime = Date.now(); gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; } function onTouchEnd() { const zoom = swiper.zoom; if (!gesture.imageEl) return; if (!image.isTouched || !image.isMoved) { image.isTouched = false; image.isMoved = false; return; } image.isTouched = false; image.isMoved = false; let momentumDurationX = 300; let momentumDurationY = 300; const momentumDistanceX = velocity.x * momentumDurationX; const newPositionX = image.currentX + momentumDistanceX; const momentumDistanceY = velocity.y * momentumDurationY; const newPositionY = image.currentY + momentumDistanceY; // Fix duration if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); const momentumDuration = Math.max(momentumDurationX, momentumDurationY); image.currentX = newPositionX; image.currentY = newPositionY; // Define if we need image drag const scaledWidth = image.width * zoom.scale; const scaledHeight = image.height * zoom.scale; image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); image.maxX = -image.minX; image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); image.maxY = -image.minY; image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; } function onTransitionEnd() { const zoom = swiper.zoom; if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { if (gesture.imageEl) gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)"; if (gesture.imageWrapEl) gesture.imageWrapEl.style.transform = "translate3d(0,0,0)"; gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); zoom.scale = 1; currentScale = 1; gesture.slideEl = undefined; gesture.imageEl = undefined; gesture.imageWrapEl = undefined; gesture.originX = 0; gesture.originY = 0; } } function zoomIn(e) { const zoom = swiper.zoom; const params = swiper.params.zoom; if (!gesture.slideEl) { if (e && e.target) gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); if (!gesture.slideEl) { if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $831683533b862e22$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; else gesture.slideEl = swiper.slides[swiper.activeIndex]; } let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); if (imageEl) imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]; gesture.imageEl = imageEl; if (imageEl) gesture.imageWrapEl = (0, $831683533b862e22$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0]; else gesture.imageWrapEl = undefined; } if (!gesture.imageEl || !gesture.imageWrapEl) return; if (swiper.params.cssMode) { swiper.wrapperEl.style.overflow = "hidden"; swiper.wrapperEl.style.touchAction = "none"; } gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); let touchX; let touchY; let offsetX; let offsetY; let diffX; let diffY; let translateX; let translateY; let imageWidth; let imageHeight; let scaledWidth; let scaledHeight; let translateMinX; let translateMinY; let translateMaxX; let translateMaxY; let slideWidth; let slideHeight; if (typeof image.touchesStart.x === "undefined" && e) { touchX = e.pageX; touchY = e.pageY; } else { touchX = image.touchesStart.x; touchY = image.touchesStart.y; } const forceZoomRatio = typeof e === "number" ? e : null; if (currentScale === 1 && forceZoomRatio) { touchX = undefined; touchY = undefined; image.touchesStart.x = undefined; image.touchesStart.y = undefined; } const maxRatio = getMaxRatio(); zoom.scale = forceZoomRatio || maxRatio; currentScale = forceZoomRatio || maxRatio; if (e && !(currentScale === 1 && forceZoomRatio)) { slideWidth = gesture.slideEl.offsetWidth; slideHeight = gesture.slideEl.offsetHeight; offsetX = (0, $831683533b862e22$export$8b22cf2602fb60ce)(gesture.slideEl).left + window.scrollX; offsetY = (0, $831683533b862e22$export$8b22cf2602fb60ce)(gesture.slideEl).top + window.scrollY; diffX = offsetX + slideWidth / 2 - touchX; diffY = offsetY + slideHeight / 2 - touchY; imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; scaledWidth = imageWidth * zoom.scale; scaledHeight = imageHeight * zoom.scale; translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); translateMaxX = -translateMinX; translateMaxY = -translateMinY; translateX = diffX * zoom.scale; translateY = diffY * zoom.scale; if (translateX < translateMinX) translateX = translateMinX; if (translateX > translateMaxX) translateX = translateMaxX; if (translateY < translateMinY) translateY = translateMinY; if (translateY > translateMaxY) translateY = translateMaxY; } else { translateX = 0; translateY = 0; } if (forceZoomRatio && zoom.scale === 1) { gesture.originX = 0; gesture.originY = 0; } gesture.imageWrapEl.style.transitionDuration = "300ms"; gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; gesture.imageEl.style.transitionDuration = "300ms"; gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; } function zoomOut() { const zoom = swiper.zoom; const params = swiper.params.zoom; if (!gesture.slideEl) { if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $831683533b862e22$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; else gesture.slideEl = swiper.slides[swiper.activeIndex]; let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); if (imageEl) imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]; gesture.imageEl = imageEl; if (imageEl) gesture.imageWrapEl = (0, $831683533b862e22$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0]; else gesture.imageWrapEl = undefined; } if (!gesture.imageEl || !gesture.imageWrapEl) return; if (swiper.params.cssMode) { swiper.wrapperEl.style.overflow = ""; swiper.wrapperEl.style.touchAction = ""; } zoom.scale = 1; currentScale = 1; image.touchesStart.x = undefined; image.touchesStart.y = undefined; gesture.imageWrapEl.style.transitionDuration = "300ms"; gesture.imageWrapEl.style.transform = "translate3d(0,0,0)"; gesture.imageEl.style.transitionDuration = "300ms"; gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)"; gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); gesture.slideEl = undefined; gesture.originX = 0; gesture.originY = 0; } // Toggle Zoom function zoomToggle(e) { const zoom = swiper.zoom; if (zoom.scale && zoom.scale !== 1) // Zoom Out zoomOut(); else // Zoom In zoomIn(e); } function getListeners() { const passiveListener = swiper.params.passiveListeners ? { passive: true, capture: false } : false; const activeListenerWithCapture = swiper.params.passiveListeners ? { passive: false, capture: true } : true; return { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture }; } // Attach/Detach Events function enable() { const zoom = swiper.zoom; if (zoom.enabled) return; zoom.enabled = true; const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners(); // Scale image swiper.wrapperEl.addEventListener("pointerdown", onGestureStart, passiveListener); swiper.wrapperEl.addEventListener("pointermove", onGestureChange, activeListenerWithCapture); [ "pointerup", "pointercancel", "pointerout" ].forEach((eventName)=>{ swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); }); // Move image swiper.wrapperEl.addEventListener("pointermove", onTouchMove, activeListenerWithCapture); } function disable() { const zoom = swiper.zoom; if (!zoom.enabled) return; zoom.enabled = false; const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners(); // Scale image swiper.wrapperEl.removeEventListener("pointerdown", onGestureStart, passiveListener); swiper.wrapperEl.removeEventListener("pointermove", onGestureChange, activeListenerWithCapture); [ "pointerup", "pointercancel", "pointerout" ].forEach((eventName)=>{ swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); }); // Move image swiper.wrapperEl.removeEventListener("pointermove", onTouchMove, activeListenerWithCapture); } on("init", ()=>{ if (swiper.params.zoom.enabled) enable(); }); on("destroy", ()=>{ disable(); }); on("touchStart", (_s, e)=>{ if (!swiper.zoom.enabled) return; onTouchStart(e); }); on("touchEnd", (_s, e)=>{ if (!swiper.zoom.enabled) return; onTouchEnd(); }); on("doubleTap", (_s, e)=>{ if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) zoomToggle(e); }); on("transitionEnd", ()=>{ if (swiper.zoom.enabled && swiper.params.zoom.enabled) onTransitionEnd(); }); on("slideChange", ()=>{ if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) onTransitionEnd(); }); Object.assign(swiper.zoom, { enable: enable, disable: disable, in: zoomIn, out: zoomOut, toggle: zoomToggle }); } /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ function $637840a65b455b9b$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ controller: { control: undefined, inverse: false, by: "slide" // or 'container' } }); swiper.controller = { control: undefined }; function LinearSpline(x, y) { const binarySearch = function search() { let maxIndex; let minIndex; let guess; return (array, val)=>{ minIndex = -1; maxIndex = array.length; while(maxIndex - minIndex > 1){ guess = maxIndex + minIndex >> 1; if (array[guess] <= val) minIndex = guess; else maxIndex = guess; } return maxIndex; }; }(); this.x = x; this.y = y; this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value: // (x1,y1) is the known point before given value, // (x3,y3) is the known point after given value. let i1; let i3; this.interpolate = function interpolate(x2) { if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2): i3 = binarySearch(this.x, x2); i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already: // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; }; return this; } function getInterpolateFunction(c) { swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); } function setTranslate(_t, byController) { const controlled = swiper.controller.control; let multiplier; let controlledTranslate; const Swiper = swiper.constructor; function setControlledTranslate(c) { if (c.destroyed) return; // this will create an Interpolate function based on the snapGrids // x is the Grid of the scrolled scroller and y will be the controlled scroller // it makes sense to create this only once and recall it for the interpolation // the function does a lot of value caching for performance const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; if (swiper.params.controller.by === "slide") { getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid // but it did not work out controlledTranslate = -swiper.controller.spline.interpolate(-translate); } if (!controlledTranslate || swiper.params.controller.by === "container") { multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) multiplier = 1; controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); } if (swiper.params.controller.inverse) controlledTranslate = c.maxTranslate() - controlledTranslate; c.updateProgress(controlledTranslate); c.setTranslate(controlledTranslate, swiper); c.updateActiveIndex(); c.updateSlidesClasses(); } if (Array.isArray(controlled)) { for(let i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTranslate(controlled[i]); } else if (controlled instanceof Swiper && byController !== controlled) setControlledTranslate(controlled); } function setTransition(duration, byController) { const Swiper = swiper.constructor; const controlled = swiper.controller.control; let i; function setControlledTransition(c) { if (c.destroyed) return; c.setTransition(duration, swiper); if (duration !== 0) { c.transitionStart(); if (c.params.autoHeight) (0, $831683533b862e22$export$7ccc53e8f1e7dfc5)(()=>{ c.updateAutoHeight(); }); (0, $831683533b862e22$export$342063e11d6c3cad)(c.wrapperEl, ()=>{ if (!controlled) return; c.transitionEnd(); }); } } if (Array.isArray(controlled)) { for(i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTransition(controlled[i]); } else if (controlled instanceof Swiper && byController !== controlled) setControlledTransition(controlled); } function removeSpline() { if (!swiper.controller.control) return; if (swiper.controller.spline) { swiper.controller.spline = undefined; delete swiper.controller.spline; } } on("beforeInit", ()=>{ if (typeof window !== "undefined" && // eslint-disable-line (typeof swiper.params.controller.control === "string" || swiper.params.controller.control instanceof HTMLElement)) { const controlElements = typeof swiper.params.controller.control === "string" ? [ ...document.querySelectorAll(swiper.params.controller.control) ] : [ swiper.params.controller.control ]; controlElements.forEach((controlElement)=>{ if (!swiper.controller.control) swiper.controller.control = []; if (controlElement && controlElement.swiper) swiper.controller.control.push(controlElement.swiper); else if (controlElement) { const eventName = `${swiper.params.eventsPrefix}init`; const onControllerSwiper = (e)=>{ swiper.controller.control.push(e.detail[0]); swiper.update(); controlElement.removeEventListener(eventName, onControllerSwiper); }; controlElement.addEventListener(eventName, onControllerSwiper); } }); return; } swiper.controller.control = swiper.params.controller.control; }); on("update", ()=>{ removeSpline(); }); on("resize", ()=>{ removeSpline(); }); on("observerUpdate", ()=>{ removeSpline(); }); on("setTranslate", (_s, translate, byController)=>{ if (!swiper.controller.control || swiper.controller.control.destroyed) return; swiper.controller.setTranslate(translate, byController); }); on("setTransition", (_s, duration, byController)=>{ if (!swiper.controller.control || swiper.controller.control.destroyed) return; swiper.controller.setTransition(duration, byController); }); Object.assign(swiper.controller, { setTranslate: setTranslate, setTransition: setTransition }); } function $0eea497b988f6467$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ a11y: { enabled: true, notificationClass: "swiper-notification", prevSlideMessage: "Previous slide", nextSlideMessage: "Next slide", firstSlideMessage: "This is the first slide", lastSlideMessage: "This is the last slide", paginationBulletMessage: "Go to slide {{index}}", slideLabelMessage: "{{index}} / {{slidesLength}}", containerMessage: null, containerRoleDescriptionMessage: null, containerRole: null, itemRoleDescriptionMessage: null, slideRole: "group", id: null, scrollOnFocus: true } }); swiper.a11y = { clicked: false }; let liveRegion = null; let preventFocusHandler; let focusTargetSlideEl; let visibilityChangedTimestamp = new Date().getTime(); function notify(message) { const notification = liveRegion; if (notification.length === 0) return; notification.innerHTML = ""; notification.innerHTML = message; } function getRandomNumber(size) { if (size === void 0) size = 16; const randomChar = ()=>Math.round(16 * Math.random()).toString(16); return "x".repeat(size).replace(/x/g, randomChar); } function makeElFocusable(el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("tabIndex", "0"); }); } function makeElNotFocusable(el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("tabIndex", "-1"); }); } function addElRole(el, role) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("role", role); }); } function addElRoleDescription(el, description) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("aria-roledescription", description); }); } function addElControls(el, controls) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("aria-controls", controls); }); } function addElLabel(el, label) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("aria-label", label); }); } function addElId(el, id) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("id", id); }); } function addElLive(el, live) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("aria-live", live); }); } function disableEl(el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("aria-disabled", true); }); } function enableEl(el) { el = (0, $831683533b862e22$export$953cecd6e717a553)(el); el.forEach((subEl)=>{ subEl.setAttribute("aria-disabled", false); }); } function onEnterOrSpaceKey(e) { if (e.keyCode !== 13 && e.keyCode !== 32) return; const params = swiper.params.a11y; const targetEl = e.target; if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { if (!e.target.matches((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) return; } if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { const prevEls = (0, $831683533b862e22$export$953cecd6e717a553)(swiper.navigation.prevEl); const nextEls = (0, $831683533b862e22$export$953cecd6e717a553)(swiper.navigation.nextEl); if (nextEls.includes(targetEl)) { if (!(swiper.isEnd && !swiper.params.loop)) swiper.slideNext(); if (swiper.isEnd) notify(params.lastSlideMessage); else notify(params.nextSlideMessage); } if (prevEls.includes(targetEl)) { if (!(swiper.isBeginning && !swiper.params.loop)) swiper.slidePrev(); if (swiper.isBeginning) notify(params.firstSlideMessage); else notify(params.prevSlideMessage); } } if (swiper.pagination && targetEl.matches((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) targetEl.click(); } function updateNavigation() { if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation; if (prevEl) { if (swiper.isBeginning) { disableEl(prevEl); makeElNotFocusable(prevEl); } else { enableEl(prevEl); makeElFocusable(prevEl); } } if (nextEl) { if (swiper.isEnd) { disableEl(nextEl); makeElNotFocusable(nextEl); } else { enableEl(nextEl); makeElFocusable(nextEl); } } } function hasPagination() { return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; } function hasClickablePagination() { return hasPagination() && swiper.params.pagination.clickable; } function updatePagination() { const params = swiper.params.a11y; if (!hasPagination()) return; swiper.pagination.bullets.forEach((bulletEl)=>{ if (swiper.params.pagination.clickable) { makeElFocusable(bulletEl); if (!swiper.params.pagination.renderBullet) { addElRole(bulletEl, "button"); addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0, $831683533b862e22$export$dda1d9f60106f0e9)(bulletEl) + 1)); } } if (bulletEl.matches((0, $568b5eab5472b7cb$export$db3b6bfb95261072)(swiper.params.pagination.bulletActiveClass))) bulletEl.setAttribute("aria-current", "true"); else bulletEl.removeAttribute("aria-current"); }); } const initNavEl = (el, wrapperId, message)=>{ makeElFocusable(el); if (el.tagName !== "BUTTON") { addElRole(el, "button"); el.addEventListener("keydown", onEnterOrSpaceKey); } addElLabel(el, message); addElControls(el, wrapperId); }; const handlePointerDown = (e)=>{ if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) preventFocusHandler = true; swiper.a11y.clicked = true; }; const handlePointerUp = ()=>{ preventFocusHandler = false; requestAnimationFrame(()=>{ requestAnimationFrame(()=>{ if (!swiper.destroyed) swiper.a11y.clicked = false; }); }); }; const onVisibilityChange = (e)=>{ visibilityChangedTimestamp = new Date().getTime(); }; const handleFocus = (e)=>{ if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; if (new Date().getTime() - visibilityChangedTimestamp < 100) return; const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); if (!slideEl || !swiper.slides.includes(slideEl)) return; focusTargetSlideEl = slideEl; const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); if (isActive || isVisible) return; if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; if (swiper.isHorizontal()) swiper.el.scrollLeft = 0; else swiper.el.scrollTop = 0; requestAnimationFrame(()=>{ if (preventFocusHandler) return; if (swiper.params.loop) swiper.slideToLoop(parseInt(slideEl.getAttribute("data-swiper-slide-index")), 0); else swiper.slideTo(swiper.slides.indexOf(slideEl), 0); preventFocusHandler = false; }); }; const initSlides = ()=>{ const params = swiper.params.a11y; if (params.itemRoleDescriptionMessage) addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); if (params.slideRole) addElRole(swiper.slides, params.slideRole); const slidesLength = swiper.slides.length; if (params.slideLabelMessage) swiper.slides.forEach((slideEl, index)=>{ const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute("data-swiper-slide-index"), 10) : index; const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); addElLabel(slideEl, ariaLabelMessage); }); }; const init = ()=>{ const params = swiper.params.a11y; swiper.el.append(liveRegion); // Container const containerEl = swiper.el; if (params.containerRoleDescriptionMessage) addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); if (params.containerMessage) addElLabel(containerEl, params.containerMessage); if (params.containerRole) addElRole(containerEl, params.containerRole); // Wrapper const wrapperEl = swiper.wrapperEl; const wrapperId = params.id || wrapperEl.getAttribute("id") || `swiper-wrapper-${getRandomNumber(16)}`; const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? "off" : "polite"; addElId(wrapperEl, wrapperId); addElLive(wrapperEl, live); // Slide initSlides(); // Navigation let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {}; nextEl = (0, $831683533b862e22$export$953cecd6e717a553)(nextEl); prevEl = (0, $831683533b862e22$export$953cecd6e717a553)(prevEl); if (nextEl) nextEl.forEach((el)=>initNavEl(el, wrapperId, params.nextSlideMessage)); if (prevEl) prevEl.forEach((el)=>initNavEl(el, wrapperId, params.prevSlideMessage)); // Pagination if (hasClickablePagination()) { const paginationEl = (0, $831683533b862e22$export$953cecd6e717a553)(swiper.pagination.el); paginationEl.forEach((el)=>{ el.addEventListener("keydown", onEnterOrSpaceKey); }); } // Tab focus const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); document.addEventListener("visibilitychange", onVisibilityChange); swiper.el.addEventListener("focus", handleFocus, true); swiper.el.addEventListener("focus", handleFocus, true); swiper.el.addEventListener("pointerdown", handlePointerDown, true); swiper.el.addEventListener("pointerup", handlePointerUp, true); }; function destroy() { if (liveRegion) liveRegion.remove(); let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {}; nextEl = (0, $831683533b862e22$export$953cecd6e717a553)(nextEl); prevEl = (0, $831683533b862e22$export$953cecd6e717a553)(prevEl); if (nextEl) nextEl.forEach((el)=>el.removeEventListener("keydown", onEnterOrSpaceKey)); if (prevEl) prevEl.forEach((el)=>el.removeEventListener("keydown", onEnterOrSpaceKey)); // Pagination if (hasClickablePagination()) { const paginationEl = (0, $831683533b862e22$export$953cecd6e717a553)(swiper.pagination.el); paginationEl.forEach((el)=>{ el.removeEventListener("keydown", onEnterOrSpaceKey); }); } const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); document.removeEventListener("visibilitychange", onVisibilityChange); // Tab focus if (swiper.el && typeof swiper.el !== "string") { swiper.el.removeEventListener("focus", handleFocus, true); swiper.el.removeEventListener("pointerdown", handlePointerDown, true); swiper.el.removeEventListener("pointerup", handlePointerUp, true); } } on("beforeInit", ()=>{ liveRegion = (0, $831683533b862e22$export$db3b6bfb95261072)("span", swiper.params.a11y.notificationClass); liveRegion.setAttribute("aria-live", "assertive"); liveRegion.setAttribute("aria-atomic", "true"); }); on("afterInit", ()=>{ if (!swiper.params.a11y.enabled) return; init(); }); on("slidesLengthChange snapGridLengthChange slidesGridLengthChange", ()=>{ if (!swiper.params.a11y.enabled) return; initSlides(); }); on("fromEdge toEdge afterInit lock unlock", ()=>{ if (!swiper.params.a11y.enabled) return; updateNavigation(); }); on("paginationUpdate", ()=>{ if (!swiper.params.a11y.enabled) return; updatePagination(); }); on("destroy", ()=>{ if (!swiper.params.a11y.enabled) return; destroy(); }); } function $20a2cccb81c115b1$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ history: { enabled: false, root: "", replaceState: false, key: "slides", keepQuery: false } }); let initialized = false; let paths = {}; const slugify = (text)=>{ return text.toString().replace(/\s+/g, "-").replace(/[^\w-]+/g, "").replace(/--+/g, "-").replace(/^-+/, "").replace(/-+$/, ""); }; const getPathValues = (urlOverride)=>{ const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); let location; if (urlOverride) location = new URL(urlOverride); else location = window.location; const pathArray = location.pathname.slice(1).split("/").filter((part)=>part !== ""); const total = pathArray.length; const key = pathArray[total - 2]; const value = pathArray[total - 1]; return { key: key, value: value }; }; const setHistory = (key, index)=>{ const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); if (!initialized || !swiper.params.history.enabled) return; let location; if (swiper.params.url) location = new URL(swiper.params.url); else location = window.location; const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; let value = slugify(slide.getAttribute("data-history")); if (swiper.params.history.root.length > 0) { let root = swiper.params.history.root; if (root[root.length - 1] === "/") root = root.slice(0, root.length - 1); value = `${root}/${key ? `${key}/` : ""}${value}`; } else if (!location.pathname.includes(key)) value = `${key ? `${key}/` : ""}${value}`; if (swiper.params.history.keepQuery) value += location.search; const currentState = window.history.state; if (currentState && currentState.value === value) return; if (swiper.params.history.replaceState) window.history.replaceState({ value: value }, null, value); else window.history.pushState({ value: value }, null, value); }; const scrollToSlide = (speed, value, runCallbacks)=>{ if (value) for(let i = 0, length = swiper.slides.length; i < length; i += 1){ const slide = swiper.slides[i]; const slideHistory = slugify(slide.getAttribute("data-history")); if (slideHistory === value) { const index = swiper.getSlideIndex(slide); swiper.slideTo(index, speed, runCallbacks); } } else swiper.slideTo(0, speed, runCallbacks); }; const setHistoryPopState = ()=>{ paths = getPathValues(swiper.params.url); scrollToSlide(swiper.params.speed, paths.value, false); }; const init = ()=>{ const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); if (!swiper.params.history) return; if (!window.history || !window.history.pushState) { swiper.params.history.enabled = false; swiper.params.hashNavigation.enabled = true; return; } initialized = true; paths = getPathValues(swiper.params.url); if (!paths.key && !paths.value) { if (!swiper.params.history.replaceState) window.addEventListener("popstate", setHistoryPopState); return; } scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); if (!swiper.params.history.replaceState) window.addEventListener("popstate", setHistoryPopState); }; const destroy = ()=>{ const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); if (!swiper.params.history.replaceState) window.removeEventListener("popstate", setHistoryPopState); }; on("init", ()=>{ if (swiper.params.history.enabled) init(); }); on("destroy", ()=>{ if (swiper.params.history.enabled) destroy(); }); on("transitionEnd _freeModeNoMomentumRelease", ()=>{ if (initialized) setHistory(swiper.params.history.key, swiper.activeIndex); }); on("slideChange", ()=>{ if (initialized && swiper.params.cssMode) setHistory(swiper.params.history.key, swiper.activeIndex); }); } function $0de166b73ddce24c$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, emit: emit, on: on } = _ref; let initialized = false; const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); const window = (0, $189f45f12f88561c$export$407448d2b89b1813)(); extendParams({ hashNavigation: { enabled: false, replaceState: false, watchState: false, getSlideIndex (_s, hash) { if (swiper.virtual && swiper.params.virtual.enabled) { const slideWithHash = swiper.slides.filter((slideEl)=>slideEl.getAttribute("data-hash") === hash)[0]; if (!slideWithHash) return 0; const index = parseInt(slideWithHash.getAttribute("data-swiper-slide-index"), 10); return index; } return swiper.getSlideIndex((0, $831683533b862e22$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); } } }); const onHashChange = ()=>{ emit("hashChange"); const newHash = document.location.hash.replace("#", ""); const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") : ""; if (newHash !== activeSlideHash) { const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); if (typeof newIndex === "undefined" || Number.isNaN(newIndex)) return; swiper.slideTo(newIndex); } }; const setHash = ()=>{ if (!initialized || !swiper.params.hashNavigation.enabled) return; const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") || activeSlideEl.getAttribute("data-history") : ""; if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { window.history.replaceState(null, null, `#${activeSlideHash}` || ""); emit("hashSet"); } else { document.location.hash = activeSlideHash || ""; emit("hashSet"); } }; const init = ()=>{ if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; initialized = true; const hash = document.location.hash.replace("#", ""); if (hash) { const speed = 0; const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); } if (swiper.params.hashNavigation.watchState) window.addEventListener("hashchange", onHashChange); }; const destroy = ()=>{ if (swiper.params.hashNavigation.watchState) window.removeEventListener("hashchange", onHashChange); }; on("init", ()=>{ if (swiper.params.hashNavigation.enabled) init(); }); on("destroy", ()=>{ if (swiper.params.hashNavigation.enabled) destroy(); }); on("transitionEnd _freeModeNoMomentumRelease", ()=>{ if (initialized) setHash(); }); on("slideChange", ()=>{ if (initialized && swiper.params.cssMode) setHash(); }); } /* eslint no-underscore-dangle: "off" */ /* eslint no-use-before-define: "off" */ function $774fac4d19db27e1$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on, emit: emit, params: params } = _ref; swiper.autoplay = { running: false, paused: false, timeLeft: 0 }; extendParams({ autoplay: { enabled: false, delay: 3000, waitForTransition: true, disableOnInteraction: false, stopOnLastSlide: false, reverseDirection: false, pauseOnMouseEnter: false } }); let timeout; let raf; let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; let autoplayTimeLeft; let autoplayStartTime = new Date().getTime(); let wasPaused; let isTouched; let pausedByTouch; let touchStartTimeout; let slideChanged; let pausedByInteraction; let pausedByPointerEnter; function onTransitionEnd(e) { if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; if (e.target !== swiper.wrapperEl) return; swiper.wrapperEl.removeEventListener("transitionend", onTransitionEnd); if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) return; resume(); } const calcTimeLeft = ()=>{ if (swiper.destroyed || !swiper.autoplay.running) return; if (swiper.autoplay.paused) wasPaused = true; else if (wasPaused) { autoplayDelayCurrent = autoplayTimeLeft; wasPaused = false; } const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); swiper.autoplay.timeLeft = timeLeft; emit("autoplayTimeLeft", timeLeft, timeLeft / autoplayDelayTotal); raf = requestAnimationFrame(()=>{ calcTimeLeft(); }); }; const getSlideDelay = ()=>{ let activeSlideEl; if (swiper.virtual && swiper.params.virtual.enabled) activeSlideEl = swiper.slides.filter((slideEl)=>slideEl.classList.contains("swiper-slide-active"))[0]; else activeSlideEl = swiper.slides[swiper.activeIndex]; if (!activeSlideEl) return undefined; const currentSlideDelay = parseInt(activeSlideEl.getAttribute("data-swiper-autoplay"), 10); return currentSlideDelay; }; const run = (delayForce)=>{ if (swiper.destroyed || !swiper.autoplay.running) return; cancelAnimationFrame(raf); calcTimeLeft(); let delay = typeof delayForce === "undefined" ? swiper.params.autoplay.delay : delayForce; autoplayDelayTotal = swiper.params.autoplay.delay; autoplayDelayCurrent = swiper.params.autoplay.delay; const currentSlideDelay = getSlideDelay(); if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === "undefined") { delay = currentSlideDelay; autoplayDelayTotal = currentSlideDelay; autoplayDelayCurrent = currentSlideDelay; } autoplayTimeLeft = delay; const speed = swiper.params.speed; const proceed = ()=>{ if (!swiper || swiper.destroyed) return; if (swiper.params.autoplay.reverseDirection) { if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { swiper.slidePrev(speed, true, true); emit("autoplay"); } else if (!swiper.params.autoplay.stopOnLastSlide) { swiper.slideTo(swiper.slides.length - 1, speed, true, true); emit("autoplay"); } } else { if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { swiper.slideNext(speed, true, true); emit("autoplay"); } else if (!swiper.params.autoplay.stopOnLastSlide) { swiper.slideTo(0, speed, true, true); emit("autoplay"); } } if (swiper.params.cssMode) { autoplayStartTime = new Date().getTime(); requestAnimationFrame(()=>{ run(); }); } }; if (delay > 0) { clearTimeout(timeout); timeout = setTimeout(()=>{ proceed(); }, delay); } else requestAnimationFrame(()=>{ proceed(); }); // eslint-disable-next-line return delay; }; const start = ()=>{ autoplayStartTime = new Date().getTime(); swiper.autoplay.running = true; run(); emit("autoplayStart"); }; const stop = ()=>{ swiper.autoplay.running = false; clearTimeout(timeout); cancelAnimationFrame(raf); emit("autoplayStop"); }; const pause = (internal, reset)=>{ if (swiper.destroyed || !swiper.autoplay.running) return; clearTimeout(timeout); if (!internal) pausedByInteraction = true; const proceed = ()=>{ emit("autoplayPause"); if (swiper.params.autoplay.waitForTransition) swiper.wrapperEl.addEventListener("transitionend", onTransitionEnd); else resume(); }; swiper.autoplay.paused = true; if (reset) { if (slideChanged) autoplayTimeLeft = swiper.params.autoplay.delay; slideChanged = false; proceed(); return; } const delay = autoplayTimeLeft || swiper.params.autoplay.delay; autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; proceed(); }; const resume = ()=>{ if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; autoplayStartTime = new Date().getTime(); if (pausedByInteraction) { pausedByInteraction = false; run(autoplayTimeLeft); } else run(); swiper.autoplay.paused = false; emit("autoplayResume"); }; const onVisibilityChange = ()=>{ if (swiper.destroyed || !swiper.autoplay.running) return; const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); if (document.visibilityState === "hidden") { pausedByInteraction = true; pause(true); } if (document.visibilityState === "visible") resume(); }; const onPointerEnter = (e)=>{ if (e.pointerType !== "mouse") return; pausedByInteraction = true; pausedByPointerEnter = true; if (swiper.animating || swiper.autoplay.paused) return; pause(true); }; const onPointerLeave = (e)=>{ if (e.pointerType !== "mouse") return; pausedByPointerEnter = false; if (swiper.autoplay.paused) resume(); }; const attachMouseEvents = ()=>{ if (swiper.params.autoplay.pauseOnMouseEnter) { swiper.el.addEventListener("pointerenter", onPointerEnter); swiper.el.addEventListener("pointerleave", onPointerLeave); } }; const detachMouseEvents = ()=>{ if (swiper.el && typeof swiper.el !== "string") { swiper.el.removeEventListener("pointerenter", onPointerEnter); swiper.el.removeEventListener("pointerleave", onPointerLeave); } }; const attachDocumentEvents = ()=>{ const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); document.addEventListener("visibilitychange", onVisibilityChange); }; const detachDocumentEvents = ()=>{ const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); document.removeEventListener("visibilitychange", onVisibilityChange); }; on("init", ()=>{ if (swiper.params.autoplay.enabled) { attachMouseEvents(); attachDocumentEvents(); start(); } }); on("destroy", ()=>{ detachMouseEvents(); detachDocumentEvents(); if (swiper.autoplay.running) stop(); }); on("_freeModeStaticRelease", ()=>{ if (pausedByTouch || pausedByInteraction) resume(); }); on("_freeModeNoMomentumRelease", ()=>{ if (!swiper.params.autoplay.disableOnInteraction) pause(true, true); else stop(); }); on("beforeTransitionStart", (_s, speed, internal)=>{ if (swiper.destroyed || !swiper.autoplay.running) return; if (internal || !swiper.params.autoplay.disableOnInteraction) pause(true, true); else stop(); }); on("sliderFirstMove", ()=>{ if (swiper.destroyed || !swiper.autoplay.running) return; if (swiper.params.autoplay.disableOnInteraction) { stop(); return; } isTouched = true; pausedByTouch = false; pausedByInteraction = false; touchStartTimeout = setTimeout(()=>{ pausedByInteraction = true; pausedByTouch = true; pause(true); }, 200); }); on("touchEnd", ()=>{ if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; clearTimeout(touchStartTimeout); clearTimeout(timeout); if (swiper.params.autoplay.disableOnInteraction) { pausedByTouch = false; isTouched = false; return; } if (pausedByTouch && swiper.params.cssMode) resume(); pausedByTouch = false; isTouched = false; }); on("slideChange", ()=>{ if (swiper.destroyed || !swiper.autoplay.running) return; slideChanged = true; }); Object.assign(swiper.autoplay, { start: start, stop: stop, pause: pause, resume: resume }); } function $21f49457975db620$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ thumbs: { swiper: null, multipleActiveThumbs: true, autoScrollOffset: 0, slideThumbActiveClass: "swiper-slide-thumb-active", thumbsContainerClass: "swiper-thumbs" } }); let initialized = false; let swiperCreated = false; swiper.thumbs = { swiper: null }; function onThumbClick() { const thumbsSwiper = swiper.thumbs.swiper; if (!thumbsSwiper || thumbsSwiper.destroyed) return; const clickedIndex = thumbsSwiper.clickedIndex; const clickedSlide = thumbsSwiper.clickedSlide; if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; if (typeof clickedIndex === "undefined" || clickedIndex === null) return; let slideToIndex; if (thumbsSwiper.params.loop) slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute("data-swiper-slide-index"), 10); else slideToIndex = clickedIndex; if (swiper.params.loop) swiper.slideToLoop(slideToIndex); else swiper.slideTo(slideToIndex); } function init() { const { thumbs: thumbsParams } = swiper.params; if (initialized) return false; initialized = true; const SwiperClass = swiper.constructor; if (thumbsParams.swiper instanceof SwiperClass) { swiper.thumbs.swiper = thumbsParams.swiper; Object.assign(swiper.thumbs.swiper.originalParams, { watchSlidesProgress: true, slideToClickedSlide: false }); Object.assign(swiper.thumbs.swiper.params, { watchSlidesProgress: true, slideToClickedSlide: false }); swiper.thumbs.swiper.update(); } else if ((0, $831683533b862e22$export$882b5998b3b9117c)(thumbsParams.swiper)) { const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); Object.assign(thumbsSwiperParams, { watchSlidesProgress: true, slideToClickedSlide: false }); swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); swiperCreated = true; } swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); swiper.thumbs.swiper.on("tap", onThumbClick); return true; } function update(initial) { const thumbsSwiper = swiper.thumbs.swiper; if (!thumbsSwiper || thumbsSwiper.destroyed) return; const slidesPerView = thumbsSwiper.params.slidesPerView === "auto" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs let thumbsToActivate = 1; const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) thumbsToActivate = swiper.params.slidesPerView; if (!swiper.params.thumbs.multipleActiveThumbs) thumbsToActivate = 1; thumbsToActivate = Math.floor(thumbsToActivate); thumbsSwiper.slides.forEach((slideEl)=>slideEl.classList.remove(thumbActiveClass)); if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) for(let i = 0; i < thumbsToActivate; i += 1)(0, $831683533b862e22$export$f1e1789686576879)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach((slideEl)=>{ slideEl.classList.add(thumbActiveClass); }); else { for(let i = 0; i < thumbsToActivate; i += 1)if (thumbsSwiper.slides[swiper.realIndex + i]) thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); } const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { const currentThumbsIndex = thumbsSwiper.activeIndex; let newThumbsIndex; let direction; if (thumbsSwiper.params.loop) { const newThumbsSlide = thumbsSwiper.slides.filter((slideEl)=>slideEl.getAttribute("data-swiper-slide-index") === `${swiper.realIndex}`)[0]; newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); direction = swiper.activeIndex > swiper.previousIndex ? "next" : "prev"; } else { newThumbsIndex = swiper.realIndex; direction = newThumbsIndex > swiper.previousIndex ? "next" : "prev"; } if (useOffset) newThumbsIndex += direction === "next" ? autoScrollOffset : -1 * autoScrollOffset; if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { if (thumbsSwiper.params.centeredSlides) { if (newThumbsIndex > currentThumbsIndex) newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; else newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; } else newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup; thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); } } } on("beforeInit", ()=>{ const { thumbs: thumbs } = swiper.params; if (!thumbs || !thumbs.swiper) return; if (typeof thumbs.swiper === "string" || thumbs.swiper instanceof HTMLElement) { const document = (0, $189f45f12f88561c$export$39b482c5e57630a8)(); const getThumbsElementAndInit = ()=>{ const thumbsElement = typeof thumbs.swiper === "string" ? document.querySelector(thumbs.swiper) : thumbs.swiper; if (thumbsElement && thumbsElement.swiper) { thumbs.swiper = thumbsElement.swiper; init(); update(true); } else if (thumbsElement) { const eventName = `${swiper.params.eventsPrefix}init`; const onThumbsSwiper = (e)=>{ thumbs.swiper = e.detail[0]; thumbsElement.removeEventListener(eventName, onThumbsSwiper); init(); update(true); thumbs.swiper.update(); swiper.update(); }; thumbsElement.addEventListener(eventName, onThumbsSwiper); } return thumbsElement; }; const watchForThumbsToAppear = ()=>{ if (swiper.destroyed) return; const thumbsElement = getThumbsElementAndInit(); if (!thumbsElement) requestAnimationFrame(watchForThumbsToAppear); }; requestAnimationFrame(watchForThumbsToAppear); } else { init(); update(true); } }); on("slideChange update resize observerUpdate", ()=>{ update(); }); on("setTransition", (_s, duration)=>{ const thumbsSwiper = swiper.thumbs.swiper; if (!thumbsSwiper || thumbsSwiper.destroyed) return; thumbsSwiper.setTransition(duration); }); on("beforeDestroy", ()=>{ const thumbsSwiper = swiper.thumbs.swiper; if (!thumbsSwiper || thumbsSwiper.destroyed) return; if (swiperCreated) thumbsSwiper.destroy(); }); Object.assign(swiper.thumbs, { init: init, update: update }); } function $9cbf5f489c16aa92$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, emit: emit, once: once } = _ref; extendParams({ freeMode: { enabled: false, momentum: true, momentumRatio: 1, momentumBounce: true, momentumBounceRatio: 1, momentumVelocityRatio: 1, sticky: false, minimumVelocity: 0.02 } }); function onTouchStart() { if (swiper.params.cssMode) return; const translate = swiper.getTranslate(); swiper.setTranslate(translate); swiper.setTransition(0); swiper.touchEventsData.velocities.length = 0; swiper.freeMode.onTouchEnd({ currentPos: swiper.rtl ? swiper.translate : -swiper.translate }); } function onTouchMove() { if (swiper.params.cssMode) return; const { touchEventsData: data, touches: touches } = swiper; // Velocity if (data.velocities.length === 0) data.velocities.push({ position: touches[swiper.isHorizontal() ? "startX" : "startY"], time: data.touchStartTime }); data.velocities.push({ position: touches[swiper.isHorizontal() ? "currentX" : "currentY"], time: (0, $831683533b862e22$export$4368d992c4eafac0)() }); } function onTouchEnd(_ref2) { let { currentPos: currentPos } = _ref2; if (swiper.params.cssMode) return; const { params: params, wrapperEl: wrapperEl, rtlTranslate: rtl, snapGrid: snapGrid, touchEventsData: data } = swiper; // Time diff const touchEndTime = (0, $831683533b862e22$export$4368d992c4eafac0)(); const timeDiff = touchEndTime - data.touchStartTime; if (currentPos < -swiper.minTranslate()) { swiper.slideTo(swiper.activeIndex); return; } if (currentPos > -swiper.maxTranslate()) { if (swiper.slides.length < snapGrid.length) swiper.slideTo(snapGrid.length - 1); else swiper.slideTo(swiper.slides.length - 1); return; } if (params.freeMode.momentum) { if (data.velocities.length > 1) { const lastMoveEvent = data.velocities.pop(); const velocityEvent = data.velocities.pop(); const distance = lastMoveEvent.position - velocityEvent.position; const time = lastMoveEvent.time - velocityEvent.time; swiper.velocity = distance / time; swiper.velocity /= 2; if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) swiper.velocity = 0; // this implies that the user stopped moving a finger then released. // There would be no events with distance zero, so the last event is stale. if (time > 150 || (0, $831683533b862e22$export$4368d992c4eafac0)() - lastMoveEvent.time > 300) swiper.velocity = 0; } else swiper.velocity = 0; swiper.velocity *= params.freeMode.momentumVelocityRatio; data.velocities.length = 0; let momentumDuration = 1000 * params.freeMode.momentumRatio; const momentumDistance = swiper.velocity * momentumDuration; let newPosition = swiper.translate + momentumDistance; if (rtl) newPosition = -newPosition; let doBounce = false; let afterBouncePosition; const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; let needsLoopFix; if (newPosition < swiper.maxTranslate()) { if (params.freeMode.momentumBounce) { if (newPosition + swiper.maxTranslate() < -bounceAmount) newPosition = swiper.maxTranslate() - bounceAmount; afterBouncePosition = swiper.maxTranslate(); doBounce = true; data.allowMomentumBounce = true; } else newPosition = swiper.maxTranslate(); if (params.loop && params.centeredSlides) needsLoopFix = true; } else if (newPosition > swiper.minTranslate()) { if (params.freeMode.momentumBounce) { if (newPosition - swiper.minTranslate() > bounceAmount) newPosition = swiper.minTranslate() + bounceAmount; afterBouncePosition = swiper.minTranslate(); doBounce = true; data.allowMomentumBounce = true; } else newPosition = swiper.minTranslate(); if (params.loop && params.centeredSlides) needsLoopFix = true; } else if (params.freeMode.sticky) { let nextSlide; for(let j = 0; j < snapGrid.length; j += 1)if (snapGrid[j] > -newPosition) { nextSlide = j; break; } if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === "next") newPosition = snapGrid[nextSlide]; else newPosition = snapGrid[nextSlide - 1]; newPosition = -newPosition; } if (needsLoopFix) once("transitionEnd", ()=>{ swiper.loopFix(); }); // Fix duration if (swiper.velocity !== 0) { if (rtl) momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); else momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); if (params.freeMode.sticky) { // If freeMode.sticky is active and the user ends a swipe with a slow-velocity // event, then durations can be 20+ seconds to slide one (or zero!) slides. // It's easy to see this when simulating touch with mouse events. To fix this, // limit single-slide swipes to the default slide duration. This also has the // nice side effect of matching slide speed if the user stopped moving before // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. // For faster swipes, also apply limits (albeit higher ones). const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; if (moveDistance < currentSlideSize) momentumDuration = params.speed; else if (moveDistance < 2 * currentSlideSize) momentumDuration = params.speed * 1.5; else momentumDuration = params.speed * 2.5; } } else if (params.freeMode.sticky) { swiper.slideToClosest(); return; } if (params.freeMode.momentumBounce && doBounce) { swiper.updateProgress(afterBouncePosition); swiper.setTransition(momentumDuration); swiper.setTranslate(newPosition); swiper.transitionStart(true, swiper.swipeDirection); swiper.animating = true; (0, $831683533b862e22$export$342063e11d6c3cad)(wrapperEl, ()=>{ if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; emit("momentumBounce"); swiper.setTransition(params.speed); setTimeout(()=>{ swiper.setTranslate(afterBouncePosition); (0, $831683533b862e22$export$342063e11d6c3cad)(wrapperEl, ()=>{ if (!swiper || swiper.destroyed) return; swiper.transitionEnd(); }); }, 0); }); } else if (swiper.velocity) { emit("_freeModeNoMomentumRelease"); swiper.updateProgress(newPosition); swiper.setTransition(momentumDuration); swiper.setTranslate(newPosition); swiper.transitionStart(true, swiper.swipeDirection); if (!swiper.animating) { swiper.animating = true; (0, $831683533b862e22$export$342063e11d6c3cad)(wrapperEl, ()=>{ if (!swiper || swiper.destroyed) return; swiper.transitionEnd(); }); } } else swiper.updateProgress(newPosition); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } else if (params.freeMode.sticky) { swiper.slideToClosest(); return; } else if (params.freeMode) emit("_freeModeNoMomentumRelease"); if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { emit("_freeModeStaticRelease"); swiper.updateProgress(); swiper.updateActiveIndex(); swiper.updateSlidesClasses(); } } Object.assign(swiper, { freeMode: { onTouchStart: onTouchStart, onTouchMove: onTouchMove, onTouchEnd: onTouchEnd } }); } function $22f01e60553f6fcf$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ grid: { rows: 1, fill: "column" } }); let slidesNumberEvenToRows; let slidesPerRow; let numFullColumns; let wasMultiRow; const getSpaceBetween = ()=>{ let spaceBetween = swiper.params.spaceBetween; if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiper.size; else if (typeof spaceBetween === "string") spaceBetween = parseFloat(spaceBetween); return spaceBetween; }; const initSlides = (slides)=>{ const { slidesPerView: slidesPerView } = swiper.params; const { rows: rows, fill: fill } = swiper.params.grid; const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; numFullColumns = Math.floor(slidesLength / rows); if (Math.floor(slidesLength / rows) === slidesLength / rows) slidesNumberEvenToRows = slidesLength; else slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; if (slidesPerView !== "auto" && fill === "row") slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); slidesPerRow = slidesNumberEvenToRows / rows; }; const unsetSlides = ()=>{ if (swiper.slides) swiper.slides.forEach((slide)=>{ if (slide.swiperSlideGridSet) { slide.style.height = ""; slide.style[swiper.getDirectionLabel("margin-top")] = ""; } }); }; const updateSlide = (i, slide, slides)=>{ const { slidesPerGroup: slidesPerGroup } = swiper.params; const spaceBetween = getSpaceBetween(); const { rows: rows, fill: fill } = swiper.params.grid; const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; // Set slides order let newSlideOrderIndex; let column; let row; if (fill === "row" && slidesPerGroup > 1) { const groupIndex = Math.floor(i / (slidesPerGroup * rows)); const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); row = Math.floor(slideIndexInGroup / columnsInGroup); column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; slide.style.order = newSlideOrderIndex; } else if (fill === "column") { column = Math.floor(i / rows); row = i - column * rows; if (column > numFullColumns || column === numFullColumns && row === rows - 1) { row += 1; if (row >= rows) { row = 0; column += 1; } } } else { row = Math.floor(i / slidesPerRow); column = i - row * slidesPerRow; } slide.row = row; slide.column = column; slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; slide.style[swiper.getDirectionLabel("margin-top")] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ""; slide.swiperSlideGridSet = true; }; const updateWrapperSize = (slideSize, snapGrid)=>{ const { centeredSlides: centeredSlides, roundLengths: roundLengths } = swiper.params; const spaceBetween = getSpaceBetween(); const { rows: rows } = swiper.params.grid; swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; if (!swiper.params.cssMode) swiper.wrapperEl.style[swiper.getDirectionLabel("width")] = `${swiper.virtualSize + spaceBetween}px`; if (centeredSlides) { const newSlidesGrid = []; for(let i = 0; i < snapGrid.length; i += 1){ let slidesGridItem = snapGrid[i]; if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); } snapGrid.splice(0, snapGrid.length); snapGrid.push(...newSlidesGrid); } }; const onInit = ()=>{ wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; }; const onUpdate = ()=>{ const { params: params, el: el } = swiper; const isMultiRow = params.grid && params.grid.rows > 1; if (wasMultiRow && !isMultiRow) { el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); numFullColumns = 1; swiper.emitContainerClasses(); } else if (!wasMultiRow && isMultiRow) { el.classList.add(`${params.containerModifierClass}grid`); if (params.grid.fill === "column") el.classList.add(`${params.containerModifierClass}grid-column`); swiper.emitContainerClasses(); } wasMultiRow = isMultiRow; }; on("init", onInit); on("update", onUpdate); swiper.grid = { initSlides: initSlides, unsetSlides: unsetSlides, updateSlide: updateSlide, updateWrapperSize: updateWrapperSize }; } function $9a62f6a5ac664641$var$appendSlide(slides) { const swiper = this; const { params: params, slidesEl: slidesEl } = swiper; if (params.loop) swiper.loopDestroy(); const appendElement = (slideEl)=>{ if (typeof slideEl === "string") { const tempDOM = document.createElement("div"); tempDOM.innerHTML = slideEl; slidesEl.append(tempDOM.children[0]); tempDOM.innerHTML = ""; } else slidesEl.append(slideEl); }; if (typeof slides === "object" && "length" in slides) { for(let i = 0; i < slides.length; i += 1)if (slides[i]) appendElement(slides[i]); } else appendElement(slides); swiper.recalcSlides(); if (params.loop) swiper.loopCreate(); if (!params.observer || swiper.isElement) swiper.update(); } function $9a62f6a5ac664641$var$prependSlide(slides) { const swiper = this; const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper; if (params.loop) swiper.loopDestroy(); let newActiveIndex = activeIndex + 1; const prependElement = (slideEl)=>{ if (typeof slideEl === "string") { const tempDOM = document.createElement("div"); tempDOM.innerHTML = slideEl; slidesEl.prepend(tempDOM.children[0]); tempDOM.innerHTML = ""; } else slidesEl.prepend(slideEl); }; if (typeof slides === "object" && "length" in slides) { for(let i = 0; i < slides.length; i += 1)if (slides[i]) prependElement(slides[i]); newActiveIndex = activeIndex + slides.length; } else prependElement(slides); swiper.recalcSlides(); if (params.loop) swiper.loopCreate(); if (!params.observer || swiper.isElement) swiper.update(); swiper.slideTo(newActiveIndex, 0, false); } function $9a62f6a5ac664641$var$addSlide(index, slides) { const swiper = this; const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper; let activeIndexBuffer = activeIndex; if (params.loop) { activeIndexBuffer -= swiper.loopedSlides; swiper.loopDestroy(); swiper.recalcSlides(); } const baseLength = swiper.slides.length; if (index <= 0) { swiper.prependSlide(slides); return; } if (index >= baseLength) { swiper.appendSlide(slides); return; } let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; const slidesBuffer = []; for(let i = baseLength - 1; i >= index; i -= 1){ const currentSlide = swiper.slides[i]; currentSlide.remove(); slidesBuffer.unshift(currentSlide); } if (typeof slides === "object" && "length" in slides) { for(let i = 0; i < slides.length; i += 1)if (slides[i]) slidesEl.append(slides[i]); newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; } else slidesEl.append(slides); for(let i = 0; i < slidesBuffer.length; i += 1)slidesEl.append(slidesBuffer[i]); swiper.recalcSlides(); if (params.loop) swiper.loopCreate(); if (!params.observer || swiper.isElement) swiper.update(); if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); else swiper.slideTo(newActiveIndex, 0, false); } function $9a62f6a5ac664641$var$removeSlide(slidesIndexes) { const swiper = this; const { params: params, activeIndex: activeIndex } = swiper; let activeIndexBuffer = activeIndex; if (params.loop) { activeIndexBuffer -= swiper.loopedSlides; swiper.loopDestroy(); } let newActiveIndex = activeIndexBuffer; let indexToRemove; if (typeof slidesIndexes === "object" && "length" in slidesIndexes) { for(let i = 0; i < slidesIndexes.length; i += 1){ indexToRemove = slidesIndexes[i]; if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); if (indexToRemove < newActiveIndex) newActiveIndex -= 1; } newActiveIndex = Math.max(newActiveIndex, 0); } else { indexToRemove = slidesIndexes; if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); if (indexToRemove < newActiveIndex) newActiveIndex -= 1; newActiveIndex = Math.max(newActiveIndex, 0); } swiper.recalcSlides(); if (params.loop) swiper.loopCreate(); if (!params.observer || swiper.isElement) swiper.update(); if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); else swiper.slideTo(newActiveIndex, 0, false); } function $9a62f6a5ac664641$var$removeAllSlides() { const swiper = this; const slidesIndexes = []; for(let i = 0; i < swiper.slides.length; i += 1)slidesIndexes.push(i); swiper.removeSlide(slidesIndexes); } function $9a62f6a5ac664641$export$2e2bcd8739ae039(_ref) { let { swiper: swiper } = _ref; Object.assign(swiper, { appendSlide: $9a62f6a5ac664641$var$appendSlide.bind(swiper), prependSlide: $9a62f6a5ac664641$var$prependSlide.bind(swiper), addSlide: $9a62f6a5ac664641$var$addSlide.bind(swiper), removeSlide: $9a62f6a5ac664641$var$removeSlide.bind(swiper), removeAllSlides: $9a62f6a5ac664641$var$removeAllSlides.bind(swiper) }); } function $ab2b53734a40d9c9$export$f1e1789686576879(params) { const { effect: effect, swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, overwriteParams: overwriteParams, perspective: perspective, recreateShadows: recreateShadows, getEffectParams: getEffectParams } = params; on("beforeInit", ()=>{ if (swiper.params.effect !== effect) return; swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); if (perspective && perspective()) swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; Object.assign(swiper.params, overwriteParamsResult); Object.assign(swiper.originalParams, overwriteParamsResult); }); on("setTranslate", ()=>{ if (swiper.params.effect !== effect) return; setTranslate(); }); on("setTransition", (_s, duration)=>{ if (swiper.params.effect !== effect) return; setTransition(duration); }); on("transitionEnd", ()=>{ if (swiper.params.effect !== effect) return; if (recreateShadows) { if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows swiper.slides.forEach((slideEl)=>{ slideEl.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl)=>shadowEl.remove()); }); // create new one recreateShadows(); } }); let requireUpdateOnVirtual; on("virtualUpdate", ()=>{ if (swiper.params.effect !== effect) return; if (!swiper.slides.length) requireUpdateOnVirtual = true; requestAnimationFrame(()=>{ if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { setTranslate(); requireUpdateOnVirtual = false; } }); }); } function $2e5cc03e71c0d780$export$f1e1789686576879(effectParams, slideEl) { const transformEl = (0, $831683533b862e22$export$39b482c5e57630a8)(slideEl); if (transformEl !== slideEl) { transformEl.style.backfaceVisibility = "hidden"; transformEl.style["-webkit-backface-visibility"] = "hidden"; } return transformEl; } function $4ae6f1cd5183d589$export$f1e1789686576879(_ref) { let { swiper: swiper, duration: duration, transformElements: transformElements, allSlides: allSlides } = _ref; const { activeIndex: activeIndex } = swiper; const getSlide = (el)=>{ if (!el.parentElement) { // assume shadow root const slide = swiper.slides.filter((slideEl)=>slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; return slide; } return el.parentElement; }; if (swiper.params.virtualTranslate && duration !== 0) { let eventTriggered = false; let transitionEndTarget; if (allSlides) transitionEndTarget = transformElements; else transitionEndTarget = transformElements.filter((transformEl)=>{ const el = transformEl.classList.contains("swiper-slide-transform") ? getSlide(transformEl) : transformEl; return swiper.getSlideIndex(el) === activeIndex; }); transitionEndTarget.forEach((el)=>{ (0, $831683533b862e22$export$342063e11d6c3cad)(el, ()=>{ if (eventTriggered) return; if (!swiper || swiper.destroyed) return; eventTriggered = true; swiper.animating = false; const evt = new window.CustomEvent("transitionend", { bubbles: true, cancelable: true }); swiper.wrapperEl.dispatchEvent(evt); }); }); } } function $aca53ddfb08084e6$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ fadeEffect: { crossFade: false } }); const setTranslate = ()=>{ const { slides: slides } = swiper; const params = swiper.params.fadeEffect; for(let i = 0; i < slides.length; i += 1){ const slideEl = swiper.slides[i]; const offset = slideEl.swiperSlideOffset; let tx = -offset; if (!swiper.params.virtualTranslate) tx -= swiper.translate; let ty = 0; if (!swiper.isHorizontal()) { ty = tx; tx = 0; } const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); const targetEl = (0, $2e5cc03e71c0d780$export$f1e1789686576879)(params, slideEl); targetEl.style.opacity = slideOpacity; targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; } }; const setTransition = (duration)=>{ const transformElements = swiper.slides.map((slideEl)=>(0, $831683533b862e22$export$39b482c5e57630a8)(slideEl)); transformElements.forEach((el)=>{ el.style.transitionDuration = `${duration}ms`; }); (0, $4ae6f1cd5183d589$export$f1e1789686576879)({ swiper: swiper, duration: duration, transformElements: transformElements, allSlides: true }); }; (0, $ab2b53734a40d9c9$export$f1e1789686576879)({ effect: "fade", swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, overwriteParams: ()=>({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: true, spaceBetween: 0, virtualTranslate: !swiper.params.cssMode }) }); } function $637335d98546bd4e$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ cubeEffect: { slideShadows: true, shadow: true, shadowOffset: 20, shadowScale: 0.94 } }); const createSlideShadows = (slideEl, progress, isHorizontal)=>{ let shadowBefore = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-left") : slideEl.querySelector(".swiper-slide-shadow-top"); let shadowAfter = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-right") : slideEl.querySelector(".swiper-slide-shadow-bottom"); if (!shadowBefore) { shadowBefore = (0, $831683533b862e22$export$db3b6bfb95261072)("div", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? "left" : "top"}`.split(" ")); slideEl.append(shadowBefore); } if (!shadowAfter) { shadowAfter = (0, $831683533b862e22$export$db3b6bfb95261072)("div", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? "right" : "bottom"}`.split(" ")); slideEl.append(shadowAfter); } if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); }; const recreateShadows = ()=>{ // create new ones const isHorizontal = swiper.isHorizontal(); swiper.slides.forEach((slideEl)=>{ const progress = Math.max(Math.min(slideEl.progress, 1), -1); createSlideShadows(slideEl, progress, isHorizontal); }); }; const setTranslate = ()=>{ const { el: el, wrapperEl: wrapperEl, slides: slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, browser: browser } = swiper; const r = (0, $831683533b862e22$export$ae1af26003f05816)(swiper); const params = swiper.params.cubeEffect; const isHorizontal = swiper.isHorizontal(); const isVirtual = swiper.virtual && swiper.params.virtual.enabled; let wrapperRotate = 0; let cubeShadowEl; if (params.shadow) { if (isHorizontal) { cubeShadowEl = swiper.wrapperEl.querySelector(".swiper-cube-shadow"); if (!cubeShadowEl) { cubeShadowEl = (0, $831683533b862e22$export$db3b6bfb95261072)("div", "swiper-cube-shadow"); swiper.wrapperEl.append(cubeShadowEl); } cubeShadowEl.style.height = `${swiperWidth}px`; } else { cubeShadowEl = el.querySelector(".swiper-cube-shadow"); if (!cubeShadowEl) { cubeShadowEl = (0, $831683533b862e22$export$db3b6bfb95261072)("div", "swiper-cube-shadow"); el.append(cubeShadowEl); } } } for(let i = 0; i < slides.length; i += 1){ const slideEl = slides[i]; let slideIndex = i; if (isVirtual) slideIndex = parseInt(slideEl.getAttribute("data-swiper-slide-index"), 10); let slideAngle = slideIndex * 90; let round = Math.floor(slideAngle / 360); if (rtl) { slideAngle = -slideAngle; round = Math.floor(-slideAngle / 360); } const progress = Math.max(Math.min(slideEl.progress, 1), -1); let tx = 0; let ty = 0; let tz = 0; if (slideIndex % 4 === 0) { tx = -round * 4 * swiperSize; tz = 0; } else if ((slideIndex - 1) % 4 === 0) { tx = 0; tz = -round * 4 * swiperSize; } else if ((slideIndex - 2) % 4 === 0) { tx = swiperSize + round * 4 * swiperSize; tz = swiperSize; } else if ((slideIndex - 3) % 4 === 0) { tx = -swiperSize; tz = 3 * swiperSize + swiperSize * 4 * round; } if (rtl) tx = -tx; if (!isHorizontal) { ty = tx; tx = 0; } const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; if (progress <= 1 && progress > -1) { wrapperRotate = slideIndex * 90 + progress * 90; if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; } slideEl.style.transform = transform; if (params.slideShadows) createSlideShadows(slideEl, progress, isHorizontal); } wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; wrapperEl.style["-webkit-transform-origin"] = `50% 50% -${swiperSize / 2}px`; if (params.shadow) { if (isHorizontal) cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; else { const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); const scale1 = params.shadowScale; const scale2 = params.shadowScale / multiplier; const offset = params.shadowOffset; cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; } } const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; wrapperEl.style.setProperty("--swiper-cube-translate-z", `${zFactor}px`); }; const setTransition = (duration)=>{ const { el: el, slides: slides } = swiper; slides.forEach((slideEl)=>{ slideEl.style.transitionDuration = `${duration}ms`; slideEl.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((subEl)=>{ subEl.style.transitionDuration = `${duration}ms`; }); }); if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { const shadowEl = el.querySelector(".swiper-cube-shadow"); if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; } }; (0, $ab2b53734a40d9c9$export$f1e1789686576879)({ effect: "cube", swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, recreateShadows: recreateShadows, getEffectParams: ()=>swiper.params.cubeEffect, perspective: ()=>true, overwriteParams: ()=>({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: true, resistanceRatio: 0, spaceBetween: 0, centeredSlides: false, virtualTranslate: true }) }); } function $44dfcf1e6b2ae38d$export$db3b6bfb95261072(suffix, slideEl, side) { const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ""}${suffix ? ` swiper-slide-shadow-${suffix}` : ""}`; const shadowContainer = (0, $831683533b862e22$export$39b482c5e57630a8)(slideEl); let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(" ").join(".")}`); if (!shadowEl) { shadowEl = (0, $831683533b862e22$export$db3b6bfb95261072)("div", shadowClass.split(" ")); shadowContainer.append(shadowEl); } return shadowEl; } function $8692bc9f200758fe$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ flipEffect: { slideShadows: true, limitRotation: true } }); const createSlideShadows = (slideEl, progress)=>{ let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector(".swiper-slide-shadow-left") : slideEl.querySelector(".swiper-slide-shadow-top"); let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector(".swiper-slide-shadow-right") : slideEl.querySelector(".swiper-slide-shadow-bottom"); if (!shadowBefore) shadowBefore = (0, $44dfcf1e6b2ae38d$export$db3b6bfb95261072)("flip", slideEl, swiper.isHorizontal() ? "left" : "top"); if (!shadowAfter) shadowAfter = (0, $44dfcf1e6b2ae38d$export$db3b6bfb95261072)("flip", slideEl, swiper.isHorizontal() ? "right" : "bottom"); if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); }; const recreateShadows = ()=>{ // Set shadows swiper.params.flipEffect; swiper.slides.forEach((slideEl)=>{ let progress = slideEl.progress; if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1); createSlideShadows(slideEl, progress); }); }; const setTranslate = ()=>{ const { slides: slides, rtlTranslate: rtl } = swiper; const params = swiper.params.flipEffect; const rotateFix = (0, $831683533b862e22$export$ae1af26003f05816)(swiper); for(let i = 0; i < slides.length; i += 1){ const slideEl = slides[i]; let progress = slideEl.progress; if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1); const offset = slideEl.swiperSlideOffset; const rotate = -180 * progress; let rotateY = rotate; let rotateX = 0; let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; let ty = 0; if (!swiper.isHorizontal()) { ty = tx; tx = 0; rotateX = -rotateY; rotateY = 0; } else if (rtl) rotateY = -rotateY; slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; if (params.slideShadows) createSlideShadows(slideEl, progress); const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; const targetEl = (0, $2e5cc03e71c0d780$export$f1e1789686576879)(params, slideEl); targetEl.style.transform = transform; } }; const setTransition = (duration)=>{ const transformElements = swiper.slides.map((slideEl)=>(0, $831683533b862e22$export$39b482c5e57630a8)(slideEl)); transformElements.forEach((el)=>{ el.style.transitionDuration = `${duration}ms`; el.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl)=>{ shadowEl.style.transitionDuration = `${duration}ms`; }); }); (0, $4ae6f1cd5183d589$export$f1e1789686576879)({ swiper: swiper, duration: duration, transformElements: transformElements }); }; (0, $ab2b53734a40d9c9$export$f1e1789686576879)({ effect: "flip", swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, recreateShadows: recreateShadows, getEffectParams: ()=>swiper.params.flipEffect, perspective: ()=>true, overwriteParams: ()=>({ slidesPerView: 1, slidesPerGroup: 1, watchSlidesProgress: true, spaceBetween: 0, virtualTranslate: !swiper.params.cssMode }) }); } function $2b76d10f9c6cc5b1$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ coverflowEffect: { rotate: 50, stretch: 0, depth: 100, scale: 1, modifier: 1, slideShadows: true } }); const setTranslate = ()=>{ const { width: swiperWidth, height: swiperHeight, slides: slides, slidesSizesGrid: slidesSizesGrid } = swiper; const params = swiper.params.coverflowEffect; const isHorizontal = swiper.isHorizontal(); const transform = swiper.translate; const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; const rotate = isHorizontal ? params.rotate : -params.rotate; const translate = params.depth; const r = (0, $831683533b862e22$export$ae1af26003f05816)(swiper); // Each slide offset from center for(let i = 0, length = slides.length; i < length; i += 1){ const slideEl = slides[i]; const slideSize = slidesSizesGrid[i]; const slideOffset = slideEl.swiperSlideOffset; const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; const offsetMultiplier = typeof params.modifier === "function" ? params.modifier(centerOffset) : centerOffset * params.modifier; let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0 let translateZ = -translate * Math.abs(offsetMultiplier); let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders if (typeof stretch === "string" && stretch.indexOf("%") !== -1) stretch = parseFloat(params.stretch) / 100 * slideSize; let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; let translateX = isHorizontal ? stretch * offsetMultiplier : 0; let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values if (Math.abs(translateX) < 0.001) translateX = 0; if (Math.abs(translateY) < 0.001) translateY = 0; if (Math.abs(translateZ) < 0.001) translateZ = 0; if (Math.abs(rotateY) < 0.001) rotateY = 0; if (Math.abs(rotateX) < 0.001) rotateX = 0; if (Math.abs(scale) < 0.001) scale = 0; const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; const targetEl = (0, $2e5cc03e71c0d780$export$f1e1789686576879)(params, slideEl); targetEl.style.transform = slideTransform; slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; if (params.slideShadows) { // Set shadows let shadowBeforeEl = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-left") : slideEl.querySelector(".swiper-slide-shadow-top"); let shadowAfterEl = isHorizontal ? slideEl.querySelector(".swiper-slide-shadow-right") : slideEl.querySelector(".swiper-slide-shadow-bottom"); if (!shadowBeforeEl) shadowBeforeEl = (0, $44dfcf1e6b2ae38d$export$db3b6bfb95261072)("coverflow", slideEl, isHorizontal ? "left" : "top"); if (!shadowAfterEl) shadowAfterEl = (0, $44dfcf1e6b2ae38d$export$db3b6bfb95261072)("coverflow", slideEl, isHorizontal ? "right" : "bottom"); if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; } } }; const setTransition = (duration)=>{ const transformElements = swiper.slides.map((slideEl)=>(0, $831683533b862e22$export$39b482c5e57630a8)(slideEl)); transformElements.forEach((el)=>{ el.style.transitionDuration = `${duration}ms`; el.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl)=>{ shadowEl.style.transitionDuration = `${duration}ms`; }); }); }; (0, $ab2b53734a40d9c9$export$f1e1789686576879)({ effect: "coverflow", swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, perspective: ()=>true, overwriteParams: ()=>({ watchSlidesProgress: true }) }); } function $d0d0ed1158dbca64$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ creativeEffect: { limitProgress: 1, shadowPerProgress: false, progressMultiplier: 1, perspective: true, prev: { translate: [ 0, 0, 0 ], rotate: [ 0, 0, 0 ], opacity: 1, scale: 1 }, next: { translate: [ 0, 0, 0 ], rotate: [ 0, 0, 0 ], opacity: 1, scale: 1 } } }); const getTranslateValue = (value)=>{ if (typeof value === "string") return value; return `${value}px`; }; const setTranslate = ()=>{ const { slides: slides, wrapperEl: wrapperEl, slidesSizesGrid: slidesSizesGrid } = swiper; const params = swiper.params.creativeEffect; const { progressMultiplier: multiplier } = params; const isCenteredSlides = swiper.params.centeredSlides; const rotateFix = (0, $831683533b862e22$export$ae1af26003f05816)(swiper); if (isCenteredSlides) { const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; } for(let i = 0; i < slides.length; i += 1){ const slideEl = slides[i]; const slideProgress = slideEl.progress; const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); let originalProgress = progress; if (!isCenteredSlides) originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); const offset = slideEl.swiperSlideOffset; const t = [ swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0 ]; const r = [ 0, 0, 0 ]; let custom = false; if (!swiper.isHorizontal()) { t[1] = t[0]; t[0] = 0; } let data = { translate: [ 0, 0, 0 ], rotate: [ 0, 0, 0 ], scale: 1, opacity: 1 }; if (progress < 0) { data = params.next; custom = true; } else if (progress > 0) { data = params.prev; custom = true; } // set translate t.forEach((value, index)=>{ t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; }); // set rotates r.forEach((value, index)=>{ let val = data.rotate[index] * Math.abs(progress * multiplier); r[index] = val; }); slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; const translateString = t.join(", "); const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows if (custom && data.shadow || !custom) { let shadowEl = slideEl.querySelector(".swiper-slide-shadow"); if (!shadowEl && data.shadow) shadowEl = (0, $44dfcf1e6b2ae38d$export$db3b6bfb95261072)("creative", slideEl); if (shadowEl) { const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); } } const targetEl = (0, $2e5cc03e71c0d780$export$f1e1789686576879)(params, slideEl); targetEl.style.transform = transform; targetEl.style.opacity = opacityString; if (data.origin) targetEl.style.transformOrigin = data.origin; } }; const setTransition = (duration)=>{ const transformElements = swiper.slides.map((slideEl)=>(0, $831683533b862e22$export$39b482c5e57630a8)(slideEl)); transformElements.forEach((el)=>{ el.style.transitionDuration = `${duration}ms`; el.querySelectorAll(".swiper-slide-shadow").forEach((shadowEl)=>{ shadowEl.style.transitionDuration = `${duration}ms`; }); }); (0, $4ae6f1cd5183d589$export$f1e1789686576879)({ swiper: swiper, duration: duration, transformElements: transformElements, allSlides: true }); }; (0, $ab2b53734a40d9c9$export$f1e1789686576879)({ effect: "creative", swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, perspective: ()=>swiper.params.creativeEffect.perspective, overwriteParams: ()=>({ watchSlidesProgress: true, virtualTranslate: !swiper.params.cssMode }) }); } function $d96c330f40738f47$export$2e2bcd8739ae039(_ref) { let { swiper: swiper, extendParams: extendParams, on: on } = _ref; extendParams({ cardsEffect: { slideShadows: true, rotate: true, perSlideRotate: 2, perSlideOffset: 8 } }); const setTranslate = ()=>{ const { slides: slides, activeIndex: activeIndex, rtlTranslate: rtl } = swiper; const params = swiper.params.cardsEffect; const { startTranslate: startTranslate, isTouched: isTouched } = swiper.touchEventsData; const currentTranslate = rtl ? -swiper.translate : swiper.translate; for(let i = 0; i < slides.length; i += 1){ const slideEl = slides[i]; const slideProgress = slideEl.progress; const progress = Math.min(Math.max(slideProgress, -4), 4); let offset = slideEl.swiperSlideOffset; if (swiper.params.centeredSlides && !swiper.params.cssMode) swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; if (swiper.params.centeredSlides && swiper.params.cssMode) offset -= slides[0].swiperSlideOffset; let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; let tY = 0; const tZ = -100 * Math.abs(progress); let scale = 1; let rotate = -params.perSlideRotate * progress; let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; if (isSwipeToNext || isSwipeToPrev) { const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; rotate += -28 * progress * subProgress; scale += -0.5 * subProgress; tXAdd += 96 * subProgress; tY = `${-25 * subProgress * Math.abs(progress)}%`; } if (progress < 0) // next tX = `calc(${tX}px ${rtl ? "-" : "+"} (${tXAdd * Math.abs(progress)}%))`; else if (progress > 0) // prev tX = `calc(${tX}px ${rtl ? "-" : "+"} (-${tXAdd * Math.abs(progress)}%))`; else tX = `${tX}px`; if (!swiper.isHorizontal()) { const prevY = tY; tY = tX; tX = prevY; } const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; /* eslint-disable */ const transform = ` translate3d(${tX}, ${tY}, ${tZ}px) rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) scale(${scaleString}) `; /* eslint-enable */ if (params.slideShadows) { // Set shadows let shadowEl = slideEl.querySelector(".swiper-slide-shadow"); if (!shadowEl) shadowEl = (0, $44dfcf1e6b2ae38d$export$db3b6bfb95261072)("cards", slideEl); if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); } slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; const targetEl = (0, $2e5cc03e71c0d780$export$f1e1789686576879)(params, slideEl); targetEl.style.transform = transform; } }; const setTransition = (duration)=>{ const transformElements = swiper.slides.map((slideEl)=>(0, $831683533b862e22$export$39b482c5e57630a8)(slideEl)); transformElements.forEach((el)=>{ el.style.transitionDuration = `${duration}ms`; el.querySelectorAll(".swiper-slide-shadow").forEach((shadowEl)=>{ shadowEl.style.transitionDuration = `${duration}ms`; }); }); (0, $4ae6f1cd5183d589$export$f1e1789686576879)({ swiper: swiper, duration: duration, transformElements: transformElements }); }; (0, $ab2b53734a40d9c9$export$f1e1789686576879)({ effect: "cards", swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, perspective: ()=>true, overwriteParams: ()=>({ watchSlidesProgress: true, virtualTranslate: !swiper.params.cssMode }) }); } const $eaee570c86df261f$var$initReviewsSwiper = (activeIndex = 0)=>{ return new (0, $4e95c04dd8a5890d$export$25ce5a424b770e84)(".reviews__swiper", { initialSlide: activeIndex, modules: [ (0, $3ede398f6665eb67$export$2e2bcd8739ae039) ], slidesPerView: 1, spaceBetween: 10, navigation: { nextEl: ".reviews__btn--next", prevEl: ".reviews__btn--prev" }, breakpoints: { 541: { slidesPerView: 2, spaceBetween: 16 }, 745: { slidesPerView: 2, spaceBetween: 28 }, 1025: { slidesPerView: 3, spaceBetween: 28 } } }); }; let $eaee570c86df261f$var$reviewsSwiper = $eaee570c86df261f$var$initReviewsSwiper(); let $eaee570c86df261f$var$reviewsSwiperCount = [].slice.call(document.querySelectorAll(".reviews__swiper .swiper-slide")).length; const $eaee570c86df261f$var$initProductPageReviewsSwiper = (activeIndex = 0)=>{ return new (0, $4e95c04dd8a5890d$export$25ce5a424b770e84)(".product__reviews-swiper", { initialSlide: activeIndex, modules: [ (0, $3ede398f6665eb67$export$2e2bcd8739ae039) ], slidesPerView: 1, spaceBetween: 10, navigation: { nextEl: ".reviews__btn--next", prevEl: ".reviews__btn--prev" }, breakpoints: { 541: { slidesPerView: 2, spaceBetween: 16 }, 745: { slidesPerView: 2, spaceBetween: 28 }, 1025: { slidesPerView: 2, spaceBetween: 28 } } }); }; let $eaee570c86df261f$var$productPageReviewsSwiper = $eaee570c86df261f$var$initProductPageReviewsSwiper(); let $eaee570c86df261f$var$productPageReviewsSwiperCount = [].slice.call(document.querySelectorAll(".product__reviews-swiper .swiper-slide")).length; const $eaee570c86df261f$var$initProductThumbsSwiper = (activeIndex = 0)=>{ return new (0, $4e95c04dd8a5890d$export$25ce5a424b770e84)(".product-page__slider-bottom", { initialSlide: activeIndex, spaceBetween: 8, slidesPerView: "auto", freeMode: true }); }; let $eaee570c86df261f$var$productPageThumbs = $eaee570c86df261f$var$initProductThumbsSwiper(); let $eaee570c86df261f$var$productPageThumbsCount = [].slice.call(document.querySelectorAll(".product-page__slider-bottom .swiper-slide")).length; const $eaee570c86df261f$var$initProductPageSwiper = (activeIndex = 0)=>{ return new (0, $4e95c04dd8a5890d$export$25ce5a424b770e84)(".product-page__slider-top", { initialSlide: activeIndex, modules: [ (0, $21f49457975db620$export$2e2bcd8739ae039) ], slidesPerView: 1, spaceBetween: 10, thumbs: { swiper: $eaee570c86df261f$var$productPageThumbs } }); }; let $eaee570c86df261f$var$productPageSwiper = $eaee570c86df261f$var$initProductPageSwiper(); let $eaee570c86df261f$var$productPageSlidesCount = [].slice.call(document.querySelectorAll(".product-page__slider-top .swiper-slide")).length; setInterval(()=>{ // Reviews const newReviewsSwiperCount = [].slice.call(document.querySelectorAll(".reviews__swiper .swiper-slide")).length; if (newReviewsSwiperCount !== $eaee570c86df261f$var$reviewsSwiperCount) { const activeIndex = $eaee570c86df261f$var$reviewsSwiper.activeIndex; $eaee570c86df261f$var$reviewsSwiperCount = newReviewsSwiperCount; $eaee570c86df261f$var$reviewsSwiper.destroy(); $eaee570c86df261f$var$reviewsSwiper = $eaee570c86df261f$var$initReviewsSwiper(activeIndex); } // Product page reviews const newProductPageReviewsSwiperCount = [].slice.call(document.querySelectorAll(".reviews__swiper .swiper-slide")).length; if (newProductPageReviewsSwiperCount !== $eaee570c86df261f$var$productPageReviewsSwiperCount) { const activeIndex = $eaee570c86df261f$var$productPageReviewsSwiper.activeIndex; $eaee570c86df261f$var$productPageReviewsSwiperCount = newProductPageReviewsSwiperCount; $eaee570c86df261f$var$productPageReviewsSwiper.destroy(); $eaee570c86df261f$var$productPageReviewsSwiper = $eaee570c86df261f$var$initProductPageReviewsSwiper(activeIndex); } // Product page const newProductThumbsCount = [].slice.call(document.querySelectorAll(".product-page__slider-bottom .swiper-slide")).length; const newProductPageSlides = [].slice.call(document.querySelectorAll(".product-page__slider-top .swiper-slide")).length; if (newProductPageSlides !== $eaee570c86df261f$var$productPageSlidesCount && newProductThumbsCount === newProductPageSlides) { const activeIndex = $eaee570c86df261f$var$productPageSwiper.activeIndex; $eaee570c86df261f$var$productPageThumbsCount = newProductThumbsCount; $eaee570c86df261f$var$productPageSlidesCount = newProductPageSlides; $eaee570c86df261f$var$productPageThumbs.destroy(); $eaee570c86df261f$var$productPageSwiper.destroy(); $eaee570c86df261f$var$productPageThumbs = $eaee570c86df261f$var$initProductThumbsSwiper(activeIndex); $eaee570c86df261f$var$productPageSwiper = $eaee570c86df261f$var$initProductPageSwiper(activeIndex); } }, 1000); const $80b83c6607783df7$var$catalogBtns = [].slice.call(document.querySelectorAll(".js-catalog")); const $80b83c6607783df7$var$overflow = [].slice.call(document.querySelectorAll(".js-overflow")); const $80b83c6607783df7$var$catalogItems = [].slice.call(document.querySelectorAll(".js-catalog-item")); const $80b83c6607783df7$var$closeBtns = [].slice.call(document.querySelectorAll(".js-close-catalog")); const $80b83c6607783df7$var$backBtns = [].slice.call(document.querySelectorAll(".js-back-catalog")); const $80b83c6607783df7$var$html = document.querySelector("html"); const $80b83c6607783df7$var$body = document.body; const $80b83c6607783df7$var$closeCatalog = ()=>{ $80b83c6607783df7$var$body.classList.remove("show-catalog"); $80b83c6607783df7$var$html.removeAttribute("style"); $80b83c6607783df7$var$catalogItems.forEach((item)=>item.classList.remove("is-active")); }; $80b83c6607783df7$var$catalogBtns.forEach((btn)=>{ btn.addEventListener("click", ()=>{ $80b83c6607783df7$var$body.classList.remove("show-menu"); if ($80b83c6607783df7$var$body.classList.contains("show-catalog")) $80b83c6607783df7$var$closeCatalog(); else { $80b83c6607783df7$var$body.classList.add("show-catalog"); if (window.innerWidth <= 900) $80b83c6607783df7$var$html.style.overflow = "hidden"; } }); }); $80b83c6607783df7$var$overflow.forEach((item)=>{ item.addEventListener("click", ()=>{ $80b83c6607783df7$var$closeCatalog(); }); }); $80b83c6607783df7$var$catalogItems.forEach((item)=>{ item.addEventListener("click", ()=>{ $80b83c6607783df7$var$catalogItems.forEach((item)=>item.classList.remove("is-active")); item.classList.add("is-active"); }); }); $80b83c6607783df7$var$closeBtns.forEach((btn)=>{ btn.addEventListener("click", ()=>{ $80b83c6607783df7$var$closeCatalog(); }); }); $80b83c6607783df7$var$backBtns.forEach((btn)=>{ btn.addEventListener("click", (evt)=>{ evt.stopPropagation(); $80b83c6607783df7$var$catalogItems.forEach((item)=>item.classList.remove("is-active")); }); }); const $eb52177a83ddeb58$var$menuBtn = document.querySelector(".js-menu"); const $eb52177a83ddeb58$var$html = document.querySelector("html"); const $eb52177a83ddeb58$var$body = document.body; const $eb52177a83ddeb58$var$footerBtns = [].slice.call(document.querySelectorAll(".js-footer-btn")); $eb52177a83ddeb58$var$menuBtn.addEventListener("click", ()=>{ $eb52177a83ddeb58$var$body.classList.remove("show-catalog"); if ($eb52177a83ddeb58$var$body.classList.contains("show-menu")) { $eb52177a83ddeb58$var$body.classList.remove("show-menu"); $eb52177a83ddeb58$var$html.removeAttribute("style"); } else { $eb52177a83ddeb58$var$body.classList.add("show-menu"); $eb52177a83ddeb58$var$html.style.overflow = "hidden"; } }); $eb52177a83ddeb58$var$footerBtns.forEach((btn)=>{ btn.addEventListener("click", ()=>{ btn.classList.toggle("is-active"); }); }); parcelRequire("8WeLi"); parcelRequire("jUaIl"); const $d4ee7d94a63ba5b5$var$groups = [].slice.call(document.querySelectorAll(".js-filter-group")); $d4ee7d94a63ba5b5$var$groups.forEach((group)=>{ const more = group.querySelector(".js-filter-more"); const less = group.querySelector(".js-filter-less"); more?.addEventListener("click", ()=>{ group.classList.add("is-opened"); }); less?.addEventListener("click", ()=>{ group.classList.remove("is-opened"); }); }); // Открытие фильтра const $d4ee7d94a63ba5b5$var$filter = document.querySelector(".catalog-page__filter"); if ($d4ee7d94a63ba5b5$var$filter) { const openFilterBtn = document.querySelector(".js-show-filter"); const hideFilterBtn = document.querySelector(".js-close-filter"); const html = document.querySelector("html"); if (openFilterBtn) openFilterBtn.addEventListener("click", ()=>{ $d4ee7d94a63ba5b5$var$filter.classList.add("is-active"); html.style.overflow = "hidden"; }); if (hideFilterBtn) hideFilterBtn.addEventListener("click", ()=>{ $d4ee7d94a63ba5b5$var$filter.classList.remove("is-active"); html.removeAttribute("style"); }); } const $cb4e5b86d44099df$var$accordionItems = [].slice.call(document.querySelectorAll(".js-accordion")); $cb4e5b86d44099df$var$accordionItems.forEach((item)=>{ item.addEventListener("click", ()=>{ item.classList.toggle("is-active"); }); }); const $edb2bc14cbec16fa$var$progressContainers = [].slice.call(document.querySelectorAll(".js-progress")); $edb2bc14cbec16fa$var$progressContainers.forEach((container)=>{ const line = container.querySelector(".js-progress-line"); const items = [].slice.call(container.querySelectorAll(".js-progress-item")); if (!line) return; window.addEventListener("scroll", ()=>{ const windowHeight = window.innerHeight; const maxHeight = container.offsetHeight; const lineTop = line.getBoundingClientRect().top; if (lineTop < windowHeight / 3) { const diff = windowHeight / 3 - lineTop; line.style.height = `${diff < maxHeight ? diff : maxHeight}px`; } items.forEach((item)=>{ if (item.getBoundingClientRect().top < windowHeight / 3 - 30) item.classList.add("is-active"); else item.classList.remove("is-active"); }); }); }); parcelRequire("6aHKA"); const $f6ee944b143e57d5$var$locationWraps = [].slice.call(document.querySelectorAll(".js-location")); $f6ee944b143e57d5$var$locationWraps.forEach((item)=>{ const btn = item.querySelector(".js-location-btn"); const select = item.querySelector(".js-location-select"); let isOpen = false; const closeSelect = ()=>{ isOpen = false; item.classList.remove("is-active"); select.size = 0; window.removeEventListener("click", clickListener); }; const clickListener = ()=>{ if (isOpen) closeSelect(); }; select.addEventListener("change", ()=>{ btn.innerHTML = select.value; closeSelect(); }); btn.addEventListener("click", (evt)=>{ evt.stopPropagation(); if (isOpen) closeSelect(); else { isOpen = true; item.classList.add("is-active"); select.size = 5; window.addEventListener("click", clickListener); } }); }); [].slice.call(document.querySelectorAll(".js-audio")).forEach((item)=>{ const audio = item.querySelector("audio"); const play = item.querySelector(".js-play"); const curEl = item.querySelector(".js-current-time"); const durEl = item.querySelector(".js-duration"); const line = item.querySelector(".js-audio-line"); const rate = item.querySelector(".js-audio-rate"); let isPlaying = false; let duration = 0; let timer = null; const getSeconds = (value)=>{ if (value < 10) return `0${value}`; return `${value}`; }; const setTimer = ()=>{ const time = audio.currentTime; line.style.width = `${Math.floor(time / duration * 1000) / 10}%`; curEl.textContent = `${Math.floor(time / 60)}:${getSeconds(Math.round(time % 60))}`; }; audio.addEventListener("loadedmetadata", ()=>{ duration = audio.duration; durEl.textContent = `${Math.floor(duration / 60)}:${getSeconds(Math.round(duration % 60))}`; }); play.addEventListener("click", ()=>{ if (isPlaying) { audio.pause(); clearInterval(timer); } else { audio.play(); timer = setInterval(setTimer, 1000); } isPlaying = !isPlaying; }); rate.addEventListener("click", ()=>{ if (rate.textContent === "1x") { audio.playbackRate = 1.5; rate.textContent = "1.5x"; } else if (rate.textContent === "1.5x") { audio.playbackRate = 1.75; rate.textContent = "1.75x"; } else if (rate.textContent === "1.75x") { audio.playbackRate = 2; rate.textContent = "2x"; } else { audio.playbackRate = 1; rate.textContent = "1x"; } }); }); const $9970b34361e607e2$var$t = (t, e = 1e4)=>(t = parseFloat(t + "") || 0, Math.round((t + Number.EPSILON) * e) / e), $9970b34361e607e2$var$e = function(t) { if (!(t && t instanceof Element && t.offsetParent)) return !1; const e = t.scrollHeight > t.clientHeight, i = window.getComputedStyle(t).overflowY, n = -1 !== i.indexOf("hidden"), s = -1 !== i.indexOf("visible"); return e && !n && !s; }, $9970b34361e607e2$var$i = function(t, n) { return !(!t || t === document.body || n && t === n) && ($9970b34361e607e2$var$e(t) ? t : $9970b34361e607e2$var$i(t.parentElement, n)); }, $9970b34361e607e2$var$n = function(t) { var e = (new DOMParser).parseFromString(t, "text/html").body; if (e.childElementCount > 1) { for(var i = document.createElement("div"); e.firstChild;)i.appendChild(e.firstChild); return i; } return e.firstChild; }, $9970b34361e607e2$var$s = (t)=>`${t || ""}`.split(" ").filter((t)=>!!t), $9970b34361e607e2$var$o = (t, e, i)=>{ t && $9970b34361e607e2$var$s(e).forEach((e)=>{ t.classList.toggle(e, i || !1); }); }; class $9970b34361e607e2$var$a { constructor(t){ Object.defineProperty(this, "pageX", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "pageY", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "clientX", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "clientY", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "id", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "time", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "nativePointer", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), this.nativePointer = t, this.pageX = t.pageX, this.pageY = t.pageY, this.clientX = t.clientX, this.clientY = t.clientY, this.id = self.Touch && t instanceof Touch ? t.identifier : -1, this.time = Date.now(); } } const $9970b34361e607e2$var$r = { passive: !1 }; class $9970b34361e607e2$var$l { constructor(t, { start: e = ()=>!0, move: i = ()=>{}, end: n = ()=>{} }){ Object.defineProperty(this, "element", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "startCallback", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "moveCallback", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "endCallback", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "currentPointers", { enumerable: !0, configurable: !0, writable: !0, value: [] }), Object.defineProperty(this, "startPointers", { enumerable: !0, configurable: !0, writable: !0, value: [] }), this.element = t, this.startCallback = e, this.moveCallback = i, this.endCallback = n; for (const t of [ "onPointerStart", "onTouchStart", "onMove", "onTouchEnd", "onPointerEnd", "onWindowBlur" ])this[t] = this[t].bind(this); this.element.addEventListener("mousedown", this.onPointerStart, $9970b34361e607e2$var$r), this.element.addEventListener("touchstart", this.onTouchStart, $9970b34361e607e2$var$r), this.element.addEventListener("touchmove", this.onMove, $9970b34361e607e2$var$r), this.element.addEventListener("touchend", this.onTouchEnd), this.element.addEventListener("touchcancel", this.onTouchEnd); } onPointerStart(t) { if (!t.buttons || 0 !== t.button) return; const e = new $9970b34361e607e2$var$a(t); this.currentPointers.some((t)=>t.id === e.id) || this.triggerPointerStart(e, t) && (window.addEventListener("mousemove", this.onMove), window.addEventListener("mouseup", this.onPointerEnd), window.addEventListener("blur", this.onWindowBlur)); } onTouchStart(t) { for (const e of Array.from(t.changedTouches || []))this.triggerPointerStart(new $9970b34361e607e2$var$a(e), t); window.addEventListener("blur", this.onWindowBlur); } onMove(t) { const e = this.currentPointers.slice(), i = "changedTouches" in t ? Array.from(t.changedTouches || []).map((t)=>new $9970b34361e607e2$var$a(t)) : [ new $9970b34361e607e2$var$a(t) ], n = []; for (const t of i){ const e = this.currentPointers.findIndex((e)=>e.id === t.id); e < 0 || (n.push(t), this.currentPointers[e] = t); } n.length && this.moveCallback(t, this.currentPointers.slice(), e); } onPointerEnd(t) { t.buttons > 0 && 0 !== t.button || (this.triggerPointerEnd(t, new $9970b34361e607e2$var$a(t)), window.removeEventListener("mousemove", this.onMove), window.removeEventListener("mouseup", this.onPointerEnd), window.removeEventListener("blur", this.onWindowBlur)); } onTouchEnd(t) { for (const e of Array.from(t.changedTouches || []))this.triggerPointerEnd(t, new $9970b34361e607e2$var$a(e)); } triggerPointerStart(t, e) { return !!this.startCallback(e, t, this.currentPointers.slice()) && (this.currentPointers.push(t), this.startPointers.push(t), !0); } triggerPointerEnd(t, e) { const i = this.currentPointers.findIndex((t)=>t.id === e.id); i < 0 || (this.currentPointers.splice(i, 1), this.startPointers.splice(i, 1), this.endCallback(t, e, this.currentPointers.slice())); } onWindowBlur() { this.clear(); } clear() { for(; this.currentPointers.length;){ const t = this.currentPointers[this.currentPointers.length - 1]; this.currentPointers.splice(this.currentPointers.length - 1, 1), this.startPointers.splice(this.currentPointers.length - 1, 1), this.endCallback(new Event("touchend", { bubbles: !0, cancelable: !0, clientX: t.clientX, clientY: t.clientY }), t, this.currentPointers.slice()); } } stop() { this.element.removeEventListener("mousedown", this.onPointerStart, $9970b34361e607e2$var$r), this.element.removeEventListener("touchstart", this.onTouchStart, $9970b34361e607e2$var$r), this.element.removeEventListener("touchmove", this.onMove, $9970b34361e607e2$var$r), this.element.removeEventListener("touchend", this.onTouchEnd), this.element.removeEventListener("touchcancel", this.onTouchEnd), window.removeEventListener("mousemove", this.onMove), window.removeEventListener("mouseup", this.onPointerEnd), window.removeEventListener("blur", this.onWindowBlur); } } function $9970b34361e607e2$var$c(t, e) { return e ? Math.sqrt(Math.pow(e.clientX - t.clientX, 2) + Math.pow(e.clientY - t.clientY, 2)) : 0; } function $9970b34361e607e2$var$h(t, e) { return e ? { clientX: (t.clientX + e.clientX) / 2, clientY: (t.clientY + e.clientY) / 2 } : t; } const $9970b34361e607e2$var$d = (t)=>"object" == typeof t && null !== t && t.constructor === Object && "[object Object]" === Object.prototype.toString.call(t), $9970b34361e607e2$var$u = (t, ...e)=>{ const i = e.length; for(let n = 0; n < i; n++){ const i = e[n] || {}; Object.entries(i).forEach(([e, i])=>{ const n = Array.isArray(i) ? [] : {}; t[e] || Object.assign(t, { [e]: n }), $9970b34361e607e2$var$d(i) ? Object.assign(t[e], $9970b34361e607e2$var$u(n, i)) : Array.isArray(i) ? Object.assign(t, { [e]: [ ...i ] }) : Object.assign(t, { [e]: i }); }); } return t; }, $9970b34361e607e2$var$p = function(t, e) { return t.split(".").reduce((t, e)=>"object" == typeof t ? t[e] : void 0, e); }; class $9970b34361e607e2$var$f { constructor(t = {}){ Object.defineProperty(this, "options", { enumerable: !0, configurable: !0, writable: !0, value: t }), Object.defineProperty(this, "events", { enumerable: !0, configurable: !0, writable: !0, value: new Map }), this.setOptions(t); for (const t of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))t.startsWith("on") && "function" == typeof this[t] && (this[t] = this[t].bind(this)); } setOptions(t) { this.options = t ? $9970b34361e607e2$var$u({}, this.constructor.defaults, t) : {}; for (const [t, e] of Object.entries(this.option("on") || {}))this.on(t, e); } option(t, ...e) { let i = $9970b34361e607e2$var$p(t, this.options); return i && "function" == typeof i && (i = i.call(this, this, ...e)), i; } optionFor(t, e, i, ...n) { let s = $9970b34361e607e2$var$p(e, t); var o; "string" != typeof (o = s) || isNaN(o) || isNaN(parseFloat(o)) || (s = parseFloat(s)), "true" === s && (s = !0), "false" === s && (s = !1), s && "function" == typeof s && (s = s.call(this, this, t, ...n)); let a = $9970b34361e607e2$var$p(e, this.options); return a && "function" == typeof a ? s = a.call(this, this, t, ...n, s) : void 0 === s && (s = a), void 0 === s ? i : s; } cn(t) { const e = this.options.classes; return e && e[t] || ""; } localize(t, e = []) { t = String(t).replace(/\{\{(\w+).?(\w+)?\}\}/g, (t, e, i)=>{ let n = ""; return i ? n = this.option(`${e[0] + e.toLowerCase().substring(1)}.l10n.${i}`) : e && (n = this.option(`l10n.${e}`)), n || (n = t), n; }); for(let i = 0; i < e.length; i++)t = t.split(e[i][0]).join(e[i][1]); return t = t.replace(/\{\{(.*?)\}\}/g, (t, e)=>e); } on(t, e) { let i = []; "string" == typeof t ? i = t.split(" ") : Array.isArray(t) && (i = t), this.events || (this.events = new Map), i.forEach((t)=>{ let i = this.events.get(t); i || (this.events.set(t, []), i = []), i.includes(e) || i.push(e), this.events.set(t, i); }); } off(t, e) { let i = []; "string" == typeof t ? i = t.split(" ") : Array.isArray(t) && (i = t), i.forEach((t)=>{ const i = this.events.get(t); if (Array.isArray(i)) { const t = i.indexOf(e); t > -1 && i.splice(t, 1); } }); } emit(t, ...e) { [ ...this.events.get(t) || [] ].forEach((t)=>t(this, ...e)), "*" !== t && this.emit("*", t, ...e); } } Object.defineProperty($9970b34361e607e2$var$f, "version", { enumerable: !0, configurable: !0, writable: !0, value: "5.0.36" }), Object.defineProperty($9970b34361e607e2$var$f, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: {} }); class $9970b34361e607e2$var$g extends $9970b34361e607e2$var$f { constructor(t = {}){ super(t), Object.defineProperty(this, "plugins", { enumerable: !0, configurable: !0, writable: !0, value: {} }); } attachPlugins(t = {}) { const e = new Map; for (const [i, n] of Object.entries(t)){ const t = this.option(i), s = this.plugins[i]; s || !1 === t ? s && !1 === t && (s.detach(), delete this.plugins[i]) : e.set(i, new n(this, t || {})); } for (const [t, i] of e)this.plugins[t] = i, i.attach(); } detachPlugins(t) { t = t || Object.keys(this.plugins); for (const e of t){ const t = this.plugins[e]; t && t.detach(), delete this.plugins[e]; } return this.emit("detachPlugins"), this; } } var $9970b34361e607e2$var$m; !function(t) { t[t.Init = 0] = "Init", t[t.Error = 1] = "Error", t[t.Ready = 2] = "Ready", t[t.Panning = 3] = "Panning", t[t.Mousemove = 4] = "Mousemove", t[t.Destroy = 5] = "Destroy"; }($9970b34361e607e2$var$m || ($9970b34361e607e2$var$m = {})); const $9970b34361e607e2$var$v = [ "a", "b", "c", "d", "e", "f" ], $9970b34361e607e2$var$b = { PANUP: "Move up", PANDOWN: "Move down", PANLEFT: "Move left", PANRIGHT: "Move right", ZOOMIN: "Zoom in", ZOOMOUT: "Zoom out", TOGGLEZOOM: "Toggle zoom level", TOGGLE1TO1: "Toggle zoom level", ITERATEZOOM: "Toggle zoom level", ROTATECCW: "Rotate counterclockwise", ROTATECW: "Rotate clockwise", FLIPX: "Flip horizontally", FLIPY: "Flip vertically", FITX: "Fit horizontally", FITY: "Fit vertically", RESET: "Reset", TOGGLEFS: "Toggle fullscreen" }, $9970b34361e607e2$var$y = { content: null, width: "auto", height: "auto", panMode: "drag", touch: !0, dragMinThreshold: 3, lockAxis: !1, mouseMoveFactor: 1, mouseMoveFriction: .12, zoom: !0, pinchToZoom: !0, panOnlyZoomed: "auto", minScale: 1, maxScale: 2, friction: .25, dragFriction: .35, decelFriction: .05, click: "toggleZoom", dblClick: !1, wheel: "zoom", wheelLimit: 7, spinner: !0, bounds: "auto", infinite: !1, rubberband: !0, bounce: !0, maxVelocity: 75, transformParent: !1, classes: { content: "f-panzoom__content", isLoading: "is-loading", canZoomIn: "can-zoom_in", canZoomOut: "can-zoom_out", isDraggable: "is-draggable", isDragging: "is-dragging", inFullscreen: "in-fullscreen", htmlHasFullscreen: "with-panzoom-in-fullscreen" }, l10n: $9970b34361e607e2$var$b }, $9970b34361e607e2$var$w = '', $9970b34361e607e2$var$x = '
' + $9970b34361e607e2$var$w + $9970b34361e607e2$var$w + "
", $9970b34361e607e2$var$E = (t)=>t && null !== t && t instanceof Element && "nodeType" in t, $9970b34361e607e2$var$S = (t, e)=>{ t && $9970b34361e607e2$var$s(e).forEach((e)=>{ t.classList.remove(e); }); }, $9970b34361e607e2$var$P = (t, e)=>{ t && $9970b34361e607e2$var$s(e).forEach((e)=>{ t.classList.add(e); }); }, $9970b34361e607e2$var$C = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }, $9970b34361e607e2$var$T = 1e5, $9970b34361e607e2$var$M = 1e4, $9970b34361e607e2$var$O = "mousemove", $9970b34361e607e2$var$A = "drag", $9970b34361e607e2$var$L = "content", $9970b34361e607e2$var$z = "auto"; let $9970b34361e607e2$var$R = null, $9970b34361e607e2$var$k = null; class $9970b34361e607e2$export$b704d075ddd20210 extends $9970b34361e607e2$var$g { get fits() { return this.contentRect.width - this.contentRect.fitWidth < 1 && this.contentRect.height - this.contentRect.fitHeight < 1; } get isTouchDevice() { return null === $9970b34361e607e2$var$k && ($9970b34361e607e2$var$k = window.matchMedia("(hover: none)").matches), $9970b34361e607e2$var$k; } get isMobile() { return null === $9970b34361e607e2$var$R && ($9970b34361e607e2$var$R = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent)), $9970b34361e607e2$var$R; } get panMode() { return this.options.panMode !== $9970b34361e607e2$var$O || this.isTouchDevice ? $9970b34361e607e2$var$A : $9970b34361e607e2$var$O; } get panOnlyZoomed() { const t = this.options.panOnlyZoomed; return t === $9970b34361e607e2$var$z ? this.isTouchDevice : t; } get isInfinite() { return this.option("infinite"); } get angle() { return 180 * Math.atan2(this.current.b, this.current.a) / Math.PI || 0; } get targetAngle() { return 180 * Math.atan2(this.target.b, this.target.a) / Math.PI || 0; } get scale() { const { a: t, b: e } = this.current; return Math.sqrt(t * t + e * e) || 1; } get targetScale() { const { a: t, b: e } = this.target; return Math.sqrt(t * t + e * e) || 1; } get minScale() { return this.option("minScale") || 1; } get fullScale() { const { contentRect: t } = this; return t.fullWidth / t.fitWidth || 1; } get maxScale() { return this.fullScale * (this.option("maxScale") || 1) || 1; } get coverScale() { const { containerRect: t, contentRect: e } = this, i = Math.max(t.height / e.fitHeight, t.width / e.fitWidth) || 1; return Math.min(this.fullScale, i); } get isScaling() { return Math.abs(this.targetScale - this.scale) > 1e-5 && !this.isResting; } get isContentLoading() { const t = this.content; return !!(t && t instanceof HTMLImageElement) && !t.complete; } get isResting() { if (this.isBouncingX || this.isBouncingY) return !1; for (const t of $9970b34361e607e2$var$v){ const e = "e" == t || "f" === t ? 1e-4 : 1e-5; if (Math.abs(this.target[t] - this.current[t]) > e) return !1; } return !(!this.ignoreBounds && !this.checkBounds().inBounds); } constructor(t, e = {}, i = {}){ var s; if (super(e), Object.defineProperty(this, "pointerTracker", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "resizeObserver", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "updateTimer", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "clickTimer", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "rAF", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "isTicking", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "ignoreBounds", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "isBouncingX", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "isBouncingY", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "clicks", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "trackingPoints", { enumerable: !0, configurable: !0, writable: !0, value: [] }), Object.defineProperty(this, "pwt", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "cwd", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "pmme", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "friction", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "state", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$m.Init }), Object.defineProperty(this, "isDragging", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "container", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "content", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "spinner", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "containerRect", { enumerable: !0, configurable: !0, writable: !0, value: { width: 0, height: 0, innerWidth: 0, innerHeight: 0 } }), Object.defineProperty(this, "contentRect", { enumerable: !0, configurable: !0, writable: !0, value: { top: 0, right: 0, bottom: 0, left: 0, fullWidth: 0, fullHeight: 0, fitWidth: 0, fitHeight: 0, width: 0, height: 0 } }), Object.defineProperty(this, "dragStart", { enumerable: !0, configurable: !0, writable: !0, value: { x: 0, y: 0, top: 0, left: 0, time: 0 } }), Object.defineProperty(this, "dragOffset", { enumerable: !0, configurable: !0, writable: !0, value: { x: 0, y: 0, time: 0 } }), Object.defineProperty(this, "current", { enumerable: !0, configurable: !0, writable: !0, value: Object.assign({}, $9970b34361e607e2$var$C) }), Object.defineProperty(this, "target", { enumerable: !0, configurable: !0, writable: !0, value: Object.assign({}, $9970b34361e607e2$var$C) }), Object.defineProperty(this, "velocity", { enumerable: !0, configurable: !0, writable: !0, value: { a: 0, b: 0, c: 0, d: 0, e: 0, f: 0 } }), Object.defineProperty(this, "lockedAxis", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), !t) throw new Error("Container Element Not Found"); this.container = t, this.initContent(), this.attachPlugins(Object.assign(Object.assign({}, $9970b34361e607e2$export$b704d075ddd20210.Plugins), i)), this.emit("attachPlugins"), this.emit("init"); const o = this.content; if (o.addEventListener("load", this.onLoad), o.addEventListener("error", this.onError), this.isContentLoading) { if (this.option("spinner")) { t.classList.add(this.cn("isLoading")); const e = $9970b34361e607e2$var$n($9970b34361e607e2$var$x); !t.contains(o) || o.parentElement instanceof HTMLPictureElement ? this.spinner = t.appendChild(e) : this.spinner = (null === (s = o.parentElement) || void 0 === s ? void 0 : s.insertBefore(e, o)) || null; } this.emit("beforeLoad"); } else queueMicrotask(()=>{ this.enable(); }); } initContent() { const { container: t } = this, e = this.cn($9970b34361e607e2$var$L); let i = this.option($9970b34361e607e2$var$L) || t.querySelector(`.${e}`); if (i || (i = t.querySelector("img,picture") || t.firstElementChild, i && $9970b34361e607e2$var$P(i, e)), i instanceof HTMLPictureElement && (i = i.querySelector("img")), !i) throw new Error("No content found"); this.content = i; } onLoad() { const { spinner: t, container: e, state: i } = this; t && (t.remove(), this.spinner = null), this.option("spinner") && e.classList.remove(this.cn("isLoading")), this.emit("afterLoad"), i === $9970b34361e607e2$var$m.Init ? this.enable() : this.updateMetrics(); } onError() { this.state !== $9970b34361e607e2$var$m.Destroy && (this.spinner && (this.spinner.remove(), this.spinner = null), this.stop(), this.detachEvents(), this.state = $9970b34361e607e2$var$m.Error, this.emit("error")); } getNextScale(t) { const { fullScale: e, targetScale: i, coverScale: n, maxScale: s, minScale: o } = this; let a = o; switch(t){ case "toggleMax": a = i - o < .5 * (s - o) ? s : o; break; case "toggleCover": a = i - o < .5 * (n - o) ? n : o; break; case "toggleZoom": a = i - o < .5 * (e - o) ? e : o; break; case "iterateZoom": let t1 = [ 1, e, s ].sort((t, e)=>t - e), r = t1.findIndex((t)=>t > i + 1e-5); a = t1[r] || 1; } return a; } attachObserver() { var t; const e = ()=>{ const { container: t, containerRect: e } = this; return Math.abs(e.width - t.getBoundingClientRect().width) > .1 || Math.abs(e.height - t.getBoundingClientRect().height) > .1; }; this.resizeObserver || void 0 === window.ResizeObserver || (this.resizeObserver = new ResizeObserver(()=>{ this.updateTimer || (e() ? (this.onResize(), this.isMobile && (this.updateTimer = setTimeout(()=>{ e() && this.onResize(), this.updateTimer = null; }, 500))) : this.updateTimer && (clearTimeout(this.updateTimer), this.updateTimer = null)); })), null === (t = this.resizeObserver) || void 0 === t || t.observe(this.container); } detachObserver() { var t; null === (t = this.resizeObserver) || void 0 === t || t.disconnect(); } attachEvents() { const { container: t } = this; t.addEventListener("click", this.onClick, { passive: !1, capture: !1 }), t.addEventListener("wheel", this.onWheel, { passive: !1 }), this.pointerTracker = new $9970b34361e607e2$var$l(t, { start: this.onPointerDown, move: this.onPointerMove, end: this.onPointerUp }), document.addEventListener($9970b34361e607e2$var$O, this.onMouseMove); } detachEvents() { var t; const { container: e } = this; e.removeEventListener("click", this.onClick, { passive: !1, capture: !1 }), e.removeEventListener("wheel", this.onWheel, { passive: !1 }), null === (t = this.pointerTracker) || void 0 === t || t.stop(), this.pointerTracker = null, document.removeEventListener($9970b34361e607e2$var$O, this.onMouseMove), document.removeEventListener("keydown", this.onKeydown, !0), this.clickTimer && (clearTimeout(this.clickTimer), this.clickTimer = null), this.updateTimer && (clearTimeout(this.updateTimer), this.updateTimer = null); } animate() { this.setTargetForce(); const t = this.friction, e = this.option("maxVelocity"); for (const i of $9970b34361e607e2$var$v)t ? (this.velocity[i] *= 1 - t, e && !this.isScaling && (this.velocity[i] = Math.max(Math.min(this.velocity[i], e), -1 * e)), this.current[i] += this.velocity[i]) : this.current[i] = this.target[i]; this.setTransform(), this.setEdgeForce(), !this.isResting || this.isDragging ? this.rAF = requestAnimationFrame(()=>this.animate()) : this.stop("current"); } setTargetForce() { for (const t of $9970b34361e607e2$var$v)"e" === t && this.isBouncingX || "f" === t && this.isBouncingY || (this.velocity[t] = (1 / (1 - this.friction) - 1) * (this.target[t] - this.current[t])); } checkBounds(t = 0, e = 0) { const { current: i } = this, n = i.e + t, s = i.f + e, o = this.getBounds(), { x: a, y: r } = o, l = a.min, c = a.max, h = r.min, d = r.max; let u = 0, p = 0; return l !== 1 / 0 && n < l ? u = l - n : c !== 1 / 0 && n > c && (u = c - n), h !== 1 / 0 && s < h ? p = h - s : d !== 1 / 0 && s > d && (p = d - s), Math.abs(u) < 1e-4 && (u = 0), Math.abs(p) < 1e-4 && (p = 0), Object.assign(Object.assign({}, o), { xDiff: u, yDiff: p, inBounds: !u && !p }); } clampTargetBounds() { const { target: t } = this, { x: e, y: i } = this.getBounds(); e.min !== 1 / 0 && (t.e = Math.max(t.e, e.min)), e.max !== 1 / 0 && (t.e = Math.min(t.e, e.max)), i.min !== 1 / 0 && (t.f = Math.max(t.f, i.min)), i.max !== 1 / 0 && (t.f = Math.min(t.f, i.max)); } calculateContentDim(t = this.current) { const { content: e, contentRect: i } = this, { fitWidth: n, fitHeight: s, fullWidth: o, fullHeight: a } = i; let r = o, l = a; if (this.option("zoom") || 0 !== this.angle) { const i = !(e instanceof HTMLImageElement) && ("none" === window.getComputedStyle(e).maxWidth || "none" === window.getComputedStyle(e).maxHeight), c = i ? o : n, h = i ? a : s, d = this.getMatrix(t), u = new DOMPoint(0, 0).matrixTransform(d), p = new DOMPoint(0 + c, 0).matrixTransform(d), f = new DOMPoint(0 + c, 0 + h).matrixTransform(d), g = new DOMPoint(0, 0 + h).matrixTransform(d), m = Math.abs(f.x - u.x), v = Math.abs(f.y - u.y), b = Math.abs(g.x - p.x), y = Math.abs(g.y - p.y); r = Math.max(m, b), l = Math.max(v, y); } return { contentWidth: r, contentHeight: l }; } setEdgeForce() { if (this.ignoreBounds || this.isDragging || this.panMode === $9970b34361e607e2$var$O || this.targetScale < this.scale) return this.isBouncingX = !1, void (this.isBouncingY = !1); const { target: t } = this, { x: e, y: i, xDiff: n, yDiff: s } = this.checkBounds(); const o = this.option("maxVelocity"); let a = this.velocity.e, r = this.velocity.f; 0 !== n ? (this.isBouncingX = !0, n * a <= 0 ? a += .14 * n : (a = .14 * n, e.min !== 1 / 0 && (this.target.e = Math.max(t.e, e.min)), e.max !== 1 / 0 && (this.target.e = Math.min(t.e, e.max))), o && (a = Math.max(Math.min(a, o), -1 * o))) : this.isBouncingX = !1, 0 !== s ? (this.isBouncingY = !0, s * r <= 0 ? r += .14 * s : (r = .14 * s, i.min !== 1 / 0 && (this.target.f = Math.max(t.f, i.min)), i.max !== 1 / 0 && (this.target.f = Math.min(t.f, i.max))), o && (r = Math.max(Math.min(r, o), -1 * o))) : this.isBouncingY = !1, this.isBouncingX && (this.velocity.e = a), this.isBouncingY && (this.velocity.f = r); } enable() { const { content: t } = this, e = new DOMMatrixReadOnly(window.getComputedStyle(t).transform); for (const t of $9970b34361e607e2$var$v)this.current[t] = this.target[t] = e[t]; this.updateMetrics(), this.attachObserver(), this.attachEvents(), this.state = $9970b34361e607e2$var$m.Ready, this.emit("ready"); } onClick(t) { var e; "click" === t.type && 0 === t.detail && (this.dragOffset.x = 0, this.dragOffset.y = 0), this.isDragging && (null === (e = this.pointerTracker) || void 0 === e || e.clear(), this.trackingPoints = [], this.startDecelAnim()); const i = t.target; if (!i || t.defaultPrevented) return; if (i.hasAttribute("disabled")) return t.preventDefault(), void t.stopPropagation(); if ((()=>{ const t = window.getSelection(); return t && "Range" === t.type; })() && !i.closest("button")) return; const n = i.closest("[data-panzoom-action]"), s = i.closest("[data-panzoom-change]"), o = n || s, a = o && $9970b34361e607e2$var$E(o) ? o.dataset : null; if (a) { const e = a.panzoomChange, i = a.panzoomAction; if ((e || i) && t.preventDefault(), e) { let t = {}; try { t = JSON.parse(e); } catch (t) { console && console.warn("The given data was not valid JSON"); } return void this.applyChange(t); } if (i) return void (this[i] && this[i]()); } if (Math.abs(this.dragOffset.x) > 3 || Math.abs(this.dragOffset.y) > 3) return t.preventDefault(), void t.stopPropagation(); if (i.closest("[data-fancybox]")) return; const r = this.content.getBoundingClientRect(), l = this.dragStart; if (l.time && !this.canZoomOut() && (Math.abs(r.x - l.x) > 2 || Math.abs(r.y - l.y) > 2)) return; this.dragStart.time = 0; const c = (e)=>{ this.option("zoom", t) && e && "string" == typeof e && /(iterateZoom)|(toggle(Zoom|Full|Cover|Max)|(zoomTo(Fit|Cover|Max)))/.test(e) && "function" == typeof this[e] && (t.preventDefault(), this[e]({ event: t })); }, h = this.option("click", t), d = this.option("dblClick", t); d ? (this.clicks++, 1 == this.clicks && (this.clickTimer = setTimeout(()=>{ 1 === this.clicks ? (this.emit("click", t), !t.defaultPrevented && h && c(h)) : (this.emit("dblClick", t), t.defaultPrevented || c(d)), this.clicks = 0, this.clickTimer = null; }, 350))) : (this.emit("click", t), !t.defaultPrevented && h && c(h)); } addTrackingPoint(t) { const e = this.trackingPoints.filter((t)=>t.time > Date.now() - 100); e.push(t), this.trackingPoints = e; } onPointerDown(t, e, i) { var n; if (!1 === this.option("touch", t)) return !1; this.pwt = 0, this.dragOffset = { x: 0, y: 0, time: 0 }, this.trackingPoints = []; const s = this.content.getBoundingClientRect(); if (this.dragStart = { x: s.x, y: s.y, top: s.top, left: s.left, time: Date.now() }, this.clickTimer) return !1; if (this.panMode === $9970b34361e607e2$var$O && this.targetScale > 1) return t.preventDefault(), t.stopPropagation(), !1; const o = t.composedPath()[0]; if (!i.length) { if ([ "TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO", "IFRAME" ].includes(o.nodeName) || o.closest("[contenteditable],[data-selectable],[data-draggable],[data-clickable],[data-panzoom-change],[data-panzoom-action]")) return !1; null === (n = window.getSelection()) || void 0 === n || n.removeAllRanges(); } if ("mousedown" === t.type) [ "A", "BUTTON" ].includes(o.nodeName) || t.preventDefault(); else if (Math.abs(this.velocity.a) > .3) return !1; return this.target.e = this.current.e, this.target.f = this.current.f, this.stop(), this.isDragging || (this.isDragging = !0, this.addTrackingPoint(e), this.emit("touchStart", t)), !0; } onPointerMove(e, n, s) { if (!1 === this.option("touch", e)) return; if (!this.isDragging) return; if (n.length < 2 && this.panOnlyZoomed && $9970b34361e607e2$var$t(this.targetScale) <= $9970b34361e607e2$var$t(this.minScale)) return; if (this.emit("touchMove", e), e.defaultPrevented) return; this.addTrackingPoint(n[0]); const { content: o } = this, a = $9970b34361e607e2$var$h(s[0], s[1]), r = $9970b34361e607e2$var$h(n[0], n[1]); let l = 0, d = 0; if (n.length > 1) { const t = o.getBoundingClientRect(); l = a.clientX - t.left - .5 * t.width, d = a.clientY - t.top - .5 * t.height; } const u = $9970b34361e607e2$var$c(s[0], s[1]), p = $9970b34361e607e2$var$c(n[0], n[1]); let f = u ? p / u : 1, g = r.clientX - a.clientX, m = r.clientY - a.clientY; this.dragOffset.x += g, this.dragOffset.y += m, this.dragOffset.time = Date.now() - this.dragStart.time; let v = $9970b34361e607e2$var$t(this.targetScale) === $9970b34361e607e2$var$t(this.minScale) && this.option("lockAxis"); if (v && !this.lockedAxis) { if ("xy" === v || "y" === v || "touchmove" === e.type) { if (Math.abs(this.dragOffset.x) < 6 && Math.abs(this.dragOffset.y) < 6) return void e.preventDefault(); const t = Math.abs(180 * Math.atan2(this.dragOffset.y, this.dragOffset.x) / Math.PI); this.lockedAxis = t > 45 && t < 135 ? "y" : "x", this.dragOffset.x = 0, this.dragOffset.y = 0, g = 0, m = 0; } else this.lockedAxis = v; } if ($9970b34361e607e2$var$i(e.target, this.content) && (v = "x", this.dragOffset.y = 0), v && "xy" !== v && this.lockedAxis !== v && $9970b34361e607e2$var$t(this.targetScale) === $9970b34361e607e2$var$t(this.minScale)) return; e.cancelable && e.preventDefault(), this.container.classList.add(this.cn("isDragging")); const b = this.checkBounds(g, m); this.option("rubberband") ? ("x" !== this.isInfinite && (b.xDiff > 0 && g < 0 || b.xDiff < 0 && g > 0) && (g *= Math.max(0, .5 - Math.abs(.75 / this.contentRect.fitWidth * b.xDiff))), "y" !== this.isInfinite && (b.yDiff > 0 && m < 0 || b.yDiff < 0 && m > 0) && (m *= Math.max(0, .5 - Math.abs(.75 / this.contentRect.fitHeight * b.yDiff)))) : (b.xDiff && (g = 0), b.yDiff && (m = 0)); const y = this.targetScale, w = this.minScale, x = this.maxScale; y < .5 * w && (f = Math.max(f, w)), y > 1.5 * x && (f = Math.min(f, x)), "y" === this.lockedAxis && $9970b34361e607e2$var$t(y) === $9970b34361e607e2$var$t(w) && (g = 0), "x" === this.lockedAxis && $9970b34361e607e2$var$t(y) === $9970b34361e607e2$var$t(w) && (m = 0), this.applyChange({ originX: l, originY: d, panX: g, panY: m, scale: f, friction: this.option("dragFriction"), ignoreBounds: !0 }); } onPointerUp(t, e, n) { if (n.length) return this.dragOffset.x = 0, this.dragOffset.y = 0, void (this.trackingPoints = []); this.container.classList.remove(this.cn("isDragging")), this.isDragging && (this.addTrackingPoint(e), this.panOnlyZoomed && this.contentRect.width - this.contentRect.fitWidth < 1 && this.contentRect.height - this.contentRect.fitHeight < 1 && (this.trackingPoints = []), $9970b34361e607e2$var$i(t.target, this.content) && "y" === this.lockedAxis && (this.trackingPoints = []), this.emit("touchEnd", t), this.isDragging = !1, this.lockedAxis = !1, this.state !== $9970b34361e607e2$var$m.Destroy && (t.defaultPrevented || this.startDecelAnim())); } startDecelAnim() { var e; const i = this.isScaling; this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.isBouncingX = !1, this.isBouncingY = !1; for (const t of $9970b34361e607e2$var$v)this.velocity[t] = 0; this.target.e = this.current.e, this.target.f = this.current.f, $9970b34361e607e2$var$S(this.container, "is-scaling"), $9970b34361e607e2$var$S(this.container, "is-animating"), this.isTicking = !1; const { trackingPoints: n } = this, s = n[0], o = n[n.length - 1]; let a = 0, r = 0, l = 0; o && s && (a = o.clientX - s.clientX, r = o.clientY - s.clientY, l = o.time - s.time); const c = (null === (e = window.visualViewport) || void 0 === e ? void 0 : e.scale) || 1; 1 !== c && (a *= c, r *= c); let h = 0, d = 0, u = 0, p = 0, f = this.option("decelFriction"); const g = this.targetScale; if (l > 0) { u = Math.abs(a) > 3 ? a / (l / 30) : 0, p = Math.abs(r) > 3 ? r / (l / 30) : 0; const t = this.option("maxVelocity"); t && (u = Math.max(Math.min(u, t), -1 * t), p = Math.max(Math.min(p, t), -1 * t)); } u && (h = u / (1 / (1 - f) - 1)), p && (d = p / (1 / (1 - f) - 1)), ("y" === this.option("lockAxis") || "xy" === this.option("lockAxis") && "y" === this.lockedAxis && $9970b34361e607e2$var$t(g) === this.minScale) && (h = u = 0), ("x" === this.option("lockAxis") || "xy" === this.option("lockAxis") && "x" === this.lockedAxis && $9970b34361e607e2$var$t(g) === this.minScale) && (d = p = 0); const m = this.dragOffset.x, b = this.dragOffset.y, y = this.option("dragMinThreshold") || 0; Math.abs(m) < y && Math.abs(b) < y && (h = d = 0, u = p = 0), (this.option("zoom") && (g < this.minScale - 1e-5 || g > this.maxScale + 1e-5) || i && !h && !d) && (f = .35), this.applyChange({ panX: h, panY: d, friction: f }), this.emit("decel", u, p, m, b); } onWheel(t) { var e = [ -t.deltaX || 0, -t.deltaY || 0, -t.detail || 0 ].reduce(function(t, e) { return Math.abs(e) > Math.abs(t) ? e : t; }); const i = Math.max(-1, Math.min(1, e)); if (this.emit("wheel", t, i), this.panMode === $9970b34361e607e2$var$O) return; if (t.defaultPrevented) return; const n = this.option("wheel"); "pan" === n ? (t.preventDefault(), this.panOnlyZoomed && !this.canZoomOut() || this.applyChange({ panX: 2 * -t.deltaX, panY: 2 * -t.deltaY, bounce: !1 })) : "zoom" === n && !1 !== this.option("zoom") && this.zoomWithWheel(t); } onMouseMove(t) { this.panWithMouse(t); } onKeydown(t) { "Escape" === t.key && this.toggleFS(); } onResize() { this.updateMetrics(), this.checkBounds().inBounds || this.requestTick(); } setTransform() { this.emit("beforeTransform"); const { current: e, target: i, content: n, contentRect: s } = this, o = Object.assign({}, $9970b34361e607e2$var$C); for (const n of $9970b34361e607e2$var$v){ const s = "e" == n || "f" === n ? $9970b34361e607e2$var$M : $9970b34361e607e2$var$T; o[n] = $9970b34361e607e2$var$t(e[n], s), Math.abs(i[n] - e[n]) < ("e" == n || "f" === n ? .51 : .001) && (e[n] = i[n]); } let { a: a, b: r, c: l, d: c, e: h, f: d } = o, u = `matrix(${a}, ${r}, ${l}, ${c}, ${h}, ${d})`, p = n.parentElement instanceof HTMLPictureElement ? n.parentElement : n; if (this.option("transformParent") && (p = p.parentElement || p), p.style.transform === u) return; p.style.transform = u; const { contentWidth: f, contentHeight: g } = this.calculateContentDim(); s.width = f, s.height = g, this.emit("afterTransform"); } updateMetrics(e = !1) { var i; if (!this || this.state === $9970b34361e607e2$var$m.Destroy) return; if (this.isContentLoading) return; const n = Math.max(1, (null === (i = window.visualViewport) || void 0 === i ? void 0 : i.scale) || 1), { container: s, content: o } = this, a = o instanceof HTMLImageElement, r = s.getBoundingClientRect(), l = getComputedStyle(this.container); let c = r.width * n, h = r.height * n; const d = parseFloat(l.paddingTop) + parseFloat(l.paddingBottom), u = c - (parseFloat(l.paddingLeft) + parseFloat(l.paddingRight)), p = h - d; this.containerRect = { width: c, height: h, innerWidth: u, innerHeight: p }; const f = parseFloat(o.dataset.width || "") || ((t)=>{ let e = 0; return e = t instanceof HTMLImageElement ? t.naturalWidth : t instanceof SVGElement ? t.width.baseVal.value : Math.max(t.offsetWidth, t.scrollWidth), e || 0; })(o), g = parseFloat(o.dataset.height || "") || ((t)=>{ let e = 0; return e = t instanceof HTMLImageElement ? t.naturalHeight : t instanceof SVGElement ? t.height.baseVal.value : Math.max(t.offsetHeight, t.scrollHeight), e || 0; })(o); let v = this.option("width", f) || $9970b34361e607e2$var$z, b = this.option("height", g) || $9970b34361e607e2$var$z; const y = v === $9970b34361e607e2$var$z, w = b === $9970b34361e607e2$var$z; "number" != typeof v && (v = f), "number" != typeof b && (b = g), y && (v = f * (b / g)), w && (b = g / (f / v)); let x = o.parentElement instanceof HTMLPictureElement ? o.parentElement : o; this.option("transformParent") && (x = x.parentElement || x); const E = x.getAttribute("style") || ""; x.style.setProperty("transform", "none", "important"), a && (x.style.width = "", x.style.height = ""), x.offsetHeight; const S = o.getBoundingClientRect(); let P = S.width * n, C = S.height * n, T = P, M = C; P = Math.min(P, v), C = Math.min(C, b), a ? { width: P, height: C } = ((t, e, i, n)=>{ const s = i / t, o = n / e, a = Math.min(s, o); return { width: t *= a, height: e *= a }; })(v, b, P, C) : (P = Math.min(P, v), C = Math.min(C, b)); let O = .5 * (M - C), A = .5 * (T - P); this.contentRect = Object.assign(Object.assign({}, this.contentRect), { top: S.top - r.top + O, bottom: r.bottom - S.bottom + O, left: S.left - r.left + A, right: r.right - S.right + A, fitWidth: P, fitHeight: C, width: P, height: C, fullWidth: v, fullHeight: b }), x.style.cssText = E, a && (x.style.width = `${P}px`, x.style.height = `${C}px`), this.setTransform(), !0 !== e && this.emit("refresh"), this.ignoreBounds || ($9970b34361e607e2$var$t(this.targetScale) < $9970b34361e607e2$var$t(this.minScale) ? this.zoomTo(this.minScale, { friction: 0 }) : this.targetScale > this.maxScale ? this.zoomTo(this.maxScale, { friction: 0 }) : this.state === $9970b34361e607e2$var$m.Init || this.checkBounds().inBounds || this.requestTick()), this.updateControls(); } calculateBounds() { const { contentWidth: e, contentHeight: i } = this.calculateContentDim(this.target), { targetScale: n, lockedAxis: s } = this, { fitWidth: o, fitHeight: a } = this.contentRect; let r = 0, l = 0, c = 0, h = 0; const d = this.option("infinite"); if (!0 === d || s && d === s) r = -1 / 0, c = 1 / 0, l = -1 / 0, h = 1 / 0; else { let { containerRect: s, contentRect: d } = this, u = $9970b34361e607e2$var$t(o * n, $9970b34361e607e2$var$M), p = $9970b34361e607e2$var$t(a * n, $9970b34361e607e2$var$M), { innerWidth: f, innerHeight: g } = s; if (s.width === u && (f = s.width), s.width === p && (g = s.height), e > f) { c = .5 * (e - f), r = -1 * c; let t = .5 * (d.right - d.left); r += t, c += t; } if (o > f && e < f && (r -= .5 * (o - f), c -= .5 * (o - f)), i > g) { h = .5 * (i - g), l = -1 * h; let t = .5 * (d.bottom - d.top); l += t, h += t; } a > g && i < g && (r -= .5 * (a - g), c -= .5 * (a - g)); } return { x: { min: r, max: c }, y: { min: l, max: h } }; } getBounds() { const t = this.option("bounds"); return t !== $9970b34361e607e2$var$z ? t : this.calculateBounds(); } updateControls() { const e = this, i = e.container, { panMode: n, contentRect: s, targetScale: a, minScale: r } = e; let l = r, c = e.option("click") || !1; c && (l = e.getNextScale(c)); let h = e.canZoomIn(), d = e.canZoomOut(), u = n === $9970b34361e607e2$var$A && !!this.option("touch"), p = d && u; if (u && ($9970b34361e607e2$var$t(a) < $9970b34361e607e2$var$t(r) && !this.panOnlyZoomed && (p = !0), ($9970b34361e607e2$var$t(s.width, 1) > $9970b34361e607e2$var$t(s.fitWidth, 1) || $9970b34361e607e2$var$t(s.height, 1) > $9970b34361e607e2$var$t(s.fitHeight, 1)) && (p = !0)), $9970b34361e607e2$var$t(s.width * a, 1) < $9970b34361e607e2$var$t(s.fitWidth, 1) && (p = !1), n === $9970b34361e607e2$var$O && (p = !1), $9970b34361e607e2$var$o(i, this.cn("isDraggable"), p), !this.option("zoom")) return; let f = h && $9970b34361e607e2$var$t(l) > $9970b34361e607e2$var$t(a), g = !f && !p && d && $9970b34361e607e2$var$t(l) < $9970b34361e607e2$var$t(a); $9970b34361e607e2$var$o(i, this.cn("canZoomIn"), f), $9970b34361e607e2$var$o(i, this.cn("canZoomOut"), g); for (const t of i.querySelectorAll("[data-panzoom-action]")){ let e = !1, i = !1; switch(t.dataset.panzoomAction){ case "zoomIn": h ? e = !0 : i = !0; break; case "zoomOut": d ? e = !0 : i = !0; break; case "toggleZoom": case "iterateZoom": h || d ? e = !0 : i = !0; const n = t.querySelector("g"); n && (n.style.display = h ? "" : "none"); } e ? (t.removeAttribute("disabled"), t.removeAttribute("tabindex")) : i && (t.setAttribute("disabled", ""), t.setAttribute("tabindex", "-1")); } } panTo({ x: t = this.target.e, y: e = this.target.f, scale: i = this.targetScale, friction: n = this.option("friction"), angle: s = 0, originX: o = 0, originY: a = 0, flipX: r = !1, flipY: l = !1, ignoreBounds: c = !1 }) { this.state !== $9970b34361e607e2$var$m.Destroy && this.applyChange({ panX: t - this.target.e, panY: e - this.target.f, scale: i / this.targetScale, angle: s, originX: o, originY: a, friction: n, flipX: r, flipY: l, ignoreBounds: c }); } applyChange({ panX: e = 0, panY: i = 0, scale: n = 1, angle: s = 0, originX: o = -this.current.e, originY: a = -this.current.f, friction: r = this.option("friction"), flipX: l = !1, flipY: c = !1, ignoreBounds: h = !1, bounce: d = this.option("bounce") }) { const u = this.state; if (u === $9970b34361e607e2$var$m.Destroy) return; this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.friction = r || 0, this.ignoreBounds = h; const { current: p } = this, f = p.e, g = p.f, b = this.getMatrix(this.target); let y = (new DOMMatrix).translate(f, g).translate(o, a).translate(e, i); if (this.option("zoom")) { if (!h) { const t = this.targetScale, e = this.minScale, i = this.maxScale; t * n < e && (n = e / t), t * n > i && (n = i / t); } y = y.scale(n); } y = y.translate(-o, -a).translate(-f, -g).multiply(b), s && (y = y.rotate(s)), l && (y = y.scale(-1, 1)), c && (y = y.scale(1, -1)); for (const e of $9970b34361e607e2$var$v)"e" !== e && "f" !== e && (y[e] > this.minScale + 1e-5 || y[e] < this.minScale - 1e-5) ? this.target[e] = y[e] : this.target[e] = $9970b34361e607e2$var$t(y[e], $9970b34361e607e2$var$M); (this.targetScale < this.scale || Math.abs(n - 1) > .1 || this.panMode === $9970b34361e607e2$var$O || !1 === d) && !h && this.clampTargetBounds(), u === $9970b34361e607e2$var$m.Init ? this.animate() : this.isResting || (this.state = $9970b34361e607e2$var$m.Panning, this.requestTick()); } stop(t = !1) { if (this.state === $9970b34361e607e2$var$m.Init || this.state === $9970b34361e607e2$var$m.Destroy) return; const e = this.isTicking; this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.isBouncingX = !1, this.isBouncingY = !1; for (const e of $9970b34361e607e2$var$v)this.velocity[e] = 0, "current" === t ? this.current[e] = this.target[e] : "target" === t && (this.target[e] = this.current[e]); this.setTransform(), $9970b34361e607e2$var$S(this.container, "is-scaling"), $9970b34361e607e2$var$S(this.container, "is-animating"), this.isTicking = !1, this.state = $9970b34361e607e2$var$m.Ready, e && (this.emit("endAnimation"), this.updateControls()); } requestTick() { this.isTicking || (this.emit("startAnimation"), this.updateControls(), $9970b34361e607e2$var$P(this.container, "is-animating"), this.isScaling && $9970b34361e607e2$var$P(this.container, "is-scaling")), this.isTicking = !0, this.rAF || (this.rAF = requestAnimationFrame(()=>this.animate())); } panWithMouse(e, i = this.option("mouseMoveFriction")) { if (this.pmme = e, this.panMode !== $9970b34361e607e2$var$O || !e) return; if ($9970b34361e607e2$var$t(this.targetScale) <= $9970b34361e607e2$var$t(this.minScale)) return; this.emit("mouseMove", e); const { container: n, containerRect: s, contentRect: o } = this, a = s.width, r = s.height, l = n.getBoundingClientRect(), c = (e.clientX || 0) - l.left, h = (e.clientY || 0) - l.top; let { contentWidth: d, contentHeight: u } = this.calculateContentDim(this.target); const p = this.option("mouseMoveFactor"); p > 1 && (d !== a && (d *= p), u !== r && (u *= p)); let f = .5 * (d - a) - c / a * 100 / 100 * (d - a); f += .5 * (o.right - o.left); let g = .5 * (u - r) - h / r * 100 / 100 * (u - r); g += .5 * (o.bottom - o.top), this.applyChange({ panX: f - this.target.e, panY: g - this.target.f, friction: i }); } zoomWithWheel(e) { if (this.state === $9970b34361e607e2$var$m.Destroy || this.state === $9970b34361e607e2$var$m.Init) return; const i = Date.now(); if (i - this.pwt < 45) return void e.preventDefault(); this.pwt = i; var n = [ -e.deltaX || 0, -e.deltaY || 0, -e.detail || 0 ].reduce(function(t, e) { return Math.abs(e) > Math.abs(t) ? e : t; }); const s = Math.max(-1, Math.min(1, n)), { targetScale: o, maxScale: a, minScale: r } = this; let l = o * (100 + 45 * s) / 100; $9970b34361e607e2$var$t(l) < $9970b34361e607e2$var$t(r) && $9970b34361e607e2$var$t(o) <= $9970b34361e607e2$var$t(r) ? (this.cwd += Math.abs(s), l = r) : $9970b34361e607e2$var$t(l) > $9970b34361e607e2$var$t(a) && $9970b34361e607e2$var$t(o) >= $9970b34361e607e2$var$t(a) ? (this.cwd += Math.abs(s), l = a) : (this.cwd = 0, l = Math.max(Math.min(l, a), r)), this.cwd > this.option("wheelLimit") || (e.preventDefault(), $9970b34361e607e2$var$t(l) !== $9970b34361e607e2$var$t(o) && this.zoomTo(l, { event: e })); } canZoomIn() { return this.option("zoom") && ($9970b34361e607e2$var$t(this.contentRect.width, 1) < $9970b34361e607e2$var$t(this.contentRect.fitWidth, 1) || $9970b34361e607e2$var$t(this.targetScale) < $9970b34361e607e2$var$t(this.maxScale)); } canZoomOut() { return this.option("zoom") && $9970b34361e607e2$var$t(this.targetScale) > $9970b34361e607e2$var$t(this.minScale); } zoomIn(t = 1.25, e) { this.zoomTo(this.targetScale * t, e); } zoomOut(t = .8, e) { this.zoomTo(this.targetScale * t, e); } zoomToFit(t) { this.zoomTo("fit", t); } zoomToCover(t) { this.zoomTo("cover", t); } zoomToFull(t) { this.zoomTo("full", t); } zoomToMax(t) { this.zoomTo("max", t); } toggleZoom(t) { this.zoomTo(this.getNextScale("toggleZoom"), t); } toggleMax(t) { this.zoomTo(this.getNextScale("toggleMax"), t); } toggleCover(t) { this.zoomTo(this.getNextScale("toggleCover"), t); } iterateZoom(t) { this.zoomTo("next", t); } zoomTo(t = 1, { friction: e = $9970b34361e607e2$var$z, originX: i = $9970b34361e607e2$var$z, originY: n = $9970b34361e607e2$var$z, event: s } = {}) { if (this.isContentLoading || this.state === $9970b34361e607e2$var$m.Destroy) return; const { targetScale: o, fullScale: a, maxScale: r, coverScale: l } = this; if (this.stop(), this.panMode === $9970b34361e607e2$var$O && (s = this.pmme || s), s || i === $9970b34361e607e2$var$z || n === $9970b34361e607e2$var$z) { const t = this.content.getBoundingClientRect(), e = this.container.getBoundingClientRect(), o = s ? s.clientX : e.left + .5 * e.width, a = s ? s.clientY : e.top + .5 * e.height; i = o - t.left - .5 * t.width, n = a - t.top - .5 * t.height; } let c = 1; "number" == typeof t ? c = t : "full" === t ? c = a : "cover" === t ? c = l : "max" === t ? c = r : "fit" === t ? c = 1 : "next" === t && (c = this.getNextScale("iterateZoom")), c = c / o || 1, e = e === $9970b34361e607e2$var$z ? c > 1 ? .15 : .25 : e, this.applyChange({ scale: c, originX: i, originY: n, friction: e }), s && this.panMode === $9970b34361e607e2$var$O && this.panWithMouse(s, e); } rotateCCW() { this.applyChange({ angle: -90 }); } rotateCW() { this.applyChange({ angle: 90 }); } flipX() { this.applyChange({ flipX: !0 }); } flipY() { this.applyChange({ flipY: !0 }); } fitX() { this.stop("target"); const { containerRect: t, contentRect: e, target: i } = this; this.applyChange({ panX: .5 * t.width - (e.left + .5 * e.fitWidth) - i.e, panY: .5 * t.height - (e.top + .5 * e.fitHeight) - i.f, scale: t.width / e.fitWidth / this.targetScale, originX: 0, originY: 0, ignoreBounds: !0 }); } fitY() { this.stop("target"); const { containerRect: t, contentRect: e, target: i } = this; this.applyChange({ panX: .5 * t.width - (e.left + .5 * e.fitWidth) - i.e, panY: .5 * t.innerHeight - (e.top + .5 * e.fitHeight) - i.f, scale: t.height / e.fitHeight / this.targetScale, originX: 0, originY: 0, ignoreBounds: !0 }); } toggleFS() { const { container: t } = this, e = this.cn("inFullscreen"), i = this.cn("htmlHasFullscreen"); t.classList.toggle(e); const n = t.classList.contains(e); n ? (document.documentElement.classList.add(i), document.addEventListener("keydown", this.onKeydown, !0)) : (document.documentElement.classList.remove(i), document.removeEventListener("keydown", this.onKeydown, !0)), this.updateMetrics(), this.emit(n ? "enterFS" : "exitFS"); } getMatrix(t = this.current) { const { a: e, b: i, c: n, d: s, e: o, f: a } = t; return new DOMMatrix([ e, i, n, s, o, a ]); } reset(t) { if (this.state !== $9970b34361e607e2$var$m.Init && this.state !== $9970b34361e607e2$var$m.Destroy) { this.stop("current"); for (const t of $9970b34361e607e2$var$v)this.target[t] = $9970b34361e607e2$var$C[t]; this.target.a = this.minScale, this.target.d = this.minScale, this.clampTargetBounds(), this.isResting || (this.friction = void 0 === t ? this.option("friction") : t, this.state = $9970b34361e607e2$var$m.Panning, this.requestTick()); } } destroy() { this.stop(), this.state = $9970b34361e607e2$var$m.Destroy, this.detachEvents(), this.detachObserver(); const { container: t, content: e } = this, i = this.option("classes") || {}; for (const e of Object.values(i))t.classList.remove(e + ""); e && (e.removeEventListener("load", this.onLoad), e.removeEventListener("error", this.onError)), this.detachPlugins(); } } Object.defineProperty($9970b34361e607e2$export$b704d075ddd20210, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$y }), Object.defineProperty($9970b34361e607e2$export$b704d075ddd20210, "Plugins", { enumerable: !0, configurable: !0, writable: !0, value: {} }); const $9970b34361e607e2$var$D = function(t, e) { let i = !0; return (...n)=>{ i && (i = !1, t(...n), setTimeout(()=>{ i = !0; }, e)); }; }, $9970b34361e607e2$var$F = (t, e)=>{ let i = []; return t.childNodes.forEach((t)=>{ t.nodeType !== Node.ELEMENT_NODE || e && !t.matches(e) || i.push(t); }), i; }, $9970b34361e607e2$var$j = { viewport: null, track: null, enabled: !0, slides: [], axis: "x", transition: "fade", preload: 1, slidesPerPage: "auto", initialPage: 0, friction: .12, Panzoom: { decelFriction: .12 }, center: !0, infinite: !0, fill: !0, dragFree: !1, adaptiveHeight: !1, direction: "ltr", classes: { container: "f-carousel", viewport: "f-carousel__viewport", track: "f-carousel__track", slide: "f-carousel__slide", isLTR: "is-ltr", isRTL: "is-rtl", isHorizontal: "is-horizontal", isVertical: "is-vertical", inTransition: "in-transition", isSelected: "is-selected" }, l10n: { NEXT: "Next slide", PREV: "Previous slide", GOTO: "Go to slide #%d" } }; var $9970b34361e607e2$var$B; !function(t) { t[t.Init = 0] = "Init", t[t.Ready = 1] = "Ready", t[t.Destroy = 2] = "Destroy"; }($9970b34361e607e2$var$B || ($9970b34361e607e2$var$B = {})); const $9970b34361e607e2$var$H = (t)=>{ if ("string" == typeof t || t instanceof HTMLElement) t = { html: t }; else { const e = t.thumb; void 0 !== e && ("string" == typeof e && (t.thumbSrc = e), e instanceof HTMLImageElement && (t.thumbEl = e, t.thumbElSrc = e.src, t.thumbSrc = e.src), delete t.thumb); } return Object.assign({ html: "", el: null, isDom: !1, class: "", customClass: "", index: -1, dim: 0, gap: 0, pos: 0, transition: !1 }, t); }, $9970b34361e607e2$var$N = (t = {})=>Object.assign({ index: -1, slides: [], dim: 0, pos: -1 }, t); class $9970b34361e607e2$var$_ extends $9970b34361e607e2$var$f { constructor(t, e){ super(e), Object.defineProperty(this, "instance", { enumerable: !0, configurable: !0, writable: !0, value: t }); } attach() {} detach() {} } const $9970b34361e607e2$var$$ = { classes: { list: "f-carousel__dots", isDynamic: "is-dynamic", hasDots: "has-dots", dot: "f-carousel__dot", isBeforePrev: "is-before-prev", isPrev: "is-prev", isCurrent: "is-current", isNext: "is-next", isAfterNext: "is-after-next" }, dotTpl: '', dynamicFrom: 11, maxCount: 1 / 0, minCount: 2 }; class $9970b34361e607e2$var$W extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "isDynamic", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "list", { enumerable: !0, configurable: !0, writable: !0, value: null }); } onRefresh() { this.refresh(); } build() { let t = this.list; if (!t) { t = document.createElement("ul"), $9970b34361e607e2$var$P(t, this.cn("list")), t.setAttribute("role", "tablist"); const e = this.instance.container; e.appendChild(t), $9970b34361e607e2$var$P(e, this.cn("hasDots")), this.list = t; } return t; } refresh() { var t; const e = this.instance.pages.length, i = Math.min(2, this.option("minCount")), n = Math.max(2e3, this.option("maxCount")), s = this.option("dynamicFrom"); if (e < i || e > n) return void this.cleanup(); const a = "number" == typeof s && e > 5 && e >= s, r = !this.list || this.isDynamic !== a || this.list.children.length !== e; r && this.cleanup(); const l = this.build(); if ($9970b34361e607e2$var$o(l, this.cn("isDynamic"), !!a), r) for(let t = 0; t < e; t++)l.append(this.createItem(t)); let c, h = 0; for (const e of [ ...l.children ]){ const i = h === this.instance.page; i && (c = e), $9970b34361e607e2$var$o(e, this.cn("isCurrent"), i), null === (t = e.children[0]) || void 0 === t || t.setAttribute("aria-selected", i ? "true" : "false"); for (const t of [ "isBeforePrev", "isPrev", "isNext", "isAfterNext" ])$9970b34361e607e2$var$S(e, this.cn(t)); h++; } if (c = c || l.firstChild, a && c) { const t = c.previousElementSibling, e = t && t.previousElementSibling; $9970b34361e607e2$var$P(t, this.cn("isPrev")), $9970b34361e607e2$var$P(e, this.cn("isBeforePrev")); const i = c.nextElementSibling, n = i && i.nextElementSibling; $9970b34361e607e2$var$P(i, this.cn("isNext")), $9970b34361e607e2$var$P(n, this.cn("isAfterNext")); } this.isDynamic = a; } createItem(t = 0) { var e; const i = document.createElement("li"); i.setAttribute("role", "presentation"); const s = $9970b34361e607e2$var$n(this.instance.localize(this.option("dotTpl"), [ [ "%d", t + 1 ] ]).replace(/\%i/g, t + "")); return i.appendChild(s), null === (e = i.children[0]) || void 0 === e || e.setAttribute("role", "tab"), i; } cleanup() { this.list && (this.list.remove(), this.list = null), this.isDynamic = !1, $9970b34361e607e2$var$S(this.instance.container, this.cn("hasDots")); } attach() { this.instance.on([ "refresh", "change" ], this.onRefresh); } detach() { this.instance.off([ "refresh", "change" ], this.onRefresh), this.cleanup(); } } Object.defineProperty($9970b34361e607e2$var$W, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$$ }); const $9970b34361e607e2$var$X = "disabled", $9970b34361e607e2$var$q = "next", $9970b34361e607e2$var$Y = "prev"; class $9970b34361e607e2$var$V extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "container", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "prev", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "next", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "isDom", { enumerable: !0, configurable: !0, writable: !0, value: !1 }); } onRefresh() { const t = this.instance, e = t.pages.length, i = t.page; if (e < 2) return void this.cleanup(); this.build(); let n = this.prev, s = this.next; n && s && (n.removeAttribute($9970b34361e607e2$var$X), s.removeAttribute($9970b34361e607e2$var$X), t.isInfinite || (i <= 0 && n.setAttribute($9970b34361e607e2$var$X, ""), i >= e - 1 && s.setAttribute($9970b34361e607e2$var$X, ""))); } addBtn(t) { var e; const i = this.instance, n = document.createElement("button"); n.setAttribute("tabindex", "0"), n.setAttribute("title", i.localize(`{{${t.toUpperCase()}}}`)), $9970b34361e607e2$var$P(n, this.cn("button") + " " + this.cn(t === $9970b34361e607e2$var$q ? "isNext" : "isPrev")); const s = i.isRTL ? t === $9970b34361e607e2$var$q ? $9970b34361e607e2$var$Y : $9970b34361e607e2$var$q : t; var o; return n.innerHTML = i.localize(this.option(`${s}Tpl`)), n.dataset[`carousel${o = t, o ? o.match("^[a-z]") ? o.charAt(0).toUpperCase() + o.substring(1) : o : ""}`] = "true", null === (e = this.container) || void 0 === e || e.appendChild(n), n; } build() { const t = this.instance.container, e = this.cn("container"); let { container: i, prev: n, next: s } = this; i || (i = t.querySelector("." + e), this.isDom = !!i), i || (i = document.createElement("div"), $9970b34361e607e2$var$P(i, e), t.appendChild(i)), this.container = i, s || (s = i.querySelector("[data-carousel-next]")), s || (s = this.addBtn($9970b34361e607e2$var$q)), this.next = s, n || (n = i.querySelector("[data-carousel-prev]")), n || (n = this.addBtn($9970b34361e607e2$var$Y)), this.prev = n; } cleanup() { this.isDom || (this.prev && this.prev.remove(), this.next && this.next.remove(), this.container && this.container.remove()), this.prev = null, this.next = null, this.container = null, this.isDom = !1; } attach() { this.instance.on([ "refresh", "change" ], this.onRefresh); } detach() { this.instance.off([ "refresh", "change" ], this.onRefresh), this.cleanup(); } } Object.defineProperty($9970b34361e607e2$var$V, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: { classes: { container: "f-carousel__nav", button: "f-button", isNext: "is-next", isPrev: "is-prev" }, nextTpl: '', prevTpl: '' } }); class $9970b34361e607e2$var$Z extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "selectedIndex", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "target", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "nav", { enumerable: !0, configurable: !0, writable: !0, value: null }); } addAsTargetFor(t) { this.target = this.instance, this.nav = t, this.attachEvents(); } addAsNavFor(t) { this.nav = this.instance, this.target = t, this.attachEvents(); } attachEvents() { const { nav: t, target: e } = this; t && e && (t.options.initialSlide = e.options.initialPage, t.state === $9970b34361e607e2$var$B.Ready ? this.onNavReady(t) : t.on("ready", this.onNavReady), e.state === $9970b34361e607e2$var$B.Ready ? this.onTargetReady(e) : e.on("ready", this.onTargetReady)); } onNavReady(t) { t.on("createSlide", this.onNavCreateSlide), t.on("Panzoom.click", this.onNavClick), t.on("Panzoom.touchEnd", this.onNavTouch), this.onTargetChange(); } onTargetReady(t) { t.on("change", this.onTargetChange), t.on("Panzoom.refresh", this.onTargetChange), this.onTargetChange(); } onNavClick(t, e, i) { this.onNavTouch(t, t.panzoom, i); } onNavTouch(t, e, i) { var n, s; if (Math.abs(e.dragOffset.x) > 3 || Math.abs(e.dragOffset.y) > 3) return; const o = i.target, { nav: a, target: r } = this; if (!a || !r || !o) return; const l = o.closest("[data-index]"); if (i.stopPropagation(), i.preventDefault(), !l) return; const c = parseInt(l.dataset.index || "", 10) || 0, h = r.getPageForSlide(c), d = a.getPageForSlide(c); a.slideTo(d), r.slideTo(h, { friction: (null === (s = null === (n = this.nav) || void 0 === n ? void 0 : n.plugins) || void 0 === s ? void 0 : s.Sync.option("friction")) || 0 }), this.markSelectedSlide(c); } onNavCreateSlide(t, e) { e.index === this.selectedIndex && this.markSelectedSlide(e.index); } onTargetChange() { var t, e; const { target: i, nav: n } = this; if (!i || !n) return; if (n.state !== $9970b34361e607e2$var$B.Ready || i.state !== $9970b34361e607e2$var$B.Ready) return; const s = null === (e = null === (t = i.pages[i.page]) || void 0 === t ? void 0 : t.slides[0]) || void 0 === e ? void 0 : e.index, o = n.getPageForSlide(s); this.markSelectedSlide(s), n.slideTo(o, null === n.prevPage && null === i.prevPage ? { friction: 0 } : void 0); } markSelectedSlide(t) { const e = this.nav; e && e.state === $9970b34361e607e2$var$B.Ready && (this.selectedIndex = t, [ ...e.slides ].map((e)=>{ e.el && e.el.classList[e.index === t ? "add" : "remove"]("is-nav-selected"); })); } attach() { const t = this; let e = t.options.target, i = t.options.nav; e ? t.addAsNavFor(e) : i && t.addAsTargetFor(i); } detach() { const t = this, e = t.nav, i = t.target; e && (e.off("ready", t.onNavReady), e.off("createSlide", t.onNavCreateSlide), e.off("Panzoom.click", t.onNavClick), e.off("Panzoom.touchEnd", t.onNavTouch)), t.nav = null, i && (i.off("ready", t.onTargetReady), i.off("refresh", t.onTargetChange), i.off("change", t.onTargetChange)), t.target = null; } } Object.defineProperty($9970b34361e607e2$var$Z, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: { friction: .35 } }); const $9970b34361e607e2$var$U = { Navigation: $9970b34361e607e2$var$V, Dots: $9970b34361e607e2$var$W, Sync: $9970b34361e607e2$var$Z }, $9970b34361e607e2$var$G = "animationend", $9970b34361e607e2$var$K = "isSelected", $9970b34361e607e2$var$J = "slide"; class $9970b34361e607e2$export$144901db2ea8e967 extends $9970b34361e607e2$var$g { get axis() { return this.isHorizontal ? "e" : "f"; } get isEnabled() { return this.state === $9970b34361e607e2$var$B.Ready; } get isInfinite() { let t = !1; const { contentDim: e, viewportDim: i, pages: n, slides: s } = this, o = s[0]; return n.length >= 2 && o && e + o.dim >= i && (t = this.option("infinite")), t; } get isRTL() { return "rtl" === this.option("direction"); } get isHorizontal() { return "x" === this.option("axis"); } constructor(t, e = {}, i = {}){ if (super(), Object.defineProperty(this, "bp", { enumerable: !0, configurable: !0, writable: !0, value: "" }), Object.defineProperty(this, "lp", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "userOptions", { enumerable: !0, configurable: !0, writable: !0, value: {} }), Object.defineProperty(this, "userPlugins", { enumerable: !0, configurable: !0, writable: !0, value: {} }), Object.defineProperty(this, "state", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$B.Init }), Object.defineProperty(this, "page", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "prevPage", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "container", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), Object.defineProperty(this, "viewport", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "track", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "slides", { enumerable: !0, configurable: !0, writable: !0, value: [] }), Object.defineProperty(this, "pages", { enumerable: !0, configurable: !0, writable: !0, value: [] }), Object.defineProperty(this, "panzoom", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "inTransition", { enumerable: !0, configurable: !0, writable: !0, value: new Set }), Object.defineProperty(this, "contentDim", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "viewportDim", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), "string" == typeof t && (t = document.querySelector(t)), !t || !$9970b34361e607e2$var$E(t)) throw new Error("No Element found"); this.container = t, this.slideNext = $9970b34361e607e2$var$D(this.slideNext.bind(this), 150), this.slidePrev = $9970b34361e607e2$var$D(this.slidePrev.bind(this), 150), this.userOptions = e, this.userPlugins = i, queueMicrotask(()=>{ this.processOptions(); }); } processOptions() { var t, e; const i = $9970b34361e607e2$var$u({}, $9970b34361e607e2$export$144901db2ea8e967.defaults, this.userOptions); let n = ""; const s = i.breakpoints; if (s && $9970b34361e607e2$var$d(s)) for (const [t, e] of Object.entries(s))window.matchMedia(t).matches && $9970b34361e607e2$var$d(e) && (n += t, $9970b34361e607e2$var$u(i, e)); n === this.bp && this.state !== $9970b34361e607e2$var$B.Init || (this.bp = n, this.state === $9970b34361e607e2$var$B.Ready && (i.initialSlide = (null === (e = null === (t = this.pages[this.page]) || void 0 === t ? void 0 : t.slides[0]) || void 0 === e ? void 0 : e.index) || 0), this.state !== $9970b34361e607e2$var$B.Init && this.destroy(), super.setOptions(i), !1 === this.option("enabled") ? this.attachEvents() : setTimeout(()=>{ this.init(); }, 0)); } init() { this.state = $9970b34361e607e2$var$B.Init, this.emit("init"), this.attachPlugins(Object.assign(Object.assign({}, $9970b34361e607e2$export$144901db2ea8e967.Plugins), this.userPlugins)), this.emit("attachPlugins"), this.initLayout(), this.initSlides(), this.updateMetrics(), this.setInitialPosition(), this.initPanzoom(), this.attachEvents(), this.state = $9970b34361e607e2$var$B.Ready, this.emit("ready"); } initLayout() { const { container: t } = this, e = this.option("classes"); $9970b34361e607e2$var$P(t, this.cn("container")), $9970b34361e607e2$var$o(t, e.isLTR, !this.isRTL), $9970b34361e607e2$var$o(t, e.isRTL, this.isRTL), $9970b34361e607e2$var$o(t, e.isVertical, !this.isHorizontal), $9970b34361e607e2$var$o(t, e.isHorizontal, this.isHorizontal); let i = this.option("viewport") || t.querySelector(`.${e.viewport}`); i || (i = document.createElement("div"), $9970b34361e607e2$var$P(i, e.viewport), i.append(...$9970b34361e607e2$var$F(t, `.${e.slide}`)), t.prepend(i)), i.addEventListener("scroll", this.onScroll); let n = this.option("track") || t.querySelector(`.${e.track}`); n || (n = document.createElement("div"), $9970b34361e607e2$var$P(n, e.track), n.append(...Array.from(i.childNodes))), n.setAttribute("aria-live", "polite"), i.contains(n) || i.prepend(n), this.viewport = i, this.track = n, this.emit("initLayout"); } initSlides() { const { track: t } = this; if (!t) return; const e = [ ...this.slides ], i = []; [ ...$9970b34361e607e2$var$F(t, `.${this.cn($9970b34361e607e2$var$J)}`) ].forEach((t)=>{ if ($9970b34361e607e2$var$E(t)) { const e = $9970b34361e607e2$var$H({ el: t, isDom: !0, index: this.slides.length }); i.push(e); } }); for (let t of [ ...this.option("slides", []) || [], ...e ])i.push($9970b34361e607e2$var$H(t)); this.slides = i; for(let t = 0; t < this.slides.length; t++)this.slides[t].index = t; for (const t of i)this.emit("beforeInitSlide", t, t.index), this.emit("initSlide", t, t.index); this.emit("initSlides"); } setInitialPage() { const t = this.option("initialSlide"); this.page = "number" == typeof t ? this.getPageForSlide(t) : parseInt(this.option("initialPage", 0) + "", 10) || 0; } setInitialPosition() { const { track: t, pages: e, isHorizontal: i } = this; if (!t || !e.length) return; let n = this.page; e[n] || (this.page = n = 0); const s = (e[n].pos || 0) * (this.isRTL && i ? 1 : -1), o = i ? `${s}px` : "0", a = i ? "0" : `${s}px`; t.style.transform = `translate3d(${o}, ${a}, 0) scale(1)`, this.option("adaptiveHeight") && this.setViewportHeight(); } initPanzoom() { this.panzoom && (this.panzoom.destroy(), this.panzoom = null); const t = this.option("Panzoom") || {}; this.panzoom = new $9970b34361e607e2$export$b704d075ddd20210(this.viewport, $9970b34361e607e2$var$u({}, { content: this.track, zoom: !1, panOnlyZoomed: !1, lockAxis: this.isHorizontal ? "x" : "y", infinite: this.isInfinite, click: !1, dblClick: !1, touch: (t)=>!(this.pages.length < 2 && !t.options.infinite), bounds: ()=>this.getBounds(), maxVelocity: (t)=>Math.abs(t.target[this.axis] - t.current[this.axis]) < 2 * this.viewportDim ? 100 : 0 }, t)), this.panzoom.on("*", (t, e, ...i)=>{ this.emit(`Panzoom.${e}`, t, ...i); }), this.panzoom.on("decel", this.onDecel), this.panzoom.on("refresh", this.onRefresh), this.panzoom.on("beforeTransform", this.onBeforeTransform), this.panzoom.on("endAnimation", this.onEndAnimation); } attachEvents() { const t = this.container; t && (t.addEventListener("click", this.onClick, { passive: !1, capture: !1 }), t.addEventListener("slideTo", this.onSlideTo)), window.addEventListener("resize", this.onResize); } createPages() { let t = []; const { contentDim: e, viewportDim: i } = this; let n = this.option("slidesPerPage"); n = ("auto" === n || e <= i) && !1 !== this.option("fill") ? 1 / 0 : parseFloat(n + ""); let s = 0, o = 0, a = 0; for (const e of this.slides)(!t.length || o + e.dim - i > .05 || a >= n) && (t.push($9970b34361e607e2$var$N()), s = t.length - 1, o = 0, a = 0), t[s].slides.push(e), o += e.dim + e.gap, a++; return t; } processPages() { const e = this.pages, { contentDim: i, viewportDim: n, isInfinite: s } = this, o = this.option("center"), a = this.option("fill"), r = a && o && i > n && !s; if (e.forEach((t, e)=>{ var s; t.index = e, t.pos = (null === (s = t.slides[0]) || void 0 === s ? void 0 : s.pos) || 0, t.dim = 0; for (const [e, i] of t.slides.entries())t.dim += i.dim, e < t.slides.length - 1 && (t.dim += i.gap); r && t.pos + .5 * t.dim < .5 * n ? t.pos = 0 : r && t.pos + .5 * t.dim >= i - .5 * n ? t.pos = i - n : o && (t.pos += -0.5 * (n - t.dim)); }), e.forEach((e)=>{ a && !s && i > n && (e.pos = Math.max(e.pos, 0), e.pos = Math.min(e.pos, i - n)), e.pos = $9970b34361e607e2$var$t(e.pos, 1e3), e.dim = $9970b34361e607e2$var$t(e.dim, 1e3), Math.abs(e.pos) <= .1 && (e.pos = 0); }), s) return e; const l = []; let c; return e.forEach((t)=>{ const e = Object.assign({}, t); c && e.pos === c.pos ? (c.dim += e.dim, c.slides = [ ...c.slides, ...e.slides ]) : (e.index = l.length, c = e, l.push(e)); }), l; } getPageFromIndex(t = 0) { const e = this.pages.length; let i; return t = parseInt((t || 0).toString()) || 0, i = this.isInfinite ? (t % e + e) % e : Math.max(Math.min(t, e - 1), 0), i; } getSlideMetrics(e) { var i, n; const s = this.isHorizontal ? "width" : "height"; let o = 0, a = 0, r = e.el; const l = !(!r || r.parentNode); if (r ? o = parseFloat(r.dataset[s] || "") || 0 : (r = document.createElement("div"), r.style.visibility = "hidden", (this.track || document.body).prepend(r)), $9970b34361e607e2$var$P(r, this.cn($9970b34361e607e2$var$J) + " " + e.class + " " + e.customClass), o) r.style[s] = `${o}px`, r.style["width" === s ? "height" : "width"] = ""; else { l && (this.track || document.body).prepend(r), o = r.getBoundingClientRect()[s] * Math.max(1, (null === (i = window.visualViewport) || void 0 === i ? void 0 : i.scale) || 1); let t = r[this.isHorizontal ? "offsetWidth" : "offsetHeight"]; t - 1 > o && (o = t); } const c = getComputedStyle(r); return "content-box" === c.boxSizing && (this.isHorizontal ? (o += parseFloat(c.paddingLeft) || 0, o += parseFloat(c.paddingRight) || 0) : (o += parseFloat(c.paddingTop) || 0, o += parseFloat(c.paddingBottom) || 0)), a = parseFloat(c[this.isHorizontal ? "marginRight" : "marginBottom"]) || 0, l ? null === (n = r.parentElement) || void 0 === n || n.removeChild(r) : e.el || r.remove(), { dim: $9970b34361e607e2$var$t(o, 1e3), gap: $9970b34361e607e2$var$t(a, 1e3) }; } getBounds() { const { isInfinite: t, isRTL: e, isHorizontal: i, pages: n } = this; let s = { min: 0, max: 0 }; if (t) s = { min: -1 / 0, max: 1 / 0 }; else if (n.length) { const t = n[0].pos, o = n[n.length - 1].pos; s = e && i ? { min: t, max: o } : { min: -1 * o, max: -1 * t }; } return { x: i ? s : { min: 0, max: 0 }, y: i ? { min: 0, max: 0 } : s }; } repositionSlides() { let e, { isHorizontal: i, isRTL: n, isInfinite: s, viewport: o, viewportDim: a, contentDim: r, page: l, pages: c, slides: h, panzoom: d } = this, u = 0, p = 0, f = 0, g = 0; d ? g = -1 * d.current[this.axis] : c[l] && (g = c[l].pos || 0), e = i ? n ? "right" : "left" : "top", n && i && (g *= -1); for (const i of h){ const n = i.el; n ? ("top" === e ? (n.style.right = "", n.style.left = "") : n.style.top = "", i.index !== u ? n.style[e] = 0 === p ? "" : `${$9970b34361e607e2$var$t(p, 1e3)}px` : n.style[e] = "", f += i.dim + i.gap, u++) : p += i.dim + i.gap; } if (s && f && o) { let n = getComputedStyle(o), s = "padding", l = i ? "Right" : "Bottom", c = parseFloat(n[s + (i ? "Left" : "Top")]); g -= c, a += c, a += parseFloat(n[s + l]); for (const i of h)i.el && ($9970b34361e607e2$var$t(i.pos) < $9970b34361e607e2$var$t(a) && $9970b34361e607e2$var$t(i.pos + i.dim + i.gap) < $9970b34361e607e2$var$t(g) && $9970b34361e607e2$var$t(g) > $9970b34361e607e2$var$t(r - a) && (i.el.style[e] = `${$9970b34361e607e2$var$t(p + f, 1e3)}px`), $9970b34361e607e2$var$t(i.pos + i.gap) >= $9970b34361e607e2$var$t(r - a) && $9970b34361e607e2$var$t(i.pos) > $9970b34361e607e2$var$t(g + a) && $9970b34361e607e2$var$t(g) < $9970b34361e607e2$var$t(a) && (i.el.style[e] = `-${$9970b34361e607e2$var$t(f, 1e3)}px`)); } let m, v, b = [ ...this.inTransition ]; if (b.length > 1 && (m = c[b[0]], v = c[b[1]]), m && v) { let i = 0; for (const n of h)n.el ? this.inTransition.has(n.index) && m.slides.indexOf(n) < 0 && (n.el.style[e] = `${$9970b34361e607e2$var$t(i + (m.pos - v.pos), 1e3)}px`) : i += n.dim + n.gap; } } createSlideEl(t) { const { track: e, slides: i } = this; if (!e || !t) return; if (t.el && t.el.parentNode) return; const n = t.el || document.createElement("div"); $9970b34361e607e2$var$P(n, this.cn($9970b34361e607e2$var$J)), $9970b34361e607e2$var$P(n, t.class), $9970b34361e607e2$var$P(n, t.customClass); const s = t.html; s && (s instanceof HTMLElement ? n.appendChild(s) : n.innerHTML = t.html + ""); const o = []; i.forEach((t, e)=>{ t.el && o.push(e); }); const a = t.index; let r = null; if (o.length) r = i[o.reduce((t, e)=>Math.abs(e - a) < Math.abs(t - a) ? e : t)]; const l = r && r.el && r.el.parentNode ? r.index < t.index ? r.el.nextSibling : r.el : null; e.insertBefore(n, e.contains(l) ? l : null), t.el = n, this.emit("createSlide", t); } removeSlideEl(t, e = !1) { const i = null == t ? void 0 : t.el; if (!i || !i.parentNode) return; const n = this.cn($9970b34361e607e2$var$K); if (i.classList.contains(n) && ($9970b34361e607e2$var$S(i, n), this.emit("unselectSlide", t)), t.isDom && !e) return i.removeAttribute("aria-hidden"), i.removeAttribute("data-index"), void (i.style.left = ""); this.emit("removeSlide", t); const s = new CustomEvent($9970b34361e607e2$var$G); i.dispatchEvent(s), t.el && (t.el.remove(), t.el = null); } transitionTo(t = 0, e = this.option("transition")) { var i, n, s, o; if (!e) return !1; const a = this.page, { pages: r, panzoom: l } = this; t = parseInt((t || 0).toString()) || 0; const c = this.getPageFromIndex(t); if (!l || !r[c] || r.length < 2 || Math.abs(((null === (n = null === (i = r[a]) || void 0 === i ? void 0 : i.slides[0]) || void 0 === n ? void 0 : n.dim) || 0) - this.viewportDim) > 1) return !1; let h = t > a ? 1 : -1; this.isInfinite && (0 === a && t === r.length - 1 && (h = -1), a === r.length - 1 && 0 === t && (h = 1)); const d = r[c].pos * (this.isRTL ? 1 : -1); if (a === c && Math.abs(d - l.target[this.axis]) < 1) return !1; this.clearTransitions(); const u = l.isResting; $9970b34361e607e2$var$P(this.container, this.cn("inTransition")); const p = (null === (s = r[a]) || void 0 === s ? void 0 : s.slides[0]) || null, f = (null === (o = r[c]) || void 0 === o ? void 0 : o.slides[0]) || null; this.inTransition.add(f.index), this.createSlideEl(f); let g = p.el, m = f.el; u || e === $9970b34361e607e2$var$J || (e = "fadeFast", g = null); const v = this.isRTL ? "next" : "prev", b = this.isRTL ? "prev" : "next"; return g && (this.inTransition.add(p.index), p.transition = e, g.addEventListener($9970b34361e607e2$var$G, this.onAnimationEnd), g.classList.add(`f-${e}Out`, `to-${h > 0 ? b : v}`)), m && (f.transition = e, m.addEventListener($9970b34361e607e2$var$G, this.onAnimationEnd), m.classList.add(`f-${e}In`, `from-${h > 0 ? v : b}`)), l.current[this.axis] = d, l.target[this.axis] = d, l.requestTick(), this.onChange(c), !0; } manageSlideVisiblity() { const t = new Set, e = new Set, i = this.getVisibleSlides(parseFloat(this.option("preload", 0) + "") || 0); for (const n of this.slides)i.has(n) ? t.add(n) : e.add(n); for (const e of this.inTransition)t.add(this.slides[e]); for (const e of t)this.createSlideEl(e), this.lazyLoadSlide(e); for (const i of e)t.has(i) || this.removeSlideEl(i); this.markSelectedSlides(), this.repositionSlides(); } markSelectedSlides() { if (!this.pages[this.page] || !this.pages[this.page].slides) return; const t = "aria-hidden"; let e = this.cn($9970b34361e607e2$var$K); if (e) for (const i of this.slides){ const n = i.el; n && (n.dataset.index = `${i.index}`, n.classList.contains("f-thumbs__slide") ? this.getVisibleSlides(0).has(i) ? n.removeAttribute(t) : n.setAttribute(t, "true") : this.pages[this.page].slides.includes(i) ? (n.classList.contains(e) || ($9970b34361e607e2$var$P(n, e), this.emit("selectSlide", i)), n.removeAttribute(t)) : (n.classList.contains(e) && ($9970b34361e607e2$var$S(n, e), this.emit("unselectSlide", i)), n.setAttribute(t, "true"))); } } flipInfiniteTrack() { const { axis: t, isHorizontal: e, isInfinite: i, isRTL: n, viewportDim: s, contentDim: o } = this, a = this.panzoom; if (!a || !i) return; let r = a.current[t], l = a.target[t] - r, c = 0, h = .5 * s; n && e ? (r < -h && (c = -1, r += o), r > o - h && (c = 1, r -= o)) : (r > h && (c = 1, r -= o), r < -o + h && (c = -1, r += o)), c && (a.current[t] = r, a.target[t] = r + l); } lazyLoadImg(t, e) { const i = this, s = "f-fadeIn", o = "is-preloading"; let a = !1, r = null; const l = ()=>{ a || (a = !0, r && (r.remove(), r = null), $9970b34361e607e2$var$S(e, o), e.complete && ($9970b34361e607e2$var$P(e, s), setTimeout(()=>{ $9970b34361e607e2$var$S(e, s); }, 350)), this.option("adaptiveHeight") && t.el && this.pages[this.page].slides.indexOf(t) > -1 && (i.updateMetrics(), i.setViewportHeight()), this.emit("load", t)); }; $9970b34361e607e2$var$P(e, o), e.src = e.dataset.lazySrcset || e.dataset.lazySrc || "", delete e.dataset.lazySrc, delete e.dataset.lazySrcset, e.addEventListener("error", ()=>{ l(); }), e.addEventListener("load", ()=>{ l(); }), setTimeout(()=>{ const i = e.parentNode; i && t.el && (e.complete ? l() : a || (r = $9970b34361e607e2$var$n($9970b34361e607e2$var$x), i.insertBefore(r, e))); }, 300); } lazyLoadSlide(t) { const e = t && t.el; if (!e) return; const i = new Set; let n = Array.from(e.querySelectorAll("[data-lazy-src],[data-lazy-srcset]")); e.dataset.lazySrc && n.push(e), n.map((t)=>{ t instanceof HTMLImageElement ? i.add(t) : t instanceof HTMLElement && t.dataset.lazySrc && (t.style.backgroundImage = `url('${t.dataset.lazySrc}')`, delete t.dataset.lazySrc); }); for (const e of i)this.lazyLoadImg(t, e); } onAnimationEnd(t) { var e; const i = t.target, n = i ? parseInt(i.dataset.index || "", 10) || 0 : -1, s = this.slides[n], o = t.animationName; if (!i || !s || !o) return; const a = !!this.inTransition.has(n) && s.transition; a && o.substring(0, a.length + 2) === `f-${a}` && this.inTransition.delete(n), this.inTransition.size || this.clearTransitions(), n === this.page && (null === (e = this.panzoom) || void 0 === e ? void 0 : e.isResting) && this.emit("settle"); } onDecel(t, e = 0, i = 0, n = 0, s = 0) { if (this.option("dragFree")) return void this.setPageFromPosition(); const { isRTL: o, isHorizontal: a, axis: r, pages: l } = this, c = l.length, h = Math.abs(Math.atan2(i, e) / (Math.PI / 180)); let d = 0; if (d = h > 45 && h < 135 ? a ? 0 : i : a ? e : 0, !c) return; let u = this.page, p = o && a ? 1 : -1; const f = t.current[r] * p; let { pageIndex: g } = this.getPageFromPosition(f); Math.abs(d) > 5 ? (l[u].dim < document.documentElement["client" + (this.isHorizontal ? "Width" : "Height")] - 1 && (u = g), u = o && a ? d < 0 ? u - 1 : u + 1 : d < 0 ? u + 1 : u - 1) : u = 0 === n && 0 === s ? u : g, this.slideTo(u, { transition: !1, friction: t.option("decelFriction") }); } onClick(t) { const e = t.target, i = e && $9970b34361e607e2$var$E(e) ? e.dataset : null; let n, s; i && (void 0 !== i.carouselPage ? (s = "slideTo", n = i.carouselPage) : void 0 !== i.carouselNext ? s = "slideNext" : void 0 !== i.carouselPrev && (s = "slidePrev")), s ? (t.preventDefault(), t.stopPropagation(), e && !e.hasAttribute("disabled") && this[s](n)) : this.emit("click", t); } onSlideTo(t) { const e = t.detail || 0; this.slideTo(this.getPageForSlide(e), { friction: 0 }); } onChange(t, e = 0) { const i = this.page; this.prevPage = i, this.page = t, this.option("adaptiveHeight") && this.setViewportHeight(), t !== i && (this.markSelectedSlides(), this.emit("change", t, i, e)); } onRefresh() { let t = this.contentDim, e = this.viewportDim; this.updateMetrics(), this.contentDim === t && this.viewportDim === e || this.slideTo(this.page, { friction: 0, transition: !1 }); } onScroll() { var t; null === (t = this.viewport) || void 0 === t || t.scroll(0, 0); } onResize() { this.option("breakpoints") && this.processOptions(); } onBeforeTransform(t) { this.lp !== t.current[this.axis] && (this.flipInfiniteTrack(), this.manageSlideVisiblity()), this.lp = t.current.e; } onEndAnimation() { this.inTransition.size || this.emit("settle"); } reInit(t = null, e = null) { this.destroy(), this.state = $9970b34361e607e2$var$B.Init, this.prevPage = null, this.userOptions = t || this.userOptions, this.userPlugins = e || this.userPlugins, this.processOptions(); } slideTo(t = 0, { friction: e = this.option("friction"), transition: i = this.option("transition") } = {}) { if (this.state === $9970b34361e607e2$var$B.Destroy) return; t = parseInt((t || 0).toString()) || 0; const n = this.getPageFromIndex(t), { axis: s, isHorizontal: o, isRTL: a, pages: r, panzoom: l } = this, c = r.length, h = a && o ? 1 : -1; if (!l || !c) return; if (this.page !== n) { const e = new Event("beforeChange", { bubbles: !0, cancelable: !0 }); if (this.emit("beforeChange", e, t), e.defaultPrevented) return; } if (this.transitionTo(t, i)) return; let d = r[n].pos; if (this.isInfinite) { const e = this.contentDim, i = l.target[s] * h; if (2 === c) d += e * Math.floor(parseFloat(t + "") / 2); else d = [ d, d - e, d + e ].reduce(function(t, e) { return Math.abs(e - i) < Math.abs(t - i) ? e : t; }); } d *= h, Math.abs(l.target[s] - d) < 1 || (l.panTo({ x: o ? d : 0, y: o ? 0 : d, friction: e }), this.onChange(n)); } slideToClosest(t) { if (this.panzoom) { const { pageIndex: e } = this.getPageFromPosition(); this.slideTo(e, t); } } slideNext() { this.slideTo(this.page + 1); } slidePrev() { this.slideTo(this.page - 1); } clearTransitions() { this.inTransition.clear(), $9970b34361e607e2$var$S(this.container, this.cn("inTransition")); const t = [ "to-prev", "to-next", "from-prev", "from-next" ]; for (const e of this.slides){ const i = e.el; if (i) { i.removeEventListener($9970b34361e607e2$var$G, this.onAnimationEnd), i.classList.remove(...t); const n = e.transition; n && i.classList.remove(`f-${n}Out`, `f-${n}In`); } } this.manageSlideVisiblity(); } addSlide(t, e) { var i, n, s, o; const a = this.panzoom, r = (null === (i = this.pages[this.page]) || void 0 === i ? void 0 : i.pos) || 0, l = (null === (n = this.pages[this.page]) || void 0 === n ? void 0 : n.dim) || 0, c = this.contentDim < this.viewportDim; let h = Array.isArray(e) ? e : [ e ]; const d = []; for (const t of h)d.push($9970b34361e607e2$var$H(t)); this.slides.splice(t, 0, ...d); for(let t = 0; t < this.slides.length; t++)this.slides[t].index = t; for (const t of d)this.emit("beforeInitSlide", t, t.index); if (this.page >= t && (this.page += d.length), this.updateMetrics(), a) { const e = (null === (s = this.pages[this.page]) || void 0 === s ? void 0 : s.pos) || 0, i = (null === (o = this.pages[this.page]) || void 0 === o ? void 0 : o.dim) || 0, n = this.pages.length || 1, h = this.isRTL ? l - i : i - l, d = this.isRTL ? r - e : e - r; c && 1 === n ? (t <= this.page && (a.current[this.axis] -= h, a.target[this.axis] -= h), a.panTo({ [this.isHorizontal ? "x" : "y"]: -1 * e })) : d && t <= this.page && (a.target[this.axis] -= d, a.current[this.axis] -= d, a.requestTick()); } for (const t of d)this.emit("initSlide", t, t.index); } prependSlide(t) { this.addSlide(0, t); } appendSlide(t) { this.addSlide(this.slides.length, t); } removeSlide(t) { const e = this.slides.length; t = (t % e + e) % e; const i = this.slides[t]; if (i) { this.removeSlideEl(i, !0), this.slides.splice(t, 1); for(let t = 0; t < this.slides.length; t++)this.slides[t].index = t; this.updateMetrics(), this.slideTo(this.page, { friction: 0, transition: !1 }), this.emit("destroySlide", i); } } updateMetrics() { const { panzoom: e, viewport: i, track: n, slides: s, isHorizontal: o, isInfinite: a } = this; if (!n) return; const r = o ? "width" : "height", l = o ? "offsetWidth" : "offsetHeight"; if (i) { let e = Math.max(i[l], $9970b34361e607e2$var$t(i.getBoundingClientRect()[r], 1e3)), n = getComputedStyle(i), s = "padding", a = o ? "Right" : "Bottom"; e -= parseFloat(n[s + (o ? "Left" : "Top")]) + parseFloat(n[s + a]), this.viewportDim = e; } let c, h = 0; for (const [e, i] of s.entries()){ let n = 0, o = 0; !i.el && c ? (n = c.dim, o = c.gap) : ({ dim: n, gap: o } = this.getSlideMetrics(i), c = i), n = $9970b34361e607e2$var$t(n, 1e3), o = $9970b34361e607e2$var$t(o, 1e3), i.dim = n, i.gap = o, i.pos = h, h += n, (a || e < s.length - 1) && (h += o); } h = $9970b34361e607e2$var$t(h, 1e3), this.contentDim = h, e && (e.contentRect[r] = h, e.contentRect[o ? "fullWidth" : "fullHeight"] = h), this.pages = this.createPages(), this.pages = this.processPages(), this.state === $9970b34361e607e2$var$B.Init && this.setInitialPage(), this.page = Math.max(0, Math.min(this.page, this.pages.length - 1)), this.manageSlideVisiblity(), this.emit("refresh"); } getProgress(e, i = !1, n = !1) { void 0 === e && (e = this.page); const s = this, o = s.panzoom, a = s.contentDim, r = s.pages[e] || 0; if (!r || !o) return e > this.page ? -1 : 1; let l = -1 * o.current.e, c = $9970b34361e607e2$var$t((l - r.pos) / (1 * r.dim), 1e3), h = c, d = c; this.isInfinite && !0 !== n && (h = $9970b34361e607e2$var$t((l - r.pos + a) / (1 * r.dim), 1e3), d = $9970b34361e607e2$var$t((l - r.pos - a) / (1 * r.dim), 1e3)); let u = [ c, h, d ].reduce(function(t, e) { return Math.abs(e) < Math.abs(t) ? e : t; }); return i ? u : u > 1 ? 1 : u < -1 ? -1 : u; } setViewportHeight() { const { page: t, pages: e, viewport: i, isHorizontal: n } = this; if (!i || !e[t]) return; let s = 0; n && this.track && (this.track.style.height = "auto", e[t].slides.forEach((t)=>{ t.el && (s = Math.max(s, t.el.offsetHeight)); })), i.style.height = s ? `${s}px` : ""; } getPageForSlide(t) { for (const e of this.pages)for (const i of e.slides)if (i.index === t) return e.index; return -1; } getVisibleSlides(t = 0) { var e; const i = new Set; let { panzoom: n, contentDim: s, viewportDim: o, pages: a, page: r } = this; if (o) { s = s + (null === (e = this.slides[this.slides.length - 1]) || void 0 === e ? void 0 : e.gap) || 0; let l = 0; l = n && n.state !== $9970b34361e607e2$var$m.Init && n.state !== $9970b34361e607e2$var$m.Destroy ? -1 * n.current[this.axis] : a[r] && a[r].pos || 0, this.isInfinite && (l -= Math.floor(l / s) * s), this.isRTL && this.isHorizontal && (l *= -1); const c = l - o * t, h = l + o * (t + 1), d = this.isInfinite ? [ -1, 0, 1 ] : [ 0 ]; for (const t of this.slides)for (const e of d){ const n = t.pos + e * s, o = n + t.dim + t.gap; n < h && o > c && i.add(t); } } return i; } getPageFromPosition(t) { const { viewportDim: e, contentDim: i, slides: n, pages: s, panzoom: o } = this, a = s.length, r = n.length, l = n[0], c = n[r - 1], h = this.option("center"); let d = 0, u = 0, p = 0, f = void 0 === t ? -1 * ((null == o ? void 0 : o.target[this.axis]) || 0) : t; h && (f += .5 * e), this.isInfinite ? (f < l.pos - .5 * c.gap && (f -= i, p = -1), f > c.pos + c.dim + .5 * c.gap && (f -= i, p = 1)) : f = Math.max(l.pos || 0, Math.min(f, c.pos)); let g = c, m = n.find((t)=>{ const e = t.pos - .5 * g.gap, i = t.pos + t.dim + .5 * t.gap; return g = t, f >= e && f < i; }); return m || (m = c), u = this.getPageForSlide(m.index), d = u + p * a, { page: d, pageIndex: u }; } setPageFromPosition() { const { pageIndex: t } = this.getPageFromPosition(); this.onChange(t); } destroy() { if ([ $9970b34361e607e2$var$B.Destroy ].includes(this.state)) return; this.state = $9970b34361e607e2$var$B.Destroy; const { container: t, viewport: e, track: i, slides: n, panzoom: s } = this, o = this.option("classes"); t.removeEventListener("click", this.onClick, { passive: !1, capture: !1 }), t.removeEventListener("slideTo", this.onSlideTo), window.removeEventListener("resize", this.onResize), s && (s.destroy(), this.panzoom = null), n && n.forEach((t)=>{ this.removeSlideEl(t); }), this.detachPlugins(), e && (e.removeEventListener("scroll", this.onScroll), e.offsetParent && i && i.offsetParent && e.replaceWith(...i.childNodes)); for (const [e, i] of Object.entries(o))"container" !== e && i && t.classList.remove(i); this.track = null, this.viewport = null, this.page = 0, this.slides = []; const a = this.events.get("ready"); this.events = new Map, a && this.events.set("ready", a); } } Object.defineProperty($9970b34361e607e2$export$144901db2ea8e967, "Panzoom", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$export$b704d075ddd20210 }), Object.defineProperty($9970b34361e607e2$export$144901db2ea8e967, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$j }), Object.defineProperty($9970b34361e607e2$export$144901db2ea8e967, "Plugins", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$U }); const $9970b34361e607e2$var$tt = function(t) { if (!$9970b34361e607e2$var$E(t)) return 0; const e = window.scrollY, i = window.innerHeight, n = e + i, s = t.getBoundingClientRect(), o = s.y + e, a = s.height, r = o + a; if (e > r || n < o) return 0; if (e < o && n > r) return 100; if (o < e && r > n) return 100; let l = a; o < e && (l -= e - o), r > n && (l -= r - n); const c = l / i * 100; return Math.round(c); }, $9970b34361e607e2$var$et = !("undefined" == typeof window || !window.document || !window.document.createElement); let $9970b34361e607e2$var$it; const $9970b34361e607e2$var$nt = [ "a[href]", "area[href]", 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])', "select:not([disabled]):not([aria-hidden])", "textarea:not([disabled]):not([aria-hidden])", "button:not([disabled]):not([aria-hidden]):not(.fancybox-focus-guard)", "iframe", "object", "embed", "video", "audio", "[contenteditable]", '[tabindex]:not([tabindex^="-"]):not([disabled]):not([aria-hidden])' ].join(","), $9970b34361e607e2$var$st = (t)=>{ if (t && $9970b34361e607e2$var$et) { void 0 === $9970b34361e607e2$var$it && document.createElement("div").focus({ get preventScroll () { return $9970b34361e607e2$var$it = !0, !1; } }); try { if ($9970b34361e607e2$var$it) t.focus({ preventScroll: !0 }); else { const e = window.scrollY || document.body.scrollTop, i = window.scrollX || document.body.scrollLeft; t.focus(), document.body.scrollTo({ top: e, left: i, behavior: "auto" }); } } catch (t) {} } }, $9970b34361e607e2$var$ot = ()=>{ const t = document; let e, i = "", n = "", s = ""; return t.fullscreenEnabled ? (i = "requestFullscreen", n = "exitFullscreen", s = "fullscreenElement") : t.webkitFullscreenEnabled && (i = "webkitRequestFullscreen", n = "webkitExitFullscreen", s = "webkitFullscreenElement"), i && (e = { request: function(e = t.documentElement) { return "webkitRequestFullscreen" === i ? e[i](Element.ALLOW_KEYBOARD_INPUT) : e[i](); }, exit: function() { return t[s] && t[n](); }, isFullscreen: function() { return t[s]; } }), e; }, $9970b34361e607e2$var$at = { animated: !0, autoFocus: !0, backdropClick: "close", Carousel: { classes: { container: "fancybox__carousel", viewport: "fancybox__viewport", track: "fancybox__track", slide: "fancybox__slide" } }, closeButton: "auto", closeExisting: !1, commonCaption: !1, compact: ()=>window.matchMedia("(max-width: 578px), (max-height: 578px)").matches, contentClick: "toggleZoom", contentDblClick: !1, defaultType: "image", defaultDisplay: "flex", dragToClose: !0, Fullscreen: { autoStart: !1 }, groupAll: !1, groupAttr: "data-fancybox", hideClass: "f-fadeOut", hideScrollbar: !0, idle: 3500, keyboard: { Escape: "close", Delete: "close", Backspace: "close", PageUp: "next", PageDown: "prev", ArrowUp: "prev", ArrowDown: "next", ArrowRight: "next", ArrowLeft: "prev" }, l10n: Object.assign(Object.assign({}, $9970b34361e607e2$var$b), { CLOSE: "Close", NEXT: "Next", PREV: "Previous", MODAL: "You can close this modal content with the ESC key", ERROR: "Something Went Wrong, Please Try Again Later", IMAGE_ERROR: "Image Not Found", ELEMENT_NOT_FOUND: "HTML Element Not Found", AJAX_NOT_FOUND: "Error Loading AJAX : Not Found", AJAX_FORBIDDEN: "Error Loading AJAX : Forbidden", IFRAME_ERROR: "Error Loading Page", TOGGLE_ZOOM: "Toggle zoom level", TOGGLE_THUMBS: "Toggle thumbnails", TOGGLE_SLIDESHOW: "Toggle slideshow", TOGGLE_FULLSCREEN: "Toggle full-screen mode", DOWNLOAD: "Download" }), parentEl: null, placeFocusBack: !0, showClass: "f-zoomInUp", startIndex: 0, tpl: { closeButton: '', main: '' }, trapFocus: !0, wheel: "zoom" }; var $9970b34361e607e2$var$rt, $9970b34361e607e2$var$lt; !function(t) { t[t.Init = 0] = "Init", t[t.Ready = 1] = "Ready", t[t.Closing = 2] = "Closing", t[t.CustomClosing = 3] = "CustomClosing", t[t.Destroy = 4] = "Destroy"; }($9970b34361e607e2$var$rt || ($9970b34361e607e2$var$rt = {})), function(t) { t[t.Loading = 0] = "Loading", t[t.Opening = 1] = "Opening", t[t.Ready = 2] = "Ready", t[t.Closing = 3] = "Closing"; }($9970b34361e607e2$var$lt || ($9970b34361e607e2$var$lt = {})); let $9970b34361e607e2$var$ct = "", $9970b34361e607e2$var$ht = !1, $9970b34361e607e2$var$dt = !1, $9970b34361e607e2$var$ut = null; const $9970b34361e607e2$var$pt = ()=>{ let t = "", e = ""; const i = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); if (i) { const n = i.carousel, s = i.getSlide(); if (n && s) { let o = s.slug || void 0, a = s.triggerEl || void 0; e = o || i.option("slug") || "", !e && a && a.dataset && (e = a.dataset.fancybox || ""), e && "true" !== e && (t = "#" + e + (!o && n.slides.length > 1 ? "-" + (s.index + 1) : "")); } } return { hash: t, slug: e, index: 1 }; }, $9970b34361e607e2$var$ft = ()=>{ const t = new URL(document.URL).hash, e = t.slice(1).split("-"), i = e[e.length - 1], n = i && /^\+?\d+$/.test(i) && parseInt(e.pop() || "1", 10) || 1; return { hash: t, slug: e.join("-"), index: n }; }, $9970b34361e607e2$var$gt = ()=>{ const { slug: t, index: e } = $9970b34361e607e2$var$ft(); if (!t) return; let i = document.querySelector(`[data-slug="${t}"]`); if (i && i.dispatchEvent(new CustomEvent("click", { bubbles: !0, cancelable: !0 })), $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance()) return; const n = document.querySelectorAll(`[data-fancybox="${t}"]`); n.length && (i = n[e - 1], i && i.dispatchEvent(new CustomEvent("click", { bubbles: !0, cancelable: !0 }))); }, $9970b34361e607e2$var$mt = ()=>{ if (!1 === $9970b34361e607e2$export$cb45b08d97cdc4fd.defaults.Hash) return; const t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); if (!1 === (null == t ? void 0 : t.options.Hash)) return; const { slug: e, index: i } = $9970b34361e607e2$var$ft(), { slug: n } = $9970b34361e607e2$var$pt(); t && (e === n ? t.jumpTo(i - 1) : ($9970b34361e607e2$var$ht = !0, t.close())), $9970b34361e607e2$var$gt(); }, $9970b34361e607e2$var$vt = ()=>{ $9970b34361e607e2$var$ut && clearTimeout($9970b34361e607e2$var$ut), queueMicrotask(()=>{ $9970b34361e607e2$var$mt(); }); }, $9970b34361e607e2$var$bt = ()=>{ window.addEventListener("hashchange", $9970b34361e607e2$var$vt, !1), setTimeout(()=>{ $9970b34361e607e2$var$mt(); }, 500); }; $9970b34361e607e2$var$et && (/complete|interactive|loaded/.test(document.readyState) ? $9970b34361e607e2$var$bt() : document.addEventListener("DOMContentLoaded", $9970b34361e607e2$var$bt)); const $9970b34361e607e2$var$yt = "is-zooming-in"; class $9970b34361e607e2$var$wt extends $9970b34361e607e2$var$_ { onCreateSlide(t, e, i) { const n = this.instance.optionFor(i, "src") || ""; i.el && "image" === i.type && "string" == typeof n && this.setImage(i, n); } onRemoveSlide(t, e, i) { i.panzoom && i.panzoom.destroy(), i.panzoom = void 0, i.imageEl = void 0; } onChange(t, e, i, n) { $9970b34361e607e2$var$S(this.instance.container, $9970b34361e607e2$var$yt); for (const t of e.slides){ const e = t.panzoom; e && t.index !== i && e.reset(.35); } } onClose() { var t; const e = this.instance, i = e.container, n = e.getSlide(); if (!i || !i.parentElement || !n) return; const { el: s, contentEl: o, panzoom: a, thumbElSrc: r } = n; if (!s || !r || !o || !a || a.isContentLoading || a.state === $9970b34361e607e2$var$m.Init || a.state === $9970b34361e607e2$var$m.Destroy) return; a.updateMetrics(); let l = this.getZoomInfo(n); if (!l) return; this.instance.state = $9970b34361e607e2$var$rt.CustomClosing, i.classList.remove($9970b34361e607e2$var$yt), i.classList.add("is-zooming-out"), o.style.backgroundImage = `url('${r}')`; const c = i.getBoundingClientRect(); 1 === ((null === (t = window.visualViewport) || void 0 === t ? void 0 : t.scale) || 1) && Object.assign(i.style, { position: "absolute", top: `${i.offsetTop + window.scrollY}px`, left: `${i.offsetLeft + window.scrollX}px`, bottom: "auto", right: "auto", width: `${c.width}px`, height: `${c.height}px`, overflow: "hidden" }); const { x: h, y: d, scale: u, opacity: p } = l; if (p) { const t = ((t, e, i, n)=>{ const s = e - t, o = n - i; return (e)=>i + ((e - t) / s * o || 0); })(a.scale, u, 1, 0); a.on("afterTransform", ()=>{ o.style.opacity = t(a.scale) + ""; }); } a.on("endAnimation", ()=>{ e.destroy(); }), a.target.a = u, a.target.b = 0, a.target.c = 0, a.target.d = u, a.panTo({ x: h, y: d, scale: u, friction: p ? .2 : .33, ignoreBounds: !0 }), a.isResting && e.destroy(); } setImage(t, e) { const i = this.instance; t.src = e, this.process(t, e).then((e)=>{ const { contentEl: n, imageEl: s, thumbElSrc: o, el: a } = t; if (i.isClosing() || !n || !s) return; n.offsetHeight; const r = !!i.isOpeningSlide(t) && this.getZoomInfo(t); if (this.option("protected") && a) { a.addEventListener("contextmenu", (t)=>{ t.preventDefault(); }); const t = document.createElement("div"); $9970b34361e607e2$var$P(t, "fancybox-protected"), n.appendChild(t); } if (o && r) { const s = e.contentRect, a = Math.max(s.fullWidth, s.fullHeight); let c = null; !r.opacity && a > 1200 && (c = document.createElement("img"), $9970b34361e607e2$var$P(c, "fancybox-ghost"), c.src = o, n.appendChild(c)); const h = ()=>{ c && ($9970b34361e607e2$var$P(c, "f-fadeFastOut"), setTimeout(()=>{ c && (c.remove(), c = null); }, 200)); }; (l = o, new Promise((t, e)=>{ const i = new Image; i.onload = t, i.onerror = e, i.src = l; })).then(()=>{ i.hideLoading(t), t.state = $9970b34361e607e2$var$lt.Opening, this.instance.emit("reveal", t), this.zoomIn(t).then(()=>{ h(), this.instance.done(t); }, ()=>{}), c && setTimeout(()=>{ h(); }, a > 2500 ? 800 : 200); }, ()=>{ i.hideLoading(t), i.revealContent(t); }); } else { const n = this.optionFor(t, "initialSize"), s = this.optionFor(t, "zoom"), o = { event: i.prevMouseMoveEvent || i.options.event, friction: s ? .12 : 0 }; let a = i.optionFor(t, "showClass") || void 0, r = !0; i.isOpeningSlide(t) && ("full" === n ? e.zoomToFull(o) : "cover" === n ? e.zoomToCover(o) : "max" === n ? e.zoomToMax(o) : r = !1, e.stop("current")), r && a && (a = e.isDragging ? "f-fadeIn" : ""), i.hideLoading(t), i.revealContent(t, a); } var l; }, ()=>{ i.setError(t, "{{IMAGE_ERROR}}"); }); } process(t, e) { return new Promise((i, s)=>{ var o; const a = this.instance, r = t.el; a.clearContent(t), a.showLoading(t); let l = this.optionFor(t, "content"); if ("string" == typeof l && (l = $9970b34361e607e2$var$n(l)), !l || !$9970b34361e607e2$var$E(l)) { if (l = document.createElement("img"), l instanceof HTMLImageElement) { let i = "", n = t.caption; i = "string" == typeof n && n ? n.replace(/<[^>]+>/gi, "").substring(0, 1e3) : `Image ${t.index + 1} of ${(null === (o = a.carousel) || void 0 === o ? void 0 : o.pages.length) || 1}`, l.src = e || "", l.alt = i, l.draggable = !1, t.srcset && l.setAttribute("srcset", t.srcset), this.instance.isOpeningSlide(t) && (l.fetchPriority = "high"); } t.sizes && l.setAttribute("sizes", t.sizes); } $9970b34361e607e2$var$P(l, "fancybox-image"), t.imageEl = l, a.setContent(t, l, !1); t.panzoom = new $9970b34361e607e2$export$b704d075ddd20210(r, $9970b34361e607e2$var$u({ transformParent: !0 }, this.option("Panzoom") || {}, { content: l, width: (e, i)=>a.optionFor(t, "width", "auto", i) || "auto", height: (e, i)=>a.optionFor(t, "height", "auto", i) || "auto", wheel: ()=>{ const t = a.option("wheel"); return ("zoom" === t || "pan" == t) && t; }, click: (e, i)=>{ var n, s; if (a.isCompact || a.isClosing()) return !1; if (t.index !== (null === (n = a.getSlide()) || void 0 === n ? void 0 : n.index)) return !1; if (i) { const t = i.composedPath()[0]; if ([ "A", "BUTTON", "TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO" ].includes(t.nodeName)) return !1; } let o = !i || i.target && (null === (s = t.contentEl) || void 0 === s ? void 0 : s.contains(i.target)); return a.option(o ? "contentClick" : "backdropClick") || !1; }, dblClick: ()=>a.isCompact ? "toggleZoom" : a.option("contentDblClick") || !1, spinner: !1, panOnlyZoomed: !0, wheelLimit: 1 / 0, on: { ready: (t)=>{ i(t); }, error: ()=>{ s(); }, destroy: ()=>{ s(); } } })); }); } zoomIn(t) { return new Promise((e, i)=>{ const n = this.instance, s = n.container, { panzoom: o, contentEl: a, el: r } = t; o && o.updateMetrics(); const l = this.getZoomInfo(t); if (!(l && r && a && o && s)) return void i(); const { x: c, y: h, scale: d, opacity: u } = l, p = ()=>{ t.state !== $9970b34361e607e2$var$lt.Closing && (u && (a.style.opacity = Math.max(Math.min(1, 1 - (1 - o.scale) / (1 - d)), 0) + ""), o.scale >= 1 && o.scale > o.targetScale - .1 && e(o)); }, f = (t)=>{ (t.scale < .99 || t.scale > 1.01) && !t.isDragging || ($9970b34361e607e2$var$S(s, $9970b34361e607e2$var$yt), a.style.opacity = "", t.off("endAnimation", f), t.off("touchStart", f), t.off("afterTransform", p), e(t)); }; o.on("endAnimation", f), o.on("touchStart", f), o.on("afterTransform", p), o.on([ "error", "destroy" ], ()=>{ i(); }), o.panTo({ x: c, y: h, scale: d, friction: 0, ignoreBounds: !0 }), o.stop("current"); const g = { event: "mousemove" === o.panMode ? n.prevMouseMoveEvent || n.options.event : void 0 }, m = this.optionFor(t, "initialSize"); $9970b34361e607e2$var$P(s, $9970b34361e607e2$var$yt), n.hideLoading(t), "full" === m ? o.zoomToFull(g) : "cover" === m ? o.zoomToCover(g) : "max" === m ? o.zoomToMax(g) : o.reset(.172); }); } getZoomInfo(t) { const { el: e, imageEl: i, thumbEl: n, panzoom: s } = t, o = this.instance, a = o.container; if (!e || !i || !n || !s || $9970b34361e607e2$var$tt(n) < 3 || !this.optionFor(t, "zoom") || !a || o.state === $9970b34361e607e2$var$rt.Destroy) return !1; if ("0" === getComputedStyle(a).getPropertyValue("--f-images-zoom")) return !1; const r = window.visualViewport || null; if (1 !== (r ? r.scale : 1)) return !1; let { top: l, left: c, width: h, height: d } = n.getBoundingClientRect(), { top: u, left: p, fitWidth: f, fitHeight: g } = s.contentRect; if (!(h && d && f && g)) return !1; const m = s.container.getBoundingClientRect(); p += m.left, u += m.top; const v = -1 * (p + .5 * f - (c + .5 * h)), b = -1 * (u + .5 * g - (l + .5 * d)), y = h / f; let w = this.option("zoomOpacity") || !1; return "auto" === w && (w = Math.abs(h / d - f / g) > .1), { x: v, y: b, scale: y, opacity: w }; } attach() { const t = this, e = t.instance; e.on("Carousel.change", t.onChange), e.on("Carousel.createSlide", t.onCreateSlide), e.on("Carousel.removeSlide", t.onRemoveSlide), e.on("close", t.onClose); } detach() { const t = this, e = t.instance; e.off("Carousel.change", t.onChange), e.off("Carousel.createSlide", t.onCreateSlide), e.off("Carousel.removeSlide", t.onRemoveSlide), e.off("close", t.onClose); } } Object.defineProperty($9970b34361e607e2$var$wt, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: { initialSize: "fit", Panzoom: { maxScale: 1 }, protected: !1, zoom: !0, zoomOpacity: "auto" } }), "function" == typeof SuppressedError && SuppressedError; const $9970b34361e607e2$var$xt = "html", $9970b34361e607e2$var$Et = "image", $9970b34361e607e2$var$St = "map", $9970b34361e607e2$var$Pt = "youtube", $9970b34361e607e2$var$Ct = "vimeo", $9970b34361e607e2$var$Tt = "html5video", $9970b34361e607e2$var$Mt = (t, e = {})=>{ const i = new URL(t), n = new URLSearchParams(i.search), s = new URLSearchParams; for (const [t, i] of [ ...n, ...Object.entries(e) ]){ let e = i + ""; if ("t" === t) { let t = e.match(/((\d*)m)?(\d*)s?/); t && s.set("start", 60 * parseInt(t[2] || "0") + parseInt(t[3] || "0") + ""); } else s.set(t, e); } let o = s + "", a = t.match(/#t=((.*)?\d+s)/); return a && (o += `#t=${a[1]}`), o; }, $9970b34361e607e2$var$Ot = { ajax: null, autoSize: !0, iframeAttr: { allow: "autoplay; fullscreen", scrolling: "auto" }, preload: !0, videoAutoplay: !0, videoRatio: 16 / 9, videoTpl: '', videoFormat: "", vimeo: { byline: 1, color: "00adef", controls: 1, dnt: 1, muted: 0 }, youtube: { controls: 1, enablejsapi: 1, nocookie: 1, rel: 0, fs: 1 } }, $9970b34361e607e2$var$At = [ "image", "html", "ajax", "inline", "clone", "iframe", "map", "pdf", "html5video", "youtube", "vimeo" ]; class $9970b34361e607e2$var$Lt extends $9970b34361e607e2$var$_ { onBeforeInitSlide(t, e, i) { this.processType(i); } onCreateSlide(t, e, i) { this.setContent(i); } onClearContent(t, e) { e.xhr && (e.xhr.abort(), e.xhr = null); const i = e.iframeEl; i && (i.onload = i.onerror = null, i.src = "//about:blank", e.iframeEl = null); const n = e.contentEl, s = e.placeholderEl; if ("inline" === e.type && n && s) n.classList.remove("fancybox__content"), "none" !== getComputedStyle(n).getPropertyValue("display") && (n.style.display = "none"), setTimeout(()=>{ s && (n && s.parentNode && s.parentNode.insertBefore(n, s), s.remove()); }, 0), e.contentEl = void 0, e.placeholderEl = void 0; else for(; e.el && e.el.firstChild;)e.el.removeChild(e.el.firstChild); } onSelectSlide(t, e, i) { i.state === $9970b34361e607e2$var$lt.Ready && this.playVideo(); } onUnselectSlide(t, e, i) { var n, s; if (i.type === $9970b34361e607e2$var$Tt) { try { null === (s = null === (n = i.el) || void 0 === n ? void 0 : n.querySelector("video")) || void 0 === s || s.pause(); } catch (t) {} return; } let o; i.type === $9970b34361e607e2$var$Ct ? o = { method: "pause", value: "true" } : i.type === $9970b34361e607e2$var$Pt && (o = { event: "command", func: "pauseVideo" }), o && i.iframeEl && i.iframeEl.contentWindow && i.iframeEl.contentWindow.postMessage(JSON.stringify(o), "*"), i.poller && clearTimeout(i.poller); } onDone(t, e) { t.isCurrentSlide(e) && !t.isClosing() && this.playVideo(); } onRefresh(t, e) { e.slides.forEach((t)=>{ t.el && (this.resizeIframe(t), this.setAspectRatio(t)); }); } onMessage(t) { try { let e = JSON.parse(t.data); if ("https://player.vimeo.com" === t.origin) { if ("ready" === e.event) for (let e of Array.from(document.getElementsByClassName("fancybox__iframe")))e instanceof HTMLIFrameElement && e.contentWindow === t.source && (e.dataset.ready = "true"); } else if (t.origin.match(/^https:\/\/(www.)?youtube(-nocookie)?.com$/) && "onReady" === e.event) { const t = document.getElementById(e.id); t && (t.dataset.ready = "true"); } } catch (t) {} } loadAjaxContent(t) { const e = this.instance.optionFor(t, "src") || ""; this.instance.showLoading(t); const i = this.instance, n = new XMLHttpRequest; i.showLoading(t), n.onreadystatechange = function() { n.readyState === XMLHttpRequest.DONE && i.state === $9970b34361e607e2$var$rt.Ready && (i.hideLoading(t), 200 === n.status ? i.setContent(t, n.responseText) : i.setError(t, 404 === n.status ? "{{AJAX_NOT_FOUND}}" : "{{AJAX_FORBIDDEN}}")); }; const s = t.ajax || null; n.open(s ? "POST" : "GET", e + ""), n.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), n.setRequestHeader("X-Requested-With", "XMLHttpRequest"), n.send(s), t.xhr = n; } setInlineContent(t) { let e = null; if ($9970b34361e607e2$var$E(t.src)) e = t.src; else if ("string" == typeof t.src) { const i = t.src.split("#", 2).pop(); e = i ? document.getElementById(i) : null; } if (e) { if ("clone" === t.type || e.closest(".fancybox__slide")) { e = e.cloneNode(!0); const i = e.dataset.animationName; i && (e.classList.remove(i), delete e.dataset.animationName); let n = e.getAttribute("id"); n = n ? `${n}--clone` : `clone-${this.instance.id}-${t.index}`, e.setAttribute("id", n); } else if (e.parentNode) { const i = document.createElement("div"); i.classList.add("fancybox-placeholder"), e.parentNode.insertBefore(i, e), t.placeholderEl = i; } this.instance.setContent(t, e); } else this.instance.setError(t, "{{ELEMENT_NOT_FOUND}}"); } setIframeContent(t) { const { src: e, el: i } = t; if (!e || "string" != typeof e || !i) return; i.classList.add("is-loading"); const n = this.instance, s = document.createElement("iframe"); s.className = "fancybox__iframe", s.setAttribute("id", `fancybox__iframe_${n.id}_${t.index}`); for (const [e, i] of Object.entries(this.optionFor(t, "iframeAttr") || {}))s.setAttribute(e, i); s.onerror = ()=>{ n.setError(t, "{{IFRAME_ERROR}}"); }, t.iframeEl = s; const o = this.optionFor(t, "preload"); if ("iframe" !== t.type || !1 === o) return s.setAttribute("src", t.src + ""), n.setContent(t, s, !1), this.resizeIframe(t), void n.revealContent(t); n.showLoading(t), s.onload = ()=>{ if (!s.src.length) return; const e = "true" !== s.dataset.ready; s.dataset.ready = "true", this.resizeIframe(t), e ? n.revealContent(t) : n.hideLoading(t); }, s.setAttribute("src", e), n.setContent(t, s, !1); } resizeIframe(t) { const { type: e, iframeEl: i } = t; if (e === $9970b34361e607e2$var$Pt || e === $9970b34361e607e2$var$Ct) return; const n = null == i ? void 0 : i.parentElement; if (!i || !n) return; let s = t.autoSize; void 0 === s && (s = this.optionFor(t, "autoSize")); let o = t.width || 0, a = t.height || 0; o && a && (s = !1); const r = n && n.style; if (!1 !== t.preload && !1 !== s && r) try { const t = window.getComputedStyle(n), e = parseFloat(t.paddingLeft) + parseFloat(t.paddingRight), s = parseFloat(t.paddingTop) + parseFloat(t.paddingBottom), l = i.contentWindow; if (l) { const t = l.document, i = t.getElementsByTagName($9970b34361e607e2$var$xt)[0], n = t.body; r.width = "", n.style.overflow = "hidden", o = o || i.scrollWidth + e, r.width = `${o}px`, n.style.overflow = "", r.flex = "0 0 auto", r.height = `${n.scrollHeight}px`, a = i.scrollHeight + s; } } catch (t) {} if (o || a) { const t = { flex: "0 1 auto", width: "", height: "" }; o && "auto" !== o && (t.width = `${o}px`), a && "auto" !== a && (t.height = `${a}px`), Object.assign(r, t); } } playVideo() { const t = this.instance.getSlide(); if (!t) return; const { el: e } = t; if (!e || !e.offsetParent) return; if (!this.optionFor(t, "videoAutoplay")) return; if (t.type === $9970b34361e607e2$var$Tt) try { const t = e.querySelector("video"); if (t) { const e = t.play(); void 0 !== e && e.then(()=>{}).catch((e)=>{ t.muted = !0, t.play(); }); } } catch (t) {} if (t.type !== $9970b34361e607e2$var$Pt && t.type !== $9970b34361e607e2$var$Ct) return; const i = ()=>{ if (t.iframeEl && t.iframeEl.contentWindow) { let e; if ("true" === t.iframeEl.dataset.ready) return e = t.type === $9970b34361e607e2$var$Pt ? { event: "command", func: "playVideo" } : { method: "play", value: "true" }, e && t.iframeEl.contentWindow.postMessage(JSON.stringify(e), "*"), void (t.poller = void 0); t.type === $9970b34361e607e2$var$Pt && (e = { event: "listening", id: t.iframeEl.getAttribute("id") }, t.iframeEl.contentWindow.postMessage(JSON.stringify(e), "*")); } t.poller = setTimeout(i, 250); }; i(); } processType(t) { if (t.html) return t.type = $9970b34361e607e2$var$xt, t.src = t.html, void (t.html = ""); const e = this.instance.optionFor(t, "src", ""); if (!e || "string" != typeof e) return; let i = t.type, n = null; if (n = e.match(/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(?:watch\?(?:.*&)?v=|v\/|u\/|shorts\/|embed\/?)?(videoseries\?list=(?:.*)|[\w-]{11}|\?listType=(?:.*)&list=(?:.*))(?:.*)/i)) { const s = this.optionFor(t, $9970b34361e607e2$var$Pt), { nocookie: o } = s, a = function(t, e) { var i = {}; for(var n in t)Object.prototype.hasOwnProperty.call(t, n) && e.indexOf(n) < 0 && (i[n] = t[n]); if (null != t && "function" == typeof Object.getOwnPropertySymbols) { var s = 0; for(n = Object.getOwnPropertySymbols(t); s < n.length; s++)e.indexOf(n[s]) < 0 && Object.prototype.propertyIsEnumerable.call(t, n[s]) && (i[n[s]] = t[n[s]]); } return i; }(s, [ "nocookie" ]), r = `www.youtube${o ? "-nocookie" : ""}.com`, l = $9970b34361e607e2$var$Mt(e, a), c = encodeURIComponent(n[2]); t.videoId = c, t.src = `https://${r}/embed/${c}?${l}`, t.thumbSrc = t.thumbSrc || `https://i.ytimg.com/vi/${c}/mqdefault.jpg`, i = $9970b34361e607e2$var$Pt; } else if (n = e.match(/^.+vimeo.com\/(?:\/)?([\d]+)((\/|\?h=)([a-z0-9]+))?(.*)?/)) { const s = $9970b34361e607e2$var$Mt(e, this.optionFor(t, $9970b34361e607e2$var$Ct)), o = encodeURIComponent(n[1]), a = n[4] || ""; t.videoId = o, t.src = `https://player.vimeo.com/video/${o}?${a ? `h=${a}${s ? "&" : ""}` : ""}${s}`, i = $9970b34361e607e2$var$Ct; } if (!i && t.triggerEl) { const e = t.triggerEl.dataset.type; $9970b34361e607e2$var$At.includes(e) && (i = e); } i || "string" == typeof e && ("#" === e.charAt(0) ? i = "inline" : (n = e.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i)) ? (i = $9970b34361e607e2$var$Tt, t.videoFormat = t.videoFormat || "video/" + ("ogv" === n[1] ? "ogg" : n[1])) : e.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ? i = $9970b34361e607e2$var$Et : e.match(/\.(pdf)((\?|#).*)?$/i) && (i = "pdf")), (n = e.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:(?:(?:maps\/(?:place\/(?:.*)\/)?\@(.*),(\d+.?\d+?)z))|(?:\?ll=))(.*)?/i)) ? (t.src = `https://maps.google.${n[1]}/?ll=${(n[2] ? n[2] + "&z=" + Math.floor(parseFloat(n[3])) + (n[4] ? n[4].replace(/^\//, "&") : "") : n[4] + "").replace(/\?/, "&")}&output=${n[4] && n[4].indexOf("layer=c") > 0 ? "svembed" : "embed"}`, i = $9970b34361e607e2$var$St) : (n = e.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:maps\/search\/)(.*)/i)) && (t.src = `https://maps.google.${n[1]}/maps?q=${n[2].replace("query=", "q=").replace("api=1", "")}&output=embed`, i = $9970b34361e607e2$var$St), i = i || this.instance.option("defaultType"), t.type = i, i === $9970b34361e607e2$var$Et && (t.thumbSrc = t.thumbSrc || t.src); } setContent(t) { const e = this.instance.optionFor(t, "src") || ""; if (t && t.type && e) { switch(t.type){ case $9970b34361e607e2$var$xt: this.instance.setContent(t, e); break; case $9970b34361e607e2$var$Tt: const i = this.option("videoTpl"); i && this.instance.setContent(t, i.replace(/\{\{src\}\}/gi, e + "").replace(/\{\{format\}\}/gi, this.optionFor(t, "videoFormat") || "").replace(/\{\{poster\}\}/gi, t.poster || t.thumbSrc || "")); break; case "inline": case "clone": this.setInlineContent(t); break; case "ajax": this.loadAjaxContent(t); break; case "pdf": case $9970b34361e607e2$var$St: case $9970b34361e607e2$var$Pt: case $9970b34361e607e2$var$Ct: t.preload = !1; case "iframe": this.setIframeContent(t); } this.setAspectRatio(t); } } setAspectRatio(t) { const e = t.contentEl; if (!(t.el && e && t.type && [ $9970b34361e607e2$var$Pt, $9970b34361e607e2$var$Ct, $9970b34361e607e2$var$Tt ].includes(t.type))) return; let i, n = t.width || "auto", s = t.height || "auto"; if ("auto" === n || "auto" === s) { i = this.optionFor(t, "videoRatio"); const e = (i + "").match(/(\d+)\s*\/\s?(\d+)/); i = e && e.length > 2 ? parseFloat(e[1]) / parseFloat(e[2]) : parseFloat(i + ""); } else n && s && (i = n / s); if (!i) return; e.style.aspectRatio = "", e.style.width = "", e.style.height = "", e.offsetHeight; const o = e.getBoundingClientRect(), a = o.width || 1, r = o.height || 1; e.style.aspectRatio = i + "", i < a / r ? (s = "auto" === s ? r : Math.min(r, s), e.style.width = "auto", e.style.height = `${s}px`) : (n = "auto" === n ? a : Math.min(a, n), e.style.width = `${n}px`, e.style.height = "auto"); } attach() { const t = this, e = t.instance; e.on("Carousel.beforeInitSlide", t.onBeforeInitSlide), e.on("Carousel.createSlide", t.onCreateSlide), e.on("Carousel.selectSlide", t.onSelectSlide), e.on("Carousel.unselectSlide", t.onUnselectSlide), e.on("Carousel.Panzoom.refresh", t.onRefresh), e.on("done", t.onDone), e.on("clearContent", t.onClearContent), window.addEventListener("message", t.onMessage); } detach() { const t = this, e = t.instance; e.off("Carousel.beforeInitSlide", t.onBeforeInitSlide), e.off("Carousel.createSlide", t.onCreateSlide), e.off("Carousel.selectSlide", t.onSelectSlide), e.off("Carousel.unselectSlide", t.onUnselectSlide), e.off("Carousel.Panzoom.refresh", t.onRefresh), e.off("done", t.onDone), e.off("clearContent", t.onClearContent), window.removeEventListener("message", t.onMessage); } } Object.defineProperty($9970b34361e607e2$var$Lt, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$Ot }); const $9970b34361e607e2$var$zt = "play", $9970b34361e607e2$var$Rt = "pause", $9970b34361e607e2$var$kt = "ready"; class $9970b34361e607e2$var$It extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "state", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$kt }), Object.defineProperty(this, "inHover", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "timer", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "progressBar", { enumerable: !0, configurable: !0, writable: !0, value: null }); } get isActive() { return this.state !== $9970b34361e607e2$var$kt; } onReady(t) { this.option("autoStart") && (t.isInfinite || t.page < t.pages.length - 1) && this.start(); } onChange() { this.removeProgressBar(), this.pause(); } onSettle() { this.resume(); } onVisibilityChange() { "visible" === document.visibilityState ? this.resume() : this.pause(); } onMouseEnter() { this.inHover = !0, this.pause(); } onMouseLeave() { var t; this.inHover = !1, (null === (t = this.instance.panzoom) || void 0 === t ? void 0 : t.isResting) && this.resume(); } onTimerEnd() { const t = this.instance; "play" === this.state && (t.isInfinite || t.page !== t.pages.length - 1 ? t.slideNext() : t.slideTo(0)); } removeProgressBar() { this.progressBar && (this.progressBar.remove(), this.progressBar = null); } createProgressBar() { var t; if (!this.option("showProgress")) return null; this.removeProgressBar(); const e = this.instance, i = (null === (t = e.pages[e.page]) || void 0 === t ? void 0 : t.slides) || []; let n = this.option("progressParentEl"); if (n || (n = (1 === i.length ? i[0].el : null) || e.viewport), !n) return null; const s = document.createElement("div"); return $9970b34361e607e2$var$P(s, "f-progress"), n.prepend(s), this.progressBar = s, s.offsetHeight, s; } set() { const t = this, e = t.instance; if (e.pages.length < 2) return; if (t.timer) return; const i = t.option("timeout"); t.state = $9970b34361e607e2$var$zt, $9970b34361e607e2$var$P(e.container, "has-autoplay"); let n = t.createProgressBar(); n && (n.style.transitionDuration = `${i}ms`, n.style.transform = "scaleX(1)"), t.timer = setTimeout(()=>{ t.timer = null, t.inHover || t.onTimerEnd(); }, i), t.emit("set"); } clear() { const t = this; t.timer && (clearTimeout(t.timer), t.timer = null), t.removeProgressBar(); } start() { const t = this; if (t.set(), t.state !== $9970b34361e607e2$var$kt) { if (t.option("pauseOnHover")) { const e = t.instance.container; e.addEventListener("mouseenter", t.onMouseEnter, !1), e.addEventListener("mouseleave", t.onMouseLeave, !1); } document.addEventListener("visibilitychange", t.onVisibilityChange, !1), t.emit("start"); } } stop() { const t = this, e = t.state, i = t.instance.container; t.clear(), t.state = $9970b34361e607e2$var$kt, i.removeEventListener("mouseenter", t.onMouseEnter, !1), i.removeEventListener("mouseleave", t.onMouseLeave, !1), document.removeEventListener("visibilitychange", t.onVisibilityChange, !1), $9970b34361e607e2$var$S(i, "has-autoplay"), e !== $9970b34361e607e2$var$kt && t.emit("stop"); } pause() { const t = this; t.state === $9970b34361e607e2$var$zt && (t.state = $9970b34361e607e2$var$Rt, t.clear(), t.emit($9970b34361e607e2$var$Rt)); } resume() { const t = this, e = t.instance; if (e.isInfinite || e.page !== e.pages.length - 1) { if (t.state !== $9970b34361e607e2$var$zt) { if (t.state === $9970b34361e607e2$var$Rt && !t.inHover) { const e = new Event("resume", { bubbles: !0, cancelable: !0 }); t.emit("resume", e), e.defaultPrevented || t.set(); } } else t.set(); } else t.stop(); } toggle() { this.state === $9970b34361e607e2$var$zt || this.state === $9970b34361e607e2$var$Rt ? this.stop() : this.start(); } attach() { const t = this, e = t.instance; e.on("ready", t.onReady), e.on("Panzoom.startAnimation", t.onChange), e.on("Panzoom.endAnimation", t.onSettle), e.on("Panzoom.touchMove", t.onChange); } detach() { const t = this, e = t.instance; e.off("ready", t.onReady), e.off("Panzoom.startAnimation", t.onChange), e.off("Panzoom.endAnimation", t.onSettle), e.off("Panzoom.touchMove", t.onChange), t.stop(); } } Object.defineProperty($9970b34361e607e2$var$It, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: { autoStart: !0, pauseOnHover: !0, progressParentEl: null, showProgress: !0, timeout: 3e3 } }); class $9970b34361e607e2$var$Dt extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "ref", { enumerable: !0, configurable: !0, writable: !0, value: null }); } onPrepare(t) { const e = t.carousel; if (!e) return; const i = t.container; i && (e.options.Autoplay = $9970b34361e607e2$var$u({ autoStart: !1 }, this.option("Autoplay") || {}, { pauseOnHover: !1, timeout: this.option("timeout"), progressParentEl: ()=>this.option("progressParentEl") || null, on: { start: ()=>{ t.emit("startSlideshow"); }, set: (e)=>{ var n; i.classList.add("has-slideshow"), (null === (n = t.getSlide()) || void 0 === n ? void 0 : n.state) !== $9970b34361e607e2$var$lt.Ready && e.pause(); }, stop: ()=>{ i.classList.remove("has-slideshow"), t.isCompact || t.endIdle(), t.emit("endSlideshow"); }, resume: (e, i)=>{ var n, s, o; !i || !i.cancelable || (null === (n = t.getSlide()) || void 0 === n ? void 0 : n.state) === $9970b34361e607e2$var$lt.Ready && (null === (o = null === (s = t.carousel) || void 0 === s ? void 0 : s.panzoom) || void 0 === o ? void 0 : o.isResting) || i.preventDefault(); } } }), e.attachPlugins({ Autoplay: $9970b34361e607e2$var$It }), this.ref = e.plugins.Autoplay); } onReady(t) { const e = t.carousel, i = this.ref; i && e && this.option("playOnStart") && (e.isInfinite || e.page < e.pages.length - 1) && i.start(); } onDone(t, e) { const i = this.ref, n = t.carousel; if (!i || !n) return; const s = e.panzoom; s && s.on("startAnimation", ()=>{ t.isCurrentSlide(e) && i.stop(); }), t.isCurrentSlide(e) && i.resume(); } onKeydown(t, e) { var i; const n = this.ref; n && e === this.option("key") && "BUTTON" !== (null === (i = document.activeElement) || void 0 === i ? void 0 : i.nodeName) && n.toggle(); } attach() { const t = this, e = t.instance; e.on("Carousel.init", t.onPrepare), e.on("Carousel.ready", t.onReady), e.on("done", t.onDone), e.on("keydown", t.onKeydown); } detach() { const t = this, e = t.instance; e.off("Carousel.init", t.onPrepare), e.off("Carousel.ready", t.onReady), e.off("done", t.onDone), e.off("keydown", t.onKeydown); } } Object.defineProperty($9970b34361e607e2$var$Dt, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: { key: " ", playOnStart: !1, progressParentEl: (t)=>{ var e; return (null === (e = t.instance.container) || void 0 === e ? void 0 : e.querySelector(".fancybox__toolbar [data-fancybox-toggle-slideshow]")) || t.instance.container; }, timeout: 3e3 } }); const $9970b34361e607e2$var$Ft = { classes: { container: "f-thumbs f-carousel__thumbs", viewport: "f-thumbs__viewport", track: "f-thumbs__track", slide: "f-thumbs__slide", isResting: "is-resting", isSelected: "is-selected", isLoading: "is-loading", hasThumbs: "has-thumbs" }, minCount: 2, parentEl: null, thumbTpl: '', type: "modern" }; var $9970b34361e607e2$var$jt; !function(t) { t[t.Init = 0] = "Init", t[t.Ready = 1] = "Ready", t[t.Hidden = 2] = "Hidden"; }($9970b34361e607e2$var$jt || ($9970b34361e607e2$var$jt = {})); const $9970b34361e607e2$var$Bt = "isResting", $9970b34361e607e2$var$Ht = "thumbWidth", $9970b34361e607e2$var$Nt = "thumbHeight", $9970b34361e607e2$var$_t = "thumbClipWidth"; let $9970b34361e607e2$var$$t = class extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "type", { enumerable: !0, configurable: !0, writable: !0, value: "modern" }), Object.defineProperty(this, "container", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "track", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "carousel", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "thumbWidth", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "thumbClipWidth", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "thumbHeight", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "thumbGap", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "thumbExtraGap", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "state", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$jt.Init }); } get isModern() { return "modern" === this.type; } onInitSlide(t, e) { const i = e.el ? e.el.dataset : void 0; i && (e.thumbSrc = i.thumbSrc || e.thumbSrc || "", e[$9970b34361e607e2$var$_t] = parseFloat(i[$9970b34361e607e2$var$_t] || "") || e[$9970b34361e607e2$var$_t] || 0, e[$9970b34361e607e2$var$Nt] = parseFloat(i.thumbHeight || "") || e[$9970b34361e607e2$var$Nt] || 0), this.addSlide(e); } onInitSlides() { this.build(); } onChange() { var t; if (!this.isModern) return; const e = this.container, i = this.instance, n = i.panzoom, s = this.carousel, a = s ? s.panzoom : null, r = i.page; if (n && s && a) { if (n.isDragging) { $9970b34361e607e2$var$S(e, this.cn($9970b34361e607e2$var$Bt)); let n = (null === (t = s.pages[r]) || void 0 === t ? void 0 : t.pos) || 0; n += i.getProgress(r) * (this[$9970b34361e607e2$var$_t] + this.thumbGap); let o = a.getBounds(); -1 * n > o.x.min && -1 * n < o.x.max && a.panTo({ x: -1 * n, friction: .12 }); } else $9970b34361e607e2$var$o(e, this.cn($9970b34361e607e2$var$Bt), n.isResting); this.shiftModern(); } } onRefresh() { this.updateProps(); for (const t of this.instance.slides || [])this.resizeModernSlide(t); this.shiftModern(); } isDisabled() { const t = this.option("minCount") || 0; if (t) { const e = this.instance; let i = 0; for (const t of e.slides || [])t.thumbSrc && i++; if (i < t) return !0; } const e = this.option("type"); return [ "modern", "classic" ].indexOf(e) < 0; } getThumb(t) { const e = this.option("thumbTpl") || ""; return { html: this.instance.localize(e, [ [ "%i", t.index ], [ "%d", t.index + 1 ], [ "%s", t.thumbSrc || "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" ] ]) }; } addSlide(t) { const e = this.carousel; e && e.addSlide(t.index, this.getThumb(t)); } getSlides() { const t = []; for (const e of this.instance.slides || [])t.push(this.getThumb(e)); return t; } resizeModernSlide(t) { this.isModern && (t[$9970b34361e607e2$var$Ht] = t[$9970b34361e607e2$var$_t] && t[$9970b34361e607e2$var$Nt] ? Math.round(this[$9970b34361e607e2$var$Nt] * (t[$9970b34361e607e2$var$_t] / t[$9970b34361e607e2$var$Nt])) : this[$9970b34361e607e2$var$Ht]); } updateProps() { const t = this.container; if (!t) return; const e = (e)=>parseFloat(getComputedStyle(t).getPropertyValue("--f-thumb-" + e)) || 0; this.thumbGap = e("gap"), this.thumbExtraGap = e("extra-gap"), this[$9970b34361e607e2$var$Ht] = e("width") || 40, this[$9970b34361e607e2$var$_t] = e("clip-width") || 40, this[$9970b34361e607e2$var$Nt] = e("height") || 40; } build() { const t = this; if (t.state !== $9970b34361e607e2$var$jt.Init) return; if (t.isDisabled()) return void t.emit("disabled"); const e = t.instance, i = e.container, n = t.getSlides(), s = t.option("type"); t.type = s; const o = t.option("parentEl"), a = t.cn("container"), r = t.cn("track"); let l = null == o ? void 0 : o.querySelector("." + a); l || (l = document.createElement("div"), $9970b34361e607e2$var$P(l, a), o ? o.appendChild(l) : i.after(l)), $9970b34361e607e2$var$P(l, `is-${s}`), $9970b34361e607e2$var$P(i, t.cn("hasThumbs")), t.container = l, t.updateProps(); let c = l.querySelector("." + r); c || (c = document.createElement("div"), $9970b34361e607e2$var$P(c, t.cn("track")), l.appendChild(c)), t.track = c; const h = $9970b34361e607e2$var$u({}, { track: c, infinite: !1, center: !0, fill: "classic" === s, dragFree: !0, slidesPerPage: 1, transition: !1, preload: .25, friction: .12, Panzoom: { maxVelocity: 0 }, Dots: !1, Navigation: !1, classes: { container: "f-thumbs", viewport: "f-thumbs__viewport", track: "f-thumbs__track", slide: "f-thumbs__slide" } }, t.option("Carousel") || {}, { Sync: { target: e }, slides: n }), d = new e.constructor(l, h); d.on("createSlide", (e, i)=>{ t.setProps(i.index), t.emit("createSlide", i, i.el); }), d.on("ready", ()=>{ t.shiftModern(), t.emit("ready"); }), d.on("refresh", ()=>{ t.shiftModern(); }), d.on("Panzoom.click", (e, i, n)=>{ t.onClick(n); }), t.carousel = d, t.state = $9970b34361e607e2$var$jt.Ready; } onClick(t) { t.preventDefault(), t.stopPropagation(); const e = this.instance, { pages: i, page: n } = e, s = (t)=>{ if (t) { const e = t.closest("[data-carousel-index]"); if (e) return [ parseInt(e.dataset.carouselIndex || "", 10) || 0, e ]; } return [ -1, void 0 ]; }, o = (t, e)=>{ const i = document.elementFromPoint(t, e); return i ? s(i) : [ -1, void 0 ]; }; let [a, r] = s(t.target); if (a > -1) return; const l = this[$9970b34361e607e2$var$_t], c = t.clientX, h = t.clientY; let [d, u] = o(c - l, h), [p, f] = o(c + l, h); u && f ? (a = Math.abs(c - u.getBoundingClientRect().right) < Math.abs(c - f.getBoundingClientRect().left) ? d : p, a === n && (a = a === d ? p : d)) : u ? a = d : f && (a = p), a > -1 && i[a] && e.slideTo(a); } getShift(t) { var e; const i = this, { instance: n } = i, s = i.carousel; if (!n || !s) return 0; const o = i[$9970b34361e607e2$var$Ht], a = i[$9970b34361e607e2$var$_t], r = i.thumbGap, l = i.thumbExtraGap; if (!(null === (e = s.slides[t]) || void 0 === e ? void 0 : e.el)) return 0; const c = .5 * (o - a), h = n.pages.length - 1; let d = n.getProgress(0), u = n.getProgress(h), p = n.getProgress(t, !1, !0), f = 0, g = c + l + r; const m = d < 0 && d > -1, v = u > 0 && u < 1; return 0 === t ? (f = g * Math.abs(d), v && 1 === d && (f -= g * Math.abs(u))) : t === h ? (f = g * Math.abs(u) * -1, m && -1 === u && (f += g * Math.abs(d))) : m || v ? (f = -1 * g, f += g * Math.abs(d), f += g * (1 - Math.abs(u))) : f = g * p, f; } setProps(e) { var i; const n = this; if (!n.isModern) return; const { instance: s } = n, o = n.carousel; if (s && o) { const a = null === (i = o.slides[e]) || void 0 === i ? void 0 : i.el; if (a && a.childNodes.length) { let i = $9970b34361e607e2$var$t(1 - Math.abs(s.getProgress(e))), o = $9970b34361e607e2$var$t(n.getShift(e)); a.style.setProperty("--progress", i ? i + "" : ""), a.style.setProperty("--shift", o + ""); } } } shiftModern() { const t = this; if (!t.isModern) return; const { instance: e, track: i } = t, n = e.panzoom, s = t.carousel; if (!(e && i && n && s)) return; if (n.state === $9970b34361e607e2$var$m.Init || n.state === $9970b34361e607e2$var$m.Destroy) return; for (const i of e.slides)t.setProps(i.index); let o = (t[$9970b34361e607e2$var$_t] + t.thumbGap) * (s.slides.length || 0); i.style.setProperty("--width", o + ""); } cleanup() { const t = this; t.carousel && t.carousel.destroy(), t.carousel = null, t.container && t.container.remove(), t.container = null, t.track && t.track.remove(), t.track = null, t.state = $9970b34361e607e2$var$jt.Init, $9970b34361e607e2$var$S(t.instance.container, t.cn("hasThumbs")); } attach() { const t = this, e = t.instance; e.on("initSlide", t.onInitSlide), e.state === $9970b34361e607e2$var$B.Init ? e.on("initSlides", t.onInitSlides) : t.onInitSlides(), e.on([ "change", "Panzoom.afterTransform" ], t.onChange), e.on("Panzoom.refresh", t.onRefresh); } detach() { const t = this, e = t.instance; e.off("initSlide", t.onInitSlide), e.off("initSlides", t.onInitSlides), e.off([ "change", "Panzoom.afterTransform" ], t.onChange), e.off("Panzoom.refresh", t.onRefresh), t.cleanup(); } }; Object.defineProperty($9970b34361e607e2$var$$t, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$Ft }); const $9970b34361e607e2$var$Wt = Object.assign(Object.assign({}, $9970b34361e607e2$var$Ft), { key: "t", showOnStart: !0, parentEl: null }), $9970b34361e607e2$var$Xt = "is-masked", $9970b34361e607e2$var$qt = "aria-hidden"; class $9970b34361e607e2$var$Yt extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "ref", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "hidden", { enumerable: !0, configurable: !0, writable: !0, value: !1 }); } get isEnabled() { const t = this.ref; return t && !t.isDisabled(); } get isHidden() { return this.hidden; } onClick(t, e) { e.stopPropagation(); } onCreateSlide(t, e) { var i, n, s; const o = (null === (s = null === (n = null === (i = this.instance) || void 0 === i ? void 0 : i.carousel) || void 0 === n ? void 0 : n.slides[e.index]) || void 0 === s ? void 0 : s.type) || "", a = e.el; if (a && o) { let t = `for-${o}`; [ "video", "youtube", "vimeo", "html5video" ].includes(o) && (t += " for-video"), $9970b34361e607e2$var$P(a, t); } } onInit() { var t; const e = this, i = e.instance, n = i.carousel; if (e.ref || !n) return; const s = e.option("parentEl") || i.footer || i.container; if (!s) return; const o = $9970b34361e607e2$var$u({}, e.options, { parentEl: s, classes: { container: "f-thumbs fancybox__thumbs" }, Carousel: { Sync: { friction: i.option("Carousel.friction") || 0 } }, on: { ready: (t)=>{ const i = t.container; i && this.hidden && (e.refresh(), i.style.transition = "none", e.hide(), i.offsetHeight, queueMicrotask(()=>{ i.style.transition = "", e.show(); })); } } }); o.Carousel = o.Carousel || {}, o.Carousel.on = $9970b34361e607e2$var$u((null === (t = e.options.Carousel) || void 0 === t ? void 0 : t.on) || {}, { click: this.onClick, createSlide: this.onCreateSlide }), n.options.Thumbs = o, n.attachPlugins({ Thumbs: $9970b34361e607e2$var$$t }), e.ref = n.plugins.Thumbs, e.option("showOnStart") || (e.ref.state = $9970b34361e607e2$var$jt.Hidden, e.hidden = !0); } onResize() { var t; const e = null === (t = this.ref) || void 0 === t ? void 0 : t.container; e && (e.style.maxHeight = ""); } onKeydown(t, e) { const i = this.option("key"); i && i === e && this.toggle(); } toggle() { const t = this.ref; if (t && !t.isDisabled()) return t.state === $9970b34361e607e2$var$jt.Hidden ? (t.state = $9970b34361e607e2$var$jt.Init, void t.build()) : void (this.hidden ? this.show() : this.hide()); } show() { const t = this.ref; if (!t || t.isDisabled()) return; const e = t.container; e && (this.refresh(), e.offsetHeight, e.removeAttribute($9970b34361e607e2$var$qt), e.classList.remove($9970b34361e607e2$var$Xt), this.hidden = !1); } hide() { const t = this.ref, e = t && t.container; e && (this.refresh(), e.offsetHeight, e.classList.add($9970b34361e607e2$var$Xt), e.setAttribute($9970b34361e607e2$var$qt, "true")), this.hidden = !0; } refresh() { const t = this.ref; if (!t || !t.state) return; const e = t.container, i = (null == e ? void 0 : e.firstChild) || null; e && i && i.childNodes.length && (e.style.maxHeight = `${i.getBoundingClientRect().height}px`); } attach() { const t = this, e = t.instance; e.state === $9970b34361e607e2$var$rt.Init ? e.on("Carousel.init", t.onInit) : t.onInit(), e.on("resize", t.onResize), e.on("keydown", t.onKeydown); } detach() { var t; const e = this, i = e.instance; i.off("Carousel.init", e.onInit), i.off("resize", e.onResize), i.off("keydown", e.onKeydown), null === (t = i.carousel) || void 0 === t || t.detachPlugins([ "Thumbs" ]), e.ref = null; } } Object.defineProperty($9970b34361e607e2$var$Yt, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$Wt }); const $9970b34361e607e2$var$Vt = { panLeft: { icon: '', change: { panX: -100 } }, panRight: { icon: '', change: { panX: 100 } }, panUp: { icon: '', change: { panY: -100 } }, panDown: { icon: '', change: { panY: 100 } }, zoomIn: { icon: '', action: "zoomIn" }, zoomOut: { icon: '', action: "zoomOut" }, toggle1to1: { icon: '', action: "toggleZoom" }, toggleZoom: { icon: '', action: "toggleZoom" }, iterateZoom: { icon: '', action: "iterateZoom" }, rotateCCW: { icon: '', action: "rotateCCW" }, rotateCW: { icon: '', action: "rotateCW" }, flipX: { icon: '', action: "flipX" }, flipY: { icon: '', action: "flipY" }, fitX: { icon: '', action: "fitX" }, fitY: { icon: '', action: "fitY" }, reset: { icon: '', action: "reset" }, toggleFS: { icon: '', action: "toggleFS" } }; var $9970b34361e607e2$var$Zt; !function(t) { t[t.Init = 0] = "Init", t[t.Ready = 1] = "Ready", t[t.Disabled = 2] = "Disabled"; }($9970b34361e607e2$var$Zt || ($9970b34361e607e2$var$Zt = {})); const $9970b34361e607e2$var$Ut = { absolute: "auto", display: { left: [ "infobar" ], middle: [], right: [ "iterateZoom", "slideshow", "fullscreen", "thumbs", "close" ] }, enabled: "auto", items: { infobar: { tpl: '
/
' }, download: { tpl: '' }, prev: { tpl: '' }, next: { tpl: '' }, slideshow: { tpl: '' }, fullscreen: { tpl: '' }, thumbs: { tpl: '' }, close: { tpl: '' } }, parentEl: null }, $9970b34361e607e2$var$Gt = { tabindex: "-1", width: "24", height: "24", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }, $9970b34361e607e2$var$Kt = "has-toolbar", $9970b34361e607e2$var$Jt = "fancybox__toolbar"; class $9970b34361e607e2$var$Qt extends $9970b34361e607e2$var$_ { constructor(){ super(...arguments), Object.defineProperty(this, "state", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$Zt.Init }), Object.defineProperty(this, "container", { enumerable: !0, configurable: !0, writable: !0, value: null }); } onReady(t) { var e; if (!t.carousel) return; let i = this.option("display"), n = this.option("absolute"), s = this.option("enabled"); if ("auto" === s) { const t = this.instance.carousel; let e = 0; if (t) for (const i of t.slides)(i.panzoom || "image" === i.type) && e++; e || (s = !1); } s || (i = void 0); let o = 0; const a = { left: [], middle: [], right: [] }; if (i) for (const t of [ "left", "middle", "right" ])for (const n of i[t]){ const i = this.createEl(n); i && (null === (e = a[t]) || void 0 === e || e.push(i), o++); } let r = null; if (o && (r = this.createContainer()), r) { for (const [t, e] of Object.entries(a)){ const i = document.createElement("div"); $9970b34361e607e2$var$P(i, $9970b34361e607e2$var$Jt + "__column is-" + t); for (const t of e)i.appendChild(t); "auto" !== n || "middle" !== t || e.length || (n = !0), r.appendChild(i); } !0 === n && $9970b34361e607e2$var$P(r, "is-absolute"), this.state = $9970b34361e607e2$var$Zt.Ready, this.onRefresh(); } else this.state = $9970b34361e607e2$var$Zt.Disabled; } onClick(t) { var e, i; const n = this.instance, s = n.getSlide(), o = null == s ? void 0 : s.panzoom, a = t.target, r = a && $9970b34361e607e2$var$E(a) ? a.dataset : null; if (!r) return; if (void 0 !== r.fancyboxToggleThumbs) return t.preventDefault(), t.stopPropagation(), void (null === (e = n.plugins.Thumbs) || void 0 === e || e.toggle()); if (void 0 !== r.fancyboxToggleFullscreen) return t.preventDefault(), t.stopPropagation(), void this.instance.toggleFullscreen(); if (void 0 !== r.fancyboxToggleSlideshow) { t.preventDefault(), t.stopPropagation(); const e = null === (i = n.carousel) || void 0 === i ? void 0 : i.plugins.Autoplay; let s = e.isActive; return o && "mousemove" === o.panMode && !s && o.reset(), void (s ? e.stop() : e.start()); } const l = r.panzoomAction, c = r.panzoomChange; if ((c || l) && (t.preventDefault(), t.stopPropagation()), c) { let t = {}; try { t = JSON.parse(c); } catch (t) {} o && o.applyChange(t); } else l && o && o[l] && o[l](); } onChange() { this.onRefresh(); } onRefresh() { if (this.instance.isClosing()) return; const t = this.container; if (!t) return; const e = this.instance.getSlide(); if (!e || e.state !== $9970b34361e607e2$var$lt.Ready) return; const i = e && !e.error && e.panzoom; for (const e of t.querySelectorAll("[data-panzoom-action]"))i ? (e.removeAttribute("disabled"), e.removeAttribute("tabindex")) : (e.setAttribute("disabled", ""), e.setAttribute("tabindex", "-1")); let n = i && i.canZoomIn(), s = i && i.canZoomOut(); for (const e of t.querySelectorAll('[data-panzoom-action="zoomIn"]'))n ? (e.removeAttribute("disabled"), e.removeAttribute("tabindex")) : (e.setAttribute("disabled", ""), e.setAttribute("tabindex", "-1")); for (const e of t.querySelectorAll('[data-panzoom-action="zoomOut"]'))s ? (e.removeAttribute("disabled"), e.removeAttribute("tabindex")) : (e.setAttribute("disabled", ""), e.setAttribute("tabindex", "-1")); for (const e of t.querySelectorAll('[data-panzoom-action="toggleZoom"],[data-panzoom-action="iterateZoom"]')){ s || n ? (e.removeAttribute("disabled"), e.removeAttribute("tabindex")) : (e.setAttribute("disabled", ""), e.setAttribute("tabindex", "-1")); const t = e.querySelector("g"); t && (t.style.display = n ? "" : "none"); } } onDone(t, e) { var i; null === (i = e.panzoom) || void 0 === i || i.on("afterTransform", ()=>{ this.instance.isCurrentSlide(e) && this.onRefresh(); }), this.instance.isCurrentSlide(e) && this.onRefresh(); } createContainer() { const t = this.instance.container; if (!t) return null; const e = this.option("parentEl") || t; let i = e.querySelector("." + $9970b34361e607e2$var$Jt); return i || (i = document.createElement("div"), $9970b34361e607e2$var$P(i, $9970b34361e607e2$var$Jt), e.prepend(i)), i.addEventListener("click", this.onClick, { passive: !1, capture: !0 }), t && $9970b34361e607e2$var$P(t, $9970b34361e607e2$var$Kt), this.container = i, i; } createEl(t) { const e = this.instance, i = e.carousel; if (!i) return null; if ("toggleFS" === t) return null; if ("fullscreen" === t && !$9970b34361e607e2$var$ot()) return null; let s = null; const o = i.slides.length || 0; let a = 0, r = 0; for (const t of i.slides)(t.panzoom || "image" === t.type) && a++, ("image" === t.type || t.downloadSrc) && r++; if (o < 2 && [ "infobar", "prev", "next" ].includes(t)) return s; if (void 0 !== $9970b34361e607e2$var$Vt[t] && !a) return null; if ("download" === t && !r) return null; if ("thumbs" === t) { const t = e.plugins.Thumbs; if (!t || !t.isEnabled) return null; } if ("slideshow" === t) { if (!i.plugins.Autoplay || o < 2) return null; } if (void 0 !== $9970b34361e607e2$var$Vt[t]) { const e = $9970b34361e607e2$var$Vt[t]; s = document.createElement("button"), s.setAttribute("title", this.instance.localize(`{{${t.toUpperCase()}}}`)), $9970b34361e607e2$var$P(s, "f-button"), e.action && (s.dataset.panzoomAction = e.action), e.change && (s.dataset.panzoomChange = JSON.stringify(e.change)), s.appendChild($9970b34361e607e2$var$n(this.instance.localize(e.icon))); } else { const e = (this.option("items") || [])[t]; e && (s = $9970b34361e607e2$var$n(this.instance.localize(e.tpl)), "function" == typeof e.click && s.addEventListener("click", (t)=>{ t.preventDefault(), t.stopPropagation(), "function" == typeof e.click && e.click.call(this, this, t); })); } const l = null == s ? void 0 : s.querySelector("svg"); if (l) for (const [t, e] of Object.entries($9970b34361e607e2$var$Gt))l.getAttribute(t) || l.setAttribute(t, String(e)); return s; } removeContainer() { const t = this.container; t && t.remove(), this.container = null, this.state = $9970b34361e607e2$var$Zt.Disabled; const e = this.instance.container; e && $9970b34361e607e2$var$S(e, $9970b34361e607e2$var$Kt); } attach() { const t = this, e = t.instance; e.on("Carousel.initSlides", t.onReady), e.on("done", t.onDone), e.on([ "reveal", "Carousel.change" ], t.onChange), t.onReady(t.instance); } detach() { const t = this, e = t.instance; e.off("Carousel.initSlides", t.onReady), e.off("done", t.onDone), e.off([ "reveal", "Carousel.change" ], t.onChange), t.removeContainer(); } } Object.defineProperty($9970b34361e607e2$var$Qt, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$Ut }); const $9970b34361e607e2$var$te = { Hash: class extends $9970b34361e607e2$var$_ { onReady() { $9970b34361e607e2$var$ht = !1; } onChange(t) { $9970b34361e607e2$var$ut && clearTimeout($9970b34361e607e2$var$ut); const { hash: e } = $9970b34361e607e2$var$pt(), { hash: i } = $9970b34361e607e2$var$ft(), n = t.isOpeningSlide(t.getSlide()); n && ($9970b34361e607e2$var$ct = i === e ? "" : i), e && e !== i && ($9970b34361e607e2$var$ut = setTimeout(()=>{ try { if (t.state === $9970b34361e607e2$var$rt.Ready) { let t = "replaceState"; n && !$9970b34361e607e2$var$dt && (t = "pushState", $9970b34361e607e2$var$dt = !0), window.history[t]({}, document.title, window.location.pathname + window.location.search + e); } } catch (t) {} }, 300)); } onClose(t) { if ($9970b34361e607e2$var$ut && clearTimeout($9970b34361e607e2$var$ut), !$9970b34361e607e2$var$ht && $9970b34361e607e2$var$dt) return $9970b34361e607e2$var$dt = !1, $9970b34361e607e2$var$ht = !1, void window.history.back(); if (!$9970b34361e607e2$var$ht) try { window.history.replaceState({}, document.title, window.location.pathname + window.location.search + ($9970b34361e607e2$var$ct || "")); } catch (t) {} } attach() { const t = this.instance; t.on("ready", this.onReady), t.on([ "Carousel.ready", "Carousel.change" ], this.onChange), t.on("close", this.onClose); } detach() { const t = this.instance; t.off("ready", this.onReady), t.off([ "Carousel.ready", "Carousel.change" ], this.onChange), t.off("close", this.onClose); } static parseURL() { return $9970b34361e607e2$var$ft(); } static startFromUrl() { $9970b34361e607e2$var$gt(); } static destroy() { window.removeEventListener("hashchange", $9970b34361e607e2$var$vt, !1); } }, Html: $9970b34361e607e2$var$Lt, Images: $9970b34361e607e2$var$wt, Slideshow: $9970b34361e607e2$var$Dt, Thumbs: $9970b34361e607e2$var$Yt, Toolbar: $9970b34361e607e2$var$Qt }, $9970b34361e607e2$var$ee = "with-fancybox", $9970b34361e607e2$var$ie = "hide-scrollbar", $9970b34361e607e2$var$ne = "--fancybox-scrollbar-compensate", $9970b34361e607e2$var$se = "--fancybox-body-margin", $9970b34361e607e2$var$oe = "aria-hidden", $9970b34361e607e2$var$ae = "is-using-tab", $9970b34361e607e2$var$re = "is-animated", $9970b34361e607e2$var$le = "is-compact", $9970b34361e607e2$var$ce = "is-loading", $9970b34361e607e2$var$he = "is-opening", $9970b34361e607e2$var$de = "has-caption", $9970b34361e607e2$var$ue = "disabled", $9970b34361e607e2$var$pe = "tabindex", $9970b34361e607e2$var$fe = "download", $9970b34361e607e2$var$ge = "href", $9970b34361e607e2$var$me = "src", $9970b34361e607e2$var$ve = (t)=>"string" == typeof t, $9970b34361e607e2$var$be = function() { var t = window.getSelection(); return !!t && "Range" === t.type; }; let $9970b34361e607e2$var$ye, $9970b34361e607e2$var$we = null, $9970b34361e607e2$var$xe = null, $9970b34361e607e2$var$Ee = 0, $9970b34361e607e2$var$Se = 0, $9970b34361e607e2$var$Pe = 0, $9970b34361e607e2$var$Ce = 0; const $9970b34361e607e2$var$Te = new Map; let $9970b34361e607e2$var$Me = 0; class $9970b34361e607e2$export$cb45b08d97cdc4fd extends $9970b34361e607e2$var$g { get isIdle() { return this.idle; } get isCompact() { return this.option("compact"); } constructor(t = [], e = {}, i = {}){ super(e), Object.defineProperty(this, "userSlides", { enumerable: !0, configurable: !0, writable: !0, value: [] }), Object.defineProperty(this, "userPlugins", { enumerable: !0, configurable: !0, writable: !0, value: {} }), Object.defineProperty(this, "idle", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "idleTimer", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "clickTimer", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "pwt", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "ignoreFocusChange", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "startedFs", { enumerable: !0, configurable: !0, writable: !0, value: !1 }), Object.defineProperty(this, "state", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$rt.Init }), Object.defineProperty(this, "id", { enumerable: !0, configurable: !0, writable: !0, value: 0 }), Object.defineProperty(this, "container", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "caption", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "footer", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "carousel", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "lastFocus", { enumerable: !0, configurable: !0, writable: !0, value: null }), Object.defineProperty(this, "prevMouseMoveEvent", { enumerable: !0, configurable: !0, writable: !0, value: void 0 }), $9970b34361e607e2$var$ye || ($9970b34361e607e2$var$ye = $9970b34361e607e2$var$ot()), this.id = e.id || ++$9970b34361e607e2$var$Me, $9970b34361e607e2$var$Te.set(this.id, this), this.userSlides = t, this.userPlugins = i, queueMicrotask(()=>{ this.init(); }); } init() { if (this.state === $9970b34361e607e2$var$rt.Destroy) return; this.state = $9970b34361e607e2$var$rt.Init, this.attachPlugins(Object.assign(Object.assign({}, $9970b34361e607e2$export$cb45b08d97cdc4fd.Plugins), this.userPlugins)), this.emit("init"), this.emit("attachPlugins"), !0 === this.option("hideScrollbar") && (()=>{ if (!$9970b34361e607e2$var$et) return; const t = document, e = t.body, i = t.documentElement; if (e.classList.contains($9970b34361e607e2$var$ie)) return; let n = window.innerWidth - i.getBoundingClientRect().width; const s = parseFloat(window.getComputedStyle(e).marginRight); n < 0 && (n = 0), i.style.setProperty($9970b34361e607e2$var$ne, `${n}px`), s && e.style.setProperty($9970b34361e607e2$var$se, `${s}px`), e.classList.add($9970b34361e607e2$var$ie); })(), this.initLayout(), this.scale(); const t = ()=>{ this.initCarousel(this.userSlides), this.state = $9970b34361e607e2$var$rt.Ready, this.attachEvents(), this.emit("ready"), setTimeout(()=>{ this.container && this.container.setAttribute($9970b34361e607e2$var$oe, "false"); }, 16); }; this.option("Fullscreen.autoStart") && $9970b34361e607e2$var$ye && !$9970b34361e607e2$var$ye.isFullscreen() ? $9970b34361e607e2$var$ye.request().then(()=>{ this.startedFs = !0, t(); }).catch(()=>t()) : t(); } initLayout() { var t, e; const i = this.option("parentEl") || document.body, s = $9970b34361e607e2$var$n(this.localize(this.option("tpl.main") || "")); if (s) { if (s.setAttribute("id", `fancybox-${this.id}`), s.setAttribute("aria-label", this.localize("{{MODAL}}")), s.classList.toggle($9970b34361e607e2$var$le, this.isCompact), $9970b34361e607e2$var$P(s, this.option("mainClass") || ""), $9970b34361e607e2$var$P(s, $9970b34361e607e2$var$he), this.container = s, this.footer = s.querySelector(".fancybox__footer"), i.appendChild(s), $9970b34361e607e2$var$P(document.documentElement, $9970b34361e607e2$var$ee), $9970b34361e607e2$var$we && $9970b34361e607e2$var$xe || ($9970b34361e607e2$var$we = document.createElement("span"), $9970b34361e607e2$var$P($9970b34361e607e2$var$we, "fancybox-focus-guard"), $9970b34361e607e2$var$we.setAttribute($9970b34361e607e2$var$pe, "0"), $9970b34361e607e2$var$we.setAttribute($9970b34361e607e2$var$oe, "true"), $9970b34361e607e2$var$we.setAttribute("aria-label", "Focus guard"), $9970b34361e607e2$var$xe = $9970b34361e607e2$var$we.cloneNode(), null === (t = s.parentElement) || void 0 === t || t.insertBefore($9970b34361e607e2$var$we, s), null === (e = s.parentElement) || void 0 === e || e.append($9970b34361e607e2$var$xe)), s.addEventListener("mousedown", (t)=>{ $9970b34361e607e2$var$Ee = t.pageX, $9970b34361e607e2$var$Se = t.pageY, $9970b34361e607e2$var$S(s, $9970b34361e607e2$var$ae); }), this.option("closeExisting")) for (const t of $9970b34361e607e2$var$Te.values())t.id !== this.id && t.close(); else this.option("animated") && ($9970b34361e607e2$var$P(s, $9970b34361e607e2$var$re), setTimeout(()=>{ this.isClosing() || $9970b34361e607e2$var$S(s, $9970b34361e607e2$var$re); }, 350)); this.emit("initLayout"); } } initCarousel(t) { const i = this.container; if (!i) return; const n = i.querySelector(".fancybox__carousel"); if (!n) return; const s = this.carousel = new $9970b34361e607e2$export$144901db2ea8e967(n, $9970b34361e607e2$var$u({}, { slides: t, transition: "fade", Panzoom: { lockAxis: this.option("dragToClose") ? "xy" : "x", infinite: !!this.option("dragToClose") && "y" }, Dots: !1, Navigation: { classes: { container: "fancybox__nav", button: "f-button", isNext: "is-next", isPrev: "is-prev" } }, initialPage: this.option("startIndex"), l10n: this.option("l10n") }, this.option("Carousel") || {})); s.on("*", (t, e, ...i)=>{ this.emit(`Carousel.${e}`, t, ...i); }), s.on([ "ready", "change" ], ()=>{ this.manageCaption(); }), this.on("Carousel.removeSlide", (t, e, i)=>{ this.clearContent(i), i.state = void 0; }), s.on("Panzoom.touchStart", ()=>{ var t, e; this.isCompact || this.endIdle(), (null === (t = document.activeElement) || void 0 === t ? void 0 : t.closest(".f-thumbs")) && (null === (e = this.container) || void 0 === e || e.focus()); }), s.on("settle", ()=>{ this.idleTimer || this.isCompact || !this.option("idle") || this.setIdle(), this.option("autoFocus") && !this.isClosing && this.checkFocus(); }), this.option("dragToClose") && (s.on("Panzoom.afterTransform", (t, i)=>{ const n = this.getSlide(); if (n && $9970b34361e607e2$var$e(n.el)) return; const s = this.container; if (s) { const t = Math.abs(i.current.f), e = t < 1 ? "" : Math.max(.5, Math.min(1, 1 - t / i.contentRect.fitHeight * 1.5)); s.style.setProperty("--fancybox-ts", e ? "0s" : ""), s.style.setProperty("--fancybox-opacity", e + ""); } }), s.on("Panzoom.touchEnd", (t, i, n)=>{ var s; const o = this.getSlide(); if (o && $9970b34361e607e2$var$e(o.el)) return; if (i.isMobile && document.activeElement && -1 !== [ "TEXTAREA", "INPUT" ].indexOf(null === (s = document.activeElement) || void 0 === s ? void 0 : s.nodeName)) return; const a = Math.abs(i.dragOffset.y); "y" === i.lockedAxis && (a >= 200 || a >= 50 && i.dragOffset.time < 300) && (n && n.cancelable && n.preventDefault(), this.close(n, "f-throwOut" + (i.current.f < 0 ? "Up" : "Down"))); })), s.on("change", (t)=>{ var e; let i = null === (e = this.getSlide()) || void 0 === e ? void 0 : e.triggerEl; if (i) { const e = new CustomEvent("slideTo", { bubbles: !0, cancelable: !0, detail: t.page }); i.dispatchEvent(e); } }), s.on([ "refresh", "change" ], (t)=>{ const e = this.container; if (!e) return; for (const i of e.querySelectorAll("[data-fancybox-current-index]"))i.innerHTML = t.page + 1; for (const i of e.querySelectorAll("[data-fancybox-count]"))i.innerHTML = t.pages.length; if (!t.isInfinite) { for (const i of e.querySelectorAll("[data-fancybox-next]"))t.page < t.pages.length - 1 ? (i.removeAttribute($9970b34361e607e2$var$ue), i.removeAttribute($9970b34361e607e2$var$pe)) : (i.setAttribute($9970b34361e607e2$var$ue, ""), i.setAttribute($9970b34361e607e2$var$pe, "-1")); for (const i of e.querySelectorAll("[data-fancybox-prev]"))t.page > 0 ? (i.removeAttribute($9970b34361e607e2$var$ue), i.removeAttribute($9970b34361e607e2$var$pe)) : (i.setAttribute($9970b34361e607e2$var$ue, ""), i.setAttribute($9970b34361e607e2$var$pe, "-1")); } const i = this.getSlide(); if (!i) return; let n = i.downloadSrc || ""; n || "image" !== i.type || i.error || !$9970b34361e607e2$var$ve(i[$9970b34361e607e2$var$me]) || (n = i[$9970b34361e607e2$var$me]); for (const t of e.querySelectorAll("[data-fancybox-download]")){ const e = i.downloadFilename; n ? (t.removeAttribute($9970b34361e607e2$var$ue), t.removeAttribute($9970b34361e607e2$var$pe), t.setAttribute($9970b34361e607e2$var$ge, n), t.setAttribute($9970b34361e607e2$var$fe, e || n), t.setAttribute("target", "_blank")) : (t.setAttribute($9970b34361e607e2$var$ue, ""), t.setAttribute($9970b34361e607e2$var$pe, "-1"), t.removeAttribute($9970b34361e607e2$var$ge), t.removeAttribute($9970b34361e607e2$var$fe)); } }), this.emit("initCarousel"); } attachEvents() { const t = this, e = t.container; if (!e) return; e.addEventListener("click", t.onClick, { passive: !1, capture: !1 }), e.addEventListener("wheel", t.onWheel, { passive: !1, capture: !1 }), document.addEventListener("keydown", t.onKeydown, { passive: !1, capture: !0 }), document.addEventListener("visibilitychange", t.onVisibilityChange, !1), document.addEventListener("mousemove", t.onMousemove), t.option("trapFocus") && document.addEventListener("focus", t.onFocus, !0), window.addEventListener("resize", t.onResize); const i = window.visualViewport; i && (i.addEventListener("scroll", t.onResize), i.addEventListener("resize", t.onResize)); } detachEvents() { const t = this, e = t.container; if (!e) return; document.removeEventListener("keydown", t.onKeydown, { passive: !1, capture: !0 }), e.removeEventListener("wheel", t.onWheel, { passive: !1, capture: !1 }), e.removeEventListener("click", t.onClick, { passive: !1, capture: !1 }), document.removeEventListener("mousemove", t.onMousemove), window.removeEventListener("resize", t.onResize); const i = window.visualViewport; i && (i.removeEventListener("resize", t.onResize), i.removeEventListener("scroll", t.onResize)), document.removeEventListener("visibilitychange", t.onVisibilityChange, !1), document.removeEventListener("focus", t.onFocus, !0); } scale() { const t = this.container; if (!t) return; const e = window.visualViewport, i = Math.max(1, (null == e ? void 0 : e.scale) || 1); let n = "", s = "", o = ""; if (e && i > 1) { let t = `${e.offsetLeft}px`, a = `${e.offsetTop}px`; n = e.width * i + "px", s = e.height * i + "px", o = `translate3d(${t}, ${a}, 0) scale(${1 / i})`; } t.style.transform = o, t.style.width = n, t.style.height = s; } onClick(t) { var e; const { container: i, isCompact: n } = this; if (!i || this.isClosing()) return; !n && this.option("idle") && this.resetIdle(); const s = t.composedPath()[0]; if (s.closest(".fancybox-spinner") || s.closest("[data-fancybox-close]")) return t.preventDefault(), void this.close(t); if (s.closest("[data-fancybox-prev]")) return t.preventDefault(), void this.prev(); if (s.closest("[data-fancybox-next]")) return t.preventDefault(), void this.next(); if ("click" === t.type && 0 === t.detail) return; if (Math.abs(t.pageX - $9970b34361e607e2$var$Ee) > 30 || Math.abs(t.pageY - $9970b34361e607e2$var$Se) > 30) return; const o = document.activeElement; if ($9970b34361e607e2$var$be() && o && i.contains(o)) return; if (n && "image" === (null === (e = this.getSlide()) || void 0 === e ? void 0 : e.type)) return void (this.clickTimer ? (clearTimeout(this.clickTimer), this.clickTimer = null) : this.clickTimer = setTimeout(()=>{ this.toggleIdle(), this.clickTimer = null; }, 350)); if (this.emit("click", t), t.defaultPrevented) return; let a = !1; if (s.closest(".fancybox__content")) { if (o) { if (o.closest("[contenteditable]")) return; s.matches($9970b34361e607e2$var$nt) || o.blur(); } if ($9970b34361e607e2$var$be()) return; a = this.option("contentClick"); } else s.closest(".fancybox__carousel") && !s.matches($9970b34361e607e2$var$nt) && (a = this.option("backdropClick")); "close" === a ? (t.preventDefault(), this.close(t)) : "next" === a ? (t.preventDefault(), this.next()) : "prev" === a && (t.preventDefault(), this.prev()); } onWheel(t) { const e = t.target; let n = this.option("wheel", t); e.closest(".fancybox__thumbs") && (n = "slide"); const s = "slide" === n, o = [ -t.deltaX || 0, -t.deltaY || 0, -t.detail || 0 ].reduce(function(t, e) { return Math.abs(e) > Math.abs(t) ? e : t; }), a = Math.max(-1, Math.min(1, o)), r = Date.now(); this.pwt && r - this.pwt < 300 ? s && t.preventDefault() : (this.pwt = r, this.emit("wheel", t, a), t.defaultPrevented || ("close" === n ? (t.preventDefault(), this.close(t)) : "slide" === n && ($9970b34361e607e2$var$i(e) || (t.preventDefault(), this[a > 0 ? "prev" : "next"]())))); } onScroll() { window.scrollTo($9970b34361e607e2$var$Pe, $9970b34361e607e2$var$Ce); } onKeydown(t) { if (!this.isTopmost()) return; this.isCompact || !this.option("idle") || this.isClosing() || this.resetIdle(); const e = t.key, i = this.option("keyboard"); if (!i) return; const n = t.composedPath()[0], s = document.activeElement && document.activeElement.classList, o = s && s.contains("f-button") || n.dataset.carouselPage || n.dataset.carouselIndex; if ("Escape" !== e && !o && $9970b34361e607e2$var$E(n)) { if (n.isContentEditable || -1 !== [ "TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO" ].indexOf(n.nodeName)) return; } if ("Tab" === t.key ? $9970b34361e607e2$var$P(this.container, $9970b34361e607e2$var$ae) : $9970b34361e607e2$var$S(this.container, $9970b34361e607e2$var$ae), t.ctrlKey || t.altKey || t.shiftKey) return; this.emit("keydown", e, t); const a = i[e]; a && "function" == typeof this[a] && (t.preventDefault(), this[a]()); } onResize() { const t = this.container; if (!t) return; const e = this.isCompact; t.classList.toggle($9970b34361e607e2$var$le, e), this.manageCaption(this.getSlide()), this.isCompact ? this.clearIdle() : this.endIdle(), this.scale(), this.emit("resize"); } onFocus(t) { this.isTopmost() && this.checkFocus(t); } onMousemove(t) { this.prevMouseMoveEvent = t, !this.isCompact && this.option("idle") && this.resetIdle(); } onVisibilityChange() { "visible" === document.visibilityState ? this.checkFocus() : this.endIdle(); } manageCloseBtn(t) { const e = this.optionFor(t, "closeButton") || !1; if ("auto" === e) { const t = this.plugins.Toolbar; if (t && t.state === $9970b34361e607e2$var$Zt.Ready) return; } if (!e) return; if (!t.contentEl || t.closeBtnEl) return; const i = this.option("tpl.closeButton"); if (i) { const e = $9970b34361e607e2$var$n(this.localize(i)); t.closeBtnEl = t.contentEl.appendChild(e), t.el && $9970b34361e607e2$var$P(t.el, "has-close-btn"); } } manageCaption(t) { var e, i; const n = "fancybox__caption", s = this.container; if (!s) return; $9970b34361e607e2$var$S(s, $9970b34361e607e2$var$de); const o = this.isCompact || this.option("commonCaption"), a = !o; if (this.caption && this.stop(this.caption), a && this.caption && (this.caption.remove(), this.caption = null), o && !this.caption) for (const t of (null === (e = this.carousel) || void 0 === e ? void 0 : e.slides) || [])t.captionEl && (t.captionEl.remove(), t.captionEl = void 0, $9970b34361e607e2$var$S(t.el, $9970b34361e607e2$var$de), null === (i = t.el) || void 0 === i || i.removeAttribute("aria-labelledby")); if (t || (t = this.getSlide()), !t || o && !this.isCurrentSlide(t)) return; const r = t.el; let l = this.optionFor(t, "caption", ""); if (!l) return void (o && this.caption && this.animate(this.caption, "f-fadeOut", ()=>{ this.caption && (this.caption.innerHTML = ""); })); let c = null; if (a) { if (c = t.captionEl || null, r && !c) { const e = n + `_${this.id}_${t.index}`; c = document.createElement("div"), $9970b34361e607e2$var$P(c, n), c.setAttribute("id", e), t.captionEl = r.appendChild(c), $9970b34361e607e2$var$P(r, $9970b34361e607e2$var$de), r.setAttribute("aria-labelledby", e); } } else { if (c = this.caption, c || (c = s.querySelector("." + n)), !c) { c = document.createElement("div"), c.dataset.fancyboxCaption = "", $9970b34361e607e2$var$P(c, n); (this.footer || s).prepend(c); } $9970b34361e607e2$var$P(s, $9970b34361e607e2$var$de), this.caption = c; } c && (c.innerHTML = "", $9970b34361e607e2$var$ve(l) || "number" == typeof l ? c.innerHTML = l + "" : l instanceof HTMLElement && c.appendChild(l)); } checkFocus(t) { this.focus(t); } focus(t) { var e; if (this.ignoreFocusChange) return; const i = document.activeElement || null, n = (null == t ? void 0 : t.target) || null, s = this.container, o = null === (e = this.carousel) || void 0 === e ? void 0 : e.viewport; if (!s || !o) return; if (!t && i && s.contains(i)) return; const a = this.getSlide(), r = a && a.state === $9970b34361e607e2$var$lt.Ready ? a.el : null; if (!r || r.contains(i) || s === i) return; t && t.cancelable && t.preventDefault(), this.ignoreFocusChange = !0; const l = Array.from(s.querySelectorAll($9970b34361e607e2$var$nt)); let c = [], h = null; for (let t of l){ const e = !t.offsetParent || !!t.closest('[aria-hidden="true"]'), i = r && r.contains(t), n = !o.contains(t); if (t === s || (i || n) && !e) { c.push(t); const e = t.dataset.origTabindex; void 0 !== e && e && (t.tabIndex = parseFloat(e)), t.removeAttribute("data-orig-tabindex"), !t.hasAttribute("autoFocus") && h || (h = t); } else { const e = void 0 === t.dataset.origTabindex ? t.getAttribute("tabindex") || "" : t.dataset.origTabindex; e && (t.dataset.origTabindex = e), t.tabIndex = -1; } } let d = null; t ? (!n || c.indexOf(n) < 0) && (d = h || s, c.length && (i === $9970b34361e607e2$var$xe ? d = c[0] : this.lastFocus !== s && i !== $9970b34361e607e2$var$we || (d = c[c.length - 1]))) : d = a && "image" === a.type ? s : h || s, d && $9970b34361e607e2$var$st(d), this.lastFocus = document.activeElement, this.ignoreFocusChange = !1; } next() { const t = this.carousel; t && t.pages.length > 1 && t.slideNext(); } prev() { const t = this.carousel; t && t.pages.length > 1 && t.slidePrev(); } jumpTo(...t) { this.carousel && this.carousel.slideTo(...t); } isTopmost() { var t; return (null === (t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance()) || void 0 === t ? void 0 : t.id) == this.id; } animate(t = null, e = "", i) { if (!t || !e) return void (i && i()); this.stop(t); const n = (s)=>{ s.target === t && t.dataset.animationName && (t.removeEventListener("animationend", n), delete t.dataset.animationName, i && i(), $9970b34361e607e2$var$S(t, e)); }; t.dataset.animationName = e, t.addEventListener("animationend", n), $9970b34361e607e2$var$P(t, e); } stop(t) { t && t.dispatchEvent(new CustomEvent("animationend", { bubbles: !1, cancelable: !0, currentTarget: t })); } setContent(t, e = "", i = !0) { if (this.isClosing()) return; const s = t.el; if (!s) return; let o = null; if ($9970b34361e607e2$var$E(e) ? o = e : (o = $9970b34361e607e2$var$n(e + ""), $9970b34361e607e2$var$E(o) || (o = document.createElement("div"), o.innerHTML = e + "")), [ "img", "picture", "iframe", "video", "audio" ].includes(o.nodeName.toLowerCase())) { const t = document.createElement("div"); t.appendChild(o), o = t; } $9970b34361e607e2$var$E(o) && t.filter && !t.error && (o = o.querySelector(t.filter)), o && $9970b34361e607e2$var$E(o) ? ($9970b34361e607e2$var$P(o, "fancybox__content"), t.id && o.setAttribute("id", t.id), s.classList.add(`has-${t.error ? "error" : t.type || "unknown"}`), s.prepend(o), "none" === o.style.display && (o.style.display = ""), "none" === getComputedStyle(o).getPropertyValue("display") && (o.style.display = t.display || this.option("defaultDisplay") || "flex"), t.contentEl = o, i && this.revealContent(t), this.manageCloseBtn(t), this.manageCaption(t)) : this.setError(t, "{{ELEMENT_NOT_FOUND}}"); } revealContent(t, e) { const i = t.el, n = t.contentEl; i && n && (this.emit("reveal", t), this.hideLoading(t), t.state = $9970b34361e607e2$var$lt.Opening, (e = this.isOpeningSlide(t) ? void 0 === e ? this.optionFor(t, "showClass") : e : "f-fadeIn") ? this.animate(n, e, ()=>{ this.done(t); }) : this.done(t)); } done(t) { this.isClosing() || (t.state = $9970b34361e607e2$var$lt.Ready, this.emit("done", t), $9970b34361e607e2$var$P(t.el, "is-done"), this.isCurrentSlide(t) && this.option("autoFocus") && queueMicrotask(()=>{ var e; null === (e = t.panzoom) || void 0 === e || e.updateControls(), this.option("autoFocus") && this.focus(); }), this.isOpeningSlide(t) && ($9970b34361e607e2$var$S(this.container, $9970b34361e607e2$var$he), !this.isCompact && this.option("idle") && this.setIdle())); } isCurrentSlide(t) { const e = this.getSlide(); return !(!t || !e) && e.index === t.index; } isOpeningSlide(t) { var e, i; return null === (null === (e = this.carousel) || void 0 === e ? void 0 : e.prevPage) && t && t.index === (null === (i = this.getSlide()) || void 0 === i ? void 0 : i.index); } showLoading(t) { t.state = $9970b34361e607e2$var$lt.Loading; const e = t.el; if (!e) return; $9970b34361e607e2$var$P(e, $9970b34361e607e2$var$ce), this.emit("loading", t), t.spinnerEl || setTimeout(()=>{ if (!this.isClosing() && !t.spinnerEl && t.state === $9970b34361e607e2$var$lt.Loading) { let i = $9970b34361e607e2$var$n($9970b34361e607e2$var$x); $9970b34361e607e2$var$P(i, "fancybox-spinner"), t.spinnerEl = i, e.prepend(i), this.animate(i, "f-fadeIn"); } }, 250); } hideLoading(t) { const e = t.el; if (!e) return; const i = t.spinnerEl; this.isClosing() ? null == i || i.remove() : ($9970b34361e607e2$var$S(e, $9970b34361e607e2$var$ce), i && this.animate(i, "f-fadeOut", ()=>{ i.remove(); }), t.state === $9970b34361e607e2$var$lt.Loading && (this.emit("loaded", t), t.state = $9970b34361e607e2$var$lt.Ready)); } setError(t, e) { if (this.isClosing()) return; const i = new Event("error", { bubbles: !0, cancelable: !0 }); if (this.emit("error", i, t), i.defaultPrevented) return; t.error = e, this.hideLoading(t), this.clearContent(t); const n = document.createElement("div"); n.classList.add("fancybox-error"), n.innerHTML = this.localize(e || "

{{ERROR}}

"), this.setContent(t, n); } clearContent(t) { if (void 0 === t.state) return; this.emit("clearContent", t), t.contentEl && (t.contentEl.remove(), t.contentEl = void 0); const e = t.el; e && ($9970b34361e607e2$var$S(e, "has-error"), $9970b34361e607e2$var$S(e, "has-unknown"), $9970b34361e607e2$var$S(e, `has-${t.type || "unknown"}`)), t.closeBtnEl && t.closeBtnEl.remove(), t.closeBtnEl = void 0, t.captionEl && t.captionEl.remove(), t.captionEl = void 0, t.spinnerEl && t.spinnerEl.remove(), t.spinnerEl = void 0; } getSlide() { var t; const e = this.carousel; return (null === (t = null == e ? void 0 : e.pages[null == e ? void 0 : e.page]) || void 0 === t ? void 0 : t.slides[0]) || void 0; } close(t, e) { if (this.isClosing()) return; const i = new Event("shouldClose", { bubbles: !0, cancelable: !0 }); if (this.emit("shouldClose", i, t), i.defaultPrevented) return; t && t.cancelable && (t.preventDefault(), t.stopPropagation()); const n = ()=>{ this.proceedClose(t, e); }; this.startedFs && $9970b34361e607e2$var$ye && $9970b34361e607e2$var$ye.isFullscreen() ? Promise.resolve($9970b34361e607e2$var$ye.exit()).then(()=>n()) : n(); } clearIdle() { this.idleTimer && clearTimeout(this.idleTimer), this.idleTimer = null; } setIdle(t = !1) { const e = ()=>{ this.clearIdle(), this.idle = !0, $9970b34361e607e2$var$P(this.container, "is-idle"), this.emit("setIdle"); }; if (this.clearIdle(), !this.isClosing()) { if (t) e(); else { const t = this.option("idle"); t && (this.idleTimer = setTimeout(e, t)); } } } endIdle() { this.clearIdle(), this.idle && !this.isClosing() && (this.idle = !1, $9970b34361e607e2$var$S(this.container, "is-idle"), this.emit("endIdle")); } resetIdle() { this.endIdle(), this.setIdle(); } toggleIdle() { this.idle ? this.endIdle() : this.setIdle(!0); } toggleFullscreen() { $9970b34361e607e2$var$ye && ($9970b34361e607e2$var$ye.isFullscreen() ? $9970b34361e607e2$var$ye.exit() : $9970b34361e607e2$var$ye.request().then(()=>{ this.startedFs = !0; })); } isClosing() { return [ $9970b34361e607e2$var$rt.Closing, $9970b34361e607e2$var$rt.CustomClosing, $9970b34361e607e2$var$rt.Destroy ].includes(this.state); } proceedClose(t, e) { var i, n; this.state = $9970b34361e607e2$var$rt.Closing, this.clearIdle(), this.detachEvents(); const s = this.container, o = this.carousel, a = this.getSlide(), r = a && this.option("placeFocusBack") ? a.triggerEl || this.option("triggerEl") : null; if (r && ($9970b34361e607e2$var$tt(r) ? $9970b34361e607e2$var$st(r) : r.focus()), s && ($9970b34361e607e2$var$S(s, $9970b34361e607e2$var$he), $9970b34361e607e2$var$P(s, "is-closing"), s.setAttribute($9970b34361e607e2$var$oe, "true"), this.option("animated") && $9970b34361e607e2$var$P(s, $9970b34361e607e2$var$re), s.style.pointerEvents = "none"), o) { o.clearTransitions(), null === (i = o.panzoom) || void 0 === i || i.destroy(), null === (n = o.plugins.Navigation) || void 0 === n || n.detach(); for (const t of o.slides){ t.state = $9970b34361e607e2$var$lt.Closing, this.hideLoading(t); const e = t.contentEl; e && this.stop(e); const i = null == t ? void 0 : t.panzoom; i && (i.stop(), i.detachEvents(), i.detachObserver()), this.isCurrentSlide(t) || o.emit("removeSlide", t); } } $9970b34361e607e2$var$Pe = window.scrollX, $9970b34361e607e2$var$Ce = window.scrollY, window.addEventListener("scroll", this.onScroll), this.emit("close", t), this.state !== $9970b34361e607e2$var$rt.CustomClosing ? (void 0 === e && a && (e = this.optionFor(a, "hideClass")), e && a ? (this.animate(a.contentEl, e, ()=>{ o && o.emit("removeSlide", a); }), setTimeout(()=>{ this.destroy(); }, 500)) : this.destroy()) : setTimeout(()=>{ this.destroy(); }, 500); } destroy() { var t; if (this.state === $9970b34361e607e2$var$rt.Destroy) return; window.removeEventListener("scroll", this.onScroll), this.state = $9970b34361e607e2$var$rt.Destroy, null === (t = this.carousel) || void 0 === t || t.destroy(); const e = this.container; e && e.remove(), $9970b34361e607e2$var$Te.delete(this.id); const i = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); i ? i.focus() : ($9970b34361e607e2$var$we && ($9970b34361e607e2$var$we.remove(), $9970b34361e607e2$var$we = null), $9970b34361e607e2$var$xe && ($9970b34361e607e2$var$xe.remove(), $9970b34361e607e2$var$xe = null), $9970b34361e607e2$var$S(document.documentElement, $9970b34361e607e2$var$ee), (()=>{ if (!$9970b34361e607e2$var$et) return; const t = document, e = t.body; e.classList.remove($9970b34361e607e2$var$ie), e.style.setProperty($9970b34361e607e2$var$se, ""), t.documentElement.style.setProperty($9970b34361e607e2$var$ne, ""); })(), this.emit("destroy")); } static bind(t, e, i) { if (!$9970b34361e607e2$var$et) return; let n, s = "", o = {}; if (void 0 === t ? n = document.body : $9970b34361e607e2$var$ve(t) ? (n = document.body, s = t, "object" == typeof e && (o = e || {})) : (n = t, $9970b34361e607e2$var$ve(e) && (s = e), "object" == typeof i && (o = i || {})), !n || !$9970b34361e607e2$var$E(n)) return; s = s || "[data-fancybox]"; const a = $9970b34361e607e2$export$cb45b08d97cdc4fd.openers.get(n) || new Map; a.set(s, o), $9970b34361e607e2$export$cb45b08d97cdc4fd.openers.set(n, a), 1 === a.size && n.addEventListener("click", $9970b34361e607e2$export$cb45b08d97cdc4fd.fromEvent); } static unbind(t, e) { let i, n = ""; if ($9970b34361e607e2$var$ve(t) ? (i = document.body, n = t) : (i = t, $9970b34361e607e2$var$ve(e) && (n = e)), !i) return; const s = $9970b34361e607e2$export$cb45b08d97cdc4fd.openers.get(i); s && n && s.delete(n), n && s || ($9970b34361e607e2$export$cb45b08d97cdc4fd.openers.delete(i), i.removeEventListener("click", $9970b34361e607e2$export$cb45b08d97cdc4fd.fromEvent)); } static destroy() { let t; for(; t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance();)t.destroy(); for (const t of $9970b34361e607e2$export$cb45b08d97cdc4fd.openers.keys())t.removeEventListener("click", $9970b34361e607e2$export$cb45b08d97cdc4fd.fromEvent); $9970b34361e607e2$export$cb45b08d97cdc4fd.openers = new Map; } static fromEvent(t) { if (t.defaultPrevented) return; if (t.button && 0 !== t.button) return; if (t.ctrlKey || t.metaKey || t.shiftKey) return; let e = t.composedPath()[0]; const i = e.closest("[data-fancybox-trigger]"); if (i) { const t = i.dataset.fancyboxTrigger || "", n = document.querySelectorAll(`[data-fancybox="${t}"]`), s = parseInt(i.dataset.fancyboxIndex || "", 10) || 0; e = n[s] || e; } if (!(e && e instanceof Element)) return; let n, s, o, a; if ([ ...$9970b34361e607e2$export$cb45b08d97cdc4fd.openers ].reverse().find(([t, i])=>!(!t.contains(e) || ![ ...i ].reverse().find(([i, r])=>{ let l = e.closest(i); return !!l && (n = t, s = i, o = l, a = r, !0); }))), !n || !s || !o) return; a = a || {}, t.preventDefault(), e = o; let r = [], l = $9970b34361e607e2$var$u({}, $9970b34361e607e2$var$at, a); l.event = t, l.triggerEl = e, l.delegate = i; const c = l.groupAll, h = l.groupAttr, d = h && e ? e.getAttribute(`${h}`) : ""; if ((!e || d || c) && (r = [].slice.call(n.querySelectorAll(s))), e && !c && (r = d ? r.filter((t)=>t.getAttribute(`${h}`) === d) : [ e ]), !r.length) return; const p = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); return p && p.options.triggerEl && r.indexOf(p.options.triggerEl) > -1 ? void 0 : (e && (l.startIndex = r.indexOf(e)), $9970b34361e607e2$export$cb45b08d97cdc4fd.fromNodes(r, l)); } static fromSelector(t, e, i) { let n = null, s = "", o = {}; if ($9970b34361e607e2$var$ve(t) ? (n = document.body, s = t, "object" == typeof e && (o = e || {})) : t instanceof HTMLElement && $9970b34361e607e2$var$ve(e) && (n = t, s = e, "object" == typeof i && (o = i || {})), !n || !s) return !1; const a = $9970b34361e607e2$export$cb45b08d97cdc4fd.openers.get(n); return !!a && (o = $9970b34361e607e2$var$u({}, a.get(s) || {}, o), !!o && $9970b34361e607e2$export$cb45b08d97cdc4fd.fromNodes(Array.from(n.querySelectorAll(s)), o)); } static fromNodes(t, e) { e = $9970b34361e607e2$var$u({}, $9970b34361e607e2$var$at, e || {}); const i = []; for (const n of t){ const t = n.dataset || {}, s = t[$9970b34361e607e2$var$me] || n.getAttribute($9970b34361e607e2$var$ge) || n.getAttribute("currentSrc") || n.getAttribute($9970b34361e607e2$var$me) || void 0; let o; const a = e.delegate; let r; a && i.length === e.startIndex && (o = a instanceof HTMLImageElement ? a : a.querySelector("img:not([aria-hidden])")), o || (o = n instanceof HTMLImageElement ? n : n.querySelector("img:not([aria-hidden])")), o && (r = o.currentSrc || o[$9970b34361e607e2$var$me] || void 0, !r && o.dataset && (r = o.dataset.lazySrc || o.dataset[$9970b34361e607e2$var$me] || void 0)); const l = { src: s, triggerEl: n, thumbEl: o, thumbElSrc: r, thumbSrc: r }; for(const e in t){ let i = t[e] + ""; i = "false" !== i && ("true" === i || i), l[e] = i; } i.push(l); } return new $9970b34361e607e2$export$cb45b08d97cdc4fd(i, e); } static getInstance(t) { if (t) return $9970b34361e607e2$var$Te.get(t); return Array.from($9970b34361e607e2$var$Te.values()).reverse().find((t)=>!t.isClosing() && t) || null; } static getSlide() { var t; return (null === (t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance()) || void 0 === t ? void 0 : t.getSlide()) || null; } static show(t = [], e = {}) { return new $9970b34361e607e2$export$cb45b08d97cdc4fd(t, e); } static next() { const t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); t && t.next(); } static prev() { const t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); t && t.prev(); } static close(t = !0, ...e) { if (t) for (const t of $9970b34361e607e2$var$Te.values())t.close(...e); else { const t = $9970b34361e607e2$export$cb45b08d97cdc4fd.getInstance(); t && t.close(...e); } } } Object.defineProperty($9970b34361e607e2$export$cb45b08d97cdc4fd, "version", { enumerable: !0, configurable: !0, writable: !0, value: "5.0.36" }), Object.defineProperty($9970b34361e607e2$export$cb45b08d97cdc4fd, "defaults", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$at }), Object.defineProperty($9970b34361e607e2$export$cb45b08d97cdc4fd, "Plugins", { enumerable: !0, configurable: !0, writable: !0, value: $9970b34361e607e2$var$te }), Object.defineProperty($9970b34361e607e2$export$cb45b08d97cdc4fd, "openers", { enumerable: !0, configurable: !0, writable: !0, value: new Map }); (0, $9970b34361e607e2$export$cb45b08d97cdc4fd).bind("[data-fancybox]");