diff --git a/.vitepress/cache/deps/@fancyapps_ui.js b/.vitepress/cache/deps/@fancyapps_ui.js deleted file mode 100644 index 2078275..0000000 --- a/.vitepress/cache/deps/@fancyapps_ui.js +++ /dev/null @@ -1,3264 +0,0 @@ -// node_modules/.pnpm/registry.npmmirror.com+@fancyapps+ui@5.0.22/node_modules/@fancyapps/ui/dist/index.esm.js -var t = (t2, e2 = 1e4) => (t2 = parseFloat(t2 + "") || 0, Math.round((t2 + Number.EPSILON) * e2) / e2); -var e = function(t2) { - if (!(t2 && t2 instanceof Element && t2.offsetParent)) - return false; - const e2 = t2.scrollHeight > t2.clientHeight, i2 = window.getComputedStyle(t2).overflowY, n2 = -1 !== i2.indexOf("hidden"), s2 = -1 !== i2.indexOf("visible"); - return e2 && !n2 && !s2; -}; -var i = function(t2, n2 = void 0) { - return !(!t2 || t2 === document.body || n2 && t2 === n2) && (e(t2) ? t2 : i(t2.parentElement, n2)); -}; -var n = function(t2) { - var e2 = new DOMParser().parseFromString(t2, "text/html").body; - if (e2.childElementCount > 1) { - for (var i2 = document.createElement("div"); e2.firstChild; ) - i2.appendChild(e2.firstChild); - return i2; - } - return e2.firstChild; -}; -var s = (t2) => `${t2 || ""}`.split(" ").filter((t3) => !!t3); -var o = (t2, e2, i2) => { - s(e2).forEach((e3) => { - t2 && t2.classList.toggle(e3, i2 || false); - }); -}; -var a = class { - constructor(t2) { - Object.defineProperty(this, "pageX", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "pageY", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "clientX", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "clientY", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "id", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "time", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "nativePointer", { enumerable: true, configurable: true, writable: true, value: void 0 }), this.nativePointer = t2, this.pageX = t2.pageX, this.pageY = t2.pageY, this.clientX = t2.clientX, this.clientY = t2.clientY, this.id = self.Touch && t2 instanceof Touch ? t2.identifier : -1, this.time = Date.now(); - } -}; -var r = { passive: false }; -var l = class { - constructor(t2, { start: e2 = () => true, move: i2 = () => { - }, end: n2 = () => { - } }) { - Object.defineProperty(this, "element", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "startCallback", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "moveCallback", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "endCallback", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "currentPointers", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "startPointers", { enumerable: true, configurable: true, writable: true, value: [] }), this.element = t2, this.startCallback = e2, this.moveCallback = i2, this.endCallback = n2; - for (const t3 of ["onPointerStart", "onTouchStart", "onMove", "onTouchEnd", "onPointerEnd", "onWindowBlur"]) - this[t3] = this[t3].bind(this); - this.element.addEventListener("mousedown", this.onPointerStart, r), this.element.addEventListener("touchstart", this.onTouchStart, r), this.element.addEventListener("touchmove", this.onMove, r), this.element.addEventListener("touchend", this.onTouchEnd), this.element.addEventListener("touchcancel", this.onTouchEnd); - } - onPointerStart(t2) { - if (!t2.buttons || 0 !== t2.button) - return; - const e2 = new a(t2); - this.currentPointers.some((t3) => t3.id === e2.id) || this.triggerPointerStart(e2, t2) && (window.addEventListener("mousemove", this.onMove), window.addEventListener("mouseup", this.onPointerEnd), window.addEventListener("blur", this.onWindowBlur)); - } - onTouchStart(t2) { - for (const e2 of Array.from(t2.changedTouches || [])) - this.triggerPointerStart(new a(e2), t2); - window.addEventListener("blur", this.onWindowBlur); - } - onMove(t2) { - const e2 = this.currentPointers.slice(), i2 = "changedTouches" in t2 ? Array.from(t2.changedTouches || []).map((t3) => new a(t3)) : [new a(t2)], n2 = []; - for (const t3 of i2) { - const e3 = this.currentPointers.findIndex((e4) => e4.id === t3.id); - e3 < 0 || (n2.push(t3), this.currentPointers[e3] = t3); - } - n2.length && this.moveCallback(t2, this.currentPointers.slice(), e2); - } - onPointerEnd(t2) { - t2.buttons > 0 && 0 !== t2.button || (this.triggerPointerEnd(t2, new a(t2)), window.removeEventListener("mousemove", this.onMove), window.removeEventListener("mouseup", this.onPointerEnd), window.removeEventListener("blur", this.onWindowBlur)); - } - onTouchEnd(t2) { - for (const e2 of Array.from(t2.changedTouches || [])) - this.triggerPointerEnd(t2, new a(e2)); - } - triggerPointerStart(t2, e2) { - return !!this.startCallback(e2, t2, this.currentPointers.slice()) && (this.currentPointers.push(t2), this.startPointers.push(t2), true); - } - triggerPointerEnd(t2, e2) { - const i2 = this.currentPointers.findIndex((t3) => t3.id === e2.id); - i2 < 0 || (this.currentPointers.splice(i2, 1), this.startPointers.splice(i2, 1), this.endCallback(t2, e2, this.currentPointers.slice())); - } - onWindowBlur() { - this.clear(); - } - clear() { - for (; this.currentPointers.length; ) { - const t2 = 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: true, cancelable: true, clientX: t2.clientX, clientY: t2.clientY }), t2, this.currentPointers.slice()); - } - } - stop() { - this.element.removeEventListener("mousedown", this.onPointerStart, r), this.element.removeEventListener("touchstart", this.onTouchStart, r), this.element.removeEventListener("touchmove", this.onMove, 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 c(t2, e2) { - return e2 ? Math.sqrt(Math.pow(e2.clientX - t2.clientX, 2) + Math.pow(e2.clientY - t2.clientY, 2)) : 0; -} -function h(t2, e2) { - return e2 ? { clientX: (t2.clientX + e2.clientX) / 2, clientY: (t2.clientY + e2.clientY) / 2 } : t2; -} -var d = (t2) => "object" == typeof t2 && null !== t2 && t2.constructor === Object && "[object Object]" === Object.prototype.toString.call(t2); -var u = (t2, ...e2) => { - const i2 = e2.length; - for (let n2 = 0; n2 < i2; n2++) { - const i3 = e2[n2] || {}; - Object.entries(i3).forEach(([e3, i4]) => { - const n3 = Array.isArray(i4) ? [] : {}; - t2[e3] || Object.assign(t2, { [e3]: n3 }), d(i4) ? Object.assign(t2[e3], u(n3, i4)) : Array.isArray(i4) ? Object.assign(t2, { [e3]: [...i4] }) : Object.assign(t2, { [e3]: i4 }); - }); - } - return t2; -}; -var p = function(t2, e2) { - return t2.split(".").reduce((t3, e3) => "object" == typeof t3 ? t3[e3] : void 0, e2); -}; -var f = class { - constructor(t2 = {}) { - Object.defineProperty(this, "options", { enumerable: true, configurable: true, writable: true, value: t2 }), Object.defineProperty(this, "events", { enumerable: true, configurable: true, writable: true, value: /* @__PURE__ */ new Map() }), this.setOptions(t2); - for (const t3 of Object.getOwnPropertyNames(Object.getPrototypeOf(this))) - t3.startsWith("on") && "function" == typeof this[t3] && (this[t3] = this[t3].bind(this)); - } - setOptions(t2) { - this.options = t2 ? u({}, this.constructor.defaults, t2) : {}; - for (const [t3, e2] of Object.entries(this.option("on") || {})) - this.on(t3, e2); - } - option(t2, ...e2) { - let i2 = p(t2, this.options); - return i2 && "function" == typeof i2 && (i2 = i2.call(this, this, ...e2)), i2; - } - optionFor(t2, e2, i2, ...n2) { - let s2 = p(e2, t2); - var o2; - "string" != typeof (o2 = s2) || isNaN(o2) || isNaN(parseFloat(o2)) || (s2 = parseFloat(s2)), "true" === s2 && (s2 = true), "false" === s2 && (s2 = false), s2 && "function" == typeof s2 && (s2 = s2.call(this, this, t2, ...n2)); - let a2 = p(e2, this.options); - return a2 && "function" == typeof a2 ? s2 = a2.call(this, this, t2, ...n2, s2) : void 0 === s2 && (s2 = a2), void 0 === s2 ? i2 : s2; - } - cn(t2) { - const e2 = this.options.classes; - return e2 && e2[t2] || ""; - } - localize(t2, e2 = []) { - t2 = String(t2).replace(/\{\{(\w+).?(\w+)?\}\}/g, (t3, e3, i2) => { - let n2 = ""; - return i2 ? n2 = this.option(`${e3[0] + e3.toLowerCase().substring(1)}.l10n.${i2}`) : e3 && (n2 = this.option(`l10n.${e3}`)), n2 || (n2 = t3), n2; - }); - for (let i2 = 0; i2 < e2.length; i2++) - t2 = t2.split(e2[i2][0]).join(e2[i2][1]); - return t2 = t2.replace(/\{\{(.*?)\}\}/g, (t3, e3) => e3); - } - on(t2, e2) { - let i2 = []; - "string" == typeof t2 ? i2 = t2.split(" ") : Array.isArray(t2) && (i2 = t2), this.events || (this.events = /* @__PURE__ */ new Map()), i2.forEach((t3) => { - let i3 = this.events.get(t3); - i3 || (this.events.set(t3, []), i3 = []), i3.includes(e2) || i3.push(e2), this.events.set(t3, i3); - }); - } - off(t2, e2) { - let i2 = []; - "string" == typeof t2 ? i2 = t2.split(" ") : Array.isArray(t2) && (i2 = t2), i2.forEach((t3) => { - const i3 = this.events.get(t3); - if (Array.isArray(i3)) { - const t4 = i3.indexOf(e2); - t4 > -1 && i3.splice(t4, 1); - } - }); - } - emit(t2, ...e2) { - [...this.events.get(t2) || []].forEach((t3) => t3(this, ...e2)), "*" !== t2 && this.emit("*", t2, ...e2); - } -}; -Object.defineProperty(f, "version", { enumerable: true, configurable: true, writable: true, value: "5.0.22" }), Object.defineProperty(f, "defaults", { enumerable: true, configurable: true, writable: true, value: {} }); -var m = class extends f { - constructor(t2 = {}) { - super(t2), Object.defineProperty(this, "plugins", { enumerable: true, configurable: true, writable: true, value: {} }); - } - attachPlugins(t2 = {}) { - const e2 = /* @__PURE__ */ new Map(); - for (const [i2, n2] of Object.entries(t2)) { - const t3 = this.option(i2), s2 = this.plugins[i2]; - s2 || false === t3 ? s2 && false === t3 && (s2.detach(), delete this.plugins[i2]) : e2.set(i2, new n2(this, t3 || {})); - } - for (const [t3, i2] of e2) - this.plugins[t3] = i2, i2.attach(); - this.emit("attachPlugins"); - } - detachPlugins(t2) { - t2 = t2 || Object.keys(this.plugins); - for (const e2 of t2) { - const t3 = this.plugins[e2]; - t3 && t3.detach(), delete this.plugins[e2]; - } - return this.emit("detachPlugins"), this; - } -}; -var g; -!function(t2) { - t2[t2.Init = 0] = "Init", t2[t2.Error = 1] = "Error", t2[t2.Ready = 2] = "Ready", t2[t2.Panning = 3] = "Panning", t2[t2.Mousemove = 4] = "Mousemove", t2[t2.Destroy = 5] = "Destroy"; -}(g || (g = {})); -var b = ["a", "b", "c", "d", "e", "f"]; -var v = { 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" }; -var y = { content: null, width: "auto", height: "auto", panMode: "drag", touch: true, dragMinThreshold: 3, lockAxis: false, mouseMoveFactor: 1, mouseMoveFriction: 0.12, zoom: true, pinchToZoom: true, panOnlyZoomed: "auto", minScale: 1, maxScale: 2, friction: 0.25, dragFriction: 0.35, decelFriction: 0.05, click: "toggleZoom", dblClick: false, wheel: "zoom", wheelLimit: 7, spinner: true, bounds: "auto", infinite: false, rubberband: true, bounce: true, maxVelocity: 75, transformParent: false, 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: v }; -var w = '
'; -var x = (t2) => t2 && null !== t2 && t2 instanceof Element && "nodeType" in t2; -var E = (t2, e2) => { - t2 && s(e2).forEach((e3) => { - t2.classList.remove(e3); - }); -}; -var S = (t2, e2) => { - t2 && s(e2).forEach((e3) => { - t2.classList.add(e3); - }); -}; -var P = { a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }; -var C = 1e5; -var M = 1e3; -var T = "mousemove"; -var O = "drag"; -var A = "content"; -var z = null; -var L = null; -var R = class _R extends m { - get isTouchDevice() { - return null === L && (L = window.matchMedia("(hover: none)").matches), L; - } - get isMobile() { - return null === z && (z = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent)), z; - } - get panMode() { - return this.options.panMode !== T || this.isTouchDevice ? O : T; - } - get panOnlyZoomed() { - const t2 = this.options.panOnlyZoomed; - return "auto" === t2 ? this.isTouchDevice : t2; - } - 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: t2, b: e2 } = this.current; - return Math.sqrt(t2 * t2 + e2 * e2) || 1; - } - get targetScale() { - const { a: t2, b: e2 } = this.target; - return Math.sqrt(t2 * t2 + e2 * e2) || 1; - } - get minScale() { - return this.option("minScale") || 1; - } - get fullScale() { - const { contentRect: t2 } = this; - return t2.fullWidth / t2.fitWidth || 1; - } - get maxScale() { - return this.fullScale * (this.option("maxScale") || 1) || 1; - } - get coverScale() { - const { containerRect: t2, contentRect: e2 } = this, i2 = Math.max(t2.height / e2.fitHeight, t2.width / e2.fitWidth) || 1; - return Math.min(this.fullScale, i2); - } - get isScaling() { - return Math.abs(this.targetScale - this.scale) > 1e-5 && !this.isResting; - } - get isContentLoading() { - const t2 = this.content; - return !!(t2 && t2 instanceof HTMLImageElement) && !t2.complete; - } - get isResting() { - if (this.isBouncingX || this.isBouncingY) - return false; - for (const t2 of b) { - const e2 = "e" == t2 || "f" === t2 ? 1e-3 : 1e-5; - if (Math.abs(this.target[t2] - this.current[t2]) > e2) - return false; - } - return !(!this.ignoreBounds && !this.checkBounds().inBounds); - } - constructor(t2, e2 = {}, i2 = {}) { - var s2; - if (super(e2), Object.defineProperty(this, "pointerTracker", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "resizeObserver", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "updateTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "clickTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "rAF", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "isTicking", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "friction", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "ignoreBounds", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "isBouncingX", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "isBouncingY", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "clicks", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "trackingPoints", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "pwt", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "cwd", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "pmme", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: g.Init }), Object.defineProperty(this, "isDragging", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "content", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "spinner", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "containerRect", { enumerable: true, configurable: true, writable: true, value: { width: 0, height: 0, innerWidth: 0, innerHeight: 0 } }), Object.defineProperty(this, "contentRect", { enumerable: true, configurable: true, writable: true, 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: true, configurable: true, writable: true, value: { x: 0, y: 0, top: 0, left: 0, time: 0 } }), Object.defineProperty(this, "dragOffset", { enumerable: true, configurable: true, writable: true, value: { x: 0, y: 0, time: 0 } }), Object.defineProperty(this, "current", { enumerable: true, configurable: true, writable: true, value: Object.assign({}, P) }), Object.defineProperty(this, "target", { enumerable: true, configurable: true, writable: true, value: Object.assign({}, P) }), Object.defineProperty(this, "velocity", { enumerable: true, configurable: true, writable: true, value: { a: 0, b: 0, c: 0, d: 0, e: 0, f: 0 } }), Object.defineProperty(this, "lockedAxis", { enumerable: true, configurable: true, writable: true, value: false }), !t2) - throw new Error("Container Element Not Found"); - this.container = t2, this.initContent(), this.attachPlugins(Object.assign(Object.assign({}, _R.Plugins), i2)), this.emit("init"); - const o2 = this.content; - if (o2.addEventListener("load", this.onLoad), o2.addEventListener("error", this.onError), this.isContentLoading) { - if (this.option("spinner")) { - t2.classList.add(this.cn("isLoading")); - const e3 = n(w); - !t2.contains(o2) || o2.parentElement instanceof HTMLPictureElement ? this.spinner = t2.appendChild(e3) : this.spinner = (null === (s2 = o2.parentElement) || void 0 === s2 ? void 0 : s2.insertBefore(e3, o2)) || null; - } - this.emit("beforeLoad"); - } else - queueMicrotask(() => { - this.enable(); - }); - } - initContent() { - const { container: t2 } = this, e2 = this.cn(A); - let i2 = this.option(A) || t2.querySelector(`.${e2}`); - if (i2 || (i2 = t2.querySelector("img,picture") || t2.firstElementChild, i2 && S(i2, e2)), i2 instanceof HTMLPictureElement && (i2 = i2.querySelector("img")), !i2) - throw new Error("No content found"); - this.content = i2; - } - onLoad() { - this.spinner && (this.spinner.remove(), this.spinner = null), this.option("spinner") && this.container.classList.remove(this.cn("isLoading")), this.emit("afterLoad"), this.state === g.Init ? this.enable() : this.updateMetrics(); - } - onError() { - this.state !== g.Destroy && (this.spinner && (this.spinner.remove(), this.spinner = null), this.stop(), this.detachEvents(), this.state = g.Error, this.emit("error")); - } - attachObserver() { - var t2; - const e2 = () => Math.abs(this.containerRect.width - this.container.getBoundingClientRect().width) > 0.1 || Math.abs(this.containerRect.height - this.container.getBoundingClientRect().height) > 0.1; - this.resizeObserver || void 0 === window.ResizeObserver || (this.resizeObserver = new ResizeObserver(() => { - this.updateTimer || (e2() ? (this.onResize(), this.isMobile && (this.updateTimer = setTimeout(() => { - e2() && this.onResize(), this.updateTimer = null; - }, 500))) : this.updateTimer && (clearTimeout(this.updateTimer), this.updateTimer = null)); - })), null === (t2 = this.resizeObserver) || void 0 === t2 || t2.observe(this.container); - } - detachObserver() { - var t2; - null === (t2 = this.resizeObserver) || void 0 === t2 || t2.disconnect(); - } - attachEvents() { - const { container: t2 } = this; - t2.addEventListener("click", this.onClick, { passive: false, capture: false }), t2.addEventListener("wheel", this.onWheel, { passive: false }), this.pointerTracker = new l(t2, { start: this.onPointerDown, move: this.onPointerMove, end: this.onPointerUp }), document.addEventListener(T, this.onMouseMove); - } - detachEvents() { - var t2; - const { container: e2 } = this; - e2.removeEventListener("click", this.onClick, { passive: false, capture: false }), e2.removeEventListener("wheel", this.onWheel, { passive: false }), null === (t2 = this.pointerTracker) || void 0 === t2 || t2.stop(), this.pointerTracker = null, document.removeEventListener(T, this.onMouseMove), document.removeEventListener("keydown", this.onKeydown, true), this.clickTimer && (clearTimeout(this.clickTimer), this.clickTimer = null), this.updateTimer && (clearTimeout(this.updateTimer), this.updateTimer = null); - } - animate() { - const t2 = this.friction; - this.setTargetForce(); - const e2 = this.option("maxVelocity"); - for (const i2 of b) - t2 ? (this.velocity[i2] *= 1 - t2, e2 && !this.isScaling && (this.velocity[i2] = Math.max(Math.min(this.velocity[i2], e2), -1 * e2)), this.current[i2] += this.velocity[i2]) : this.current[i2] = this.target[i2]; - this.setTransform(), this.setEdgeForce(), !this.isResting || this.isDragging ? this.rAF = requestAnimationFrame(() => this.animate()) : this.stop("current"); - } - setTargetForce() { - for (const t2 of b) - "e" === t2 && this.isBouncingX || "f" === t2 && this.isBouncingY || (this.velocity[t2] = (1 / (1 - this.friction) - 1) * (this.target[t2] - this.current[t2])); - } - checkBounds(t2 = 0, e2 = 0) { - const { current: i2 } = this, n2 = i2.e + t2, s2 = i2.f + e2, o2 = this.getBounds(), { x: a2, y: r2 } = o2, l2 = a2.min, c2 = a2.max, h2 = r2.min, d2 = r2.max; - let u2 = 0, p2 = 0; - return l2 !== 1 / 0 && n2 < l2 ? u2 = l2 - n2 : c2 !== 1 / 0 && n2 > c2 && (u2 = c2 - n2), h2 !== 1 / 0 && s2 < h2 ? p2 = h2 - s2 : d2 !== 1 / 0 && s2 > d2 && (p2 = d2 - s2), Math.abs(u2) < 1e-3 && (u2 = 0), Math.abs(p2) < 1e-3 && (p2 = 0), Object.assign(Object.assign({}, o2), { xDiff: u2, yDiff: p2, inBounds: !u2 && !p2 }); - } - clampTargetBounds() { - const { target: t2 } = this, { x: e2, y: i2 } = this.getBounds(); - e2.min !== 1 / 0 && (t2.e = Math.max(t2.e, e2.min)), e2.max !== 1 / 0 && (t2.e = Math.min(t2.e, e2.max)), i2.min !== 1 / 0 && (t2.f = Math.max(t2.f, i2.min)), i2.max !== 1 / 0 && (t2.f = Math.min(t2.f, i2.max)); - } - calculateContentDim(t2 = this.current) { - const { content: e2, contentRect: i2 } = this, { fitWidth: n2, fitHeight: s2, fullWidth: o2, fullHeight: a2 } = i2; - let r2 = o2, l2 = a2; - if (this.option("zoom") || 0 !== this.angle) { - const i3 = !(e2 instanceof HTMLImageElement) && ("none" === window.getComputedStyle(e2).maxWidth || "none" === window.getComputedStyle(e2).maxHeight), c2 = i3 ? o2 : n2, h2 = i3 ? a2 : s2, d2 = this.getMatrix(t2), u2 = new DOMPoint(0, 0).matrixTransform(d2), p2 = new DOMPoint(0 + c2, 0).matrixTransform(d2), f2 = new DOMPoint(0 + c2, 0 + h2).matrixTransform(d2), m2 = new DOMPoint(0, 0 + h2).matrixTransform(d2), g2 = Math.abs(f2.x - u2.x), b2 = Math.abs(f2.y - u2.y), v2 = Math.abs(m2.x - p2.x), y2 = Math.abs(m2.y - p2.y); - r2 = Math.max(g2, v2), l2 = Math.max(b2, y2); - } - return { contentWidth: r2, contentHeight: l2 }; - } - setEdgeForce() { - if (this.ignoreBounds || this.isDragging || this.panMode === T || this.targetScale < this.scale) - return this.isBouncingX = false, void (this.isBouncingY = false); - const { target: t2 } = this, { x: e2, y: i2, xDiff: n2, yDiff: s2 } = this.checkBounds(); - const o2 = this.option("maxVelocity"); - let a2 = this.velocity.e, r2 = this.velocity.f; - 0 !== n2 ? (this.isBouncingX = true, n2 * a2 <= 0 ? a2 += 0.14 * n2 : (a2 = 0.14 * n2, e2.min !== 1 / 0 && (this.target.e = Math.max(t2.e, e2.min)), e2.max !== 1 / 0 && (this.target.e = Math.min(t2.e, e2.max))), o2 && (a2 = Math.max(Math.min(a2, o2), -1 * o2))) : this.isBouncingX = false, 0 !== s2 ? (this.isBouncingY = true, s2 * r2 <= 0 ? r2 += 0.14 * s2 : (r2 = 0.14 * s2, i2.min !== 1 / 0 && (this.target.f = Math.max(t2.f, i2.min)), i2.max !== 1 / 0 && (this.target.f = Math.min(t2.f, i2.max))), o2 && (r2 = Math.max(Math.min(r2, o2), -1 * o2))) : this.isBouncingY = false, this.isBouncingX && (this.velocity.e = a2), this.isBouncingY && (this.velocity.f = r2); - } - enable() { - const { content: t2 } = this, e2 = new DOMMatrixReadOnly(window.getComputedStyle(t2).transform); - for (const t3 of b) - this.current[t3] = this.target[t3] = e2[t3]; - this.updateMetrics(), this.attachObserver(), this.attachEvents(), this.state = g.Ready, this.emit("ready"); - } - onClick(t2) { - var e2; - this.isDragging && (null === (e2 = this.pointerTracker) || void 0 === e2 || e2.clear(), this.trackingPoints = [], this.startDecelAnim()); - const i2 = t2.target; - if (!i2 || t2.defaultPrevented) - return; - if (i2 && i2.hasAttribute("disabled")) - return t2.preventDefault(), void t2.stopPropagation(); - if ((() => { - const t3 = window.getSelection(); - return t3 && "Range" === t3.type; - })() && !i2.closest("button")) - return; - const n2 = i2.closest("[data-panzoom-action]"), s2 = i2.closest("[data-panzoom-change]"), o2 = n2 || s2, a2 = o2 && x(o2) ? o2.dataset : null; - if (a2) { - const e3 = a2.panzoomChange, i3 = a2.panzoomAction; - if ((e3 || i3) && t2.preventDefault(), e3) { - let t3 = {}; - try { - t3 = JSON.parse(e3); - } catch (t4) { - console && console.warn("The given data was not valid JSON"); - } - return void this.applyChange(t3); - } - if (i3) - return void (this[i3] && this[i3]()); - } - if (Math.abs(this.dragOffset.x) > 3 || Math.abs(this.dragOffset.y) > 3) - return t2.preventDefault(), void t2.stopPropagation(); - const r2 = this.content.getBoundingClientRect(); - if (this.dragStart.time && !this.canZoomOut() && (Math.abs(r2.x - this.dragStart.x) > 2 || Math.abs(r2.y - this.dragStart.y) > 2)) - return; - this.dragStart.time = 0; - const l2 = (e3) => { - this.option("zoom") && e3 && "string" == typeof e3 && /(iterateZoom)|(toggle(Zoom|Full|Cover|Max)|(zoomTo(Fit|Cover|Max)))/.test(e3) && "function" == typeof this[e3] && (t2.preventDefault(), this[e3]({ event: t2 })); - }, c2 = this.option("click", t2), h2 = this.option("dblClick", t2); - h2 ? (this.clicks++, 1 == this.clicks && (this.clickTimer = setTimeout(() => { - 1 === this.clicks ? (this.emit("click", t2), !t2.defaultPrevented && c2 && l2(c2)) : (this.emit("dblClick", t2), t2.defaultPrevented || l2(h2)), this.clicks = 0, this.clickTimer = null; - }, 350))) : (this.emit("click", t2), !t2.defaultPrevented && c2 && l2(c2)); - } - addTrackingPoint(t2) { - const e2 = this.trackingPoints.filter((t3) => t3.time > Date.now() - 100); - e2.push(t2), this.trackingPoints = e2; - } - onPointerDown(t2, e2, i2) { - var n2; - if (false === this.option("touch", t2)) - return false; - this.pwt = 0, this.dragOffset = { x: 0, y: 0, time: 0 }, this.trackingPoints = []; - const s2 = this.content.getBoundingClientRect(); - if (this.dragStart = { x: s2.x, y: s2.y, top: s2.top, left: s2.left, time: Date.now() }, this.clickTimer) - return false; - if (this.panMode === T && this.targetScale > 1) - return t2.preventDefault(), t2.stopPropagation(), false; - const o2 = t2.composedPath()[0]; - if (!i2.length) { - if (["TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO", "IFRAME"].includes(o2.nodeName) || o2.closest("[contenteditable]") || o2.closest("[data-selectable]") || o2.closest("[data-draggable]") || o2.closest("[data-clickable]") || o2.closest("[data-panzoom-change]") || o2.closest("[data-panzoom-action]")) - return false; - null === (n2 = window.getSelection()) || void 0 === n2 || n2.removeAllRanges(); - } - if ("mousedown" === t2.type) - ["A", "BUTTON"].includes(o2.nodeName) || t2.preventDefault(); - else if (Math.abs(this.velocity.a) > 0.3) - return false; - return this.target.e = this.current.e, this.target.f = this.current.f, this.stop(), this.isDragging || (this.isDragging = true, this.addTrackingPoint(e2), this.emit("touchStart", t2)), true; - } - onPointerMove(e2, n2, s2) { - if (false === this.option("touch", e2)) - return; - if (!this.isDragging) - return; - if (n2.length < 2 && this.panOnlyZoomed && t(this.targetScale) <= t(this.minScale)) - return; - if (this.emit("touchMove", e2), e2.defaultPrevented) - return; - this.addTrackingPoint(n2[0]); - const { content: o2 } = this, a2 = h(s2[0], s2[1]), r2 = h(n2[0], n2[1]); - let l2 = 0, d2 = 0; - if (n2.length > 1) { - const t2 = o2.getBoundingClientRect(); - l2 = a2.clientX - t2.left - 0.5 * t2.width, d2 = a2.clientY - t2.top - 0.5 * t2.height; - } - const u2 = c(s2[0], s2[1]), p2 = c(n2[0], n2[1]); - let f2 = u2 ? p2 / u2 : 1, m2 = r2.clientX - a2.clientX, g2 = r2.clientY - a2.clientY; - this.dragOffset.x += m2, this.dragOffset.y += g2, this.dragOffset.time = Date.now() - this.dragStart.time; - let b2 = t(this.targetScale) === t(this.minScale) && this.option("lockAxis"); - if (b2 && !this.lockedAxis) - if ("xy" === b2 || "y" === b2 || "touchmove" === e2.type) { - if (Math.abs(this.dragOffset.x) < 6 && Math.abs(this.dragOffset.y) < 6) - return void e2.preventDefault(); - const t2 = Math.abs(180 * Math.atan2(this.dragOffset.y, this.dragOffset.x) / Math.PI); - this.lockedAxis = t2 > 45 && t2 < 135 ? "y" : "x", this.dragOffset.x = 0, this.dragOffset.y = 0, m2 = 0, g2 = 0; - } else - this.lockedAxis = b2; - if (i(e2.target, this.content) && (b2 = "x", this.dragOffset.y = 0), b2 && "xy" !== b2 && this.lockedAxis !== b2 && t(this.targetScale) === t(this.minScale)) - return; - e2.cancelable && e2.preventDefault(), this.container.classList.add(this.cn("isDragging")); - const v2 = this.checkBounds(m2, g2); - this.option("rubberband") ? ("x" !== this.isInfinite && (v2.xDiff > 0 && m2 < 0 || v2.xDiff < 0 && m2 > 0) && (m2 *= Math.max(0, 0.5 - Math.abs(0.75 / this.contentRect.fitWidth * v2.xDiff))), "y" !== this.isInfinite && (v2.yDiff > 0 && g2 < 0 || v2.yDiff < 0 && g2 > 0) && (g2 *= Math.max(0, 0.5 - Math.abs(0.75 / this.contentRect.fitHeight * v2.yDiff)))) : (v2.xDiff && (m2 = 0), v2.yDiff && (g2 = 0)); - const y2 = this.targetScale, w2 = this.minScale, x2 = this.maxScale; - y2 < 0.5 * w2 && (f2 = Math.max(f2, w2)), y2 > 1.5 * x2 && (f2 = Math.min(f2, x2)), "y" === this.lockedAxis && t(y2) === t(w2) && (m2 = 0), "x" === this.lockedAxis && t(y2) === t(w2) && (g2 = 0), this.applyChange({ originX: l2, originY: d2, panX: m2, panY: g2, scale: f2, friction: this.option("dragFriction"), ignoreBounds: true }); - } - onPointerUp(t2, e2, n2) { - if (n2.length) - return this.dragOffset.x = 0, this.dragOffset.y = 0, void (this.trackingPoints = []); - this.container.classList.remove(this.cn("isDragging")), this.isDragging && (this.addTrackingPoint(e2), this.panOnlyZoomed && this.contentRect.width - this.contentRect.fitWidth < 1 && this.contentRect.height - this.contentRect.fitHeight < 1 && (this.trackingPoints = []), i(t2.target, this.content) && "y" === this.lockedAxis && (this.trackingPoints = []), this.emit("touchEnd", t2), this.isDragging = false, this.lockedAxis = false, this.state !== g.Destroy && (t2.defaultPrevented || this.startDecelAnim())); - } - startDecelAnim() { - var e2; - const i2 = this.isScaling; - this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.isBouncingX = false, this.isBouncingY = false; - for (const t2 of b) - this.velocity[t2] = 0; - this.target.e = this.current.e, this.target.f = this.current.f, E(this.container, "is-scaling"), E(this.container, "is-animating"), this.isTicking = false; - const { trackingPoints: n2 } = this, s2 = n2[0], o2 = n2[n2.length - 1]; - let a2 = 0, r2 = 0, l2 = 0; - o2 && s2 && (a2 = o2.clientX - s2.clientX, r2 = o2.clientY - s2.clientY, l2 = o2.time - s2.time); - const c2 = (null === (e2 = window.visualViewport) || void 0 === e2 ? void 0 : e2.scale) || 1; - 1 !== c2 && (a2 *= c2, r2 *= c2); - let h2 = 0, d2 = 0, u2 = 0, p2 = 0, f2 = this.option("decelFriction"); - const m2 = this.targetScale; - if (l2 > 0) { - u2 = Math.abs(a2) > 3 ? a2 / (l2 / 30) : 0, p2 = Math.abs(r2) > 3 ? r2 / (l2 / 30) : 0; - const t2 = this.option("maxVelocity"); - t2 && (u2 = Math.max(Math.min(u2, t2), -1 * t2), p2 = Math.max(Math.min(p2, t2), -1 * t2)); - } - u2 && (h2 = u2 / (1 / (1 - f2) - 1)), p2 && (d2 = p2 / (1 / (1 - f2) - 1)), ("y" === this.option("lockAxis") || "xy" === this.option("lockAxis") && "y" === this.lockedAxis && t(m2) === this.minScale) && (h2 = u2 = 0), ("x" === this.option("lockAxis") || "xy" === this.option("lockAxis") && "x" === this.lockedAxis && t(m2) === this.minScale) && (d2 = p2 = 0); - const g2 = this.dragOffset.x, v2 = this.dragOffset.y, y2 = this.option("dragMinThreshold") || 0; - Math.abs(g2) < y2 && Math.abs(v2) < y2 && (h2 = d2 = 0, u2 = p2 = 0), (m2 < this.minScale - 1e-5 || m2 > this.maxScale + 1e-5 || i2 && !h2 && !d2) && (f2 = 0.35), this.applyChange({ panX: h2, panY: d2, friction: f2 }), this.emit("decel", u2, p2, g2, v2); - } - onWheel(t2) { - var e2 = [-t2.deltaX || 0, -t2.deltaY || 0, -t2.detail || 0].reduce(function(t3, e3) { - return Math.abs(e3) > Math.abs(t3) ? e3 : t3; - }); - const i2 = Math.max(-1, Math.min(1, e2)); - if (this.emit("wheel", t2, i2), this.panMode === T) - return; - if (t2.defaultPrevented) - return; - const n2 = this.option("wheel"); - "pan" === n2 ? (t2.preventDefault(), this.panOnlyZoomed && !this.canZoomOut() || this.applyChange({ panX: 2 * -t2.deltaX, panY: 2 * -t2.deltaY, bounce: false })) : "zoom" === n2 && false !== this.option("zoom") && this.zoomWithWheel(t2); - } - onMouseMove(t2) { - this.panWithMouse(t2); - } - onKeydown(t2) { - "Escape" === t2.key && this.toggleFS(); - } - onResize() { - this.updateMetrics(), this.checkBounds().inBounds || this.requestTick(); - } - setTransform() { - this.emit("beforeTransform"); - const { current: e2, target: i2, content: n2, contentRect: s2 } = this, o2 = Object.assign({}, P); - for (const n3 of b) { - const s3 = "e" == n3 || "f" === n3 ? M : C; - o2[n3] = t(e2[n3], s3), Math.abs(i2[n3] - e2[n3]) < ("e" == n3 || "f" === n3 ? 0.51 : 1e-3) && (e2[n3] = i2[n3]); - } - let { a: a2, b: r2, c: l2, d: c2, e: h2, f: d2 } = o2, u2 = `matrix(${a2}, ${r2}, ${l2}, ${c2}, ${h2}, ${d2})`, p2 = n2.parentElement instanceof HTMLPictureElement ? n2.parentElement : n2; - if (this.option("transformParent") && (p2 = p2.parentElement || p2), p2.style.transform === u2) - return; - p2.style.transform = u2; - const { contentWidth: f2, contentHeight: m2 } = this.calculateContentDim(); - s2.width = f2, s2.height = m2, this.emit("afterTransform"); - } - updateMetrics(e2 = false) { - var i2; - if (!this || this.state === g.Destroy) - return; - if (this.isContentLoading) - return; - const n2 = Math.max(1, (null === (i2 = window.visualViewport) || void 0 === i2 ? void 0 : i2.scale) || 1), { container: s2, content: o2 } = this, a2 = o2 instanceof HTMLImageElement, r2 = s2.getBoundingClientRect(), l2 = getComputedStyle(this.container); - let c2 = r2.width * n2, h2 = r2.height * n2; - const d2 = parseFloat(l2.paddingTop) + parseFloat(l2.paddingBottom), u2 = c2 - (parseFloat(l2.paddingLeft) + parseFloat(l2.paddingRight)), p2 = h2 - d2; - this.containerRect = { width: c2, height: h2, innerWidth: u2, innerHeight: p2 }; - let f2 = this.option("width") || "auto", m2 = this.option("height") || "auto"; - "auto" === f2 && (f2 = parseFloat(o2.dataset.width || "") || ((t2) => { - let e3 = 0; - return e3 = t2 instanceof HTMLImageElement ? t2.naturalWidth : t2 instanceof SVGElement ? t2.width.baseVal.value : Math.max(t2.offsetWidth, t2.scrollWidth), e3 || 0; - })(o2)), "auto" === m2 && (m2 = parseFloat(o2.dataset.height || "") || ((t2) => { - let e3 = 0; - return e3 = t2 instanceof HTMLImageElement ? t2.naturalHeight : t2 instanceof SVGElement ? t2.height.baseVal.value : Math.max(t2.offsetHeight, t2.scrollHeight), e3 || 0; - })(o2)); - let b2 = o2.parentElement instanceof HTMLPictureElement ? o2.parentElement : o2; - this.option("transformParent") && (b2 = b2.parentElement || b2); - const v2 = b2.getAttribute("style") || ""; - b2.style.setProperty("transform", "none", "important"), a2 && (b2.style.width = "", b2.style.height = ""), b2.offsetHeight; - const y2 = o2.getBoundingClientRect(); - let w2 = y2.width * n2, x2 = y2.height * n2, E2 = 0, S2 = 0; - a2 && (Math.abs(f2 - w2) > 1 || Math.abs(m2 - x2) > 1) && ({ width: w2, height: x2, top: E2, left: S2 } = ((t2, e3, i3, n3) => { - const s3 = i3 / n3; - return s3 > t2 / e3 ? (i3 = t2, n3 = t2 / s3) : (i3 = e3 * s3, n3 = e3), { width: i3, height: n3, top: 0.5 * (e3 - n3), left: 0.5 * (t2 - i3) }; - })(w2, x2, f2, m2)), this.contentRect = Object.assign(Object.assign({}, this.contentRect), { top: y2.top - r2.top + E2, bottom: r2.bottom - y2.bottom + E2, left: y2.left - r2.left + S2, right: r2.right - y2.right + S2, fitWidth: w2, fitHeight: x2, width: w2, height: x2, fullWidth: f2, fullHeight: m2 }), b2.style.cssText = v2, a2 && (b2.style.width = `${w2}px`, b2.style.height = `${x2}px`), this.setTransform(), true !== e2 && this.emit("refresh"), this.ignoreBounds || (t(this.targetScale) < t(this.minScale) ? this.zoomTo(this.minScale, { friction: 0 }) : this.targetScale > this.maxScale ? this.zoomTo(this.maxScale, { friction: 0 }) : this.state === g.Init || this.checkBounds().inBounds || this.requestTick()), this.updateControls(); - } - getBounds() { - const e2 = this.option("bounds"); - if ("auto" !== e2) - return e2; - const { contentWidth: i2, contentHeight: n2 } = this.calculateContentDim(this.target); - let s2 = 0, o2 = 0, a2 = 0, r2 = 0; - const l2 = this.option("infinite"); - if (true === l2 || this.lockedAxis && l2 === this.lockedAxis) - s2 = -1 / 0, a2 = 1 / 0, o2 = -1 / 0, r2 = 1 / 0; - else { - let { containerRect: e3, contentRect: l3 } = this, c2 = t(this.contentRect.fitWidth * this.targetScale, M), h2 = t(this.contentRect.fitHeight * this.targetScale, M), { innerWidth: d2, innerHeight: u2 } = e3; - if (this.containerRect.width === c2 && (d2 = e3.width), this.containerRect.width === h2 && (u2 = e3.height), i2 > d2) { - a2 = 0.5 * (i2 - d2), s2 = -1 * a2; - let t2 = 0.5 * (l3.right - l3.left); - s2 += t2, a2 += t2; - } - if (this.contentRect.fitWidth > d2 && i2 < d2 && (s2 -= 0.5 * (this.contentRect.fitWidth - d2), a2 -= 0.5 * (this.contentRect.fitWidth - d2)), n2 > u2) { - r2 = 0.5 * (n2 - u2), o2 = -1 * r2; - let t2 = 0.5 * (l3.bottom - l3.top); - o2 += t2, r2 += t2; - } - this.contentRect.fitHeight > u2 && n2 < u2 && (s2 -= 0.5 * (this.contentRect.fitHeight - u2), a2 -= 0.5 * (this.contentRect.fitHeight - u2)); - } - return { x: { min: s2, max: a2 }, y: { min: o2, max: r2 } }; - } - updateControls() { - const e2 = this, i2 = e2.container, { panMode: n2, contentRect: s2, fullScale: a2, targetScale: r2, coverScale: l2, maxScale: c2, minScale: h2 } = e2; - let d2 = { toggleMax: r2 - h2 < 0.5 * (c2 - h2) ? c2 : h2, toggleCover: r2 - h2 < 0.5 * (l2 - h2) ? l2 : h2, toggleZoom: r2 - h2 < 0.5 * (a2 - h2) ? a2 : h2 }[e2.option("click") || ""] || h2, u2 = e2.canZoomIn(), p2 = e2.canZoomOut(), f2 = n2 === O && !!this.option("touch"), m2 = p2 && f2; - f2 && (t(r2) < t(h2) && !this.panOnlyZoomed && (m2 = true), (t(s2.width, 1) > t(s2.fitWidth, 1) || t(s2.height, 1) > t(s2.fitHeight, 1)) && (m2 = true)), t(s2.width * r2, 1) < t(s2.fitWidth, 1) && (m2 = false), n2 === T && (m2 = false); - let g2 = u2 && t(d2) > t(r2), b2 = !g2 && !m2 && p2 && t(d2) < t(r2); - o(i2, this.cn("canZoomIn"), g2), o(i2, this.cn("canZoomOut"), b2), o(i2, this.cn("isDraggable"), m2); - for (const t2 of i2.querySelectorAll('[data-panzoom-action="zoomIn"]')) - u2 ? (t2.removeAttribute("disabled"), t2.removeAttribute("tabindex")) : (t2.setAttribute("disabled", ""), t2.setAttribute("tabindex", "-1")); - for (const t2 of i2.querySelectorAll('[data-panzoom-action="zoomOut"]')) - p2 ? (t2.removeAttribute("disabled"), t2.removeAttribute("tabindex")) : (t2.setAttribute("disabled", ""), t2.setAttribute("tabindex", "-1")); - for (const t2 of i2.querySelectorAll('[data-panzoom-action="toggleZoom"],[data-panzoom-action="iterateZoom"]')) { - u2 || p2 ? (t2.removeAttribute("disabled"), t2.removeAttribute("tabindex")) : (t2.setAttribute("disabled", ""), t2.setAttribute("tabindex", "-1")); - const e3 = t2.querySelector("g"); - e3 && (e3.style.display = u2 ? "" : "none"); - } - } - panTo({ x: t2 = this.target.e, y: e2 = this.target.f, scale: i2 = this.targetScale, friction: n2 = this.option("friction"), angle: s2 = 0, originX: o2 = 0, originY: a2 = 0, flipX: r2 = false, flipY: l2 = false, ignoreBounds: c2 = false }) { - this.state !== g.Destroy && this.applyChange({ panX: t2 - this.target.e, panY: e2 - this.target.f, scale: i2 / this.targetScale, angle: s2, originX: o2, originY: a2, friction: n2, flipX: r2, flipY: l2, ignoreBounds: c2 }); - } - applyChange({ panX: e2 = 0, panY: i2 = 0, scale: n2 = 1, angle: s2 = 0, originX: o2 = -this.current.e, originY: a2 = -this.current.f, friction: r2 = this.option("friction"), flipX: l2 = false, flipY: c2 = false, ignoreBounds: h2 = false, bounce: d2 = this.option("bounce") }) { - if (this.state === g.Destroy) - return; - this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.friction = r2 || 0, this.ignoreBounds = h2; - const { current: u2 } = this, p2 = u2.e, f2 = u2.f, m2 = this.getMatrix(this.target); - let v2 = new DOMMatrix().translate(p2, f2).translate(o2, a2).translate(e2, i2); - if (this.option("zoom")) { - if (!h2) { - const t2 = this.targetScale, e3 = this.minScale, i3 = this.maxScale; - t2 * n2 < e3 && (n2 = e3 / t2), t2 * n2 > i3 && (n2 = i3 / t2); - } - v2 = v2.scale(n2); - } - v2 = v2.translate(-o2, -a2).translate(-p2, -f2).multiply(m2), s2 && (v2 = v2.rotate(s2)), l2 && (v2 = v2.scale(-1, 1)), c2 && (v2 = v2.scale(1, -1)); - for (const e3 of b) - "e" !== e3 && "f" !== e3 && (v2[e3] > this.minScale + 1e-5 || v2[e3] < this.minScale - 1e-5) ? this.target[e3] = v2[e3] : this.target[e3] = t(v2[e3], M); - (this.targetScale < this.scale || Math.abs(n2 - 1) > 0.1 || this.panMode === T || false === d2) && !h2 && this.clampTargetBounds(), this.isResting || (this.state = g.Panning, this.requestTick()); - } - stop(t2 = false) { - if (this.state === g.Init || this.state === g.Destroy) - return; - const e2 = this.isTicking; - this.rAF && (cancelAnimationFrame(this.rAF), this.rAF = null), this.isBouncingX = false, this.isBouncingY = false; - for (const e3 of b) - this.velocity[e3] = 0, "current" === t2 ? this.current[e3] = this.target[e3] : "target" === t2 && (this.target[e3] = this.current[e3]); - this.setTransform(), E(this.container, "is-scaling"), E(this.container, "is-animating"), this.isTicking = false, this.state = g.Ready, e2 && (this.emit("endAnimation"), this.updateControls()); - } - requestTick() { - this.isTicking || (this.emit("startAnimation"), this.updateControls(), S(this.container, "is-animating"), this.isScaling && S(this.container, "is-scaling")), this.isTicking = true, this.rAF || (this.rAF = requestAnimationFrame(() => this.animate())); - } - panWithMouse(e2, i2 = this.option("mouseMoveFriction")) { - if (this.pmme = e2, this.panMode !== T || !e2) - return; - if (t(this.targetScale) <= t(this.minScale)) - return; - this.emit("mouseMove", e2); - const { container: n2, containerRect: s2, contentRect: o2 } = this, a2 = s2.width, r2 = s2.height, l2 = n2.getBoundingClientRect(), c2 = (e2.clientX || 0) - l2.left, h2 = (e2.clientY || 0) - l2.top; - let { contentWidth: d2, contentHeight: u2 } = this.calculateContentDim(this.target); - const p2 = this.option("mouseMoveFactor"); - p2 > 1 && (d2 !== a2 && (d2 *= p2), u2 !== r2 && (u2 *= p2)); - let f2 = 0.5 * (d2 - a2) - c2 / a2 * 100 / 100 * (d2 - a2); - f2 += 0.5 * (o2.right - o2.left); - let m2 = 0.5 * (u2 - r2) - h2 / r2 * 100 / 100 * (u2 - r2); - m2 += 0.5 * (o2.bottom - o2.top), this.applyChange({ panX: f2 - this.target.e, panY: m2 - this.target.f, friction: i2 }); - } - zoomWithWheel(e2) { - if (this.state === g.Destroy || this.state === g.Init) - return; - const i2 = Date.now(); - if (i2 - this.pwt < 45) - return void e2.preventDefault(); - this.pwt = i2; - var n2 = [-e2.deltaX || 0, -e2.deltaY || 0, -e2.detail || 0].reduce(function(t2, e3) { - return Math.abs(e3) > Math.abs(t2) ? e3 : t2; - }); - const s2 = Math.max(-1, Math.min(1, n2)), { targetScale: o2, maxScale: a2, minScale: r2 } = this; - let l2 = o2 * (100 + 45 * s2) / 100; - t(l2) < t(r2) && t(o2) <= t(r2) ? (this.cwd += Math.abs(s2), l2 = r2) : t(l2) > t(a2) && t(o2) >= t(a2) ? (this.cwd += Math.abs(s2), l2 = a2) : (this.cwd = 0, l2 = Math.max(Math.min(l2, a2), r2)), this.cwd > this.option("wheelLimit") || (e2.preventDefault(), t(l2) !== t(o2) && this.zoomTo(l2, { event: e2 })); - } - canZoomIn() { - return this.option("zoom") && (t(this.contentRect.width, 1) < t(this.contentRect.fitWidth, 1) || t(this.targetScale) < t(this.maxScale)); - } - canZoomOut() { - return this.option("zoom") && t(this.targetScale) > t(this.minScale); - } - zoomIn(t2 = 1.25, e2) { - this.zoomTo(this.targetScale * t2, e2); - } - zoomOut(t2 = 0.8, e2) { - this.zoomTo(this.targetScale * t2, e2); - } - zoomToFit(t2) { - this.zoomTo("fit", t2); - } - zoomToCover(t2) { - this.zoomTo("cover", t2); - } - zoomToFull(t2) { - this.zoomTo("full", t2); - } - zoomToMax(t2) { - this.zoomTo("max", t2); - } - toggleZoom(t2) { - this.zoomTo(this.targetScale - this.minScale < 0.5 * (this.fullScale - this.minScale) ? "full" : "fit", t2); - } - toggleMax(t2) { - this.zoomTo(this.targetScale - this.minScale < 0.5 * (this.maxScale - this.minScale) ? "max" : "fit", t2); - } - toggleCover(t2) { - this.zoomTo(this.targetScale - this.minScale < 0.5 * (this.coverScale - this.minScale) ? "cover" : "fit", t2); - } - iterateZoom(t2) { - this.zoomTo("next", t2); - } - zoomTo(t2 = 1, { friction: e2 = "auto", originX: i2 = "auto", originY: n2 = "auto", event: s2 } = {}) { - if (this.isContentLoading || this.state === g.Destroy) - return; - const { targetScale: o2 } = this; - this.stop(); - let a2 = 1; - if (this.panMode === T && (s2 = this.pmme || s2), s2 || "auto" === i2 || "auto" === n2) { - const t3 = this.content.getBoundingClientRect(), e3 = this.container.getBoundingClientRect(), o3 = s2 ? s2.clientX : e3.left + 0.5 * e3.width, a3 = s2 ? s2.clientY : e3.top + 0.5 * e3.height; - i2 = o3 - t3.left - 0.5 * t3.width, n2 = a3 - t3.top - 0.5 * t3.height; - } - const r2 = this.fullScale, l2 = this.maxScale; - let c2 = this.coverScale; - "number" == typeof t2 ? a2 = t2 / o2 : ("next" === t2 && (r2 - c2 < 0.2 && (c2 = r2), t2 = o2 < r2 - 1e-5 ? "full" : o2 < l2 - 1e-5 ? "max" : "fit"), a2 = "full" === t2 ? r2 / o2 || 1 : "cover" === t2 ? c2 / o2 || 1 : "max" === t2 ? l2 / o2 || 1 : 1 / o2 || 1), e2 = "auto" === e2 ? a2 > 1 ? 0.15 : 0.25 : e2, this.applyChange({ scale: a2, originX: i2, originY: n2, friction: e2 }), s2 && this.panMode === T && this.panWithMouse(s2, e2); - } - rotateCCW() { - this.applyChange({ angle: -90 }); - } - rotateCW() { - this.applyChange({ angle: 90 }); - } - flipX() { - this.applyChange({ flipX: true }); - } - flipY() { - this.applyChange({ flipY: true }); - } - fitX() { - this.stop("target"); - const { containerRect: t2, contentRect: e2, target: i2 } = this; - this.applyChange({ panX: 0.5 * t2.width - (e2.left + 0.5 * e2.fitWidth) - i2.e, panY: 0.5 * t2.height - (e2.top + 0.5 * e2.fitHeight) - i2.f, scale: t2.width / e2.fitWidth / this.targetScale, originX: 0, originY: 0, ignoreBounds: true }); - } - fitY() { - this.stop("target"); - const { containerRect: t2, contentRect: e2, target: i2 } = this; - this.applyChange({ panX: 0.5 * t2.width - (e2.left + 0.5 * e2.fitWidth) - i2.e, panY: 0.5 * t2.innerHeight - (e2.top + 0.5 * e2.fitHeight) - i2.f, scale: t2.height / e2.fitHeight / this.targetScale, originX: 0, originY: 0, ignoreBounds: true }); - } - toggleFS() { - const { container: t2 } = this, e2 = this.cn("inFullscreen"), i2 = this.cn("htmlHasFullscreen"); - t2.classList.toggle(e2); - const n2 = t2.classList.contains(e2); - n2 ? (document.documentElement.classList.add(i2), document.addEventListener("keydown", this.onKeydown, true)) : (document.documentElement.classList.remove(i2), document.removeEventListener("keydown", this.onKeydown, true)), this.updateMetrics(), this.emit(n2 ? "enterFS" : "exitFS"); - } - getMatrix(t2 = this.current) { - const { a: e2, b: i2, c: n2, d: s2, e: o2, f: a2 } = t2; - return new DOMMatrix([e2, i2, n2, s2, o2, a2]); - } - reset(t2) { - if (this.state !== g.Init && this.state !== g.Destroy) { - this.stop("current"); - for (const t3 of b) - this.target[t3] = P[t3]; - this.target.a = this.minScale, this.target.d = this.minScale, this.clampTargetBounds(), this.isResting || (this.friction = void 0 === t2 ? this.option("friction") : t2, this.state = g.Panning, this.requestTick()); - } - } - destroy() { - this.stop(), this.state = g.Destroy, this.detachEvents(), this.detachObserver(); - const { container: t2, content: e2 } = this, i2 = this.option("classes") || {}; - for (const e3 of Object.values(i2)) - t2.classList.remove(e3 + ""); - e2 && (e2.removeEventListener("load", this.onLoad), e2.removeEventListener("error", this.onError)), this.detachPlugins(); - } -}; -Object.defineProperty(R, "defaults", { enumerable: true, configurable: true, writable: true, value: y }), Object.defineProperty(R, "Plugins", { enumerable: true, configurable: true, writable: true, value: {} }); -var k = function(t2, e2) { - let i2 = true; - return (...n2) => { - i2 && (i2 = false, t2(...n2), setTimeout(() => { - i2 = true; - }, e2)); - }; -}; -var I = (t2, e2) => { - let i2 = []; - return t2.childNodes.forEach((t3) => { - t3.nodeType !== Node.ELEMENT_NODE || e2 && !t3.matches(e2) || i2.push(t3); - }), i2; -}; -var D = { viewport: null, track: null, enabled: true, slides: [], axis: "x", transition: "fade", preload: 1, slidesPerPage: "auto", initialPage: 0, friction: 0.12, Panzoom: { decelFriction: 0.12 }, center: true, infinite: true, fill: true, dragFree: false, adaptiveHeight: false, 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 F; -!function(t2) { - t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Destroy = 2] = "Destroy"; -}(F || (F = {})); -var j = (t2) => { - if ("string" == typeof t2 || t2 instanceof HTMLElement) - t2 = { html: t2 }; - else { - const e2 = t2.thumb; - void 0 !== e2 && ("string" == typeof e2 && (t2.thumbSrc = e2), e2 instanceof HTMLImageElement && (t2.thumbEl = e2, t2.thumbElSrc = e2.src, t2.thumbSrc = e2.src), delete t2.thumb); - } - return Object.assign({ html: "", el: null, isDom: false, class: "", customClass: "", index: -1, dim: 0, gap: 0, pos: 0, transition: false }, t2); -}; -var H = (t2 = {}) => Object.assign({ index: -1, slides: [], dim: 0, pos: -1 }, t2); -var B = class extends f { - constructor(t2, e2) { - super(e2), Object.defineProperty(this, "instance", { enumerable: true, configurable: true, writable: true, value: t2 }); - } - attach() { - } - detach() { - } -}; -var N = { 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 }; -var _ = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "isDynamic", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "list", { enumerable: true, configurable: true, writable: true, value: null }); - } - onRefresh() { - this.refresh(); - } - build() { - let t2 = this.list; - return t2 || (t2 = document.createElement("ul"), S(t2, this.cn("list")), t2.setAttribute("role", "tablist"), this.instance.container.appendChild(t2), S(this.instance.container, this.cn("hasDots")), this.list = t2), t2; - } - refresh() { - var t2; - const e2 = this.instance.pages.length, i2 = Math.min(2, this.option("minCount")), n2 = Math.max(2e3, this.option("maxCount")), s2 = this.option("dynamicFrom"); - if (e2 < i2 || e2 > n2) - return void this.cleanup(); - const a2 = "number" == typeof s2 && e2 > 5 && e2 >= s2, r2 = !this.list || this.isDynamic !== a2 || this.list.children.length !== e2; - r2 && this.cleanup(); - const l2 = this.build(); - if (o(l2, this.cn("isDynamic"), !!a2), r2) - for (let t3 = 0; t3 < e2; t3++) - l2.append(this.createItem(t3)); - let c2, h2 = 0; - for (const e3 of [...l2.children]) { - const i3 = h2 === this.instance.page; - i3 && (c2 = e3), o(e3, this.cn("isCurrent"), i3), null === (t2 = e3.children[0]) || void 0 === t2 || t2.setAttribute("aria-selected", i3 ? "true" : "false"); - for (const t3 of ["isBeforePrev", "isPrev", "isNext", "isAfterNext"]) - E(e3, this.cn(t3)); - h2++; - } - if (c2 = c2 || l2.firstChild, a2 && c2) { - const t3 = c2.previousElementSibling, e3 = t3 && t3.previousElementSibling; - S(t3, this.cn("isPrev")), S(e3, this.cn("isBeforePrev")); - const i3 = c2.nextElementSibling, n3 = i3 && i3.nextElementSibling; - S(i3, this.cn("isNext")), S(n3, this.cn("isAfterNext")); - } - this.isDynamic = a2; - } - createItem(t2 = 0) { - var e2; - const i2 = document.createElement("li"); - i2.setAttribute("role", "presentation"); - const s2 = n(this.instance.localize(this.option("dotTpl"), [["%d", t2 + 1]]).replace(/\%i/g, t2 + "")); - return i2.appendChild(s2), null === (e2 = i2.children[0]) || void 0 === e2 || e2.setAttribute("role", "tab"), i2; - } - cleanup() { - this.list && (this.list.remove(), this.list = null), this.isDynamic = false, E(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(_, "defaults", { enumerable: true, configurable: true, writable: true, value: N }); -var W = "disabled"; -var $ = "next"; -var X = "prev"; -var Y = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "prev", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "next", { enumerable: true, configurable: true, writable: true, value: null }); - } - onRefresh() { - const t2 = this.instance, e2 = t2.pages.length, i2 = t2.page; - if (e2 < 2) - return void this.cleanup(); - this.build(); - let n2 = this.prev, s2 = this.next; - n2 && s2 && (n2.removeAttribute(W), s2.removeAttribute(W), t2.isInfinite || (i2 <= 0 && n2.setAttribute(W, ""), i2 >= e2 - 1 && s2.setAttribute(W, ""))); - } - createButton(t2) { - const e2 = this.instance, i2 = document.createElement("button"); - i2.setAttribute("tabindex", "0"), i2.setAttribute("title", e2.localize(`{{${t2.toUpperCase()}}}`)), S(i2, this.cn("button") + " " + this.cn(t2 === $ ? "isNext" : "isPrev")); - const n2 = e2.isRTL ? t2 === $ ? X : $ : t2; - var s2; - return i2.innerHTML = e2.localize(this.option(`${n2}Tpl`)), i2.dataset[`carousel${s2 = t2, s2 ? s2.match("^[a-z]") ? s2.charAt(0).toUpperCase() + s2.substring(1) : s2 : ""}`] = "true", i2; - } - build() { - let t2 = this.container; - t2 || (this.container = t2 = document.createElement("div"), S(t2, this.cn("container")), this.instance.container.appendChild(t2)), this.next || (this.next = t2.appendChild(this.createButton($))), this.prev || (this.prev = t2.appendChild(this.createButton(X))); - } - cleanup() { - this.prev && this.prev.remove(), this.next && this.next.remove(), this.container && this.container.remove(), this.prev = null, this.next = null, this.container = null; - } - attach() { - this.instance.on(["refresh", "change"], this.onRefresh); - } - detach() { - this.instance.off(["refresh", "change"], this.onRefresh), this.cleanup(); - } -}; -Object.defineProperty(Y, "defaults", { enumerable: true, configurable: true, writable: true, value: { classes: { container: "f-carousel__nav", button: "f-button", isNext: "is-next", isPrev: "is-prev" }, nextTpl: '', prevTpl: '' } }); -var q = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "selectedIndex", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "target", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "nav", { enumerable: true, configurable: true, writable: true, value: null }); - } - addAsTargetFor(t2) { - this.target = this.instance, this.nav = t2, this.attachEvents(); - } - addAsNavFor(t2) { - this.nav = this.instance, this.target = t2, this.attachEvents(); - } - attachEvents() { - this.nav && this.target && (this.nav.options.initialSlide = this.target.options.initialPage, this.nav.on("ready", this.onNavReady), this.nav.state === F.Ready && this.onNavReady(this.nav), this.target.on("ready", this.onTargetReady), this.target.state === F.Ready && this.onTargetReady(this.target)); - } - onNavReady(t2) { - t2.on("createSlide", this.onNavCreateSlide), t2.on("Panzoom.click", this.onNavClick), t2.on("Panzoom.touchEnd", this.onNavTouch), this.onTargetChange(); - } - onTargetReady(t2) { - t2.on("change", this.onTargetChange), t2.on("Panzoom.refresh", this.onTargetChange), this.onTargetChange(); - } - onNavClick(t2, e2, i2) { - this.onNavTouch(t2, t2.panzoom, i2); - } - onNavTouch(t2, e2, i2) { - var n2, s2; - if (Math.abs(e2.dragOffset.x) > 3 || Math.abs(e2.dragOffset.y) > 3) - return; - const o2 = i2.target, { nav: a2, target: r2 } = this; - if (!a2 || !r2 || !o2) - return; - const l2 = o2.closest("[data-index]"); - if (i2.stopPropagation(), i2.preventDefault(), !l2) - return; - const c2 = parseInt(l2.dataset.index || "", 10) || 0, h2 = r2.getPageForSlide(c2), d2 = a2.getPageForSlide(c2); - a2.slideTo(d2), r2.slideTo(h2, { friction: (null === (s2 = null === (n2 = this.nav) || void 0 === n2 ? void 0 : n2.plugins) || void 0 === s2 ? void 0 : s2.Sync.option("friction")) || 0 }), this.markSelectedSlide(c2); - } - onNavCreateSlide(t2, e2) { - e2.index === this.selectedIndex && this.markSelectedSlide(e2.index); - } - onTargetChange() { - const { target: t2, nav: e2 } = this; - if (!t2 || !e2) - return; - if (e2.state !== F.Ready || t2.state !== F.Ready) - return; - const i2 = t2.pages[t2.page].slides[0].index, n2 = e2.getPageForSlide(i2); - this.markSelectedSlide(i2), e2.slideTo(n2); - } - markSelectedSlide(t2) { - const e2 = this.nav; - e2 && e2.state === F.Ready && (this.selectedIndex = t2, [...e2.slides].map((e3) => { - e3.el && e3.el.classList[e3.index === t2 ? "add" : "remove"]("is-nav-selected"); - })); - } - attach() { - const t2 = this; - let e2 = t2.options.target, i2 = t2.options.nav; - e2 ? t2.addAsNavFor(e2) : i2 && t2.addAsTargetFor(i2); - } - detach() { - const t2 = this, e2 = t2.nav, i2 = t2.target; - e2 && (e2.off("ready", t2.onNavReady), e2.off("createSlide", t2.onNavCreateSlide), e2.off("Panzoom.click", t2.onNavClick), e2.off("Panzoom.touchEnd", t2.onNavTouch)), t2.nav = null, i2 && (i2.off("ready", t2.onTargetReady), i2.off("refresh", t2.onTargetChange), i2.off("change", t2.onTargetChange)), t2.target = null; - } -}; -Object.defineProperty(q, "defaults", { enumerable: true, configurable: true, writable: true, value: { friction: 0.35 } }); -var V = { Navigation: Y, Dots: _, Sync: q }; -var Z = class _Z extends m { - get axis() { - return this.isHorizontal ? "e" : "f"; - } - get isEnabled() { - return this.state === F.Ready; - } - get isInfinite() { - let t2 = false; - const { contentDim: e2, viewportDim: i2, pages: n2, slides: s2 } = this; - return n2.length >= 2 && e2 + s2[0].dim >= i2 && (t2 = this.option("infinite")), t2; - } - get isRTL() { - return "rtl" === this.option("direction"); - } - get isHorizontal() { - return "x" === this.option("axis"); - } - constructor(t2, e2 = {}, i2 = {}) { - if (super(), Object.defineProperty(this, "userOptions", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(this, "userPlugins", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(this, "bp", { enumerable: true, configurable: true, writable: true, value: "" }), Object.defineProperty(this, "lp", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: F.Init }), Object.defineProperty(this, "page", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "prevPage", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "viewport", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "track", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "slides", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "pages", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "panzoom", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "inTransition", { enumerable: true, configurable: true, writable: true, value: /* @__PURE__ */ new Set() }), Object.defineProperty(this, "contentDim", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "viewportDim", { enumerable: true, configurable: true, writable: true, value: 0 }), "string" == typeof t2 && (t2 = document.querySelector(t2)), !t2 || !x(t2)) - throw new Error("No Element found"); - this.container = t2, this.slideNext = k(this.slideNext.bind(this), 150), this.slidePrev = k(this.slidePrev.bind(this), 150), this.userOptions = e2, this.userPlugins = i2, queueMicrotask(() => { - this.processOptions(); - }); - } - processOptions() { - const t2 = u({}, _Z.defaults, this.userOptions); - let e2 = ""; - const i2 = t2.breakpoints; - if (i2 && d(i2)) - for (const [n2, s2] of Object.entries(i2)) - window.matchMedia(n2).matches && d(s2) && (e2 += n2, u(t2, s2)); - e2 === this.bp && this.state !== F.Init || (this.bp = e2, this.state === F.Ready && (t2.initialSlide = this.pages[this.page].slides[0].index), this.state !== F.Init && this.destroy(), super.setOptions(t2), false === this.option("enabled") ? this.attachEvents() : setTimeout(() => { - this.init(); - }, 0)); - } - init() { - this.state = F.Init, this.emit("init"), this.attachPlugins(Object.assign(Object.assign({}, _Z.Plugins), this.userPlugins)), this.initLayout(), this.initSlides(), this.updateMetrics(), this.setInitialPosition(), this.initPanzoom(), this.attachEvents(), this.state = F.Ready, this.emit("ready"); - } - initLayout() { - const { container: t2 } = this, e2 = this.option("classes"); - S(t2, this.cn("container")), o(t2, e2.isLTR, !this.isRTL), o(t2, e2.isRTL, this.isRTL), o(t2, e2.isVertical, !this.isHorizontal), o(t2, e2.isHorizontal, this.isHorizontal); - let i2 = this.option("viewport") || t2.querySelector(`.${e2.viewport}`); - i2 || (i2 = document.createElement("div"), S(i2, e2.viewport), i2.append(...I(t2, `.${e2.slide}`)), t2.prepend(i2)); - let n2 = this.option("track") || t2.querySelector(`.${e2.track}`); - n2 || (n2 = document.createElement("div"), S(n2, e2.track), n2.append(...Array.from(i2.childNodes))), n2.setAttribute("aria-live", "polite"), i2.contains(n2) || i2.prepend(n2), this.viewport = i2, this.track = n2, this.emit("initLayout"); - } - initSlides() { - const { track: t2 } = this; - if (t2) { - this.slides = [], [...I(t2, `.${this.cn("slide")}`)].forEach((t3) => { - if (x(t3)) { - const e2 = j({ el: t3, isDom: true, index: this.slides.length }); - this.slides.push(e2), this.emit("initSlide", e2, this.slides.length); - } - }); - for (let t3 of this.option("slides", [])) { - const e2 = j(t3); - e2.index = this.slides.length, this.slides.push(e2), this.emit("initSlide", e2, this.slides.length); - } - this.emit("initSlides"); - } - } - setInitialPage() { - let t2 = 0; - const e2 = this.option("initialSlide"); - t2 = "number" == typeof e2 ? this.getPageForSlide(e2) : parseInt(this.option("initialPage", 0) + "", 10) || 0, this.page = t2; - } - setInitialPosition() { - if (!this.track || !this.pages.length) - return; - const t2 = this.isHorizontal; - let e2 = this.page; - this.pages[e2] || (this.page = e2 = 0); - const i2 = this.pages[e2].pos * (this.isRTL && t2 ? 1 : -1), n2 = t2 ? `${i2}px` : "0", s2 = t2 ? "0" : `${i2}px`; - this.track.style.transform = `translate3d(${n2}, ${s2}, 0) scale(1)`, this.option("adaptiveHeight") && this.setViewportHeight(); - } - initPanzoom() { - this.panzoom && (this.panzoom.destroy(), this.panzoom = null); - const t2 = this.option("Panzoom") || {}; - this.panzoom = new R(this.viewport, u({}, { content: this.track, zoom: false, panOnlyZoomed: false, lockAxis: this.isHorizontal ? "x" : "y", infinite: this.isInfinite, click: false, dblClick: false, touch: (t3) => !(this.pages.length < 2 && !t3.options.infinite), bounds: () => this.getBounds(), maxVelocity: (t3) => Math.abs(t3.target[this.axis] - t3.current[this.axis]) < 2 * this.viewportDim ? 100 : 0 }, t2)), this.panzoom.on("*", (t3, e2, ...i2) => { - this.emit(`Panzoom.${e2}`, t3, ...i2); - }), 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 t2 = this.container; - t2 && (t2.addEventListener("click", this.onClick, { passive: false, capture: false }), t2.addEventListener("slideTo", this.onSlideTo)), window.addEventListener("resize", this.onResize); - } - createPages() { - let t2 = []; - const { contentDim: e2, viewportDim: i2 } = this; - let n2 = this.option("slidesPerPage"); - ("number" != typeof n2 || e2 <= i2) && (n2 = 1 / 0); - let s2 = 0, o2 = 0, a2 = 0; - for (const e3 of this.slides) - (!t2.length || o2 + e3.dim > i2 || a2 === n2) && (t2.push(H()), s2 = t2.length - 1, o2 = 0, a2 = 0), t2[s2].slides.push(e3), o2 += e3.dim + e3.gap, a2++; - return t2; - } - processPages() { - const e2 = this.pages, { contentDim: i2, viewportDim: n2 } = this, s2 = this.option("center"), o2 = this.option("fill"), a2 = o2 && s2 && i2 > n2 && !this.isInfinite; - if (e2.forEach((t2, e3) => { - t2.index = e3, t2.pos = t2.slides[0].pos, t2.dim = 0; - for (const [e4, i3] of t2.slides.entries()) - t2.dim += i3.dim, e4 < t2.slides.length - 1 && (t2.dim += i3.gap); - a2 && t2.pos + 0.5 * t2.dim < 0.5 * n2 ? t2.pos = 0 : a2 && t2.pos + 0.5 * t2.dim >= i2 - 0.5 * n2 ? t2.pos = i2 - n2 : s2 && (t2.pos += -0.5 * (n2 - t2.dim)); - }), e2.forEach((e3, s3) => { - o2 && !this.isInfinite && i2 > n2 && (e3.pos = Math.max(e3.pos, 0), e3.pos = Math.min(e3.pos, i2 - n2)), e3.pos = t(e3.pos, 1e3), e3.dim = t(e3.dim, 1e3), Math.abs(e3.pos) <= 0.1 && (e3.pos = 0); - }), this.isInfinite) - return e2; - const r2 = []; - let l2; - return e2.forEach((t2) => { - const e3 = Object.assign({}, t2); - l2 && e3.pos === l2.pos ? (l2.dim += e3.dim, l2.slides = [...l2.slides, ...e3.slides]) : (e3.index = r2.length, l2 = e3, r2.push(e3)); - }), r2; - } - getPageFromIndex(t2 = 0) { - const e2 = this.pages.length; - let i2; - return t2 = parseInt((t2 || 0).toString()) || 0, i2 = this.isInfinite ? (t2 % e2 + e2) % e2 : Math.max(Math.min(t2, e2 - 1), 0), i2; - } - getSlideMetrics(e2) { - var i2, n2; - const s2 = this.isHorizontal ? "width" : "height"; - let o2 = 0, a2 = 0, r2 = e2.el; - const l2 = r2 && !r2.parentNode; - if (r2 ? o2 = parseFloat(r2.dataset[s2] || "") || 0 : (r2 = document.createElement("div"), r2.style.visibility = "hidden", (this.track || document.body).prepend(r2)), S(r2, this.cn("slide") + " " + e2.class + " " + e2.customClass), o2) - r2.style[s2] = `${o2}px`, r2.style["width" === s2 ? "height" : "width"] = ""; - else { - l2 && (this.track || document.body).prepend(r2); - const t2 = Math.max(1, (null === (i2 = window.visualViewport) || void 0 === i2 ? void 0 : i2.scale) || 1); - o2 = r2.getBoundingClientRect()[s2] * t2; - } - const c2 = getComputedStyle(r2); - return "content-box" === c2.boxSizing && (this.isHorizontal ? (o2 += parseFloat(c2.paddingLeft) || 0, o2 += parseFloat(c2.paddingRight) || 0) : (o2 += parseFloat(c2.paddingTop) || 0, o2 += parseFloat(c2.paddingBottom) || 0)), a2 = parseFloat(c2[this.isHorizontal ? "marginRight" : "marginBottom"]) || 0, l2 ? null === (n2 = r2.parentElement) || void 0 === n2 || n2.removeChild(r2) : e2.el || r2.remove(), { dim: t(o2, 1e3), gap: t(a2, 1e3) }; - } - getBounds() { - const { isInfinite: t2, isRTL: e2, isHorizontal: i2, pages: n2 } = this; - let s2 = { min: 0, max: 0 }; - if (t2) - s2 = { min: -1 / 0, max: 1 / 0 }; - else if (n2.length) { - const t3 = n2[0].pos, o2 = n2[n2.length - 1].pos; - s2 = e2 && i2 ? { min: t3, max: o2 } : { min: -1 * o2, max: -1 * t3 }; - } - return { x: i2 ? s2 : { min: 0, max: 0 }, y: i2 ? { min: 0, max: 0 } : s2 }; - } - repositionSlides() { - let e2, { isHorizontal: i2, isRTL: n2, isInfinite: s2, viewport: o2, viewportDim: a2, contentDim: r2, page: l2, pages: c2, slides: h2, panzoom: d2 } = this, u2 = 0, p2 = 0, f2 = 0, m2 = 0; - d2 ? m2 = -1 * d2.current[this.axis] : c2[l2] && (m2 = c2[l2].pos || 0), e2 = i2 ? n2 ? "right" : "left" : "top", n2 && i2 && (m2 *= -1); - for (const i3 of h2) - i3.el ? ("top" === e2 ? (i3.el.style.right = "", i3.el.style.left = "") : i3.el.style.top = "", i3.index !== u2 ? i3.el.style[e2] = 0 === p2 ? "" : `${t(p2, 1e3)}px` : i3.el.style[e2] = "", f2 += i3.dim + i3.gap, u2++) : p2 += i3.dim + i3.gap; - if (s2 && f2 && o2) { - let n3 = getComputedStyle(o2), s3 = "padding", l3 = i2 ? "Right" : "Bottom", c3 = parseFloat(n3[s3 + (i2 ? "Left" : "Top")]); - m2 -= c3, a2 += c3, a2 += parseFloat(n3[s3 + l3]); - for (const i3 of h2) - i3.el && (t(i3.pos) < t(a2) && t(i3.pos + i3.dim + i3.gap) < t(m2) && t(m2) > t(r2 - a2) && (i3.el.style[e2] = `${t(p2 + f2, 1e3)}px`), t(i3.pos + i3.gap) >= t(r2 - a2) && t(i3.pos) > t(m2 + a2) && t(m2) < t(a2) && (i3.el.style[e2] = `-${t(f2, 1e3)}px`)); - } - let g2, b2, v2 = [...this.inTransition]; - if (v2.length > 1 && (g2 = c2[v2[0]], b2 = c2[v2[1]]), g2 && b2) { - let i3 = 0; - for (const n3 of h2) - n3.el ? this.inTransition.has(n3.index) && g2.slides.indexOf(n3) < 0 && (n3.el.style[e2] = `${t(i3 + (g2.pos - b2.pos), 1e3)}px`) : i3 += n3.dim + n3.gap; - } - } - createSlideEl(t2) { - const { track: e2, slides: i2 } = this; - if (!e2 || !t2) - return; - if (t2.el && t2.el.parentNode) - return; - const n2 = t2.el || document.createElement("div"); - S(n2, this.cn("slide")), S(n2, t2.class), S(n2, t2.customClass); - const s2 = t2.html; - s2 && (s2 instanceof HTMLElement ? n2.appendChild(s2) : n2.innerHTML = t2.html + ""); - const o2 = []; - i2.forEach((t3, e3) => { - t3.el && o2.push(e3); - }); - const a2 = t2.index; - let r2 = null; - if (o2.length) { - r2 = i2[o2.reduce((t3, e3) => Math.abs(e3 - a2) < Math.abs(t3 - a2) ? e3 : t3)]; - } - const l2 = r2 && r2.el && r2.el.parentNode ? r2.index < t2.index ? r2.el.nextSibling : r2.el : null; - e2.insertBefore(n2, e2.contains(l2) ? l2 : null), t2.el = n2, this.emit("createSlide", t2); - } - removeSlideEl(t2, e2 = false) { - const i2 = t2.el; - if (!i2 || !i2.parentNode) - return; - if (E(i2, this.cn("isSelected")), t2.isDom && !e2) - return i2.removeAttribute("aria-hidden"), i2.removeAttribute("data-index"), E(i2, this.cn("isSelected")), void (i2.style.left = ""); - this.emit("removeSlide", t2); - const n2 = new CustomEvent("animationend"); - i2.dispatchEvent(n2), t2.el && (t2.el.remove(), t2.el = null); - } - transitionTo(t2 = 0, e2 = this.option("transition")) { - if (!e2) - return false; - const { pages: i2, panzoom: n2 } = this; - t2 = parseInt((t2 || 0).toString()) || 0; - const s2 = this.getPageFromIndex(t2); - if (!n2 || !i2[s2] || i2.length < 2 || Math.abs(i2[this.page].slides[0].dim - this.viewportDim) > 1) - return false; - const o2 = t2 > this.page ? 1 : -1, a2 = this.pages[s2].pos * (this.isRTL ? 1 : -1); - if (this.page === s2 && Math.abs(a2 - n2.target[this.axis]) < 1) - return false; - this.clearTransitions(); - const r2 = n2.isResting; - S(this.container, this.cn("inTransition")); - const l2 = this.pages[this.page].slides[0], c2 = this.pages[s2].slides[0]; - this.inTransition.add(c2.index), this.createSlideEl(c2); - let h2 = l2.el, d2 = c2.el; - r2 || "slide" === e2 || (e2 = "fadeFast", h2 = null); - const u2 = this.isRTL ? "next" : "prev", p2 = this.isRTL ? "prev" : "next"; - return h2 && (this.inTransition.add(l2.index), l2.transition = e2, h2.addEventListener("animationend", this.onAnimationEnd), h2.classList.add(`f-${e2}Out`, `to-${o2 > 0 ? p2 : u2}`)), d2 && (c2.transition = e2, d2.addEventListener("animationend", this.onAnimationEnd), d2.classList.add(`f-${e2}In`, `from-${o2 > 0 ? u2 : p2}`)), n2.panTo({ x: this.isHorizontal ? a2 : 0, y: this.isHorizontal ? 0 : a2, friction: 0 }), this.onChange(s2), true; - } - manageSlideVisiblity() { - const t2 = /* @__PURE__ */ new Set(), e2 = /* @__PURE__ */ new Set(), i2 = this.getVisibleSlides(parseFloat(this.option("preload", 0) + "") || 0); - for (const n2 of this.slides) - i2.has(n2) ? t2.add(n2) : e2.add(n2); - for (const e3 of this.inTransition) - t2.add(this.slides[e3]); - for (const e3 of t2) - this.createSlideEl(e3), this.lazyLoadSlide(e3); - for (const i3 of e2) - t2.has(i3) || this.removeSlideEl(i3); - this.markSelectedSlides(), this.repositionSlides(); - } - markSelectedSlides() { - if (!this.pages[this.page] || !this.pages[this.page].slides) - return; - const t2 = "aria-hidden"; - let e2 = this.cn("isSelected"); - if (e2) - for (const i2 of this.slides) - i2.el && (i2.el.dataset.index = `${i2.index}`, this.pages[this.page].slides.includes(i2) ? (i2.el.classList.contains(e2) || (S(i2.el, e2), this.emit("selectSlide", i2)), i2.el.removeAttribute(t2)) : (i2.el.classList.contains(e2) && (E(i2.el, e2), this.emit("unselectSlide", i2)), i2.el.setAttribute(t2, "true"))); - } - flipInfiniteTrack() { - const t2 = this.panzoom; - if (!t2 || !this.isInfinite) - return; - const e2 = "x" === this.option("axis") ? "e" : "f", { viewportDim: i2, contentDim: n2 } = this; - let s2 = t2.current[e2], o2 = t2.target[e2] - s2, a2 = 0, r2 = 0.5 * i2, l2 = n2; - this.isRTL && this.isHorizontal ? (s2 < -r2 && (a2 = -1, s2 += l2), s2 > l2 - r2 && (a2 = 1, s2 -= l2)) : (s2 > r2 && (a2 = 1, s2 -= l2), s2 < -l2 + r2 && (a2 = -1, s2 += l2)), a2 && (t2.current[e2] = s2, t2.target[e2] = s2 + o2); - } - lazyLoadSlide(t2) { - const e2 = this, i2 = t2 && t2.el; - if (!i2) - return; - const s2 = /* @__PURE__ */ new Set(), o2 = "f-fadeIn"; - i2.querySelectorAll("[data-lazy-srcset]").forEach((t3) => { - t3 instanceof HTMLImageElement && s2.add(t3); - }); - let a2 = Array.from(i2.querySelectorAll("[data-lazy-src]")); - i2.dataset.lazySrc && a2.push(i2), a2.map((t3) => { - t3 instanceof HTMLImageElement ? s2.add(t3) : x(t3) && (t3.style.backgroundImage = `url('${t3.dataset.lazySrc || ""}')`, delete t3.dataset.lazySrc); - }); - const r2 = (t3, i3, n2) => { - n2 && (n2.remove(), n2 = null), i3.complete && (i3.classList.add(o2), setTimeout(() => { - i3.classList.remove(o2); - }, 350), i3.style.display = ""), this.option("adaptiveHeight") && t3.el && this.pages[this.page].slides.indexOf(t3) > -1 && (e2.updateMetrics(), e2.setViewportHeight()), this.emit("load", t3); - }; - for (const e3 of s2) { - let i3 = null; - e3.src = e3.dataset.lazySrcset || e3.dataset.lazySrc || "", delete e3.dataset.lazySrc, delete e3.dataset.lazySrcset, e3.style.display = "none", e3.addEventListener("error", () => { - r2(t2, e3, i3); - }), e3.addEventListener("load", () => { - r2(t2, e3, i3); - }), setTimeout(() => { - e3.parentNode && t2.el && (e3.complete ? r2(t2, e3, i3) : (i3 = n(w), e3.parentNode.insertBefore(i3, e3))); - }, 300); - } - } - onAnimationEnd(t2) { - var e2; - const i2 = t2.target, n2 = i2 ? parseInt(i2.dataset.index || "", 10) || 0 : -1, s2 = this.slides[n2], o2 = t2.animationName; - if (!i2 || !s2 || !o2) - return; - const a2 = !!this.inTransition.has(n2) && s2.transition; - a2 && o2.substring(0, a2.length + 2) === `f-${a2}` && this.inTransition.delete(n2), this.inTransition.size || this.clearTransitions(), n2 === this.page && (null === (e2 = this.panzoom) || void 0 === e2 ? void 0 : e2.isResting) && this.emit("settle"); - } - onDecel(t2, e2 = 0, i2 = 0, n2 = 0, s2 = 0) { - const { isRTL: o2, isHorizontal: a2, axis: r2, pages: l2 } = this, c2 = l2.length, h2 = Math.abs(Math.atan2(i2, e2) / (Math.PI / 180)); - let d2 = 0; - if (d2 = h2 > 45 && h2 < 135 ? a2 ? 0 : i2 : a2 ? e2 : 0, !c2) - return; - const u2 = this.option("dragFree"); - let p2 = this.page, f2 = o2 && a2 ? 1 : -1; - const m2 = t2.target[r2] * f2, g2 = t2.current[r2] * f2; - let { pageIndex: b2 } = this.getPageFromPosition(m2), { pageIndex: v2 } = this.getPageFromPosition(g2); - u2 ? this.onChange(b2) : (Math.abs(d2) > 5 ? (l2[p2].dim < document.documentElement["client" + (this.isHorizontal ? "Width" : "Height")] - 1 && (p2 = v2), p2 = o2 && a2 ? d2 < 0 ? p2 - 1 : p2 + 1 : d2 < 0 ? p2 + 1 : p2 - 1) : p2 = 0 === n2 && 0 === s2 ? p2 : v2, this.slideTo(p2, { transition: false, friction: t2.option("decelFriction") })); - } - onClick(t2) { - const e2 = t2.target, i2 = e2 && x(e2) ? e2.dataset : null; - let n2, s2; - i2 && (void 0 !== i2.carouselPage ? (s2 = "slideTo", n2 = i2.carouselPage) : void 0 !== i2.carouselNext ? s2 = "slideNext" : void 0 !== i2.carouselPrev && (s2 = "slidePrev")), s2 ? (t2.preventDefault(), t2.stopPropagation(), e2 && !e2.hasAttribute("disabled") && this[s2](n2)) : this.emit("click", t2); - } - onSlideTo(t2) { - const e2 = t2.detail || 0; - this.slideTo(this.getPageForSlide(e2), { friction: 0 }); - } - onChange(t2, e2 = 0) { - const i2 = this.page; - this.prevPage = i2, this.page = t2, this.option("adaptiveHeight") && this.setViewportHeight(), t2 !== i2 && (this.markSelectedSlides(), this.emit("change", t2, i2, e2)); - } - onRefresh() { - let t2 = this.contentDim, e2 = this.viewportDim; - this.updateMetrics(), this.contentDim === t2 && this.viewportDim === e2 || this.slideTo(this.page, { friction: 0, transition: false }); - } - onResize() { - this.option("breakpoints") && this.processOptions(); - } - onBeforeTransform(t2) { - this.lp !== t2.current[this.axis] && (this.flipInfiniteTrack(), this.manageSlideVisiblity()), this.lp = t2.current.e; - } - onEndAnimation() { - this.inTransition.size || this.emit("settle"); - } - reInit(t2 = null, e2 = null) { - this.destroy(), this.state = F.Init, this.userOptions = t2 || this.userOptions, this.userPlugins = e2 || this.userPlugins, this.processOptions(); - } - slideTo(t2 = 0, { friction: e2 = this.option("friction"), transition: i2 = this.option("transition") } = {}) { - if (this.state === F.Destroy) - return; - const { axis: n2, isHorizontal: s2, isRTL: o2, pages: a2, panzoom: r2 } = this, l2 = a2.length, c2 = o2 && s2 ? 1 : -1; - if (!r2 || !l2) - return; - if (this.transitionTo(t2, i2)) - return; - const h2 = this.getPageFromIndex(t2); - let d2 = a2[h2].pos; - if (this.isInfinite) { - const e3 = this.contentDim, i3 = r2.target[n2] * c2; - if (2 === l2) - d2 += e3 * Math.floor(parseFloat(t2 + "") / 2); - else { - const t3 = i3; - d2 = [d2, d2 - e3, d2 + e3].reduce(function(e4, i4) { - return Math.abs(i4 - t3) < Math.abs(e4 - t3) ? i4 : e4; - }); - } - } - d2 *= c2, Math.abs(r2.target[n2] - d2) < 0.1 || (r2.panTo({ x: s2 ? d2 : 0, y: s2 ? 0 : d2, friction: e2 }), this.onChange(h2)); - } - slideToClosest(t2) { - if (this.panzoom) { - const { pageIndex: e2 } = this.getPageFromPosition(this.panzoom.current[this.isHorizontal ? "e" : "f"]); - this.slideTo(e2, t2); - } - } - slideNext() { - this.slideTo(this.page + 1); - } - slidePrev() { - this.slideTo(this.page - 1); - } - clearTransitions() { - this.inTransition.clear(), E(this.container, this.cn("inTransition")); - const t2 = ["to-prev", "to-next", "from-prev", "from-next"]; - for (const e2 of this.slides) { - const i2 = e2.el; - if (i2) { - i2.removeEventListener("animationend", this.onAnimationEnd), i2.classList.remove(...t2); - const n2 = e2.transition; - n2 && i2.classList.remove(`f-${n2}Out`, `f-${n2}In`); - } - } - this.manageSlideVisiblity(); - } - prependSlide(t2) { - var e2, i2; - let n2 = Array.isArray(t2) ? t2 : [t2]; - for (const t3 of n2.reverse()) - this.slides.unshift(j(t3)); - for (let t3 = 0; t3 < this.slides.length; t3++) - this.slides[t3].index = t3; - const s2 = (null === (e2 = this.pages[this.page]) || void 0 === e2 ? void 0 : e2.pos) || 0; - this.page += n2.length, this.updateMetrics(); - const o2 = (null === (i2 = this.pages[this.page]) || void 0 === i2 ? void 0 : i2.pos) || 0; - if (this.panzoom) { - const t3 = this.isRTL ? s2 - o2 : o2 - s2; - this.panzoom.target.e -= t3, this.panzoom.current.e -= t3, this.panzoom.requestTick(); - } - } - appendSlide(t2) { - let e2 = Array.isArray(t2) ? t2 : [t2]; - for (const t3 of e2) { - const e3 = j(t3); - e3.index = this.slides.length, this.slides.push(e3), this.emit("initSlide", e3, this.slides.length); - } - this.updateMetrics(); - } - removeSlide(t2) { - const e2 = this.slides.length; - t2 = (t2 % e2 + e2) % e2, this.removeSlideEl(this.slides[t2], true), this.slides.splice(t2, 1); - for (let t3 = 0; t3 < this.slides.length; t3++) - this.slides[t3].index = t3; - this.updateMetrics(), this.slideTo(this.page, { friction: 0, transition: false }); - } - updateMetrics() { - const { panzoom: e2, viewport: i2, track: n2, isHorizontal: s2 } = this; - if (!n2) - return; - const o2 = s2 ? "width" : "height", a2 = s2 ? "offsetWidth" : "offsetHeight"; - if (i2) { - let e3 = Math.max(i2[a2], t(i2.getBoundingClientRect()[o2], 1e3)), n3 = getComputedStyle(i2), r3 = "padding", l3 = s2 ? "Right" : "Bottom"; - e3 -= parseFloat(n3[r3 + (s2 ? "Left" : "Top")]) + parseFloat(n3[r3 + l3]), this.viewportDim = e3; - } - let r2, l2 = this.pages.length, c2 = 0; - for (const [e3, i3] of this.slides.entries()) { - let n3 = 0, s3 = 0; - !i3.el && r2 ? (n3 = r2.dim, s3 = r2.gap) : ({ dim: n3, gap: s3 } = this.getSlideMetrics(i3), r2 = i3), n3 = t(n3, 1e3), s3 = t(s3, 1e3), i3.dim = n3, i3.gap = s3, i3.pos = c2, c2 += n3, (this.isInfinite || e3 < this.slides.length - 1) && (c2 += s3); - } - const h2 = this.contentDim; - c2 = t(c2, 1e3), this.contentDim = c2, e2 && (e2.contentRect[o2] = c2, e2.contentRect["e" === this.axis ? "fullWidth" : "fullHeight"] = c2), this.pages = this.createPages(), this.pages = this.processPages(), this.state === F.Init && this.setInitialPage(), this.page = Math.max(0, Math.min(this.page, this.pages.length - 1)), e2 && l2 === this.pages.length && Math.abs(c2 - h2) > 0.5 && (e2.target[this.axis] = -1 * this.pages[this.page].pos, e2.current[this.axis] = -1 * this.pages[this.page].pos, e2.stop()), this.manageSlideVisiblity(), this.emit("refresh"); - } - getProgress(e2, i2 = false) { - void 0 === e2 && (e2 = this.page); - const n2 = this, s2 = n2.panzoom, o2 = n2.pages[e2] || 0; - if (!o2 || !s2) - return 0; - let a2 = -1 * s2.current.e, r2 = n2.contentDim; - var l2 = [t((a2 - o2.pos) / (1 * o2.dim), 1e3), t((a2 + r2 - o2.pos) / (1 * o2.dim), 1e3), t((a2 - r2 - o2.pos) / (1 * o2.dim), 1e3)].reduce(function(t2, e3) { - return Math.abs(e3) < Math.abs(t2) ? e3 : t2; - }); - return i2 ? l2 : Math.max(-1, Math.min(1, l2)); - } - setViewportHeight() { - const { page: t2, pages: e2, viewport: i2, isHorizontal: n2 } = this; - if (!i2 || !e2[t2]) - return; - let s2 = 0; - n2 && this.track && (this.track.style.height = "auto", e2[t2].slides.forEach((t3) => { - t3.el && (s2 = Math.max(s2, t3.el.offsetHeight)); - })), i2.style.height = s2 ? `${s2}px` : ""; - } - getPageForSlide(t2) { - for (const e2 of this.pages) - for (const i2 of e2.slides) - if (i2.index === t2) - return e2.index; - return -1; - } - getVisibleSlides(t2 = 0) { - var e2; - const i2 = /* @__PURE__ */ new Set(); - let { contentDim: n2, viewportDim: s2, pages: o2, page: a2 } = this; - n2 = n2 + (null === (e2 = this.slides[this.slides.length - 1]) || void 0 === e2 ? void 0 : e2.gap) || 0; - let r2 = 0; - r2 = this.panzoom ? -1 * this.panzoom.current[this.axis] : o2[a2] && o2[a2].pos || 0, this.isInfinite && (r2 -= Math.floor(r2 / n2) * n2), this.isRTL && this.isHorizontal && (r2 *= -1); - const l2 = r2 - s2 * t2, c2 = r2 + s2 * (t2 + 1), h2 = this.isInfinite ? [-1, 0, 1] : [0]; - for (const t3 of this.slides) - for (const e3 of h2) { - const s3 = t3.pos + e3 * n2, o3 = t3.pos + t3.dim + t3.gap + e3 * n2; - s3 < c2 && o3 > l2 && i2.add(t3); - } - return i2; - } - getPageFromPosition(t2) { - const { viewportDim: e2, contentDim: i2 } = this, n2 = this.pages.length, s2 = this.slides.length, o2 = this.slides[s2 - 1]; - let a2 = 0, r2 = 0, l2 = 0; - const c2 = this.option("center"); - c2 && (t2 += 0.5 * e2), this.isInfinite || (t2 = Math.max(this.slides[0].pos, Math.min(t2, o2.pos))); - const h2 = i2 + o2.gap; - l2 = Math.floor(t2 / h2) || 0, t2 -= l2 * h2; - let d2 = o2, u2 = this.slides.find((e3) => { - const i3 = t2 + (d2 && !c2 ? 0.5 * d2.dim : 0); - return d2 = e3, e3.pos <= i3 && e3.pos + e3.dim + e3.gap > i3; - }); - return u2 || (u2 = o2), r2 = this.getPageForSlide(u2.index), a2 = r2 + l2 * n2, { page: a2, pageIndex: r2 }; - } - destroy() { - if ([F.Destroy].includes(this.state)) - return; - this.state = F.Destroy; - const { container: t2, viewport: e2, track: i2, slides: n2, panzoom: s2 } = this, o2 = this.option("classes"); - t2.removeEventListener("click", this.onClick, { passive: false, capture: false }), t2.removeEventListener("slideTo", this.onSlideTo), window.removeEventListener("resize", this.onResize), s2 && (s2.destroy(), this.panzoom = null), n2 && n2.forEach((t3) => { - this.removeSlideEl(t3); - }), this.detachPlugins(), e2 && e2.offsetParent && i2 && i2.offsetParent && e2.replaceWith(...i2.childNodes); - for (const [e3, i3] of Object.entries(o2)) - "container" !== e3 && i3 && t2.classList.remove(i3); - this.track = null, this.viewport = null, this.page = 0, this.slides = []; - const a2 = this.events.get("ready"); - this.events = /* @__PURE__ */ new Map(), a2 && this.events.set("ready", a2); - } -}; -Object.defineProperty(Z, "Panzoom", { enumerable: true, configurable: true, writable: true, value: R }), Object.defineProperty(Z, "defaults", { enumerable: true, configurable: true, writable: true, value: D }), Object.defineProperty(Z, "Plugins", { enumerable: true, configurable: true, writable: true, value: V }); -var U = function(t2) { - const e2 = window.pageYOffset, i2 = window.pageYOffset + window.innerHeight; - if (!x(t2)) - return 0; - const n2 = t2.getBoundingClientRect(), s2 = n2.y + window.pageYOffset, o2 = n2.y + n2.height + window.pageYOffset; - if (e2 > o2 || i2 < s2) - return 0; - if (e2 < s2 && i2 > o2) - return 100; - if (s2 < e2 && o2 > i2) - return 100; - let a2 = n2.height; - s2 < e2 && (a2 -= window.pageYOffset - s2), o2 > i2 && (a2 -= o2 - i2); - const r2 = a2 / window.innerHeight * 100; - return Math.round(r2); -}; -var G = !("undefined" == typeof window || !window.document || !window.document.createElement); -var K; -var J = ["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(","); -var Q = (t2) => { - if (t2 && G) { - void 0 === K && document.createElement("div").focus({ get preventScroll() { - return K = true, false; - } }); - try { - if (K) - t2.focus({ preventScroll: true }); - else { - const e2 = window.pageXOffset || document.body.scrollTop, i2 = window.pageYOffset || document.body.scrollLeft; - t2.focus(), document.body.scrollTo({ top: e2, left: i2, behavior: "auto" }); - } - } catch (t3) { - } - } -}; -var tt = { dragToClose: true, hideScrollbar: true, Carousel: { classes: { container: "fancybox__carousel", viewport: "fancybox__viewport", track: "fancybox__track", slide: "fancybox__slide" } }, contentClick: "toggleZoom", contentDblClick: false, backdropClick: "close", animated: true, idle: 3500, showClass: "f-zoomInUp", hideClass: "f-fadeOut", commonCaption: false, parentEl: null, startIndex: 0, l10n: Object.assign(Object.assign({}, v), { 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" }), tpl: { closeButton: '', main: '' }, groupAll: false, groupAttr: "data-fancybox", defaultType: "image", defaultDisplay: "block", autoFocus: true, trapFocus: true, placeFocusBack: true, closeButton: "auto", keyboard: { Escape: "close", Delete: "close", Backspace: "close", PageUp: "next", PageDown: "prev", ArrowUp: "prev", ArrowDown: "next", ArrowRight: "next", ArrowLeft: "prev" }, Fullscreen: { autoStart: false }, compact: () => window.matchMedia("(max-width: 578px), (max-height: 578px)").matches, wheel: "zoom" }; -var et; -var it; -!function(t2) { - t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Closing = 2] = "Closing", t2[t2.CustomClosing = 3] = "CustomClosing", t2[t2.Destroy = 4] = "Destroy"; -}(et || (et = {})), function(t2) { - t2[t2.Loading = 0] = "Loading", t2[t2.Opening = 1] = "Opening", t2[t2.Ready = 2] = "Ready", t2[t2.Closing = 3] = "Closing"; -}(it || (it = {})); -var nt = () => { - queueMicrotask(() => { - (() => { - const { slug: t2, index: e2 } = st.parseURL(), i2 = _t.getInstance(); - if (i2 && false !== i2.option("Hash")) { - const n2 = i2.carousel; - if (t2 && n2) { - for (let e3 of n2.slides) - if (e3.slug && e3.slug === t2) - return n2.slideTo(e3.index); - if (t2 === i2.option("slug")) - return n2.slideTo(e2 - 1); - const s2 = i2.getSlide(), o2 = s2 && s2.triggerEl && s2.triggerEl.dataset; - if (o2 && o2.fancybox === t2) - return n2.slideTo(e2 - 1); - } - st.hasSilentClose = true, i2.close(); - } - st.startFromUrl(); - })(); - }); -}; -var st = class _st extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "origHash", { enumerable: true, configurable: true, writable: true, value: "" }), Object.defineProperty(this, "timer", { enumerable: true, configurable: true, writable: true, value: null }); - } - onChange() { - const t2 = this.instance, e2 = t2.carousel; - this.timer && clearTimeout(this.timer); - const i2 = t2.getSlide(); - if (!e2 || !i2) - return; - const n2 = t2.isOpeningSlide(i2), s2 = new URL(document.URL).hash; - let o2, a2 = i2.slug || void 0, r2 = i2.triggerEl || void 0; - o2 = a2 || this.instance.option("slug"), !o2 && r2 && r2.dataset && (o2 = r2.dataset.fancybox); - let l2 = ""; - o2 && "true" !== o2 && (l2 = "#" + o2 + (!a2 && e2.slides.length > 1 ? "-" + (i2.index + 1) : "")), n2 && (this.origHash = s2 !== l2 ? s2 : ""), l2 && s2 !== l2 && (this.timer = setTimeout(() => { - try { - t2.state === et.Ready && window.history[n2 ? "pushState" : "replaceState"]({}, document.title, window.location.pathname + window.location.search + l2); - } catch (t3) { - } - }, 300)); - } - onClose() { - if (this.timer && clearTimeout(this.timer), true !== _st.hasSilentClose) - try { - window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (this.origHash || "")); - } catch (t2) { - } - } - attach() { - const t2 = this.instance; - t2.on("Carousel.ready", this.onChange), t2.on("Carousel.change", this.onChange), t2.on("close", this.onClose); - } - detach() { - const t2 = this.instance; - t2.off("Carousel.ready", this.onChange), t2.off("Carousel.change", this.onChange), t2.off("close", this.onClose); - } - static parseURL() { - const t2 = window.location.hash.slice(1), e2 = t2.split("-"), i2 = e2[e2.length - 1], n2 = i2 && /^\+?\d+$/.test(i2) && parseInt(e2.pop() || "1", 10) || 1; - return { hash: t2, slug: e2.join("-"), index: n2 }; - } - static startFromUrl() { - if (_st.hasSilentClose = false, _t.getInstance() || false === _t.defaults.Hash) - return; - const { hash: t2, slug: e2, index: i2 } = _st.parseURL(); - if (!e2) - return; - let n2 = document.querySelector(`[data-slug="${t2}"]`); - if (n2 && n2.dispatchEvent(new CustomEvent("click", { bubbles: true, cancelable: true })), _t.getInstance()) - return; - const s2 = document.querySelectorAll(`[data-fancybox="${e2}"]`); - s2.length && (n2 = s2[i2 - 1], n2 && n2.dispatchEvent(new CustomEvent("click", { bubbles: true, cancelable: true }))); - } - static destroy() { - window.removeEventListener("hashchange", nt, false); - } -}; -function ot() { - window.addEventListener("hashchange", nt, false), setTimeout(() => { - st.startFromUrl(); - }, 500); -} -Object.defineProperty(st, "defaults", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(st, "hasSilentClose", { enumerable: true, configurable: true, writable: true, value: false }), G && (/complete|interactive|loaded/.test(document.readyState) ? ot() : document.addEventListener("DOMContentLoaded", ot)); -var at = class extends B { - onCreateSlide(t2, e2, i2) { - const n2 = this.instance.optionFor(i2, "src") || ""; - i2.el && "image" === i2.type && "string" == typeof n2 && this.setImage(i2, n2); - } - onRemoveSlide(t2, e2, i2) { - i2.panzoom && i2.panzoom.destroy(), i2.panzoom = void 0, i2.imageEl = void 0; - } - onChange(t2, e2, i2, n2) { - for (const t3 of e2.slides) { - const e3 = t3.panzoom; - e3 && t3.index !== i2 && e3.reset(0.35); - } - } - onClose() { - var t2; - const e2 = this.instance, i2 = e2.container, n2 = e2.getSlide(); - if (!i2 || !i2.parentElement || !n2) - return; - const { el: s2, contentEl: o2, panzoom: a2 } = n2, r2 = n2.thumbElSrc; - if (!s2 || !r2 || !o2 || !a2 || a2.isContentLoading || a2.state === g.Init || a2.state === g.Destroy) - return; - a2.updateMetrics(); - let l2 = this.getZoomInfo(n2); - if (!l2) - return; - this.instance.state = et.CustomClosing, i2.classList.remove("is-zooming-in"), i2.classList.add("is-zooming-out"), o2.style.backgroundImage = `url('${r2}')`; - const c2 = i2.getBoundingClientRect(); - 1 === ((null === (t2 = window.visualViewport) || void 0 === t2 ? void 0 : t2.scale) || 1) && Object.assign(i2.style, { position: "absolute", top: `${window.pageYOffset}px`, left: `${window.pageXOffset}px`, bottom: "auto", right: "auto", width: `${c2.width}px`, height: `${c2.height}px`, overflow: "hidden" }); - const { x: h2, y: d2, scale: u2, opacity: p2 } = l2; - if (p2) { - const t3 = ((t4, e3, i3, n3) => { - const s3 = e3 - t4, o3 = n3 - i3; - return (e4) => i3 + ((e4 - t4) / s3 * o3 || 0); - })(a2.scale, u2, 1, 0); - a2.on("afterTransform", () => { - o2.style.opacity = t3(a2.scale) + ""; - }); - } - a2.on("endAnimation", () => { - e2.destroy(); - }), a2.target.a = u2, a2.target.b = 0, a2.target.c = 0, a2.target.d = u2, a2.panTo({ x: h2, y: d2, scale: u2, friction: p2 ? 0.2 : 0.33, ignoreBounds: true }), a2.isResting && e2.destroy(); - } - setImage(t2, e2) { - const i2 = this.instance; - t2.src = e2, this.process(t2, e2).then((e3) => { - var n2; - const s2 = t2.contentEl, o2 = t2.imageEl, a2 = t2.thumbElSrc; - if (i2.isClosing() || !s2 || !o2) - return; - s2.offsetHeight; - const r2 = !!i2.isOpeningSlide(t2) && this.getZoomInfo(t2); - if (this.option("protected")) { - null === (n2 = t2.el) || void 0 === n2 || n2.addEventListener("contextmenu", (t3) => { - t3.preventDefault(); - }); - const e4 = document.createElement("div"); - S(e4, "fancybox-protected"), s2.appendChild(e4); - } - if (a2 && r2) { - const n3 = e3.contentRect, o3 = Math.max(n3.fullWidth, n3.fullHeight); - let c2 = null; - !r2.opacity && o3 > 1200 && (c2 = document.createElement("img"), S(c2, "fancybox-ghost"), c2.src = a2, s2.appendChild(c2)); - const h2 = () => { - c2 && (S(c2, "f-fadeFastOut"), setTimeout(() => { - c2 && (c2.remove(), c2 = null); - }, 200)); - }; - (l2 = a2, new Promise((t3, e4) => { - const i3 = new Image(); - i3.onload = t3, i3.onerror = e4, i3.src = l2; - })).then(() => { - t2.state = it.Opening, this.instance.emit("reveal", t2), this.zoomIn(t2).then(() => { - h2(), this.instance.done(t2); - }, () => { - i2.hideLoading(t2); - }), c2 && setTimeout(() => { - h2(); - }, o3 > 2500 ? 800 : 200); - }, () => { - i2.hideLoading(t2), i2.revealContent(t2); - }); - } else { - const n3 = this.optionFor(t2, "initialSize"), s3 = this.optionFor(t2, "zoom"), o3 = { event: i2.prevMouseMoveEvent || i2.options.event, friction: s3 ? 0.12 : 0 }; - let a3 = i2.optionFor(t2, "showClass") || void 0, r3 = true; - i2.isOpeningSlide(t2) && ("full" === n3 ? e3.zoomToFull(o3) : "cover" === n3 ? e3.zoomToCover(o3) : "max" === n3 ? e3.zoomToMax(o3) : r3 = false, e3.stop("current")), r3 && a3 && (a3 = e3.isDragging ? "f-fadeIn" : ""), i2.revealContent(t2, a3); - } - var l2; - }, () => { - i2.setError(t2, "{{IMAGE_ERROR}}"); - }); - } - process(t2, e2) { - return new Promise((i2, s2) => { - var o2; - const a2 = this.instance, r2 = t2.el; - a2.clearContent(t2), a2.showLoading(t2); - let l2 = this.optionFor(t2, "content"); - if ("string" == typeof l2 && (l2 = n(l2)), !l2 || !x(l2)) { - if (l2 = document.createElement("img"), l2 instanceof HTMLImageElement) { - let i3 = "", n2 = t2.caption; - i3 = "string" == typeof n2 && n2 ? n2.replace(/<[^>]+>/gi, "").substring(0, 1e3) : `Image ${t2.index + 1} of ${null === (o2 = a2.carousel) || void 0 === o2 ? void 0 : o2.pages.length}`, l2.src = e2 || "", l2.alt = i3, l2.draggable = false, t2.srcset && l2.setAttribute("srcset", t2.srcset); - } - t2.sizes && l2.setAttribute("sizes", t2.sizes); - } - l2.classList.add("fancybox-image"), t2.imageEl = l2, a2.setContent(t2, l2, false); - t2.panzoom = new R(r2, u({ transformParent: true }, this.option("Panzoom") || {}, { content: l2, width: a2.optionFor(t2, "width", "auto"), height: a2.optionFor(t2, "height", "auto"), wheel: () => { - const t3 = a2.option("wheel"); - return ("zoom" === t3 || "pan" == t3) && t3; - }, click: (e3, i3) => { - var n2, s3; - if (a2.isCompact || a2.isClosing()) - return false; - if (t2.index !== (null === (n2 = a2.getSlide()) || void 0 === n2 ? void 0 : n2.index)) - return false; - if (i3) { - const t3 = i3.composedPath()[0]; - if (["A", "BUTTON", "TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO"].includes(t3.nodeName)) - return false; - } - let o3 = !i3 || i3.target && (null === (s3 = t2.contentEl) || void 0 === s3 ? void 0 : s3.contains(i3.target)); - return a2.option(o3 ? "contentClick" : "backdropClick") || false; - }, dblClick: () => a2.isCompact ? "toggleZoom" : a2.option("contentDblClick") || false, spinner: false, panOnlyZoomed: true, wheelLimit: 1 / 0, on: { ready: (t3) => { - i2(t3); - }, error: () => { - s2(); - }, destroy: () => { - s2(); - } } })); - }); - } - zoomIn(t2) { - return new Promise((e2, i2) => { - const n2 = this.instance, s2 = n2.container, { panzoom: o2, contentEl: a2, el: r2 } = t2; - o2 && o2.updateMetrics(); - const l2 = this.getZoomInfo(t2); - if (!(l2 && r2 && a2 && o2 && s2)) - return void i2(); - const { x: c2, y: h2, scale: d2, opacity: u2 } = l2, p2 = () => { - t2.state !== it.Closing && (u2 && (a2.style.opacity = Math.max(Math.min(1, 1 - (1 - o2.scale) / (1 - d2)), 0) + ""), o2.scale >= 1 && o2.scale > o2.targetScale - 0.1 && e2(o2)); - }, f2 = (t3) => { - E(s2, "is-zooming-in"), t3.scale < 0.99 || t3.scale > 1.01 || (a2.style.opacity = "", t3.off("endAnimation", f2), t3.off("touchStart", f2), t3.off("afterTransform", p2), e2(t3)); - }; - o2.on("endAnimation", f2), o2.on("touchStart", f2), o2.on("afterTransform", p2), o2.on(["error", "destroy"], () => { - i2(); - }), o2.panTo({ x: c2, y: h2, scale: d2, friction: 0, ignoreBounds: true }), o2.stop("current"); - const m2 = { event: "mousemove" === o2.panMode ? n2.prevMouseMoveEvent || n2.options.event : void 0 }, g2 = this.optionFor(t2, "initialSize"); - S(s2, "is-zooming-in"), n2.hideLoading(t2), "full" === g2 ? o2.zoomToFull(m2) : "cover" === g2 ? o2.zoomToCover(m2) : "max" === g2 ? o2.zoomToMax(m2) : o2.reset(0.172); - }); - } - getZoomInfo(t2) { - var e2; - const { el: i2, imageEl: n2, thumbEl: s2, panzoom: o2 } = t2; - if (!i2 || !n2 || !s2 || !o2 || U(s2) < 3 || !this.optionFor(t2, "zoom") || this.instance.state === et.Destroy) - return false; - if (1 !== ((null === (e2 = window.visualViewport) || void 0 === e2 ? void 0 : e2.scale) || 1)) - return false; - let { top: a2, left: r2, width: l2, height: c2 } = s2.getBoundingClientRect(), { top: h2, left: d2, fitWidth: u2, fitHeight: p2 } = o2.contentRect; - if (!(l2 && c2 && u2 && p2)) - return false; - const f2 = o2.container.getBoundingClientRect(); - d2 += f2.left, h2 += f2.top; - const m2 = -1 * (d2 + 0.5 * u2 - (r2 + 0.5 * l2)), g2 = -1 * (h2 + 0.5 * p2 - (a2 + 0.5 * c2)), b2 = l2 / u2; - let v2 = this.option("zoomOpacity") || false; - return "auto" === v2 && (v2 = Math.abs(l2 / c2 - u2 / p2) > 0.1), { x: m2, y: g2, scale: b2, opacity: v2 }; - } - attach() { - const t2 = this, e2 = t2.instance; - e2.on("Carousel.change", t2.onChange), e2.on("Carousel.createSlide", t2.onCreateSlide), e2.on("Carousel.removeSlide", t2.onRemoveSlide), e2.on("close", t2.onClose); - } - detach() { - const t2 = this, e2 = t2.instance; - e2.off("Carousel.change", t2.onChange), e2.off("Carousel.createSlide", t2.onCreateSlide), e2.off("Carousel.removeSlide", t2.onRemoveSlide), e2.off("close", t2.onClose); - } -}; -Object.defineProperty(at, "defaults", { enumerable: true, configurable: true, writable: true, value: { initialSize: "fit", Panzoom: { maxScale: 1 }, protected: false, zoom: true, zoomOpacity: "auto" } }), "function" == typeof SuppressedError && SuppressedError; -var rt = (t2, e2 = {}) => { - const i2 = new URL(t2), n2 = new URLSearchParams(i2.search), s2 = new URLSearchParams(); - for (const [t3, i3] of [...n2, ...Object.entries(e2)]) { - let e3 = i3.toString(); - "t" === t3 ? s2.set("start", parseInt(e3).toString()) : s2.set(t3, e3); - } - let o2 = s2.toString(), a2 = t2.match(/#t=((.*)?\d+s)/); - return a2 && (o2 += `#t=${a2[1]}`), o2; -}; -var lt = { ajax: null, autoSize: true, iframeAttr: { allow: "autoplay; fullscreen", scrolling: "auto" }, preload: true, videoAutoplay: true, 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 } }; -var ct = ["image", "html", "ajax", "inline", "clone", "iframe", "map", "pdf", "html5video", "youtube", "vimeo", "video"]; -var ht = class extends B { - onInitSlide(t2, e2, i2) { - this.processType(i2); - } - onCreateSlide(t2, e2, i2) { - this.setContent(i2); - } - onRemoveSlide(t2, e2, i2) { - i2.xhr && (i2.xhr.abort(), i2.xhr = null); - const n2 = i2.iframeEl; - n2 && (n2.onload = n2.onerror = null, n2.src = "//about:blank", i2.iframeEl = null); - const s2 = i2.contentEl, o2 = i2.placeholderEl; - if ("inline" === i2.type && s2 && o2) - s2.classList.remove("fancybox__content"), "none" !== s2.style.display && (s2.style.display = "none"), o2.parentNode && o2.parentNode.insertBefore(s2, o2), o2.remove(), i2.contentEl = void 0, i2.placeholderEl = void 0; - else - for (; i2.el && i2.el.firstChild; ) - i2.el.removeChild(i2.el.firstChild); - } - onSelectSlide(t2, e2, i2) { - i2.state === it.Ready && this.playVideo(); - } - onUnselectSlide(t2, e2, i2) { - var n2, s2; - if ("html5video" === i2.type) { - try { - null === (s2 = null === (n2 = i2.el) || void 0 === n2 ? void 0 : n2.querySelector("video")) || void 0 === s2 || s2.pause(); - } catch (t3) { - } - return; - } - let o2; - "vimeo" === i2.type ? o2 = { method: "pause", value: "true" } : "youtube" === i2.type && (o2 = { event: "command", func: "pauseVideo" }), o2 && i2.iframeEl && i2.iframeEl.contentWindow && i2.iframeEl.contentWindow.postMessage(JSON.stringify(o2), "*"), i2.poller && clearTimeout(i2.poller); - } - onDone(t2, e2) { - t2.isCurrentSlide(e2) && !t2.isClosing() && this.playVideo(); - } - onRefresh(t2, e2) { - e2.slides.forEach((t3) => { - t3.el && (this.setAspectRatio(t3), this.resizeIframe(t3)); - }); - } - onMessage(t2) { - try { - let e2 = JSON.parse(t2.data); - if ("https://player.vimeo.com" === t2.origin) { - if ("ready" === e2.event) - for (let e3 of Array.from(document.getElementsByClassName("fancybox__iframe"))) - e3 instanceof HTMLIFrameElement && e3.contentWindow === t2.source && (e3.dataset.ready = "true"); - } else if (t2.origin.match(/^https:\/\/(www.)?youtube(-nocookie)?.com$/) && "onReady" === e2.event) { - const t3 = document.getElementById(e2.id); - t3 && (t3.dataset.ready = "true"); - } - } catch (t3) { - } - } - loadAjaxContent(t2) { - const e2 = this.instance.optionFor(t2, "src") || ""; - this.instance.showLoading(t2); - const i2 = this.instance, n2 = new XMLHttpRequest(); - i2.showLoading(t2), n2.onreadystatechange = function() { - n2.readyState === XMLHttpRequest.DONE && i2.state === et.Ready && (i2.hideLoading(t2), 200 === n2.status ? i2.setContent(t2, n2.responseText) : i2.setError(t2, 404 === n2.status ? "{{AJAX_NOT_FOUND}}" : "{{AJAX_FORBIDDEN}}")); - }; - const s2 = t2.ajax || null; - n2.open(s2 ? "POST" : "GET", e2 + ""), n2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), n2.setRequestHeader("X-Requested-With", "XMLHttpRequest"), n2.send(s2), t2.xhr = n2; - } - setInlineContent(t2) { - let e2 = null; - if (x(t2.src)) - e2 = t2.src; - else if ("string" == typeof t2.src) { - const i2 = t2.src.split("#", 2).pop(); - e2 = i2 ? document.getElementById(i2) : null; - } - if (e2) { - if ("clone" === t2.type || e2.closest(".fancybox__slide")) { - e2 = e2.cloneNode(true); - const i2 = e2.dataset.animationName; - i2 && (e2.classList.remove(i2), delete e2.dataset.animationName); - let n2 = e2.getAttribute("id"); - n2 = n2 ? `${n2}--clone` : `clone-${this.instance.id}-${t2.index}`, e2.setAttribute("id", n2); - } else if (e2.parentNode) { - const i2 = document.createElement("div"); - i2.classList.add("fancybox-placeholder"), e2.parentNode.insertBefore(i2, e2), t2.placeholderEl = i2; - } - this.instance.setContent(t2, e2); - } else - this.instance.setError(t2, "{{ELEMENT_NOT_FOUND}}"); - } - setIframeContent(t2) { - const { src: e2, el: i2 } = t2; - if (!e2 || "string" != typeof e2 || !i2) - return; - i2.classList.add("is-loading"); - const n2 = this.instance, s2 = document.createElement("iframe"); - s2.className = "fancybox__iframe", s2.setAttribute("id", `fancybox__iframe_${n2.id}_${t2.index}`); - for (const [e3, i3] of Object.entries(this.optionFor(t2, "iframeAttr") || {})) - s2.setAttribute(e3, i3); - s2.onerror = () => { - n2.setError(t2, "{{IFRAME_ERROR}}"); - }, t2.iframeEl = s2; - const o2 = this.optionFor(t2, "preload"); - if ("iframe" !== t2.type || false === o2) - return s2.setAttribute("src", t2.src + ""), n2.setContent(t2, s2, false), this.resizeIframe(t2), void n2.revealContent(t2); - n2.showLoading(t2), s2.onload = () => { - if (!s2.src.length) - return; - const e3 = "true" !== s2.dataset.ready; - s2.dataset.ready = "true", this.resizeIframe(t2), e3 ? n2.revealContent(t2) : n2.hideLoading(t2); - }, s2.setAttribute("src", e2), n2.setContent(t2, s2, false); - } - resizeIframe(t2) { - const e2 = t2.iframeEl, i2 = null == e2 ? void 0 : e2.parentElement; - if (!e2 || !i2) - return; - let n2 = t2.autoSize, s2 = t2.width || 0, o2 = t2.height || 0; - s2 && o2 && (n2 = false); - const a2 = i2 && i2.style; - if (false !== t2.preload && false !== n2 && a2) - try { - const t3 = window.getComputedStyle(i2), n3 = parseFloat(t3.paddingLeft) + parseFloat(t3.paddingRight), r2 = parseFloat(t3.paddingTop) + parseFloat(t3.paddingBottom), l2 = e2.contentWindow; - if (l2) { - const t4 = l2.document, e3 = t4.getElementsByTagName("html")[0], i3 = t4.body; - a2.width = "", i3.style.overflow = "hidden", s2 = s2 || e3.scrollWidth + n3, a2.width = `${s2}px`, i3.style.overflow = "", a2.flex = "0 0 auto", a2.height = `${i3.scrollHeight}px`, o2 = e3.scrollHeight + r2; - } - } catch (t3) { - } - if (s2 || o2) { - const t3 = { flex: "0 1 auto", width: "", height: "" }; - s2 && (t3.width = `${s2}px`), o2 && (t3.height = `${o2}px`), Object.assign(a2, t3); - } - } - playVideo() { - const t2 = this.instance.getSlide(); - if (!t2) - return; - const { el: e2 } = t2; - if (!e2 || !e2.offsetParent) - return; - if (!this.optionFor(t2, "videoAutoplay")) - return; - if ("html5video" === t2.type) - try { - const t3 = e2.querySelector("video"); - if (t3) { - const e3 = t3.play(); - void 0 !== e3 && e3.then(() => { - }).catch((e4) => { - t3.muted = true, t3.play(); - }); - } - } catch (t3) { - } - if ("youtube" !== t2.type && "vimeo" !== t2.type) - return; - const i2 = () => { - if (t2.iframeEl && t2.iframeEl.contentWindow) { - let e3; - if ("true" === t2.iframeEl.dataset.ready) - return e3 = "youtube" === t2.type ? { event: "command", func: "playVideo" } : { method: "play", value: "true" }, e3 && t2.iframeEl.contentWindow.postMessage(JSON.stringify(e3), "*"), void (t2.poller = void 0); - "youtube" === t2.type && (e3 = { event: "listening", id: t2.iframeEl.getAttribute("id") }, t2.iframeEl.contentWindow.postMessage(JSON.stringify(e3), "*")); - } - t2.poller = setTimeout(i2, 250); - }; - i2(); - } - processType(t2) { - if (t2.html) - return t2.type = "html", t2.src = t2.html, void (t2.html = ""); - const e2 = this.instance.optionFor(t2, "src", ""); - if (!e2 || "string" != typeof e2) - return; - let i2 = t2.type, n2 = null; - if (n2 = e2.match(/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(?:watch\?(?:.*&)?v=|v\/|u\/|shorts\/|embed\/?)?(videoseries\?list=(?:.*)|[\w-]{11}|\?listType=(?:.*)&list=(?:.*))(?:.*)/i)) { - const s2 = this.optionFor(t2, "youtube"), { nocookie: o2 } = s2, a2 = function(t3, e3) { - var i3 = {}; - for (var n3 in t3) - Object.prototype.hasOwnProperty.call(t3, n3) && e3.indexOf(n3) < 0 && (i3[n3] = t3[n3]); - if (null != t3 && "function" == typeof Object.getOwnPropertySymbols) { - var s3 = 0; - for (n3 = Object.getOwnPropertySymbols(t3); s3 < n3.length; s3++) - e3.indexOf(n3[s3]) < 0 && Object.prototype.propertyIsEnumerable.call(t3, n3[s3]) && (i3[n3[s3]] = t3[n3[s3]]); - } - return i3; - }(s2, ["nocookie"]), r2 = `www.youtube${o2 ? "-nocookie" : ""}.com`, l2 = rt(e2, a2), c2 = encodeURIComponent(n2[2]); - t2.videoId = c2, t2.src = `https://${r2}/embed/${c2}?${l2}`, t2.thumbSrc = t2.thumbSrc || `https://i.ytimg.com/vi/${c2}/mqdefault.jpg`, i2 = "youtube"; - } else if (n2 = e2.match(/^.+vimeo.com\/(?:\/)?([\d]+)((\/|\?h=)([a-z0-9]+))?(.*)?/)) { - const s2 = rt(e2, this.optionFor(t2, "vimeo")), o2 = encodeURIComponent(n2[1]), a2 = n2[4] || ""; - t2.videoId = o2, t2.src = `https://player.vimeo.com/video/${o2}?${a2 ? `h=${a2}${s2 ? "&" : ""}` : ""}${s2}`, i2 = "vimeo"; - } - if (!i2 && t2.triggerEl) { - const e3 = t2.triggerEl.dataset.type; - ct.includes(e3) && (i2 = e3); - } - i2 || "string" == typeof e2 && ("#" === e2.charAt(0) ? i2 = "inline" : (n2 = e2.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i)) ? (i2 = "html5video", t2.videoFormat = t2.videoFormat || "video/" + ("ogv" === n2[1] ? "ogg" : n2[1])) : e2.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ? i2 = "image" : e2.match(/\.(pdf)((\?|#).*)?$/i) ? i2 = "pdf" : (n2 = e2.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:(?:(?:maps\/(?:place\/(?:.*)\/)?\@(.*),(\d+.?\d+?)z))|(?:\?ll=))(.*)?/i)) ? (t2.src = `https://maps.google.${n2[1]}/?ll=${(n2[2] ? n2[2] + "&z=" + Math.floor(parseFloat(n2[3])) + (n2[4] ? n2[4].replace(/^\//, "&") : "") : n2[4] + "").replace(/\?/, "&")}&output=${n2[4] && n2[4].indexOf("layer=c") > 0 ? "svembed" : "embed"}`, i2 = "map") : (n2 = e2.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:maps\/search\/)(.*)/i)) && (t2.src = `https://maps.google.${n2[1]}/maps?q=${n2[2].replace("query=", "q=").replace("api=1", "")}&output=embed`, i2 = "map")), i2 = i2 || this.instance.option("defaultType"), t2.type = i2, "image" === i2 && (t2.thumbSrc = t2.thumbSrc || t2.src); - } - setContent(t2) { - const e2 = this.instance.optionFor(t2, "src") || ""; - if (t2 && t2.type && e2) { - switch (t2.type) { - case "html": - this.instance.setContent(t2, e2); - break; - case "html5video": - const i2 = this.option("videoTpl"); - i2 && this.instance.setContent(t2, i2.replace(/\{\{src\}\}/gi, e2 + "").replace(/\{\{format\}\}/gi, this.optionFor(t2, "videoFormat") || "").replace(/\{\{poster\}\}/gi, t2.poster || t2.thumbSrc || "")); - break; - case "inline": - case "clone": - this.setInlineContent(t2); - break; - case "ajax": - this.loadAjaxContent(t2); - break; - case "pdf": - case "map": - case "youtube": - case "vimeo": - t2.preload = false; - case "iframe": - this.setIframeContent(t2); - } - this.setAspectRatio(t2); - } - } - setAspectRatio(t2) { - var e2; - const i2 = t2.width || 0, n2 = t2.height || 0; - if (i2 && n2) - return; - const s2 = t2.contentEl, o2 = this.optionFor(t2, "videoRatio"), a2 = null === (e2 = t2.el) || void 0 === e2 ? void 0 : e2.getBoundingClientRect(); - if (!(s2 && a2 && o2 && 1 !== o2 && t2.type && ["video", "youtube", "vimeo", "html5video"].includes(t2.type))) - return; - const r2 = a2.width, l2 = a2.height; - s2.style.aspectRatio = o2 + "", s2.style.width = r2 / l2 > o2 ? "auto" : "", s2.style.height = r2 / l2 > o2 ? "" : "auto"; - } - attach() { - const t2 = this, e2 = t2.instance; - e2.on("Carousel.initSlide", t2.onInitSlide), e2.on("Carousel.createSlide", t2.onCreateSlide), e2.on("Carousel.removeSlide", t2.onRemoveSlide), e2.on("Carousel.selectSlide", t2.onSelectSlide), e2.on("Carousel.unselectSlide", t2.onUnselectSlide), e2.on("Carousel.Panzoom.refresh", t2.onRefresh), e2.on("done", t2.onDone), window.addEventListener("message", t2.onMessage); - } - detach() { - const t2 = this, e2 = t2.instance; - e2.off("Carousel.initSlide", t2.onInitSlide), e2.off("Carousel.createSlide", t2.onCreateSlide), e2.off("Carousel.removeSlide", t2.onRemoveSlide), e2.off("Carousel.selectSlide", t2.onSelectSlide), e2.off("Carousel.unselectSlide", t2.onUnselectSlide), e2.off("Carousel.Panzoom.refresh", t2.onRefresh), e2.off("done", t2.onDone), window.removeEventListener("message", t2.onMessage); - } -}; -Object.defineProperty(ht, "defaults", { enumerable: true, configurable: true, writable: true, value: lt }); -var dt = "play"; -var ut = "pause"; -var pt = "ready"; -var ft = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: pt }), Object.defineProperty(this, "inHover", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "timer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "progressBar", { enumerable: true, configurable: true, writable: true, value: null }); - } - get isActive() { - return this.state !== pt; - } - onReady(t2) { - this.option("autoStart") && (t2.isInfinite || t2.page < t2.pages.length - 1) && this.start(); - } - onChange() { - var t2; - (null === (t2 = this.instance.panzoom) || void 0 === t2 ? void 0 : t2.isResting) || (this.removeProgressBar(), this.pause()); - } - onSettle() { - this.resume(); - } - onVisibilityChange() { - "visible" === document.visibilityState ? this.resume() : this.pause(); - } - onMouseEnter() { - this.inHover = true, this.pause(); - } - onMouseLeave() { - var t2; - this.inHover = false, (null === (t2 = this.instance.panzoom) || void 0 === t2 ? void 0 : t2.isResting) && this.resume(); - } - onTimerEnd() { - const t2 = this.instance; - "play" === this.state && (t2.isInfinite || t2.page !== t2.pages.length - 1 ? t2.slideNext() : t2.slideTo(0)); - } - removeProgressBar() { - this.progressBar && (this.progressBar.remove(), this.progressBar = null); - } - createProgressBar() { - var t2; - if (!this.option("showProgress")) - return null; - this.removeProgressBar(); - const e2 = this.instance, i2 = (null === (t2 = e2.pages[e2.page]) || void 0 === t2 ? void 0 : t2.slides) || []; - let n2 = this.option("progressParentEl"); - if (n2 || (n2 = (1 === i2.length ? i2[0].el : null) || e2.viewport), !n2) - return null; - const s2 = document.createElement("div"); - return S(s2, "f-progress"), n2.prepend(s2), this.progressBar = s2, s2.offsetHeight, s2; - } - set() { - const t2 = this, e2 = t2.instance; - if (e2.pages.length < 2) - return; - if (t2.timer) - return; - const i2 = t2.option("timeout"); - t2.state = dt, S(e2.container, "has-autoplay"); - let n2 = t2.createProgressBar(); - n2 && (n2.style.transitionDuration = `${i2}ms`, n2.style.transform = "scaleX(1)"), t2.timer = setTimeout(() => { - t2.timer = null, t2.inHover || t2.onTimerEnd(); - }, i2), t2.emit("set"); - } - clear() { - const t2 = this; - t2.timer && (clearTimeout(t2.timer), t2.timer = null), t2.removeProgressBar(); - } - start() { - const t2 = this; - if (t2.set(), t2.state !== pt) { - if (t2.option("pauseOnHover")) { - const e2 = t2.instance.container; - e2.addEventListener("mouseenter", t2.onMouseEnter, false), e2.addEventListener("mouseleave", t2.onMouseLeave, false); - } - document.addEventListener("visibilitychange", t2.onVisibilityChange, false), t2.emit("start"); - } - } - stop() { - const t2 = this, e2 = t2.state, i2 = t2.instance.container; - t2.clear(), t2.state = pt, i2.removeEventListener("mouseenter", t2.onMouseEnter, false), i2.removeEventListener("mouseleave", t2.onMouseLeave, false), document.removeEventListener("visibilitychange", t2.onVisibilityChange, false), E(i2, "has-autoplay"), e2 !== pt && t2.emit("stop"); - } - pause() { - const t2 = this; - t2.state === dt && (t2.state = ut, t2.clear(), t2.emit(ut)); - } - resume() { - const t2 = this, e2 = t2.instance; - if (e2.isInfinite || e2.page !== e2.pages.length - 1) - if (t2.state !== dt) { - if (t2.state === ut && !t2.inHover) { - const e3 = new Event("resume", { bubbles: true, cancelable: true }); - t2.emit("resume", e3), e3.defaultPrevented || t2.set(); - } - } else - t2.set(); - else - t2.stop(); - } - toggle() { - this.state === dt || this.state === ut ? this.stop() : this.start(); - } - attach() { - const t2 = this, e2 = t2.instance; - e2.on("ready", t2.onReady), e2.on("Panzoom.startAnimation", t2.onChange), e2.on("Panzoom.endAnimation", t2.onSettle), e2.on("Panzoom.touchMove", t2.onChange); - } - detach() { - const t2 = this, e2 = t2.instance; - e2.off("ready", t2.onReady), e2.off("Panzoom.startAnimation", t2.onChange), e2.off("Panzoom.endAnimation", t2.onSettle), e2.off("Panzoom.touchMove", t2.onChange), t2.stop(); - } -}; -Object.defineProperty(ft, "defaults", { enumerable: true, configurable: true, writable: true, value: { autoStart: true, pauseOnHover: true, progressParentEl: null, showProgress: true, timeout: 3e3 } }); -var mt = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "ref", { enumerable: true, configurable: true, writable: true, value: null }); - } - onPrepare(t2) { - const e2 = t2.carousel; - if (!e2) - return; - const i2 = t2.container; - i2 && (e2.options.Autoplay = u({ autoStart: false }, this.option("Autoplay") || {}, { pauseOnHover: false, timeout: this.option("timeout"), progressParentEl: () => this.option("progressParentEl") || null, on: { start: () => { - t2.emit("startSlideshow"); - }, set: (e3) => { - var n2; - i2.classList.add("has-slideshow"), (null === (n2 = t2.getSlide()) || void 0 === n2 ? void 0 : n2.state) !== it.Ready && e3.pause(); - }, stop: () => { - i2.classList.remove("has-slideshow"), t2.isCompact || t2.endIdle(), t2.emit("endSlideshow"); - }, resume: (e3, i3) => { - var n2, s2, o2; - !i3 || !i3.cancelable || (null === (n2 = t2.getSlide()) || void 0 === n2 ? void 0 : n2.state) === it.Ready && (null === (o2 = null === (s2 = t2.carousel) || void 0 === s2 ? void 0 : s2.panzoom) || void 0 === o2 ? void 0 : o2.isResting) || i3.preventDefault(); - } } }), e2.attachPlugins({ Autoplay: ft }), this.ref = e2.plugins.Autoplay); - } - onReady(t2) { - const e2 = t2.carousel, i2 = this.ref; - e2 && i2 && this.option("playOnStart") && (e2.isInfinite || e2.page < e2.pages.length - 1) && i2.start(); - } - onDone(t2, e2) { - const i2 = this.ref; - if (!i2) - return; - const n2 = e2.panzoom; - n2 && n2.on("startAnimation", () => { - t2.isCurrentSlide(e2) && i2.stop(); - }), t2.isCurrentSlide(e2) && i2.resume(); - } - onKeydown(t2, e2) { - var i2; - const n2 = this.ref; - n2 && e2 === this.option("key") && "BUTTON" !== (null === (i2 = document.activeElement) || void 0 === i2 ? void 0 : i2.nodeName) && n2.toggle(); - } - attach() { - const t2 = this, e2 = t2.instance; - e2.on("Carousel.init", t2.onPrepare), e2.on("Carousel.ready", t2.onReady), e2.on("done", t2.onDone), e2.on("keydown", t2.onKeydown); - } - detach() { - const t2 = this, e2 = t2.instance; - e2.off("Carousel.init", t2.onPrepare), e2.off("Carousel.ready", t2.onReady), e2.off("done", t2.onDone), e2.off("keydown", t2.onKeydown); - } -}; -Object.defineProperty(mt, "defaults", { enumerable: true, configurable: true, writable: true, value: { key: " ", playOnStart: false, progressParentEl: (t2) => { - var e2; - return (null === (e2 = t2.instance.container) || void 0 === e2 ? void 0 : e2.querySelector(".fancybox__toolbar [data-fancybox-toggle-slideshow]")) || t2.instance.container; -}, timeout: 3e3 } }); -var gt = { 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 bt; -!function(t2) { - t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Hidden = 2] = "Hidden", t2[t2.Disabled = 3] = "Disabled"; -}(bt || (bt = {})); -var vt = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "type", { enumerable: true, configurable: true, writable: true, value: "modern" }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "track", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "carousel", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "panzoom", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "thumbWidth", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbClipWidth", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbHeight", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbGap", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "thumbExtraGap", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "shouldCenter", { enumerable: true, configurable: true, writable: true, value: true }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: bt.Init }); - } - formatThumb(t2, e2) { - return this.instance.localize(e2, [["%i", t2.index], ["%d", t2.index + 1], ["%s", t2.thumbSrc || "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"]]); - } - getSlides() { - const t2 = [], e2 = this.option("thumbTpl") || ""; - if (e2) - for (const i2 of this.instance.slides || []) { - let n2 = ""; - i2.type && (n2 = `for-${i2.type}`, i2.type && ["video", "youtube", "vimeo", "html5video"].includes(i2.type) && (n2 += " for-video")), t2.push({ html: this.formatThumb(i2, e2), customClass: n2 }); - } - return t2; - } - onInitSlide(t2, e2) { - const i2 = e2.el; - i2 && (e2.thumbSrc = i2.dataset.thumbSrc || e2.thumbSrc || "", e2.thumbClipWidth = parseFloat(i2.dataset.thumbClipWidth || "") || e2.thumbClipWidth || 0, e2.thumbHeight = parseFloat(i2.dataset.thumbHeight || "") || e2.thumbHeight || 0); - } - onInitSlides() { - this.state === bt.Init && this.build(); - } - onRefreshM() { - this.refreshModern(); - } - onChangeM() { - "modern" === this.type && (this.shouldCenter = true, this.centerModern()); - } - onClickModern(t2) { - t2.preventDefault(), t2.stopPropagation(); - const e2 = this.instance, i2 = e2.page, n2 = (t3) => { - if (t3) { - const e3 = t3.closest("[data-carousel-index]"); - if (e3) - return parseInt(e3.dataset.carouselIndex || "", 10) || 0; - } - return -1; - }, s2 = (t3, e3) => { - const i3 = document.elementFromPoint(t3, e3); - return i3 ? n2(i3) : -1; - }; - let o2 = n2(t2.target); - o2 < 0 && (o2 = s2(t2.clientX + this.thumbGap, t2.clientY), o2 === i2 && (o2 = i2 - 1)), o2 < 0 && (o2 = s2(t2.clientX - this.thumbGap, t2.clientY), o2 === i2 && (o2 = i2 + 1)), o2 < 0 && (o2 = ((e3) => { - let n3 = s2(t2.clientX - e3, t2.clientY), a2 = s2(t2.clientX + e3, t2.clientY); - return o2 < 0 && n3 === i2 && (o2 = i2 + 1), o2 < 0 && a2 === i2 && (o2 = i2 - 1), o2; - })(this.thumbExtraGap)), o2 === i2 ? this.centerModern() : o2 > -1 && o2 < e2.pages.length && e2.slideTo(o2); - } - onTransformM() { - if ("modern" !== this.type) - return; - const { instance: t2, container: e2, track: i2 } = this, n2 = t2.panzoom; - if (!(e2 && i2 && n2 && this.panzoom)) - return; - o(e2, this.cn("isResting"), n2.state !== g.Init && n2.isResting); - const s2 = this.thumbGap, a2 = this.thumbExtraGap, r2 = this.thumbClipWidth; - let l2 = 0, c2 = 0, h2 = 0; - for (const e3 of t2.slides) { - let i3 = e3.index, n3 = e3.thumbSlideEl; - if (!n3) - continue; - o(n3, this.cn("isSelected"), i3 === t2.page), c2 = 1 - Math.abs(t2.getProgress(i3)), n3.style.setProperty("--progress", c2 ? c2 + "" : ""); - const d2 = 0.5 * ((e3.thumbWidth || 0) - r2); - l2 += s2, l2 += d2, c2 && (l2 -= c2 * (d2 + a2)), n3.style.setProperty("--shift", l2 - s2 + ""), l2 += d2, c2 && (l2 -= c2 * (d2 + a2)), l2 -= s2, 0 === i3 && (h2 = a2 * c2); - } - i2 && (i2.style.setProperty("--left", h2 + ""), i2.style.setProperty("--width", l2 + h2 + s2 + a2 * c2 + "")), this.shouldCenter && this.centerModern(); - } - buildClassic() { - const { container: t2, track: e2 } = this, i2 = this.getSlides(); - if (!t2 || !e2 || !i2) - return; - const n2 = new this.instance.constructor(t2, u({ track: e2, infinite: false, center: true, fill: true, dragFree: true, slidesPerPage: 1, transition: false, Dots: false, Navigation: false, classes: { container: "f-thumbs", viewport: "f-thumbs__viewport", track: "f-thumbs__track", slide: "f-thumbs__slide" } }, this.option("Carousel") || {}, { Sync: { target: this.instance }, slides: i2 })); - this.carousel = n2, this.track = e2, n2.on("ready", () => { - this.emit("ready"); - }), n2.on("createSlide", (t3, e3) => { - this.emit("createSlide", e3, e3.el); - }); - } - buildModern() { - if ("modern" !== this.type) - return; - const { container: t2, track: e2, instance: i2 } = this, s2 = this.option("thumbTpl") || ""; - if (!t2 || !e2 || !s2) - return; - t2.addEventListener("keydown", () => { - E(t2, "is-using-mouse"); - }), S(t2, "is-horizontal"), this.updateModern(); - for (const t3 of i2.slides || []) { - const i3 = document.createElement("div"); - if (S(i3, this.cn("slide")), t3.type) { - let e3 = `for-${t3.type}`; - ["video", "youtube", "vimeo", "html5video"].includes(t3.type) && (e3 += " for-video"), S(i3, e3); - } - i3.appendChild(n(this.formatThumb(t3, s2))), this.emit("createSlide", t3, i3), t3.thumbSlideEl = i3, e2.appendChild(i3), this.resizeModernSlide(t3); - } - const o2 = new i2.constructor.Panzoom(t2, { content: e2, lockAxis: "x", zoom: false, panOnlyZoomed: false, bounds: () => { - let t3 = 0, e3 = 0, n2 = i2.slides[0], s3 = i2.slides[i2.slides.length - 1], o3 = i2.slides[i2.page]; - return n2 && s3 && o3 && (e3 = -1 * this.getModernThumbPos(0), 0 !== i2.page && (e3 += 0.5 * (n2.thumbWidth || 0)), t3 = -1 * this.getModernThumbPos(i2.slides.length - 1), i2.page !== i2.slides.length - 1 && (t3 += (s3.thumbWidth || 0) - (o3.thumbWidth || 0) - 0.5 * (s3.thumbWidth || 0))), { x: { min: t3, max: e3 }, y: { min: 0, max: 0 } }; - } }); - o2.on("touchStart", (t3, e3) => { - this.shouldCenter = false, S(this.container, "is-using-mouse"); - }), o2.on("click", (t3, e3) => this.onClickModern(e3)), o2.on("ready", () => { - this.centerModern(), this.emit("ready"); - }), o2.on(["afterTransform", "refresh"], (t3) => { - this.lazyLoadModern(); - }), this.panzoom = o2, this.refreshModern(); - } - updateModern() { - if ("modern" !== this.type) - return; - const { container: t2 } = this; - t2 && (this.thumbGap = parseFloat(getComputedStyle(t2).getPropertyValue("--f-thumb-gap")) || 0, this.thumbExtraGap = parseFloat(getComputedStyle(t2).getPropertyValue("--f-thumb-extra-gap")) || 0, this.thumbWidth = parseFloat(getComputedStyle(t2).getPropertyValue("--f-thumb-width")) || 40, this.thumbClipWidth = parseFloat(getComputedStyle(t2).getPropertyValue("--f-thumb-clip-width")) || 40, this.thumbHeight = parseFloat(getComputedStyle(t2).getPropertyValue("--f-thumb-height")) || 40); - } - refreshModern() { - var t2; - if ("modern" === this.type) { - this.updateModern(); - for (const t3 of this.instance.slides || []) - this.resizeModernSlide(t3); - this.onTransformM(), null === (t2 = this.panzoom) || void 0 === t2 || t2.updateMetrics(true), this.centerModern(0); - } - } - centerModern(e2) { - const i2 = this.instance, { container: n2, panzoom: s2 } = this; - if (!n2 || !s2 || s2.state === g.Init) - return; - const o2 = i2.page; - let a2 = this.getModernThumbPos(o2), r2 = a2; - for (let t2 = i2.page - 3; t2 < i2.page + 3; t2++) { - if (t2 < 0 || t2 > i2.pages.length - 1 || t2 === i2.page) - continue; - const e3 = 1 - Math.abs(i2.getProgress(t2)); - e3 > 0 && e3 < 1 && (r2 += e3 * (this.getModernThumbPos(t2) - a2)); - } - let l2 = 100; - void 0 === e2 && (e2 = 0.2, i2.inTransition.size > 0 && (e2 = 0.12), Math.abs(-1 * s2.current.e - r2) > s2.containerRect.width && (e2 = 0.5, l2 = 0)), s2.options.maxVelocity = l2, s2.applyChange({ panX: t(-1 * r2 - s2.target.e, 1e3), friction: null === i2.prevPage ? 0 : e2 }); - } - lazyLoadModern() { - const { instance: t2, panzoom: e2 } = this; - if (!e2) - return; - const i2 = -1 * e2.current.e || 0; - let s2 = this.getModernThumbPos(t2.page); - if (e2.state !== g.Init || 0 === s2) - for (const s3 of t2.slides || []) { - const t3 = s3.thumbSlideEl; - if (!t3) - continue; - const o2 = t3.querySelector("img[data-lazy-src]"), a2 = s3.index, r2 = this.getModernThumbPos(a2), l2 = i2 - 0.5 * e2.containerRect.innerWidth, c2 = l2 + e2.containerRect.innerWidth; - if (!o2 || r2 < l2 || r2 > c2) - continue; - let h2 = o2.dataset.lazySrc; - if (!h2 || !h2.length) - continue; - if (delete o2.dataset.lazySrc, o2.src = h2, o2.complete) - continue; - S(t3, this.cn("isLoading")); - const d2 = n(w); - t3.appendChild(d2), o2.addEventListener("load", () => { - t3.offsetParent && (t3.classList.remove(this.cn("isLoading")), d2.remove()); - }, false); - } - } - resizeModernSlide(t2) { - if ("modern" !== this.type) - return; - if (!t2.thumbSlideEl) - return; - const e2 = t2.thumbClipWidth && t2.thumbHeight ? Math.round(this.thumbHeight * (t2.thumbClipWidth / t2.thumbHeight)) : this.thumbWidth; - t2.thumbWidth = e2; - } - getModernThumbPos(e2) { - const i2 = this.instance.slides[e2], n2 = this.panzoom; - if (!n2 || !n2.contentRect.fitWidth) - return 0; - let s2 = n2.containerRect.innerWidth, o2 = n2.contentRect.width; - 2 === this.instance.slides.length && (e2 -= 1, o2 = 2 * this.thumbClipWidth); - let a2 = e2 * (this.thumbClipWidth + this.thumbGap) + this.thumbExtraGap + 0.5 * (i2.thumbWidth || 0); - return a2 -= o2 > s2 ? 0.5 * s2 : 0.5 * o2, t(a2 || 0, 1); - } - build() { - const t2 = this.instance, e2 = t2.container, i2 = this.option("minCount") || 0; - if (i2) { - let e3 = 0; - for (const i3 of t2.slides || []) - i3.thumbSrc && e3++; - if (e3 < i2) - return this.cleanup(), void (this.state = bt.Disabled); - } - const n2 = this.option("type"); - if (["modern", "classic"].indexOf(n2) < 0) - return void (this.state = bt.Disabled); - this.type = n2; - const s2 = document.createElement("div"); - S(s2, this.cn("container")), S(s2, `is-${n2}`); - const o2 = this.option("parentEl"); - o2 ? o2.appendChild(s2) : e2.after(s2), this.container = s2, S(e2, this.cn("hasThumbs")); - const a2 = document.createElement("div"); - S(a2, this.cn("track")), s2.appendChild(a2), this.track = a2, "classic" === n2 ? this.buildClassic() : this.buildModern(), this.state = bt.Ready; - } - cleanup() { - this.carousel && this.carousel.destroy(), this.carousel = null, this.panzoom && this.panzoom.destroy(), this.panzoom = null, this.container && this.container.remove(), this.container = null, this.track = null, this.state = bt.Init, E(this.instance.container, this.cn("hasThumbs")); - } - attach() { - const t2 = this, e2 = t2.instance; - e2.on("initSlide", t2.onInitSlide), e2.state === F.Init ? e2.on("initSlides", t2.onInitSlides) : t2.onInitSlides(), e2.on("Panzoom.afterTransform", t2.onTransformM), e2.on("Panzoom.refresh", t2.onRefreshM), e2.on("change", t2.onChangeM); - } - detach() { - const t2 = this, e2 = t2.instance; - e2.off("initSlide", t2.onInitSlide), e2.off("initSlides", t2.onInitSlides), e2.off("Panzoom.afterTransform", t2.onTransformM), e2.off("Panzoom.refresh", t2.onRefreshM), e2.off("change", t2.onChangeM), t2.cleanup(); - } -}; -Object.defineProperty(vt, "defaults", { enumerable: true, configurable: true, writable: true, value: gt }); -var yt = Object.assign(Object.assign({}, gt), { key: "t", showOnStart: true, parentEl: null }); -var wt = "is-masked"; -var xt = "aria-hidden"; -var Et = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "ref", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "hidden", { enumerable: true, configurable: true, writable: true, value: false }); - } - get isEnabled() { - const t2 = this.ref; - return t2 && t2.state !== bt.Disabled; - } - get isHidden() { - return this.hidden; - } - onInit() { - var t2; - const e2 = this, i2 = e2.instance, n2 = i2.carousel; - if (e2.ref || !n2) - return; - const s2 = e2.option("parentEl") || i2.footer || i2.container; - if (!s2) - return; - const o2 = u({}, e2.options, { parentEl: s2, classes: { container: "f-thumbs fancybox__thumbs" }, Carousel: { Sync: { friction: i2.option("Carousel.friction") || 0 } }, on: { ready: (t3) => { - const i3 = t3.container; - i3 && this.hidden && (e2.refresh(), i3.style.transition = "none", e2.hide(), i3.offsetHeight, queueMicrotask(() => { - i3.style.transition = "", e2.show(); - })); - } } }); - o2.Carousel = o2.Carousel || {}, o2.Carousel.on = u((null === (t2 = e2.options.Carousel) || void 0 === t2 ? void 0 : t2.on) || {}, { click: (t3, e3) => { - e3.stopPropagation(); - } }), n2.options.Thumbs = o2, n2.attachPlugins({ Thumbs: vt }), e2.ref = n2.plugins.Thumbs, e2.option("showOnStart") || (e2.ref.state = bt.Hidden, e2.hidden = true); - } - onResize() { - var t2; - const e2 = null === (t2 = this.ref) || void 0 === t2 ? void 0 : t2.container; - e2 && (e2.style.maxHeight = ""); - } - onKeydown(t2, e2) { - const i2 = this.option("key"); - i2 && i2 === e2 && this.toggle(); - } - toggle() { - const t2 = this.ref; - t2 && t2.state !== bt.Disabled && (t2.state !== bt.Hidden ? this.hidden ? this.show() : this.hide() : t2.build()); - } - show() { - const t2 = this.ref, e2 = t2 && t2.state !== bt.Disabled && t2.container; - e2 && (this.refresh(), e2.offsetHeight, e2.removeAttribute(xt), e2.classList.remove(wt), this.hidden = false); - } - hide() { - const t2 = this.ref, e2 = t2 && t2.container; - e2 && (this.refresh(), e2.offsetHeight, e2.classList.add(wt), e2.setAttribute(xt, "true")), this.hidden = true; - } - refresh() { - const t2 = this.ref; - if (!t2 || t2.state === bt.Disabled) - return; - const e2 = t2.container, i2 = (null == e2 ? void 0 : e2.firstChild) || null; - e2 && i2 && i2.childNodes.length && (e2.style.maxHeight = `${i2.getBoundingClientRect().height}px`); - } - attach() { - const t2 = this, e2 = t2.instance; - e2.state === et.Init ? e2.on("Carousel.init", t2.onInit) : t2.onInit(), e2.on("resize", t2.onResize), e2.on("keydown", t2.onKeydown); - } - detach() { - var t2; - const e2 = this, i2 = e2.instance; - i2.off("Carousel.init", e2.onInit), i2.off("resize", e2.onResize), i2.off("keydown", e2.onKeydown), null === (t2 = i2.carousel) || void 0 === t2 || t2.detachPlugins(["Thumbs"]), e2.ref = null; - } -}; -Object.defineProperty(Et, "defaults", { enumerable: true, configurable: true, writable: true, value: yt }); -var St = { 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 Pt; -!function(t2) { - t2[t2.Init = 0] = "Init", t2[t2.Ready = 1] = "Ready", t2[t2.Disabled = 2] = "Disabled"; -}(Pt || (Pt = {})); -var Ct = { 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 }; -var Mt = { tabindex: "-1", width: "24", height: "24", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" }; -var Tt = class extends B { - constructor() { - super(...arguments), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: Pt.Init }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }); - } - onReady(t2) { - var e2; - if (!t2.carousel) - return; - let i2 = this.option("display"), n2 = this.option("absolute"), s2 = this.option("enabled"); - if ("auto" === s2) { - const t3 = this.instance.carousel; - let e3 = 0; - if (t3) - for (const i3 of t3.slides) - (i3.panzoom || "image" === i3.type) && e3++; - e3 || (s2 = false); - } - s2 || (i2 = void 0); - let o2 = 0; - const a2 = { left: [], middle: [], right: [] }; - if (i2) - for (const t3 of ["left", "middle", "right"]) - for (const n3 of i2[t3]) { - const i3 = this.createEl(n3); - i3 && (null === (e2 = a2[t3]) || void 0 === e2 || e2.push(i3), o2++); - } - let r2 = null; - if (o2 && (r2 = this.createContainer()), r2) { - for (const [t3, e3] of Object.entries(a2)) { - const i3 = document.createElement("div"); - S(i3, "fancybox__toolbar__column is-" + t3); - for (const t4 of e3) - i3.appendChild(t4); - "auto" !== n2 || "middle" !== t3 || e3.length || (n2 = true), r2.appendChild(i3); - } - true === n2 && S(r2, "is-absolute"), this.state = Pt.Ready, this.onRefresh(); - } else - this.state = Pt.Disabled; - } - onClick(t2) { - var e2, i2; - const n2 = this.instance, s2 = n2.getSlide(), o2 = null == s2 ? void 0 : s2.panzoom, a2 = t2.target, r2 = a2 && x(a2) ? a2.dataset : null; - if (!r2) - return; - if (void 0 !== r2.fancyboxToggleThumbs) - return t2.preventDefault(), t2.stopPropagation(), void (null === (e2 = n2.plugins.Thumbs) || void 0 === e2 || e2.toggle()); - if (void 0 !== r2.fancyboxToggleFullscreen) - return t2.preventDefault(), t2.stopPropagation(), void this.instance.toggleFullscreen(); - if (void 0 !== r2.fancyboxToggleSlideshow) { - t2.preventDefault(), t2.stopPropagation(); - const e3 = null === (i2 = n2.carousel) || void 0 === i2 ? void 0 : i2.plugins.Autoplay; - let s3 = e3.isActive; - return o2 && "mousemove" === o2.panMode && !s3 && o2.reset(), void (s3 ? e3.stop() : e3.start()); - } - const l2 = r2.panzoomAction, c2 = r2.panzoomChange; - if ((c2 || l2) && (t2.preventDefault(), t2.stopPropagation()), c2) { - let t3 = {}; - try { - t3 = JSON.parse(c2); - } catch (t4) { - } - o2 && o2.applyChange(t3); - } else - l2 && o2 && o2[l2] && o2[l2](); - } - onChange() { - this.onRefresh(); - } - onRefresh() { - if (this.instance.isClosing()) - return; - const t2 = this.container; - if (!t2) - return; - const e2 = this.instance.getSlide(); - if (!e2 || e2.state !== it.Ready) - return; - const i2 = e2 && !e2.error && e2.panzoom; - for (const e3 of t2.querySelectorAll("[data-panzoom-action]")) - i2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1")); - let n2 = i2 && i2.canZoomIn(), s2 = i2 && i2.canZoomOut(); - for (const e3 of t2.querySelectorAll('[data-panzoom-action="zoomIn"]')) - n2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1")); - for (const e3 of t2.querySelectorAll('[data-panzoom-action="zoomOut"]')) - s2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1")); - for (const e3 of t2.querySelectorAll('[data-panzoom-action="toggleZoom"],[data-panzoom-action="iterateZoom"]')) { - s2 || n2 ? (e3.removeAttribute("disabled"), e3.removeAttribute("tabindex")) : (e3.setAttribute("disabled", ""), e3.setAttribute("tabindex", "-1")); - const t3 = e3.querySelector("g"); - t3 && (t3.style.display = n2 ? "" : "none"); - } - } - onDone(t2, e2) { - var i2; - null === (i2 = e2.panzoom) || void 0 === i2 || i2.on("afterTransform", () => { - this.instance.isCurrentSlide(e2) && this.onRefresh(); - }), this.instance.isCurrentSlide(e2) && this.onRefresh(); - } - createContainer() { - const t2 = this.instance.container; - if (!t2) - return null; - const e2 = this.option("parentEl") || t2, i2 = document.createElement("div"); - return S(i2, "fancybox__toolbar"), e2.prepend(i2), i2.addEventListener("click", this.onClick, { passive: false, capture: true }), t2 && S(t2, "has-toolbar"), this.container = i2, i2; - } - createEl(t2) { - const e2 = this.instance, i2 = e2.carousel; - if (!i2) - return null; - if ("toggleFS" === t2) - return null; - if ("fullscreen" === t2 && !e2.fsAPI) - return null; - let s2 = null; - const o2 = i2.slides.length || 0; - let a2 = 0, r2 = 0; - for (const t3 of i2.slides) - (t3.panzoom || "image" === t3.type) && a2++, ("image" === t3.type || t3.downloadSrc) && r2++; - if (o2 < 2 && ["infobar", "prev", "next"].includes(t2)) - return s2; - if (void 0 !== St[t2] && !a2) - return null; - if ("download" === t2 && !r2) - return null; - if ("thumbs" === t2) { - const t3 = e2.plugins.Thumbs; - if (!t3 || !t3.isEnabled) - return null; - } - if ("slideshow" === t2) { - if (!i2.plugins.Autoplay || o2 < 2) - return null; - } - if (void 0 !== St[t2]) { - const e3 = St[t2]; - s2 = document.createElement("button"), s2.setAttribute("title", this.instance.localize(`{{${t2.toUpperCase()}}}`)), S(s2, "f-button"), e3.action && (s2.dataset.panzoomAction = e3.action), e3.change && (s2.dataset.panzoomChange = JSON.stringify(e3.change)), s2.appendChild(n(this.instance.localize(e3.icon))); - } else { - const e3 = (this.option("items") || [])[t2]; - e3 && (s2 = n(this.instance.localize(e3.tpl)), "function" == typeof e3.click && s2.addEventListener("click", (t3) => { - t3.preventDefault(), t3.stopPropagation(), "function" == typeof e3.click && e3.click.call(this, this, t3); - })); - } - const l2 = null == s2 ? void 0 : s2.querySelector("svg"); - if (l2) - for (const [t3, e3] of Object.entries(Mt)) - l2.getAttribute(t3) || l2.setAttribute(t3, String(e3)); - return s2; - } - removeContainer() { - const t2 = this.container; - t2 && t2.remove(), this.container = null, this.state = Pt.Disabled; - const e2 = this.instance.container; - e2 && E(e2, "has-toolbar"); - } - attach() { - const t2 = this, e2 = t2.instance; - e2.on("Carousel.initSlides", t2.onReady), e2.on("done", t2.onDone), e2.on("reveal", t2.onChange), e2.on("Carousel.change", t2.onChange), t2.onReady(t2.instance); - } - detach() { - const t2 = this, e2 = t2.instance; - e2.off("Carousel.initSlides", t2.onReady), e2.off("done", t2.onDone), e2.off("reveal", t2.onChange), e2.off("Carousel.change", t2.onChange), t2.removeContainer(); - } -}; -Object.defineProperty(Tt, "defaults", { enumerable: true, configurable: true, writable: true, value: Ct }); -var Ot = { Hash: st, Html: ht, Images: at, Slideshow: mt, Thumbs: Et, Toolbar: Tt }; -var At = "with-fancybox"; -var zt = "hide-scrollbar"; -var Lt = "--fancybox-scrollbar-compensate"; -var Rt = "--fancybox-body-margin"; -var kt = "is-animated"; -var It = "is-compact"; -var Dt = "is-loading"; -var Ft = function() { - var t2 = window.getSelection(); - return t2 && "Range" === t2.type; -}; -var jt = null; -var Ht = null; -var Bt = /* @__PURE__ */ new Map(); -var Nt = 0; -var _t = class __t extends m { - get isIdle() { - return this.idle; - } - get isCompact() { - return this.option("compact"); - } - constructor(t2 = [], e2 = {}, i2 = {}) { - super(e2), Object.defineProperty(this, "userSlides", { enumerable: true, configurable: true, writable: true, value: [] }), Object.defineProperty(this, "userPlugins", { enumerable: true, configurable: true, writable: true, value: {} }), Object.defineProperty(this, "idle", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "idleTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "clickTimer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "pwt", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "ignoreFocusChange", { enumerable: true, configurable: true, writable: true, value: false }), Object.defineProperty(this, "state", { enumerable: true, configurable: true, writable: true, value: et.Init }), Object.defineProperty(this, "id", { enumerable: true, configurable: true, writable: true, value: 0 }), Object.defineProperty(this, "container", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "footer", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "caption", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "carousel", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "lastFocus", { enumerable: true, configurable: true, writable: true, value: null }), Object.defineProperty(this, "prevMouseMoveEvent", { enumerable: true, configurable: true, writable: true, value: void 0 }), Object.defineProperty(this, "fsAPI", { enumerable: true, configurable: true, writable: true, value: void 0 }), this.fsAPI = (() => { - let t3, e3 = "", i3 = "", n2 = ""; - return document.fullscreenEnabled ? (e3 = "requestFullscreen", i3 = "exitFullscreen", n2 = "fullscreenElement") : document.webkitFullscreenEnabled && (e3 = "webkitRequestFullscreen", i3 = "webkitExitFullscreen", n2 = "webkitFullscreenElement"), e3 && (t3 = { request: function(t4) { - return "webkitRequestFullscreen" === e3 ? t4[e3](Element.ALLOW_KEYBOARD_INPUT) : t4[e3](); - }, exit: function() { - return document[n2] && document[i3](); - }, isFullscreen: function() { - return document[n2]; - } }), t3; - })(), this.id = e2.id || ++Nt, Bt.set(this.id, this), this.userSlides = t2, this.userPlugins = i2, queueMicrotask(() => { - this.init(); - }); - } - init() { - if (this.state === et.Destroy) - return; - this.state = et.Init, this.attachPlugins(Object.assign(Object.assign({}, __t.Plugins), this.userPlugins)), this.emit("init"), true === this.option("hideScrollbar") && (() => { - if (!G) - return; - const t3 = document.body; - if (t3.classList.contains(zt)) - return; - let e3 = window.innerWidth - document.documentElement.getBoundingClientRect().width; - e3 < 0 && (e3 = 0); - const i2 = t3.currentStyle || window.getComputedStyle(t3), n2 = parseFloat(i2.marginRight); - document.documentElement.style.setProperty(Lt, `${e3}px`), n2 && t3.style.setProperty(Rt, `${n2}px`), t3.classList.add(zt); - })(), this.initLayout(), this.scale(); - const t2 = () => { - this.initCarousel(this.userSlides), this.state = et.Ready, this.attachEvents(), this.emit("ready"), setTimeout(() => { - this.container && this.container.setAttribute("aria-hidden", "false"); - }, 16); - }, e2 = this.fsAPI; - this.option("Fullscreen.autoStart") && e2 && !e2.isFullscreen() ? e2.request(this.container).then(() => t2()).catch(() => t2()) : t2(); - } - initLayout() { - var t2, e2; - const i2 = this.option("parentEl") || document.body, s2 = n(this.localize(this.option("tpl.main") || "")); - s2 && (s2.setAttribute("id", `fancybox-${this.id}`), s2.setAttribute("aria-label", this.localize("{{MODAL}}")), s2.classList.toggle(It, this.isCompact), S(s2, this.option("mainClass") || ""), this.container = s2, this.footer = s2.querySelector(".fancybox__footer"), i2.appendChild(s2), S(document.documentElement, At), jt && Ht || (jt = document.createElement("span"), S(jt, "fancybox-focus-guard"), jt.setAttribute("tabindex", "0"), jt.setAttribute("aria-hidden", "true"), jt.setAttribute("aria-label", "Focus guard"), Ht = jt.cloneNode(), null === (t2 = s2.parentElement) || void 0 === t2 || t2.insertBefore(jt, s2), null === (e2 = s2.parentElement) || void 0 === e2 || e2.append(Ht)), this.option("animated") && (S(s2, kt), setTimeout(() => { - this.isClosing() || E(s2, kt); - }, 350)), this.emit("initLayout")); - } - initCarousel(t2) { - const i2 = this.container; - if (!i2) - return; - const n2 = i2.querySelector(".fancybox__carousel"); - if (!n2) - return; - const s2 = this.carousel = new Z(n2, u({}, { slides: t2, transition: "fade", Panzoom: { lockAxis: this.option("dragToClose") ? "xy" : "x", infinite: !!this.option("dragToClose") && "y" }, Dots: false, 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") || {})); - s2.on("*", (t3, e2, ...i3) => { - this.emit(`Carousel.${e2}`, t3, ...i3); - }), s2.on(["ready", "change"], () => { - var t3; - const e2 = this.getSlide(); - e2 && (null === (t3 = e2.panzoom) || void 0 === t3 || t3.updateControls()), this.manageCaption(e2); - }), this.on("Carousel.removeSlide", (t3, e2, i3) => { - i3.contentEl && (i3.contentEl.remove(), i3.contentEl = void 0); - const n3 = i3.el; - n3 && (E(n3, "has-error"), E(n3, "has-unknown"), E(n3, `has-${i3.type || "unknown"}`)), i3.closeBtnEl && i3.closeBtnEl.remove(), i3.closeBtnEl = void 0, i3.captionEl && i3.captionEl.remove(), i3.captionEl = void 0, i3.spinnerEl && i3.spinnerEl.remove(), i3.spinnerEl = void 0, i3.state = void 0; - }), s2.on("Panzoom.touchStart", () => { - var t3, e2; - this.isCompact || this.endIdle(), (null === (t3 = document.activeElement) || void 0 === t3 ? void 0 : t3.closest(".f-thumbs")) && (null === (e2 = this.container) || void 0 === e2 || e2.focus()); - }), s2.on("settle", () => { - this.idleTimer || this.isCompact || !this.option("idle") || this.setIdle(), this.option("autoFocus") && !this.isClosing && this.checkFocus(); - }), this.option("dragToClose") && (s2.on("Panzoom.afterTransform", (t3, i3) => { - const n3 = this.getSlide(); - if (n3 && e(n3.el)) - return; - const s3 = this.container; - if (s3) { - const t4 = Math.abs(i3.current.f), e2 = t4 < 1 ? "" : Math.max(0.5, Math.min(1, 1 - t4 / i3.contentRect.fitHeight * 1.5)); - s3.style.setProperty("--fancybox-ts", e2 ? "0s" : ""), s3.style.setProperty("--fancybox-opacity", e2 + ""); - } - }), s2.on("Panzoom.touchEnd", (t3, i3, n3) => { - var s3; - const o2 = this.getSlide(); - if (o2 && e(o2.el)) - return; - if (i3.isMobile && document.activeElement && -1 !== ["TEXTAREA", "INPUT"].indexOf(null === (s3 = document.activeElement) || void 0 === s3 ? void 0 : s3.nodeName)) - return; - const a2 = Math.abs(i3.dragOffset.y); - "y" === i3.lockedAxis && (a2 >= 200 || a2 >= 50 && i3.dragOffset.time < 300) && (n3 && n3.cancelable && n3.preventDefault(), this.close(n3, "f-throwOut" + (i3.current.f < 0 ? "Up" : "Down"))); - })), s2.on("change", (t3) => { - var e2; - let i3 = null === (e2 = this.getSlide()) || void 0 === e2 ? void 0 : e2.triggerEl; - if (i3) { - const e3 = new CustomEvent("slideTo", { bubbles: true, cancelable: true, detail: t3.page }); - i3.dispatchEvent(e3); - } - }), s2.on(["refresh", "change"], (t3) => { - const e2 = this.container; - if (!e2) - return; - for (const i4 of e2.querySelectorAll("[data-fancybox-current-index]")) - i4.innerHTML = t3.page + 1; - for (const i4 of e2.querySelectorAll("[data-fancybox-count]")) - i4.innerHTML = t3.pages.length; - if (!t3.isInfinite) { - for (const i4 of e2.querySelectorAll("[data-fancybox-next]")) - t3.page < t3.pages.length - 1 ? (i4.removeAttribute("disabled"), i4.removeAttribute("tabindex")) : (i4.setAttribute("disabled", ""), i4.setAttribute("tabindex", "-1")); - for (const i4 of e2.querySelectorAll("[data-fancybox-prev]")) - t3.page > 0 ? (i4.removeAttribute("disabled"), i4.removeAttribute("tabindex")) : (i4.setAttribute("disabled", ""), i4.setAttribute("tabindex", "-1")); - } - const i3 = this.getSlide(); - if (!i3) - return; - let n3 = i3.downloadSrc || ""; - n3 || "image" !== i3.type || i3.error || "string" != typeof i3.src || (n3 = i3.src); - const s3 = "disabled", o2 = "tabindex", a2 = "download", r2 = "href"; - for (const t4 of e2.querySelectorAll("[data-fancybox-download]")) { - const e3 = i3.downloadFilename; - n3 ? (t4.removeAttribute(s3), t4.removeAttribute(o2), t4.setAttribute(r2, n3), t4.setAttribute(a2, e3 || n3), t4.setAttribute("target", "_blank")) : (t4.setAttribute(s3, ""), t4.setAttribute(o2, "-1"), t4.removeAttribute(r2), t4.removeAttribute(a2)); - } - }), this.emit("initCarousel"); - } - attachEvents() { - const t2 = this, e2 = t2.container; - if (!e2) - return; - e2.addEventListener("click", t2.onClick, { passive: false, capture: false }), e2.addEventListener("wheel", t2.onWheel, { passive: false, capture: false }), document.addEventListener("keydown", t2.onKeydown, { passive: false, capture: true }), document.addEventListener("visibilitychange", t2.onVisibilityChange, false), document.addEventListener("mousemove", t2.onMousemove), t2.option("trapFocus") && document.addEventListener("focus", t2.onFocus, true), window.addEventListener("resize", t2.onResize); - const i2 = window.visualViewport; - i2 && (i2.addEventListener("scroll", t2.onResize), i2.addEventListener("resize", t2.onResize)); - } - detachEvents() { - const t2 = this, e2 = t2.container; - if (!e2) - return; - document.removeEventListener("keydown", t2.onKeydown, { passive: false, capture: true }), e2.removeEventListener("wheel", t2.onWheel, { passive: false, capture: false }), e2.removeEventListener("click", t2.onClick, { passive: false, capture: false }), document.removeEventListener("mousemove", t2.onMousemove), window.removeEventListener("resize", t2.onResize); - const i2 = window.visualViewport; - i2 && (i2.removeEventListener("resize", t2.onResize), i2.removeEventListener("scroll", t2.onResize)), document.removeEventListener("visibilitychange", t2.onVisibilityChange, false), document.removeEventListener("focus", t2.onFocus, true); - } - scale() { - const t2 = this.container; - if (!t2) - return; - const e2 = window.visualViewport, i2 = Math.max(1, (null == e2 ? void 0 : e2.scale) || 1); - let n2 = "", s2 = "", o2 = ""; - if (e2 && i2 > 1) { - let t3 = `${e2.offsetLeft}px`, a2 = `${e2.offsetTop}px`; - n2 = e2.width * i2 + "px", s2 = e2.height * i2 + "px", o2 = `translate3d(${t3}, ${a2}, 0) scale(${1 / i2})`; - } - t2.style.transform = o2, t2.style.width = n2, t2.style.height = s2; - } - onClick(t2) { - var e2, i2; - const { container: n2, isCompact: s2 } = this; - if (!n2 || this.isClosing()) - return; - !s2 && this.option("idle") && this.resetIdle(); - const o2 = document.activeElement; - if (Ft() && o2 && n2.contains(o2)) - return; - const a2 = t2.composedPath()[0]; - if (a2 === (null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.container)) - return; - if (a2.closest(".f-spinner") || a2.closest("[data-fancybox-close]")) - return t2.preventDefault(), void this.close(t2); - if (a2.closest("[data-fancybox-prev]")) - return t2.preventDefault(), void this.prev(); - if (a2.closest("[data-fancybox-next]")) - return t2.preventDefault(), void this.next(); - if (s2 && "image" === (null === (i2 = this.getSlide()) || void 0 === i2 ? void 0 : i2.type)) - return void (this.clickTimer ? (clearTimeout(this.clickTimer), this.clickTimer = null) : this.clickTimer = setTimeout(() => { - this.toggleIdle(), this.clickTimer = null; - }, 350)); - if (this.emit("click", t2), t2.defaultPrevented) - return; - let r2 = false; - if (a2.closest(".fancybox__content")) { - if (o2) { - if (o2.closest("[contenteditable]")) - return; - a2.matches(J) || o2.blur(); - } - if (Ft()) - return; - r2 = this.option("contentClick"); - } else - a2.closest(".fancybox__carousel") && !a2.matches(J) && (r2 = this.option("backdropClick")); - "close" === r2 ? (t2.preventDefault(), this.close(t2)) : "next" === r2 ? (t2.preventDefault(), this.next()) : "prev" === r2 && (t2.preventDefault(), this.prev()); - } - onWheel(t2) { - var e2; - let i2 = this.option("wheel", t2); - (null === (e2 = t2.target) || void 0 === e2 ? void 0 : e2.closest(".fancybox__thumbs")) && (i2 = "slide"); - const n2 = "slide" === i2, s2 = [-t2.deltaX || 0, -t2.deltaY || 0, -t2.detail || 0].reduce(function(t3, e3) { - return Math.abs(e3) > Math.abs(t3) ? e3 : t3; - }), o2 = Math.max(-1, Math.min(1, s2)), a2 = Date.now(); - this.pwt && a2 - this.pwt < 300 ? n2 && t2.preventDefault() : (this.pwt = a2, this.emit("wheel", t2), t2.defaultPrevented || ("close" === i2 ? (t2.preventDefault(), this.close(t2)) : "slide" === i2 && (t2.preventDefault(), this[o2 > 0 ? "prev" : "next"]()))); - } - onKeydown(t2) { - if (!this.isTopmost()) - return; - this.isCompact || !this.option("idle") || this.isClosing() || this.resetIdle(); - const e2 = t2.key, i2 = this.option("keyboard"); - if (!i2 || t2.ctrlKey || t2.altKey || t2.shiftKey) - return; - const n2 = t2.composedPath()[0], s2 = document.activeElement && document.activeElement.classList, o2 = s2 && s2.contains("f-button") || n2.dataset.carouselPage || n2.dataset.carouselIndex; - if ("Escape" !== e2 && !o2 && x(n2)) { - if (n2.isContentEditable || -1 !== ["TEXTAREA", "OPTION", "INPUT", "SELECT", "VIDEO"].indexOf(n2.nodeName)) - return; - } - this.emit("keydown", e2, t2); - const a2 = i2[e2]; - "function" == typeof this[a2] && (t2.preventDefault(), this[a2]()); - } - onResize() { - const t2 = It, e2 = this.container; - if (!e2) - return; - const i2 = this.isCompact; - e2.classList.toggle(t2, i2), this.manageCaption(this.getSlide()), this.isCompact ? this.clearIdle() : this.endIdle(), this.scale(), this.emit("resize"); - } - onFocus(t2) { - this.isTopmost() && this.checkFocus(t2); - } - onMousemove(t2) { - this.prevMouseMoveEvent = t2, !this.isCompact && this.option("idle") && this.resetIdle(); - } - onVisibilityChange() { - "visible" === document.visibilityState ? this.checkFocus() : this.endIdle(); - } - manageCloseBtn(t2) { - const e2 = this.optionFor(t2, "closeButton") || false; - if ("auto" === e2) { - const t3 = this.plugins.Toolbar; - if (t3 && t3.state === Pt.Ready) - return; - } - if (!e2) - return; - if (!t2.contentEl || t2.closeBtnEl) - return; - const i2 = this.option("tpl.closeButton"); - if (i2) { - const e3 = n(this.localize(i2)); - t2.closeBtnEl = t2.contentEl.appendChild(e3), t2.el && S(t2.el, "has-close-btn"); - } - } - manageCaption(t2 = void 0) { - var e2, i2; - const n2 = "fancybox__caption", s2 = "has-caption", o2 = this.container; - if (!o2) - return; - const a2 = this.isCompact || this.option("commonCaption"), r2 = !a2; - if (this.caption && this.stop(this.caption), r2 && this.caption && (this.caption.remove(), this.caption = null), a2 && !this.caption) - for (const t3 of (null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.slides) || []) - t3.captionEl && (t3.captionEl.remove(), t3.captionEl = void 0, E(t3.el, s2), null === (i2 = t3.el) || void 0 === i2 || i2.removeAttribute("aria-labelledby")); - if (t2 || (t2 = this.getSlide()), !t2 || a2 && !this.isCurrentSlide(t2)) - return; - const l2 = t2.el; - let c2 = this.optionFor(t2, "caption", ""); - if (!c2) - return void (a2 && this.caption && this.animate(this.caption, "f-fadeOut", () => { - this.caption && (this.caption.innerHTML = ""); - })); - let h2 = null; - if (r2) { - if (h2 = t2.captionEl || null, l2 && !h2) { - const e3 = n2 + `_${this.id}_${t2.index}`; - h2 = document.createElement("div"), S(h2, n2), h2.setAttribute("id", e3), t2.captionEl = l2.appendChild(h2), S(l2, s2), l2.setAttribute("aria-labelledby", e3); - } - } else { - if (h2 = this.caption, h2 || (h2 = o2.querySelector("." + n2)), !h2) { - h2 = document.createElement("div"), h2.dataset.fancyboxCaption = "", S(h2, n2); - (this.footer || o2).prepend(h2); - } - S(o2, s2), this.caption = h2; - } - h2 && (h2.innerHTML = "", "string" == typeof c2 ? h2.innerHTML = c2 : c2 instanceof HTMLElement && h2.appendChild(c2)); - } - checkFocus(t2) { - var e2; - const i2 = document.activeElement || null; - i2 && (null === (e2 = this.container) || void 0 === e2 ? void 0 : e2.contains(i2)) || this.focus(t2); - } - focus(t2) { - var e2; - if (this.ignoreFocusChange) - return; - const i2 = document.activeElement || null, n2 = (null == t2 ? void 0 : t2.target) || null, s2 = this.container, o2 = this.getSlide(); - if (!s2 || !(null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.viewport)) - return; - if (!t2 && i2 && s2.contains(i2)) - return; - const a2 = o2 && o2.state === it.Ready ? o2.el : null; - if (!a2 || a2.contains(i2) || s2 === i2) - return; - t2 && t2.cancelable && t2.preventDefault(), this.ignoreFocusChange = true; - const r2 = Array.from(s2.querySelectorAll(J)); - let l2 = [], c2 = null; - for (let t3 of r2) { - const e3 = !t3.offsetParent || t3.closest('[aria-hidden="true"]'), i3 = a2 && a2.contains(t3), n3 = !this.carousel.viewport.contains(t3); - if (t3 === s2 || (i3 || n3) && !e3) { - l2.push(t3); - const e4 = t3.dataset.origTabindex; - void 0 !== e4 && e4 && (t3.tabIndex = parseFloat(e4)), t3.removeAttribute("data-orig-tabindex"), !t3.hasAttribute("autoFocus") && c2 || (c2 = t3); - } else { - const e4 = void 0 === t3.dataset.origTabindex ? t3.getAttribute("tabindex") || "" : t3.dataset.origTabindex; - e4 && (t3.dataset.origTabindex = e4), t3.tabIndex = -1; - } - } - let h2 = null; - t2 ? (!n2 || l2.indexOf(n2) < 0) && (h2 = c2 || s2, l2.length && (i2 === Ht ? h2 = l2[0] : this.lastFocus !== s2 && i2 !== jt || (h2 = l2[l2.length - 1]))) : h2 = o2 && "image" === o2.type ? s2 : c2 || s2, h2 && Q(h2), this.lastFocus = document.activeElement, this.ignoreFocusChange = false; - } - next() { - const t2 = this.carousel; - t2 && t2.pages.length > 1 && t2.slideNext(); - } - prev() { - const t2 = this.carousel; - t2 && t2.pages.length > 1 && t2.slidePrev(); - } - jumpTo(...t2) { - this.carousel && this.carousel.slideTo(...t2); - } - isTopmost() { - var t2; - return (null === (t2 = __t.getInstance()) || void 0 === t2 ? void 0 : t2.id) == this.id; - } - animate(t2 = null, e2 = "", i2) { - if (!t2 || !e2) - return void (i2 && i2()); - this.stop(t2); - const n2 = (s2) => { - s2.target === t2 && t2.dataset.animationName && (t2.removeEventListener("animationend", n2), delete t2.dataset.animationName, i2 && i2(), E(t2, e2)); - }; - t2.dataset.animationName = e2, t2.addEventListener("animationend", n2), S(t2, e2); - } - stop(t2) { - t2 && t2.dispatchEvent(new CustomEvent("animationend", { bubbles: false, cancelable: true, currentTarget: t2 })); - } - setContent(t2, e2 = "", i2 = true) { - if (this.isClosing()) - return; - const s2 = t2.el; - if (!s2) - return; - let o2 = null; - if (x(e2) ? o2 = e2 : (o2 = n(e2 + ""), x(o2) || (o2 = document.createElement("div"), o2.innerHTML = e2 + "")), ["img", "picture", "iframe", "video", "audio"].includes(o2.nodeName.toLowerCase())) { - const t3 = document.createElement("div"); - t3.appendChild(o2), o2 = t3; - } - x(o2) && t2.filter && !t2.error && (o2 = o2.querySelector(t2.filter)), o2 && x(o2) ? (S(o2, "fancybox__content"), t2.id && o2.setAttribute("id", t2.id), "none" !== o2.style.display && "none" !== getComputedStyle(o2).getPropertyValue("display") || (o2.style.display = t2.display || this.option("defaultDisplay") || "flex"), s2.classList.add(`has-${t2.error ? "error" : t2.type || "unknown"}`), s2.prepend(o2), t2.contentEl = o2, i2 && this.revealContent(t2), this.manageCloseBtn(t2), this.manageCaption(t2)) : this.setError(t2, "{{ELEMENT_NOT_FOUND}}"); - } - revealContent(t2, e2) { - const i2 = t2.el, n2 = t2.contentEl; - i2 && n2 && (this.emit("reveal", t2), this.hideLoading(t2), t2.state = it.Opening, (e2 = this.isOpeningSlide(t2) ? void 0 === e2 ? this.optionFor(t2, "showClass") : e2 : "f-fadeIn") ? this.animate(n2, e2, () => { - this.done(t2); - }) : this.done(t2)); - } - done(t2) { - this.isClosing() || (t2.state = it.Ready, this.emit("done", t2), S(t2.el, "is-done"), this.isCurrentSlide(t2) && this.option("autoFocus") && queueMicrotask(() => { - this.option("autoFocus") && (this.option("autoFocus") ? this.focus() : this.checkFocus()); - }), this.isOpeningSlide(t2) && !this.isCompact && this.option("idle") && this.setIdle()); - } - isCurrentSlide(t2) { - const e2 = this.getSlide(); - return !(!t2 || !e2) && e2.index === t2.index; - } - isOpeningSlide(t2) { - var e2, i2; - return null === (null === (e2 = this.carousel) || void 0 === e2 ? void 0 : e2.prevPage) && t2.index === (null === (i2 = this.getSlide()) || void 0 === i2 ? void 0 : i2.index); - } - showLoading(t2) { - t2.state = it.Loading; - const e2 = t2.el; - if (!e2) - return; - S(e2, Dt), this.emit("loading", t2), t2.spinnerEl || setTimeout(() => { - if (!this.isClosing() && !t2.spinnerEl && t2.state === it.Loading) { - let i2 = n(w); - t2.spinnerEl = i2, e2.prepend(i2), this.animate(i2, "f-fadeIn"); - } - }, 250); - } - hideLoading(t2) { - const e2 = t2.el; - if (!e2) - return; - const i2 = t2.spinnerEl; - this.isClosing() ? null == i2 || i2.remove() : (E(e2, Dt), i2 && this.animate(i2, "f-fadeOut", () => { - i2.remove(); - }), t2.state === it.Loading && (this.emit("loaded", t2), t2.state = it.Ready)); - } - setError(t2, e2) { - if (this.isClosing()) - return; - const i2 = new Event("error", { bubbles: true, cancelable: true }); - if (this.emit("error", i2, t2), i2.defaultPrevented) - return; - t2.error = e2, this.hideLoading(t2), this.clearContent(t2); - const n2 = document.createElement("div"); - n2.classList.add("fancybox-error"), n2.innerHTML = this.localize(e2 || "

{{ERROR}}

"), this.setContent(t2, n2); - } - clearContent(t2) { - var e2; - null === (e2 = this.carousel) || void 0 === e2 || e2.emit("removeSlide", t2); - } - getSlide() { - var t2; - const e2 = this.carousel; - return (null === (t2 = null == e2 ? void 0 : e2.pages[null == e2 ? void 0 : e2.page]) || void 0 === t2 ? void 0 : t2.slides[0]) || void 0; - } - close(t2, e2) { - if (this.isClosing()) - return; - const i2 = new Event("shouldClose", { bubbles: true, cancelable: true }); - if (this.emit("shouldClose", i2, t2), i2.defaultPrevented) - return; - t2 && t2.cancelable && (t2.preventDefault(), t2.stopPropagation()); - const n2 = this.fsAPI, s2 = () => { - this.proceedClose(t2, e2); - }; - n2 && n2.isFullscreen() ? Promise.resolve(n2.exit()).then(() => s2()) : s2(); - } - clearIdle() { - this.idleTimer && clearTimeout(this.idleTimer), this.idleTimer = null; - } - setIdle(t2 = false) { - const e2 = () => { - this.clearIdle(), this.idle = true, S(this.container, "is-idle"), this.emit("setIdle"); - }; - if (this.clearIdle(), !this.isClosing()) - if (t2) - e2(); - else { - const t3 = this.option("idle"); - t3 && (this.idleTimer = setTimeout(e2, t3)); - } - } - endIdle() { - this.clearIdle(), this.idle && !this.isClosing() && (this.idle = false, E(this.container, "is-idle"), this.emit("endIdle")); - } - resetIdle() { - this.endIdle(), this.setIdle(); - } - toggleIdle() { - this.idle ? this.endIdle() : this.setIdle(true); - } - toggleFullscreen() { - const t2 = this.fsAPI; - t2 && (t2.isFullscreen() ? t2.exit() : this.container && t2.request(this.container)); - } - isClosing() { - return [et.Closing, et.CustomClosing, et.Destroy].includes(this.state); - } - proceedClose(t2, e2) { - var i2, n2; - this.state = et.Closing, this.clearIdle(), this.detachEvents(); - const s2 = this.container, o2 = this.carousel, a2 = this.getSlide(), r2 = a2 && this.option("placeFocusBack") ? a2.triggerEl || this.option("triggerEl") : null; - if (r2 && (U(r2) ? Q(r2) : r2.focus()), s2 && (S(s2, "is-closing"), s2.setAttribute("aria-hidden", "true"), this.option("animated") && S(s2, kt), s2.style.pointerEvents = "none"), o2) { - o2.clearTransitions(), null === (i2 = o2.panzoom) || void 0 === i2 || i2.destroy(), null === (n2 = o2.plugins.Navigation) || void 0 === n2 || n2.detach(); - for (const t3 of o2.slides) { - t3.state = it.Closing, this.hideLoading(t3); - const e3 = t3.contentEl; - e3 && this.stop(e3); - const i3 = null == t3 ? void 0 : t3.panzoom; - i3 && (i3.stop(), i3.detachEvents(), i3.detachObserver()), this.isCurrentSlide(t3) || o2.emit("removeSlide", t3); - } - } - this.emit("close", t2), this.state !== et.CustomClosing ? (void 0 === e2 && a2 && (e2 = this.optionFor(a2, "hideClass")), e2 && a2 ? (this.animate(a2.contentEl, e2, () => { - o2 && o2.emit("removeSlide", a2); - }), setTimeout(() => { - this.destroy(); - }, 500)) : this.destroy()) : setTimeout(() => { - this.destroy(); - }, 500); - } - destroy() { - var t2; - if (this.state === et.Destroy) - return; - this.state = et.Destroy, null === (t2 = this.carousel) || void 0 === t2 || t2.destroy(); - const e2 = this.container; - e2 && e2.remove(), Bt.delete(this.id); - const i2 = __t.getInstance(); - i2 ? i2.focus() : (jt && (jt.remove(), jt = null), Ht && (Ht.remove(), Ht = null), E(document.documentElement, At), (() => { - if (!G) - return; - const t3 = document, e3 = t3.body; - e3.classList.remove(zt), e3.style.setProperty(Rt, ""), t3.documentElement.style.setProperty(Lt, ""); - })(), this.emit("destroy")); - } - static bind(t2, e2, i2) { - if (!G) - return; - let n2, s2 = "", o2 = {}; - if (void 0 === t2 ? n2 = document.body : "string" == typeof t2 ? (n2 = document.body, s2 = t2, "object" == typeof e2 && (o2 = e2 || {})) : (n2 = t2, "string" == typeof e2 && (s2 = e2), "object" == typeof i2 && (o2 = i2 || {})), !n2 || !x(n2)) - return; - s2 = s2 || "[data-fancybox]"; - const a2 = __t.openers.get(n2) || /* @__PURE__ */ new Map(); - a2.set(s2, o2), __t.openers.set(n2, a2), 1 === a2.size && n2.addEventListener("click", __t.fromEvent); - } - static unbind(t2, e2) { - let i2, n2 = ""; - if ("string" == typeof t2 ? (i2 = document.body, n2 = t2) : (i2 = t2, "string" == typeof e2 && (n2 = e2)), !i2) - return; - const s2 = __t.openers.get(i2); - s2 && n2 && s2.delete(n2), n2 && s2 || (__t.openers.delete(i2), i2.removeEventListener("click", __t.fromEvent)); - } - static destroy() { - let t2; - for (; t2 = __t.getInstance(); ) - t2.destroy(); - for (const t3 of __t.openers.keys()) - t3.removeEventListener("click", __t.fromEvent); - __t.openers = /* @__PURE__ */ new Map(); - } - static fromEvent(t2) { - if (t2.defaultPrevented) - return; - if (t2.button && 0 !== t2.button) - return; - if (t2.ctrlKey || t2.metaKey || t2.shiftKey) - return; - let e2 = t2.composedPath()[0]; - const i2 = e2.closest("[data-fancybox-trigger]"); - if (i2) { - const t3 = i2.dataset.fancyboxTrigger || "", n3 = document.querySelectorAll(`[data-fancybox="${t3}"]`), s3 = parseInt(i2.dataset.fancyboxIndex || "", 10) || 0; - e2 = n3[s3] || e2; - } - if (!(e2 && e2 instanceof Element)) - return; - let n2, s2, o2, a2; - if ([...__t.openers].reverse().find(([t3, i3]) => !(!t3.contains(e2) || ![...i3].reverse().find(([i4, r3]) => { - let l3 = e2.closest(i4); - return !!l3 && (n2 = t3, s2 = i4, o2 = l3, a2 = r3, true); - }))), !n2 || !s2 || !o2) - return; - a2 = a2 || {}, t2.preventDefault(), e2 = o2; - let r2 = [], l2 = u({}, tt, a2); - l2.event = t2, l2.triggerEl = e2, l2.delegate = i2; - const c2 = l2.groupAll, h2 = l2.groupAttr, d2 = h2 && e2 ? e2.getAttribute(`${h2}`) : ""; - if ((!e2 || d2 || c2) && (r2 = [].slice.call(n2.querySelectorAll(s2))), e2 && !c2 && (r2 = d2 ? r2.filter((t3) => t3.getAttribute(`${h2}`) === d2) : [e2]), !r2.length) - return; - const p2 = __t.getInstance(); - return p2 && p2.options.triggerEl && r2.indexOf(p2.options.triggerEl) > -1 ? void 0 : (e2 && (l2.startIndex = r2.indexOf(e2)), __t.fromNodes(r2, l2)); - } - static fromSelector(t2, e2) { - let i2 = null, n2 = ""; - if ("string" == typeof t2 ? (i2 = document.body, n2 = t2) : t2 instanceof HTMLElement && "string" == typeof e2 && (i2 = t2, n2 = e2), !i2 || !n2) - return false; - const s2 = __t.openers.get(i2); - if (!s2) - return false; - const o2 = s2.get(n2); - return !!o2 && __t.fromNodes(Array.from(i2.querySelectorAll(n2)), o2); - } - static fromNodes(t2, e2) { - e2 = u({}, tt, e2 || {}); - const i2 = []; - for (const n2 of t2) { - const t3 = n2.dataset || {}, s2 = t3.src || n2.getAttribute("href") || n2.getAttribute("currentSrc") || n2.getAttribute("src") || void 0; - let o2; - const a2 = e2.delegate; - let r2; - a2 && i2.length === e2.startIndex && (o2 = a2 instanceof HTMLImageElement ? a2 : a2.querySelector("img:not([aria-hidden])")), o2 || (o2 = n2 instanceof HTMLImageElement ? n2 : n2.querySelector("img:not([aria-hidden])")), o2 && (r2 = o2.currentSrc || o2.src || void 0, !r2 && o2.dataset && (r2 = o2.dataset.lazySrc || o2.dataset.src || void 0)); - const l2 = { src: s2, triggerEl: n2, thumbEl: o2, thumbElSrc: r2, thumbSrc: r2 }; - for (const e3 in t3) - l2[e3] = t3[e3] + ""; - i2.push(l2); - } - return new __t(i2, e2); - } - static getInstance(t2) { - if (t2) - return Bt.get(t2); - return Array.from(Bt.values()).reverse().find((t3) => !t3.isClosing() && t3) || null; - } - static getSlide() { - var t2; - return (null === (t2 = __t.getInstance()) || void 0 === t2 ? void 0 : t2.getSlide()) || null; - } - static show(t2 = [], e2 = {}) { - return new __t(t2, e2); - } - static next() { - const t2 = __t.getInstance(); - t2 && t2.next(); - } - static prev() { - const t2 = __t.getInstance(); - t2 && t2.prev(); - } - static close(t2 = true, ...e2) { - if (t2) - for (const t3 of Bt.values()) - t3.close(...e2); - else { - const t3 = __t.getInstance(); - t3 && t3.close(...e2); - } - } -}; -Object.defineProperty(_t, "version", { enumerable: true, configurable: true, writable: true, value: "5.0.22" }), Object.defineProperty(_t, "defaults", { enumerable: true, configurable: true, writable: true, value: tt }), Object.defineProperty(_t, "Plugins", { enumerable: true, configurable: true, writable: true, value: Ot }), Object.defineProperty(_t, "openers", { enumerable: true, configurable: true, writable: true, value: /* @__PURE__ */ new Map() }); -export { - Z as Carousel, - _t as Fancybox, - R as Panzoom -}; -//# sourceMappingURL=@fancyapps_ui.js.map diff --git a/.vitepress/cache/deps/@fancyapps_ui.js.map b/.vitepress/cache/deps/@fancyapps_ui.js.map deleted file mode 100644 index 23eadd7..0000000 --- a/.vitepress/cache/deps/@fancyapps_ui.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../node_modules/.pnpm/registry.npmmirror.com+@fancyapps+ui@5.0.22/node_modules/@fancyapps/ui/dist/index.esm.js"], - "sourcesContent": ["const t=(t,e=1e4)=>(t=parseFloat(t+\"\")||0,Math.round((t+Number.EPSILON)*e)/e),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},i=function(t,n=void 0){return!(!t||t===document.body||n&&t===n)&&(e(t)?t:i(t.parentElement,n))},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},s=t=>`${t||\"\"}`.split(\" \").filter((t=>!!t)),o=(t,e,i)=>{s(e).forEach((e=>{t&&t.classList.toggle(e,i||!1)}))};class 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 r={passive:!1};class 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,r),this.element.addEventListener(\"touchstart\",this.onTouchStart,r),this.element.addEventListener(\"touchmove\",this.onMove,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 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 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 a(t))):[new 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 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 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,r),this.element.removeEventListener(\"touchstart\",this.onTouchStart,r),this.element.removeEventListener(\"touchmove\",this.onMove,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 c(t,e){return e?Math.sqrt(Math.pow(e.clientX-t.clientX,2)+Math.pow(e.clientY-t.clientY,2)):0}function h(t,e){return e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t}const d=t=>\"object\"==typeof t&&null!==t&&t.constructor===Object&&\"[object Object]\"===Object.prototype.toString.call(t),u=(t,...e)=>{const i=e.length;for(let n=0;n{const n=Array.isArray(i)?[]:{};t[e]||Object.assign(t,{[e]:n}),d(i)?Object.assign(t[e],u(n,i)):Array.isArray(i)?Object.assign(t,{[e]:[...i]}):Object.assign(t,{[e]:i})}))}return t},p=function(t,e){return t.split(\".\").reduce(((t,e)=>\"object\"==typeof t?t[e]:void 0),e)};class 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?u({},this.constructor.defaults,t):{};for(const[t,e]of Object.entries(this.option(\"on\")||{}))this.on(t,e)}option(t,...e){let i=p(t,this.options);return i&&\"function\"==typeof i&&(i=i.call(this,this,...e)),i}optionFor(t,e,i,...n){let s=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=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;ie))}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(f,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.22\"}),Object.defineProperty(f,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{}});class m extends 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();this.emit(\"attachPlugins\")}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 g;!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\"}(g||(g={}));const b=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"],v={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\"},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:v},w='
',x=t=>t&&null!==t&&t instanceof Element&&\"nodeType\"in t,E=(t,e)=>{t&&s(e).forEach((e=>{t.classList.remove(e)}))},S=(t,e)=>{t&&s(e).forEach((e=>{t.classList.add(e)}))},P={a:1,b:0,c:0,d:1,e:0,f:0},C=1e5,M=1e3,T=\"mousemove\",O=\"drag\",A=\"content\";let z=null,L=null;class R extends m{get isTouchDevice(){return null===L&&(L=window.matchMedia(\"(hover: none)\").matches),L}get isMobile(){return null===z&&(z=/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)),z}get panMode(){return this.options.panMode!==T||this.isTouchDevice?O:T}get panOnlyZoomed(){const t=this.options.panOnlyZoomed;return\"auto\"===t?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 b){const e=\"e\"==t||\"f\"===t?.001: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,\"friction\",{enumerable:!0,configurable:!0,writable:!0,value:0}),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,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:g.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({},P)}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},P)}),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({},R.Plugins),i)),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=n(w);!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(A);let i=this.option(A)||t.querySelector(`.${e}`);if(i||(i=t.querySelector(\"img,picture\")||t.firstElementChild,i&&S(i,e)),i instanceof HTMLPictureElement&&(i=i.querySelector(\"img\")),!i)throw new Error(\"No content found\");this.content=i}onLoad(){this.spinner&&(this.spinner.remove(),this.spinner=null),this.option(\"spinner\")&&this.container.classList.remove(this.cn(\"isLoading\")),this.emit(\"afterLoad\"),this.state===g.Init?this.enable():this.updateMetrics()}onError(){this.state!==g.Destroy&&(this.spinner&&(this.spinner.remove(),this.spinner=null),this.stop(),this.detachEvents(),this.state=g.Error,this.emit(\"error\"))}attachObserver(){var t;const e=()=>Math.abs(this.containerRect.width-this.container.getBoundingClientRect().width)>.1||Math.abs(this.containerRect.height-this.container.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 l(t,{start:this.onPointerDown,move:this.onPointerMove,end:this.onPointerUp}),document.addEventListener(T,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(T,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(){const t=this.friction;this.setTargetForce();const e=this.option(\"maxVelocity\");for(const i of b)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 b)\"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&&nc&&(u=c-n),h!==1/0&&sd&&(p=d-s),Math.abs(u)<.001&&(u=0),Math.abs(p)<.001&&(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),m=new DOMPoint(0,0+h).matrixTransform(d),g=Math.abs(f.x-u.x),b=Math.abs(f.y-u.y),v=Math.abs(m.x-p.x),y=Math.abs(m.y-p.y);r=Math.max(g,v),l=Math.max(b,y)}return{contentWidth:r,contentHeight:l}}setEdgeForce(){if(this.ignoreBounds||this.isDragging||this.panMode===T||this.targetScale{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&&x(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();const r=this.content.getBoundingClientRect();if(this.dragStart.time&&!this.canZoomOut()&&(Math.abs(r.x-this.dragStart.x)>2||Math.abs(r.y-this.dragStart.y)>2))return;this.dragStart.time=0;const l=e=>{this.option(\"zoom\")&&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}))},c=this.option(\"click\",t),h=this.option(\"dblClick\",t);h?(this.clicks++,1==this.clicks&&(this.clickTimer=setTimeout((()=>{1===this.clicks?(this.emit(\"click\",t),!t.defaultPrevented&&c&&l(c)):(this.emit(\"dblClick\",t),t.defaultPrevented||l(h)),this.clicks=0,this.clickTimer=null}),350))):(this.emit(\"click\",t),!t.defaultPrevented&&c&&l(c))}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===T&&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]\")||o.closest(\"[data-selectable]\")||o.closest(\"[data-draggable]\")||o.closest(\"[data-clickable]\")||o.closest(\"[data-panzoom-change]\")||o.closest(\"[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&&t(this.targetScale)<=t(this.minScale))return;if(this.emit(\"touchMove\",e),e.defaultPrevented)return;this.addTrackingPoint(n[0]);const{content:o}=this,a=h(s[0],s[1]),r=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=c(s[0],s[1]),p=c(n[0],n[1]);let f=u?p/u:1,m=r.clientX-a.clientX,g=r.clientY-a.clientY;this.dragOffset.x+=m,this.dragOffset.y+=g,this.dragOffset.time=Date.now()-this.dragStart.time;let b=t(this.targetScale)===t(this.minScale)&&this.option(\"lockAxis\");if(b&&!this.lockedAxis)if(\"xy\"===b||\"y\"===b||\"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,m=0,g=0}else this.lockedAxis=b;if(i(e.target,this.content)&&(b=\"x\",this.dragOffset.y=0),b&&\"xy\"!==b&&this.lockedAxis!==b&&t(this.targetScale)===t(this.minScale))return;e.cancelable&&e.preventDefault(),this.container.classList.add(this.cn(\"isDragging\"));const v=this.checkBounds(m,g);this.option(\"rubberband\")?(\"x\"!==this.isInfinite&&(v.xDiff>0&&m<0||v.xDiff<0&&m>0)&&(m*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitWidth*v.xDiff))),\"y\"!==this.isInfinite&&(v.yDiff>0&&g<0||v.yDiff<0&&g>0)&&(g*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitHeight*v.yDiff)))):(v.xDiff&&(m=0),v.yDiff&&(g=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&&t(y)===t(w)&&(m=0),\"x\"===this.lockedAxis&&t(y)===t(w)&&(g=0),this.applyChange({originX:l,originY:d,panX:m,panY:g,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=[]),i(t.target,this.content)&&\"y\"===this.lockedAxis&&(this.trackingPoints=[]),this.emit(\"touchEnd\",t),this.isDragging=!1,this.lockedAxis=!1,this.state!==g.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 b)this.velocity[t]=0;this.target.e=this.current.e,this.target.f=this.current.f,E(this.container,\"is-scaling\"),E(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 m=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&&t(m)===this.minScale)&&(h=u=0),(\"x\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"x\"===this.lockedAxis&&t(m)===this.minScale)&&(d=p=0);const g=this.dragOffset.x,v=this.dragOffset.y,y=this.option(\"dragMinThreshold\")||0;Math.abs(g)this.maxScale+1e-5||i&&!h&&!d)&&(f=.35),this.applyChange({panX:h,panY:d,friction:f}),this.emit(\"decel\",u,p,g,v)}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===T)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({},P);for(const n of b){const s=\"e\"==n||\"f\"===n?M:C;o[n]=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:m}=this.calculateContentDim();s.width=f,s.height=m,this.emit(\"afterTransform\")}updateMetrics(e=!1){var i;if(!this||this.state===g.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};let f=this.option(\"width\")||\"auto\",m=this.option(\"height\")||\"auto\";\"auto\"===f&&(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)),\"auto\"===m&&(m=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 b=o.parentElement instanceof HTMLPictureElement?o.parentElement:o;this.option(\"transformParent\")&&(b=b.parentElement||b);const v=b.getAttribute(\"style\")||\"\";b.style.setProperty(\"transform\",\"none\",\"important\"),a&&(b.style.width=\"\",b.style.height=\"\"),b.offsetHeight;const y=o.getBoundingClientRect();let w=y.width*n,x=y.height*n,E=0,S=0;a&&(Math.abs(f-w)>1||Math.abs(m-x)>1)&&({width:w,height:x,top:E,left:S}=((t,e,i,n)=>{const s=i/n;return s>t/e?(i=t,n=t/s):(i=e*s,n=e),{width:i,height:n,top:.5*(e-n),left:.5*(t-i)}})(w,x,f,m)),this.contentRect=Object.assign(Object.assign({},this.contentRect),{top:y.top-r.top+E,bottom:r.bottom-y.bottom+E,left:y.left-r.left+S,right:r.right-y.right+S,fitWidth:w,fitHeight:x,width:w,height:x,fullWidth:f,fullHeight:m}),b.style.cssText=v,a&&(b.style.width=`${w}px`,b.style.height=`${x}px`),this.setTransform(),!0!==e&&this.emit(\"refresh\"),this.ignoreBounds||(t(this.targetScale)this.maxScale?this.zoomTo(this.maxScale,{friction:0}):this.state===g.Init||this.checkBounds().inBounds||this.requestTick()),this.updateControls()}getBounds(){const e=this.option(\"bounds\");if(\"auto\"!==e)return e;const{contentWidth:i,contentHeight:n}=this.calculateContentDim(this.target);let s=0,o=0,a=0,r=0;const l=this.option(\"infinite\");if(!0===l||this.lockedAxis&&l===this.lockedAxis)s=-1/0,a=1/0,o=-1/0,r=1/0;else{let{containerRect:e,contentRect:l}=this,c=t(this.contentRect.fitWidth*this.targetScale,M),h=t(this.contentRect.fitHeight*this.targetScale,M),{innerWidth:d,innerHeight:u}=e;if(this.containerRect.width===c&&(d=e.width),this.containerRect.width===h&&(u=e.height),i>d){a=.5*(i-d),s=-1*a;let t=.5*(l.right-l.left);s+=t,a+=t}if(this.contentRect.fitWidth>d&&iu){r=.5*(n-u),o=-1*r;let t=.5*(l.bottom-l.top);o+=t,r+=t}this.contentRect.fitHeight>u&&nt(s.fitWidth,1)||t(s.height,1)>t(s.fitHeight,1))&&(m=!0)),t(s.width*r,1)t(r),b=!g&&!m&&p&&t(d)i&&(n=i/t)}v=v.scale(n)}v=v.translate(-o,-a).translate(-p,-f).multiply(m),s&&(v=v.rotate(s)),l&&(v=v.scale(-1,1)),c&&(v=v.scale(1,-1));for(const e of b)\"e\"!==e&&\"f\"!==e&&(v[e]>this.minScale+1e-5||v[e].1||this.panMode===T||!1===d)&&!h&&this.clampTargetBounds(),this.isResting||(this.state=g.Panning,this.requestTick())}stop(t=!1){if(this.state===g.Init||this.state===g.Destroy)return;const e=this.isTicking;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const e of b)this.velocity[e]=0,\"current\"===t?this.current[e]=this.target[e]:\"target\"===t&&(this.target[e]=this.current[e]);this.setTransform(),E(this.container,\"is-scaling\"),E(this.container,\"is-animating\"),this.isTicking=!1,this.state=g.Ready,e&&(this.emit(\"endAnimation\"),this.updateControls())}requestTick(){this.isTicking||(this.emit(\"startAnimation\"),this.updateControls(),S(this.container,\"is-animating\"),this.isScaling&&S(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!==T||!e)return;if(t(this.targetScale)<=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 m=.5*(u-r)-h/r*100/100*(u-r);m+=.5*(o.bottom-o.top),this.applyChange({panX:f-this.target.e,panY:m-this.target.f,friction:i})}zoomWithWheel(e){if(this.state===g.Destroy||this.state===g.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;t(l)t(a)&&t(o)>=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(),t(l)!==t(o)&&this.zoomTo(l,{event:e}))}canZoomIn(){return this.option(\"zoom\")&&(t(this.contentRect.width,1)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.targetScale-this.minScale<.5*(this.fullScale-this.minScale)?\"full\":\"fit\",t)}toggleMax(t){this.zoomTo(this.targetScale-this.minScale<.5*(this.maxScale-this.minScale)?\"max\":\"fit\",t)}toggleCover(t){this.zoomTo(this.targetScale-this.minScale<.5*(this.coverScale-this.minScale)?\"cover\":\"fit\",t)}iterateZoom(t){this.zoomTo(\"next\",t)}zoomTo(t=1,{friction:e=\"auto\",originX:i=\"auto\",originY:n=\"auto\",event:s}={}){if(this.isContentLoading||this.state===g.Destroy)return;const{targetScale:o}=this;this.stop();let a=1;if(this.panMode===T&&(s=this.pmme||s),s||\"auto\"===i||\"auto\"===n){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}const r=this.fullScale,l=this.maxScale;let c=this.coverScale;\"number\"==typeof t?a=t/o:(\"next\"===t&&(r-c<.2&&(c=r),t=o1?.15:.25:e,this.applyChange({scale:a,originX:i,originY:n,friction:e}),s&&this.panMode===T&&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!==g.Init&&this.state!==g.Destroy){this.stop(\"current\");for(const t of b)this.target[t]=P[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=g.Panning,this.requestTick())}}destroy(){this.stop(),this.state=g.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(R,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:y}),Object.defineProperty(R,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}});const k=function(t,e){let i=!0;return(...n)=>{i&&(i=!1,t(...n),setTimeout((()=>{i=!0}),e))}},I=(t,e)=>{let i=[];return t.childNodes.forEach((t=>{t.nodeType!==Node.ELEMENT_NODE||e&&!t.matches(e)||i.push(t)})),i},D={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 F;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Destroy=2]=\"Destroy\"}(F||(F={}));const j=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)},H=(t={})=>Object.assign({index:-1,slides:[],dim:0,pos:-1},t);class B extends f{constructor(t,e){super(e),Object.defineProperty(this,\"instance\",{enumerable:!0,configurable:!0,writable:!0,value:t})}attach(){}detach(){}}const N={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 _ extends B{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;return t||(t=document.createElement(\"ul\"),S(t,this.cn(\"list\")),t.setAttribute(\"role\",\"tablist\"),this.instance.container.appendChild(t),S(this.instance.container,this.cn(\"hasDots\")),this.list=t),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(en)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(o(l,this.cn(\"isDynamic\"),!!a),r)for(let t=0;t=e-1&&s.setAttribute(W,\"\")))}createButton(t){const e=this.instance,i=document.createElement(\"button\");i.setAttribute(\"tabindex\",\"0\"),i.setAttribute(\"title\",e.localize(`{{${t.toUpperCase()}}}`)),S(i,this.cn(\"button\")+\" \"+this.cn(t===$?\"isNext\":\"isPrev\"));const n=e.isRTL?t===$?X:$:t;var s;return i.innerHTML=e.localize(this.option(`${n}Tpl`)),i.dataset[`carousel${s=t,s?s.match(\"^[a-z]\")?s.charAt(0).toUpperCase()+s.substring(1):s:\"\"}`]=\"true\",i}build(){let t=this.container;t||(this.container=t=document.createElement(\"div\"),S(t,this.cn(\"container\")),this.instance.container.appendChild(t)),this.next||(this.next=t.appendChild(this.createButton($))),this.prev||(this.prev=t.appendChild(this.createButton(X)))}cleanup(){this.prev&&this.prev.remove(),this.next&&this.next.remove(),this.container&&this.container.remove(),this.prev=null,this.next=null,this.container=null}attach(){this.instance.on([\"refresh\",\"change\"],this.onRefresh)}detach(){this.instance.off([\"refresh\",\"change\"],this.onRefresh),this.cleanup()}}Object.defineProperty(Y,\"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 q extends B{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(){this.nav&&this.target&&(this.nav.options.initialSlide=this.target.options.initialPage,this.nav.on(\"ready\",this.onNavReady),this.nav.state===F.Ready&&this.onNavReady(this.nav),this.target.on(\"ready\",this.onTargetReady),this.target.state===F.Ready&&this.onTargetReady(this.target))}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(){const{target:t,nav:e}=this;if(!t||!e)return;if(e.state!==F.Ready||t.state!==F.Ready)return;const i=t.pages[t.page].slides[0].index,n=e.getPageForSlide(i);this.markSelectedSlide(i),e.slideTo(n)}markSelectedSlide(t){const e=this.nav;e&&e.state===F.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(q,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{friction:.35}});const V={Navigation:Y,Dots:_,Sync:q};class Z extends m{get axis(){return this.isHorizontal?\"e\":\"f\"}get isEnabled(){return this.state===F.Ready}get isInfinite(){let t=!1;const{contentDim:e,viewportDim:i,pages:n,slides:s}=this;return n.length>=2&&e+s[0].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,\"userOptions\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),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,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:F.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||!x(t))throw new Error(\"No Element found\");this.container=t,this.slideNext=k(this.slideNext.bind(this),150),this.slidePrev=k(this.slidePrev.bind(this),150),this.userOptions=e,this.userPlugins=i,queueMicrotask((()=>{this.processOptions()}))}processOptions(){const t=u({},Z.defaults,this.userOptions);let e=\"\";const i=t.breakpoints;if(i&&d(i))for(const[n,s]of Object.entries(i))window.matchMedia(n).matches&&d(s)&&(e+=n,u(t,s));e===this.bp&&this.state!==F.Init||(this.bp=e,this.state===F.Ready&&(t.initialSlide=this.pages[this.page].slides[0].index),this.state!==F.Init&&this.destroy(),super.setOptions(t),!1===this.option(\"enabled\")?this.attachEvents():setTimeout((()=>{this.init()}),0))}init(){this.state=F.Init,this.emit(\"init\"),this.attachPlugins(Object.assign(Object.assign({},Z.Plugins),this.userPlugins)),this.initLayout(),this.initSlides(),this.updateMetrics(),this.setInitialPosition(),this.initPanzoom(),this.attachEvents(),this.state=F.Ready,this.emit(\"ready\")}initLayout(){const{container:t}=this,e=this.option(\"classes\");S(t,this.cn(\"container\")),o(t,e.isLTR,!this.isRTL),o(t,e.isRTL,this.isRTL),o(t,e.isVertical,!this.isHorizontal),o(t,e.isHorizontal,this.isHorizontal);let i=this.option(\"viewport\")||t.querySelector(`.${e.viewport}`);i||(i=document.createElement(\"div\"),S(i,e.viewport),i.append(...I(t,`.${e.slide}`)),t.prepend(i));let n=this.option(\"track\")||t.querySelector(`.${e.track}`);n||(n=document.createElement(\"div\"),S(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){this.slides=[],[...I(t,`.${this.cn(\"slide\")}`)].forEach((t=>{if(x(t)){const e=j({el:t,isDom:!0,index:this.slides.length});this.slides.push(e),this.emit(\"initSlide\",e,this.slides.length)}}));for(let t of this.option(\"slides\",[])){const e=j(t);e.index=this.slides.length,this.slides.push(e),this.emit(\"initSlide\",e,this.slides.length)}this.emit(\"initSlides\")}}setInitialPage(){let t=0;const e=this.option(\"initialSlide\");t=\"number\"==typeof e?this.getPageForSlide(e):parseInt(this.option(\"initialPage\",0)+\"\",10)||0,this.page=t}setInitialPosition(){if(!this.track||!this.pages.length)return;const t=this.isHorizontal;let e=this.page;this.pages[e]||(this.page=e=0);const i=this.pages[e].pos*(this.isRTL&&t?1:-1),n=t?`${i}px`:\"0\",s=t?\"0\":`${i}px`;this.track.style.transform=`translate3d(${n}, ${s}, 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 R(this.viewport,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\");(\"number\"!=typeof n||e<=i)&&(n=1/0);let s=0,o=0,a=0;for(const e of this.slides)(!t.length||o+e.dim>i||a===n)&&(t.push(H()),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}=this,s=this.option(\"center\"),o=this.option(\"fill\"),a=o&&s&&i>n&&!this.isInfinite;if(e.forEach(((t,e)=>{t.index=e,t.pos=t.slides[0].pos,t.dim=0;for(const[e,i]of t.slides.entries())t.dim+=i.dim,e=i-.5*n?t.pos=i-n:s&&(t.pos+=-.5*(n-t.dim))})),e.forEach(((e,s)=>{o&&!this.isInfinite&&i>n&&(e.pos=Math.max(e.pos,0),e.pos=Math.min(e.pos,i-n)),e.pos=t(e.pos,1e3),e.dim=t(e.dim,1e3),Math.abs(e.pos)<=.1&&(e.pos=0)})),this.isInfinite)return e;const r=[];let l;return e.forEach((t=>{const e=Object.assign({},t);l&&e.pos===l.pos?(l.dim+=e.dim,l.slides=[...l.slides,...e.slides]):(e.index=r.length,l=e,r.push(e))})),r}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)),S(r,this.cn(\"slide\")+\" \"+e.class+\" \"+e.customClass),o)r.style[s]=`${o}px`,r.style[\"width\"===s?\"height\":\"width\"]=\"\";else{l&&(this.track||document.body).prepend(r);const t=Math.max(1,(null===(i=window.visualViewport)||void 0===i?void 0:i.scale)||1);o=r.getBoundingClientRect()[s]*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:t(o,1e3),gap: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,m=0;d?m=-1*d.current[this.axis]:c[l]&&(m=c[l].pos||0),e=i?n?\"right\":\"left\":\"top\",n&&i&&(m*=-1);for(const i of h)i.el?(\"top\"===e?(i.el.style.right=\"\",i.el.style.left=\"\"):i.el.style.top=\"\",i.index!==u?i.el.style[e]=0===p?\"\":`${t(p,1e3)}px`:i.el.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\")]);m-=c,a+=c,a+=parseFloat(n[s+l]);for(const i of h)i.el&&(t(i.pos)t(r-a)&&(i.el.style[e]=`${t(p+f,1e3)}px`),t(i.pos+i.gap)>=t(r-a)&&t(i.pos)>t(m+a)&&t(m)1&&(g=c[v[0]],b=c[v[1]]),g&&b){let i=0;for(const n of h)n.el?this.inTransition.has(n.index)&&g.slides.indexOf(n)<0&&(n.el.style[e]=`${t(i+(g.pos-b.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\");S(n,this.cn(\"slide\")),S(n,t.class),S(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)1)return!1;const o=t>this.page?1:-1,a=this.pages[s].pos*(this.isRTL?1:-1);if(this.page===s&&Math.abs(a-n.target[this.axis])<1)return!1;this.clearTransitions();const r=n.isResting;S(this.container,this.cn(\"inTransition\"));const l=this.pages[this.page].slides[0],c=this.pages[s].slides[0];this.inTransition.add(c.index),this.createSlideEl(c);let h=l.el,d=c.el;r||\"slide\"===e||(e=\"fadeFast\",h=null);const u=this.isRTL?\"next\":\"prev\",p=this.isRTL?\"prev\":\"next\";return h&&(this.inTransition.add(l.index),l.transition=e,h.addEventListener(\"animationend\",this.onAnimationEnd),h.classList.add(`f-${e}Out`,`to-${o>0?p:u}`)),d&&(c.transition=e,d.addEventListener(\"animationend\",this.onAnimationEnd),d.classList.add(`f-${e}In`,`from-${o>0?u:p}`)),n.panTo({x:this.isHorizontal?a:0,y:this.isHorizontal?0:a,friction:0}),this.onChange(s),!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(\"isSelected\");if(e)for(const i of this.slides)i.el&&(i.el.dataset.index=`${i.index}`,this.pages[this.page].slides.includes(i)?(i.el.classList.contains(e)||(S(i.el,e),this.emit(\"selectSlide\",i)),i.el.removeAttribute(t)):(i.el.classList.contains(e)&&(E(i.el,e),this.emit(\"unselectSlide\",i)),i.el.setAttribute(t,\"true\")))}flipInfiniteTrack(){const t=this.panzoom;if(!t||!this.isInfinite)return;const e=\"x\"===this.option(\"axis\")?\"e\":\"f\",{viewportDim:i,contentDim:n}=this;let s=t.current[e],o=t.target[e]-s,a=0,r=.5*i,l=n;this.isRTL&&this.isHorizontal?(s<-r&&(a=-1,s+=l),s>l-r&&(a=1,s-=l)):(s>r&&(a=1,s-=l),s<-l+r&&(a=-1,s+=l)),a&&(t.current[e]=s,t.target[e]=s+o)}lazyLoadSlide(t){const e=this,i=t&&t.el;if(!i)return;const s=new Set,o=\"f-fadeIn\";i.querySelectorAll(\"[data-lazy-srcset]\").forEach((t=>{t instanceof HTMLImageElement&&s.add(t)}));let a=Array.from(i.querySelectorAll(\"[data-lazy-src]\"));i.dataset.lazySrc&&a.push(i),a.map((t=>{t instanceof HTMLImageElement?s.add(t):x(t)&&(t.style.backgroundImage=`url('${t.dataset.lazySrc||\"\"}')`,delete t.dataset.lazySrc)}));const r=(t,i,n)=>{n&&(n.remove(),n=null),i.complete&&(i.classList.add(o),setTimeout((()=>{i.classList.remove(o)}),350),i.style.display=\"\"),this.option(\"adaptiveHeight\")&&t.el&&this.pages[this.page].slides.indexOf(t)>-1&&(e.updateMetrics(),e.setViewportHeight()),this.emit(\"load\",t)};for(const e of s){let i=null;e.src=e.dataset.lazySrcset||e.dataset.lazySrc||\"\",delete e.dataset.lazySrc,delete e.dataset.lazySrcset,e.style.display=\"none\",e.addEventListener(\"error\",(()=>{r(t,e,i)})),e.addEventListener(\"load\",(()=>{r(t,e,i)})),setTimeout((()=>{e.parentNode&&t.el&&(e.complete?r(t,e,i):(i=n(w),e.parentNode.insertBefore(i,e)))}),300)}}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){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;const u=this.option(\"dragFree\");let p=this.page,f=o&&a?1:-1;const m=t.target[r]*f,g=t.current[r]*f;let{pageIndex:b}=this.getPageFromPosition(m),{pageIndex:v}=this.getPageFromPosition(g);u?this.onChange(b):(Math.abs(d)>5?(l[p].dim.5&&(e.target[this.axis]=-1*this.pages[this.page].pos,e.current[this.axis]=-1*this.pages[this.page].pos,e.stop()),this.manageSlideVisiblity(),this.emit(\"refresh\")}getProgress(e,i=!1){void 0===e&&(e=this.page);const n=this,s=n.panzoom,o=n.pages[e]||0;if(!o||!s)return 0;let a=-1*s.current.e,r=n.contentDim;var l=[t((a-o.pos)/(1*o.dim),1e3),t((a+r-o.pos)/(1*o.dim),1e3),t((a-r-o.pos)/(1*o.dim),1e3)].reduce((function(t,e){return Math.abs(e){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{contentDim:n,viewportDim:s,pages:o,page:a}=this;n=n+(null===(e=this.slides[this.slides.length-1])||void 0===e?void 0:e.gap)||0;let r=0;r=this.panzoom?-1*this.panzoom.current[this.axis]:o[a]&&o[a].pos||0,this.isInfinite&&(r-=Math.floor(r/n)*n),this.isRTL&&this.isHorizontal&&(r*=-1);const l=r-s*t,c=r+s*(t+1),h=this.isInfinite?[-1,0,1]:[0];for(const t of this.slides)for(const e of h){const s=t.pos+e*n,o=t.pos+t.dim+t.gap+e*n;sl&&i.add(t)}return i}getPageFromPosition(t){const{viewportDim:e,contentDim:i}=this,n=this.pages.length,s=this.slides.length,o=this.slides[s-1];let a=0,r=0,l=0;const c=this.option(\"center\");c&&(t+=.5*e),this.isInfinite||(t=Math.max(this.slides[0].pos,Math.min(t,o.pos)));const h=i+o.gap;l=Math.floor(t/h)||0,t-=l*h;let d=o,u=this.slides.find((e=>{const i=t+(d&&!c?.5*d.dim:0);return d=e,e.pos<=i&&e.pos+e.dim+e.gap>i}));return u||(u=o),r=this.getPageForSlide(u.index),a=r+l*n,{page:a,pageIndex:r}}destroy(){if([F.Destroy].includes(this.state))return;this.state=F.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.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(Z,\"Panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:R}),Object.defineProperty(Z,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:D}),Object.defineProperty(Z,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:V});const U=function(t){const e=window.pageYOffset,i=window.pageYOffset+window.innerHeight;if(!x(t))return 0;const n=t.getBoundingClientRect(),s=n.y+window.pageYOffset,o=n.y+n.height+window.pageYOffset;if(e>o||io)return 100;if(si)return 100;let a=n.height;si&&(a-=o-i);const r=a/window.innerHeight*100;return Math.round(r)},G=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);let K;const J=[\"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(\",\"),Q=t=>{if(t&&G){void 0===K&&document.createElement(\"div\").focus({get preventScroll(){return K=!0,!1}});try{if(K)t.focus({preventScroll:!0});else{const e=window.pageXOffset||document.body.scrollTop,i=window.pageYOffset||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:\"auto\"})}}catch(t){}}},tt={dragToClose:!0,hideScrollbar:!0,Carousel:{classes:{container:\"fancybox__carousel\",viewport:\"fancybox__viewport\",track:\"fancybox__track\",slide:\"fancybox__slide\"}},contentClick:\"toggleZoom\",contentDblClick:!1,backdropClick:\"close\",animated:!0,idle:3500,showClass:\"f-zoomInUp\",hideClass:\"f-fadeOut\",commonCaption:!1,parentEl:null,startIndex:0,l10n:Object.assign(Object.assign({},v),{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\"}),tpl:{closeButton:'',main:'
\\n
\\n
\\n
\\n
'},groupAll:!1,groupAttr:\"data-fancybox\",defaultType:\"image\",defaultDisplay:\"block\",autoFocus:!0,trapFocus:!0,placeFocusBack:!0,closeButton:\"auto\",keyboard:{Escape:\"close\",Delete:\"close\",Backspace:\"close\",PageUp:\"next\",PageDown:\"prev\",ArrowUp:\"prev\",ArrowDown:\"next\",ArrowRight:\"next\",ArrowLeft:\"prev\"},Fullscreen:{autoStart:!1},compact:()=>window.matchMedia(\"(max-width: 578px), (max-height: 578px)\").matches,wheel:\"zoom\"};var et,it;!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\"}(et||(et={})),function(t){t[t.Loading=0]=\"Loading\",t[t.Opening=1]=\"Opening\",t[t.Ready=2]=\"Ready\",t[t.Closing=3]=\"Closing\"}(it||(it={}));const nt=()=>{queueMicrotask((()=>{(()=>{const{slug:t,index:e}=st.parseURL(),i=_t.getInstance();if(i&&!1!==i.option(\"Hash\")){const n=i.carousel;if(t&&n){for(let e of n.slides)if(e.slug&&e.slug===t)return n.slideTo(e.index);if(t===i.option(\"slug\"))return n.slideTo(e-1);const s=i.getSlide(),o=s&&s.triggerEl&&s.triggerEl.dataset;if(o&&o.fancybox===t)return n.slideTo(e-1)}st.hasSilentClose=!0,i.close()}st.startFromUrl()})()}))};class st extends B{constructor(){super(...arguments),Object.defineProperty(this,\"origHash\",{enumerable:!0,configurable:!0,writable:!0,value:\"\"}),Object.defineProperty(this,\"timer\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onChange(){const t=this.instance,e=t.carousel;this.timer&&clearTimeout(this.timer);const i=t.getSlide();if(!e||!i)return;const n=t.isOpeningSlide(i),s=new URL(document.URL).hash;let o,a=i.slug||void 0,r=i.triggerEl||void 0;o=a||this.instance.option(\"slug\"),!o&&r&&r.dataset&&(o=r.dataset.fancybox);let l=\"\";o&&\"true\"!==o&&(l=\"#\"+o+(!a&&e.slides.length>1?\"-\"+(i.index+1):\"\")),n&&(this.origHash=s!==l?s:\"\"),l&&s!==l&&(this.timer=setTimeout((()=>{try{t.state===et.Ready&&window.history[n?\"pushState\":\"replaceState\"]({},document.title,window.location.pathname+window.location.search+l)}catch(t){}}),300))}onClose(){if(this.timer&&clearTimeout(this.timer),!0!==st.hasSilentClose)try{window.history.replaceState({},document.title,window.location.pathname+window.location.search+(this.origHash||\"\"))}catch(t){}}attach(){const t=this.instance;t.on(\"Carousel.ready\",this.onChange),t.on(\"Carousel.change\",this.onChange),t.on(\"close\",this.onClose)}detach(){const t=this.instance;t.off(\"Carousel.ready\",this.onChange),t.off(\"Carousel.change\",this.onChange),t.off(\"close\",this.onClose)}static parseURL(){const t=window.location.hash.slice(1),e=t.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}}static startFromUrl(){if(st.hasSilentClose=!1,_t.getInstance()||!1===_t.defaults.Hash)return;const{hash:t,slug:e,index:i}=st.parseURL();if(!e)return;let n=document.querySelector(`[data-slug=\"${t}\"]`);if(n&&n.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})),_t.getInstance())return;const s=document.querySelectorAll(`[data-fancybox=\"${e}\"]`);s.length&&(n=s[i-1],n&&n.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})))}static destroy(){window.removeEventListener(\"hashchange\",nt,!1)}}function ot(){window.addEventListener(\"hashchange\",nt,!1),setTimeout((()=>{st.startFromUrl()}),500)}Object.defineProperty(st,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(st,\"hasSilentClose\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),G&&(/complete|interactive|loaded/.test(document.readyState)?ot():document.addEventListener(\"DOMContentLoaded\",ot));class at extends B{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){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}=n,r=n.thumbElSrc;if(!s||!r||!o||!a||a.isContentLoading||a.state===g.Init||a.state===g.Destroy)return;a.updateMetrics();let l=this.getZoomInfo(n);if(!l)return;this.instance.state=et.CustomClosing,i.classList.remove(\"is-zooming-in\"),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:`${window.pageYOffset}px`,left:`${window.pageXOffset}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=>{var n;const s=t.contentEl,o=t.imageEl,a=t.thumbElSrc;if(i.isClosing()||!s||!o)return;s.offsetHeight;const r=!!i.isOpeningSlide(t)&&this.getZoomInfo(t);if(this.option(\"protected\")){null===(n=t.el)||void 0===n||n.addEventListener(\"contextmenu\",(t=>{t.preventDefault()}));const e=document.createElement(\"div\");S(e,\"fancybox-protected\"),s.appendChild(e)}if(a&&r){const n=e.contentRect,o=Math.max(n.fullWidth,n.fullHeight);let c=null;!r.opacity&&o>1200&&(c=document.createElement(\"img\"),S(c,\"fancybox-ghost\"),c.src=a,s.appendChild(c));const h=()=>{c&&(S(c,\"f-fadeFastOut\"),setTimeout((()=>{c&&(c.remove(),c=null)}),200))};(l=a,new Promise(((t,e)=>{const i=new Image;i.onload=t,i.onerror=e,i.src=l}))).then((()=>{t.state=it.Opening,this.instance.emit(\"reveal\",t),this.zoomIn(t).then((()=>{h(),this.instance.done(t)}),(()=>{i.hideLoading(t)})),c&&setTimeout((()=>{h()}),o>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.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=n(l)),!l||!x(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}`,l.src=e||\"\",l.alt=i,l.draggable=!1,t.srcset&&l.setAttribute(\"srcset\",t.srcset)}t.sizes&&l.setAttribute(\"sizes\",t.sizes)}l.classList.add(\"fancybox-image\"),t.imageEl=l,a.setContent(t,l,!1);t.panzoom=new R(r,u({transformParent:!0},this.option(\"Panzoom\")||{},{content:l,width:a.optionFor(t,\"width\",\"auto\"),height:a.optionFor(t,\"height\",\"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!==it.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=>{E(s,\"is-zooming-in\"),t.scale<.99||t.scale>1.01||(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 m={event:\"mousemove\"===o.panMode?n.prevMouseMoveEvent||n.options.event:void 0},g=this.optionFor(t,\"initialSize\");S(s,\"is-zooming-in\"),n.hideLoading(t),\"full\"===g?o.zoomToFull(m):\"cover\"===g?o.zoomToCover(m):\"max\"===g?o.zoomToMax(m):o.reset(.172)}))}getZoomInfo(t){var e;const{el:i,imageEl:n,thumbEl:s,panzoom:o}=t;if(!i||!n||!s||!o||U(s)<3||!this.optionFor(t,\"zoom\")||this.instance.state===et.Destroy)return!1;if(1!==((null===(e=window.visualViewport)||void 0===e?void 0:e.scale)||1))return!1;let{top:a,left:r,width:l,height:c}=s.getBoundingClientRect(),{top:h,left:d,fitWidth:u,fitHeight:p}=o.contentRect;if(!(l&&c&&u&&p))return!1;const f=o.container.getBoundingClientRect();d+=f.left,h+=f.top;const m=-1*(d+.5*u-(r+.5*l)),g=-1*(h+.5*p-(a+.5*c)),b=l/u;let v=this.option(\"zoomOpacity\")||!1;return\"auto\"===v&&(v=Math.abs(l/c-u/p)>.1),{x:m,y:g,scale:b,opacity:v}}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(at,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{initialSize:\"fit\",Panzoom:{maxScale:1},protected:!1,zoom:!0,zoomOpacity:\"auto\"}}),\"function\"==typeof SuppressedError&&SuppressedError;const rt=(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.toString();\"t\"===t?s.set(\"start\",parseInt(e).toString()):s.set(t,e)}let o=s.toString(),a=t.match(/#t=((.*)?\\d+s)/);return a&&(o+=`#t=${a[1]}`),o},lt={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}},ct=[\"image\",\"html\",\"ajax\",\"inline\",\"clone\",\"iframe\",\"map\",\"pdf\",\"html5video\",\"youtube\",\"vimeo\",\"video\"];class ht extends B{onInitSlide(t,e,i){this.processType(i)}onCreateSlide(t,e,i){this.setContent(i)}onRemoveSlide(t,e,i){i.xhr&&(i.xhr.abort(),i.xhr=null);const n=i.iframeEl;n&&(n.onload=n.onerror=null,n.src=\"//about:blank\",i.iframeEl=null);const s=i.contentEl,o=i.placeholderEl;if(\"inline\"===i.type&&s&&o)s.classList.remove(\"fancybox__content\"),\"none\"!==s.style.display&&(s.style.display=\"none\"),o.parentNode&&o.parentNode.insertBefore(s,o),o.remove(),i.contentEl=void 0,i.placeholderEl=void 0;else for(;i.el&&i.el.firstChild;)i.el.removeChild(i.el.firstChild)}onSelectSlide(t,e,i){i.state===it.Ready&&this.playVideo()}onUnselectSlide(t,e,i){var n,s;if(\"html5video\"===i.type){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;\"vimeo\"===i.type?o={method:\"pause\",value:\"true\"}:\"youtube\"===i.type&&(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.setAspectRatio(t),this.resizeIframe(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===et.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(x(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 e=t.iframeEl,i=null==e?void 0:e.parentElement;if(!e||!i)return;let n=t.autoSize,s=t.width||0,o=t.height||0;s&&o&&(n=!1);const a=i&&i.style;if(!1!==t.preload&&!1!==n&&a)try{const t=window.getComputedStyle(i),n=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),r=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),l=e.contentWindow;if(l){const t=l.document,e=t.getElementsByTagName(\"html\")[0],i=t.body;a.width=\"\",i.style.overflow=\"hidden\",s=s||e.scrollWidth+n,a.width=`${s}px`,i.style.overflow=\"\",a.flex=\"0 0 auto\",a.height=`${i.scrollHeight}px`,o=e.scrollHeight+r}}catch(t){}if(s||o){const t={flex:\"0 1 auto\",width:\"\",height:\"\"};s&&(t.width=`${s}px`),o&&(t.height=`${o}px`),Object.assign(a,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(\"html5video\"===t.type)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(\"youtube\"!==t.type&&\"vimeo\"!==t.type)return;const i=()=>{if(t.iframeEl&&t.iframeEl.contentWindow){let e;if(\"true\"===t.iframeEl.dataset.ready)return e=\"youtube\"===t.type?{event:\"command\",func:\"playVideo\"}:{method:\"play\",value:\"true\"},e&&t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"),void(t.poller=void 0);\"youtube\"===t.type&&(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=\"html\",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,\"youtube\"),{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);s0?\"svembed\":\"embed\"}`,i=\"map\"):(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=\"map\")),i=i||this.instance.option(\"defaultType\"),t.type=i,\"image\"===i&&(t.thumbSrc=t.thumbSrc||t.src)}setContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";if(t&&t.type&&e){switch(t.type){case\"html\":this.instance.setContent(t,e);break;case\"html5video\":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\"map\":case\"youtube\":case\"vimeo\":t.preload=!1;case\"iframe\":this.setIframeContent(t)}this.setAspectRatio(t)}}setAspectRatio(t){var e;const i=t.width||0,n=t.height||0;if(i&&n)return;const s=t.contentEl,o=this.optionFor(t,\"videoRatio\"),a=null===(e=t.el)||void 0===e?void 0:e.getBoundingClientRect();if(!(s&&a&&o&&1!==o&&t.type&&[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(t.type)))return;const r=a.width,l=a.height;s.style.aspectRatio=o+\"\",s.style.width=r/l>o?\"auto\":\"\",s.style.height=r/l>o?\"\":\"auto\"}attach(){const t=this,e=t.instance;e.on(\"Carousel.initSlide\",t.onInitSlide),e.on(\"Carousel.createSlide\",t.onCreateSlide),e.on(\"Carousel.removeSlide\",t.onRemoveSlide),e.on(\"Carousel.selectSlide\",t.onSelectSlide),e.on(\"Carousel.unselectSlide\",t.onUnselectSlide),e.on(\"Carousel.Panzoom.refresh\",t.onRefresh),e.on(\"done\",t.onDone),window.addEventListener(\"message\",t.onMessage)}detach(){const t=this,e=t.instance;e.off(\"Carousel.initSlide\",t.onInitSlide),e.off(\"Carousel.createSlide\",t.onCreateSlide),e.off(\"Carousel.removeSlide\",t.onRemoveSlide),e.off(\"Carousel.selectSlide\",t.onSelectSlide),e.off(\"Carousel.unselectSlide\",t.onUnselectSlide),e.off(\"Carousel.Panzoom.refresh\",t.onRefresh),e.off(\"done\",t.onDone),window.removeEventListener(\"message\",t.onMessage)}}Object.defineProperty(ht,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:lt});const dt=\"play\",ut=\"pause\",pt=\"ready\";class ft extends B{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:pt}),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!==pt}onReady(t){this.option(\"autoStart\")&&(t.isInfinite||t.page{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!==pt){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=pt,i.removeEventListener(\"mouseenter\",t.onMouseEnter,!1),i.removeEventListener(\"mouseleave\",t.onMouseLeave,!1),document.removeEventListener(\"visibilitychange\",t.onVisibilityChange,!1),E(i,\"has-autoplay\"),e!==pt&&t.emit(\"stop\")}pause(){const t=this;t.state===dt&&(t.state=ut,t.clear(),t.emit(ut))}resume(){const t=this,e=t.instance;if(e.isInfinite||e.page!==e.pages.length-1)if(t.state!==dt){if(t.state===ut&&!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===dt||this.state===ut?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(ft,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{autoStart:!0,pauseOnHover:!0,progressParentEl:null,showProgress:!0,timeout:3e3}});class mt extends B{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=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)!==it.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)===it.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:ft}),this.ref=e.plugins.Autoplay)}onReady(t){const e=t.carousel,i=this.ref;e&&i&&this.option(\"playOnStart\")&&(e.isInfinite||e.page{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(mt,\"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 gt={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 bt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Hidden=2]=\"Hidden\",t[t.Disabled=3]=\"Disabled\"}(bt||(bt={}));let vt=class extends B{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,\"panzoom\",{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,\"shouldCenter\",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:bt.Init})}formatThumb(t,e){return this.instance.localize(e,[[\"%i\",t.index],[\"%d\",t.index+1],[\"%s\",t.thumbSrc||\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"]])}getSlides(){const t=[],e=this.option(\"thumbTpl\")||\"\";if(e)for(const i of this.instance.slides||[]){let n=\"\";i.type&&(n=`for-${i.type}`,i.type&&[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(i.type)&&(n+=\" for-video\")),t.push({html:this.formatThumb(i,e),customClass:n})}return t}onInitSlide(t,e){const i=e.el;i&&(e.thumbSrc=i.dataset.thumbSrc||e.thumbSrc||\"\",e.thumbClipWidth=parseFloat(i.dataset.thumbClipWidth||\"\")||e.thumbClipWidth||0,e.thumbHeight=parseFloat(i.dataset.thumbHeight||\"\")||e.thumbHeight||0)}onInitSlides(){this.state===bt.Init&&this.build()}onRefreshM(){this.refreshModern()}onChangeM(){\"modern\"===this.type&&(this.shouldCenter=!0,this.centerModern())}onClickModern(t){t.preventDefault(),t.stopPropagation();const e=this.instance,i=e.page,n=t=>{if(t){const e=t.closest(\"[data-carousel-index]\");if(e)return parseInt(e.dataset.carouselIndex||\"\",10)||0}return-1},s=(t,e)=>{const i=document.elementFromPoint(t,e);return i?n(i):-1};let o=n(t.target);o<0&&(o=s(t.clientX+this.thumbGap,t.clientY),o===i&&(o=i-1)),o<0&&(o=s(t.clientX-this.thumbGap,t.clientY),o===i&&(o=i+1)),o<0&&(o=(e=>{let n=s(t.clientX-e,t.clientY),a=s(t.clientX+e,t.clientY);return o<0&&n===i&&(o=i+1),o<0&&a===i&&(o=i-1),o})(this.thumbExtraGap)),o===i?this.centerModern():o>-1&&o{this.emit(\"ready\")})),n.on(\"createSlide\",((t,e)=>{this.emit(\"createSlide\",e,e.el)}))}buildModern(){if(\"modern\"!==this.type)return;const{container:t,track:e,instance:i}=this,s=this.option(\"thumbTpl\")||\"\";if(!t||!e||!s)return;t.addEventListener(\"keydown\",(()=>{E(t,\"is-using-mouse\")})),S(t,\"is-horizontal\"),this.updateModern();for(const t of i.slides||[]){const i=document.createElement(\"div\");if(S(i,this.cn(\"slide\")),t.type){let e=`for-${t.type}`;[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(t.type)&&(e+=\" for-video\"),S(i,e)}i.appendChild(n(this.formatThumb(t,s))),this.emit(\"createSlide\",t,i),t.thumbSlideEl=i,e.appendChild(i),this.resizeModernSlide(t)}const o=new i.constructor.Panzoom(t,{content:e,lockAxis:\"x\",zoom:!1,panOnlyZoomed:!1,bounds:()=>{let t=0,e=0,n=i.slides[0],s=i.slides[i.slides.length-1],o=i.slides[i.page];return n&&s&&o&&(e=-1*this.getModernThumbPos(0),0!==i.page&&(e+=.5*(n.thumbWidth||0)),t=-1*this.getModernThumbPos(i.slides.length-1),i.page!==i.slides.length-1&&(t+=(s.thumbWidth||0)-(o.thumbWidth||0)-.5*(s.thumbWidth||0))),{x:{min:t,max:e},y:{min:0,max:0}}}});o.on(\"touchStart\",((t,e)=>{this.shouldCenter=!1,S(this.container,\"is-using-mouse\")})),o.on(\"click\",((t,e)=>this.onClickModern(e))),o.on(\"ready\",(()=>{this.centerModern(),this.emit(\"ready\")})),o.on([\"afterTransform\",\"refresh\"],(t=>{this.lazyLoadModern()})),this.panzoom=o,this.refreshModern()}updateModern(){if(\"modern\"!==this.type)return;const{container:t}=this;t&&(this.thumbGap=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-gap\"))||0,this.thumbExtraGap=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-extra-gap\"))||0,this.thumbWidth=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-width\"))||40,this.thumbClipWidth=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-clip-width\"))||40,this.thumbHeight=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-height\"))||40)}refreshModern(){var t;if(\"modern\"===this.type){this.updateModern();for(const t of this.instance.slides||[])this.resizeModernSlide(t);this.onTransformM(),null===(t=this.panzoom)||void 0===t||t.updateMetrics(!0),this.centerModern(0)}}centerModern(e){const i=this.instance,{container:n,panzoom:s}=this;if(!n||!s||s.state===g.Init)return;const o=i.page;let a=this.getModernThumbPos(o),r=a;for(let t=i.page-3;ti.pages.length-1||t===i.page)continue;const e=1-Math.abs(i.getProgress(t));e>0&&e<1&&(r+=e*(this.getModernThumbPos(t)-a))}let l=100;void 0===e&&(e=.2,i.inTransition.size>0&&(e=.12),Math.abs(-1*s.current.e-r)>s.containerRect.width&&(e=.5,l=0)),s.options.maxVelocity=l,s.applyChange({panX:t(-1*r-s.target.e,1e3),friction:null===i.prevPage?0:e})}lazyLoadModern(){const{instance:t,panzoom:e}=this;if(!e)return;const i=-1*e.current.e||0;let s=this.getModernThumbPos(t.page);if(e.state!==g.Init||0===s)for(const s of t.slides||[]){const t=s.thumbSlideEl;if(!t)continue;const o=t.querySelector(\"img[data-lazy-src]\"),a=s.index,r=this.getModernThumbPos(a),l=i-.5*e.containerRect.innerWidth,c=l+e.containerRect.innerWidth;if(!o||rc)continue;let h=o.dataset.lazySrc;if(!h||!h.length)continue;if(delete o.dataset.lazySrc,o.src=h,o.complete)continue;S(t,this.cn(\"isLoading\"));const d=n(w);t.appendChild(d),o.addEventListener(\"load\",(()=>{t.offsetParent&&(t.classList.remove(this.cn(\"isLoading\")),d.remove())}),!1)}}resizeModernSlide(t){if(\"modern\"!==this.type)return;if(!t.thumbSlideEl)return;const e=t.thumbClipWidth&&t.thumbHeight?Math.round(this.thumbHeight*(t.thumbClipWidth/t.thumbHeight)):this.thumbWidth;t.thumbWidth=e}getModernThumbPos(e){const i=this.instance.slides[e],n=this.panzoom;if(!n||!n.contentRect.fitWidth)return 0;let s=n.containerRect.innerWidth,o=n.contentRect.width;2===this.instance.slides.length&&(e-=1,o=2*this.thumbClipWidth);let a=e*(this.thumbClipWidth+this.thumbGap)+this.thumbExtraGap+.5*(i.thumbWidth||0);return a-=o>s?.5*s:.5*o,t(a||0,1)}build(){const t=this.instance,e=t.container,i=this.option(\"minCount\")||0;if(i){let e=0;for(const i of t.slides||[])i.thumbSrc&&e++;if(e{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=u((null===(t=e.options.Carousel)||void 0===t?void 0:t.on)||{},{click:(t,e)=>{e.stopPropagation()}}),n.options.Thumbs=o,n.attachPlugins({Thumbs:vt}),e.ref=n.plugins.Thumbs,e.option(\"showOnStart\")||(e.ref.state=bt.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;t&&t.state!==bt.Disabled&&(t.state!==bt.Hidden?this.hidden?this.show():this.hide():t.build())}show(){const t=this.ref,e=t&&t.state!==bt.Disabled&&t.container;e&&(this.refresh(),e.offsetHeight,e.removeAttribute(xt),e.classList.remove(wt),this.hidden=!1)}hide(){const t=this.ref,e=t&&t.container;e&&(this.refresh(),e.offsetHeight,e.classList.add(wt),e.setAttribute(xt,\"true\")),this.hidden=!0}refresh(){const t=this.ref;if(!t||t.state===bt.Disabled)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===et.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(Et,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:yt});const St={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 Pt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Disabled=2]=\"Disabled\"}(Pt||(Pt={}));const Ct={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},Mt={tabindex:\"-1\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",xmlns:\"http://www.w3.org/2000/svg\"};class Tt extends B{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:Pt.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\");S(i,\"fancybox__toolbar__column is-\"+t);for(const t of e)i.appendChild(t);\"auto\"!==n||\"middle\"!==t||e.length||(n=!0),r.appendChild(i)}!0===n&&S(r,\"is-absolute\"),this.state=Pt.Ready,this.onRefresh()}else this.state=Pt.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&&x(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!==it.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,i=document.createElement(\"div\");return S(i,\"fancybox__toolbar\"),e.prepend(i),i.addEventListener(\"click\",this.onClick,{passive:!1,capture:!0}),t&&S(t,\"has-toolbar\"),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&&!e.fsAPI)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!==St[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!==St[t]){const e=St[t];s=document.createElement(\"button\"),s.setAttribute(\"title\",this.instance.localize(`{{${t.toUpperCase()}}}`)),S(s,\"f-button\"),e.action&&(s.dataset.panzoomAction=e.action),e.change&&(s.dataset.panzoomChange=JSON.stringify(e.change)),s.appendChild(n(this.instance.localize(e.icon)))}else{const e=(this.option(\"items\")||[])[t];e&&(s=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(Mt))l.getAttribute(t)||l.setAttribute(t,String(e));return s}removeContainer(){const t=this.container;t&&t.remove(),this.container=null,this.state=Pt.Disabled;const e=this.instance.container;e&&E(e,\"has-toolbar\")}attach(){const t=this,e=t.instance;e.on(\"Carousel.initSlides\",t.onReady),e.on(\"done\",t.onDone),e.on(\"reveal\",t.onChange),e.on(\"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\",t.onChange),e.off(\"Carousel.change\",t.onChange),t.removeContainer()}}Object.defineProperty(Tt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:Ct});const Ot={Hash:st,Html:ht,Images:at,Slideshow:mt,Thumbs:Et,Toolbar:Tt},At=\"with-fancybox\",zt=\"hide-scrollbar\",Lt=\"--fancybox-scrollbar-compensate\",Rt=\"--fancybox-body-margin\",kt=\"is-animated\",It=\"is-compact\",Dt=\"is-loading\",Ft=function(){var t=window.getSelection();return t&&\"Range\"===t.type};let jt=null,Ht=null;const Bt=new Map;let Nt=0;class _t extends m{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,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:et.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,\"footer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"caption\",{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}),Object.defineProperty(this,\"fsAPI\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.fsAPI=(()=>{let t,e=\"\",i=\"\",n=\"\";return document.fullscreenEnabled?(e=\"requestFullscreen\",i=\"exitFullscreen\",n=\"fullscreenElement\"):document.webkitFullscreenEnabled&&(e=\"webkitRequestFullscreen\",i=\"webkitExitFullscreen\",n=\"webkitFullscreenElement\"),e&&(t={request:function(t){return\"webkitRequestFullscreen\"===e?t[e](Element.ALLOW_KEYBOARD_INPUT):t[e]()},exit:function(){return document[n]&&document[i]()},isFullscreen:function(){return document[n]}}),t})(),this.id=e.id||++Nt,Bt.set(this.id,this),this.userSlides=t,this.userPlugins=i,queueMicrotask((()=>{this.init()}))}init(){if(this.state===et.Destroy)return;this.state=et.Init,this.attachPlugins(Object.assign(Object.assign({},_t.Plugins),this.userPlugins)),this.emit(\"init\"),!0===this.option(\"hideScrollbar\")&&(()=>{if(!G)return;const t=document.body;if(t.classList.contains(zt))return;let e=window.innerWidth-document.documentElement.getBoundingClientRect().width;e<0&&(e=0);const i=t.currentStyle||window.getComputedStyle(t),n=parseFloat(i.marginRight);document.documentElement.style.setProperty(Lt,`${e}px`),n&&t.style.setProperty(Rt,`${n}px`),t.classList.add(zt)})(),this.initLayout(),this.scale();const t=()=>{this.initCarousel(this.userSlides),this.state=et.Ready,this.attachEvents(),this.emit(\"ready\"),setTimeout((()=>{this.container&&this.container.setAttribute(\"aria-hidden\",\"false\")}),16)},e=this.fsAPI;this.option(\"Fullscreen.autoStart\")&&e&&!e.isFullscreen()?e.request(this.container).then((()=>t())).catch((()=>t())):t()}initLayout(){var t,e;const i=this.option(\"parentEl\")||document.body,s=n(this.localize(this.option(\"tpl.main\")||\"\"));s&&(s.setAttribute(\"id\",`fancybox-${this.id}`),s.setAttribute(\"aria-label\",this.localize(\"{{MODAL}}\")),s.classList.toggle(It,this.isCompact),S(s,this.option(\"mainClass\")||\"\"),this.container=s,this.footer=s.querySelector(\".fancybox__footer\"),i.appendChild(s),S(document.documentElement,At),jt&&Ht||(jt=document.createElement(\"span\"),S(jt,\"fancybox-focus-guard\"),jt.setAttribute(\"tabindex\",\"0\"),jt.setAttribute(\"aria-hidden\",\"true\"),jt.setAttribute(\"aria-label\",\"Focus guard\"),Ht=jt.cloneNode(),null===(t=s.parentElement)||void 0===t||t.insertBefore(jt,s),null===(e=s.parentElement)||void 0===e||e.append(Ht)),this.option(\"animated\")&&(S(s,kt),setTimeout((()=>{this.isClosing()||E(s,kt)}),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 Z(n,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\"],(()=>{var t;const e=this.getSlide();e&&(null===(t=e.panzoom)||void 0===t||t.updateControls()),this.manageCaption(e)})),this.on(\"Carousel.removeSlide\",((t,e,i)=>{i.contentEl&&(i.contentEl.remove(),i.contentEl=void 0);const n=i.el;n&&(E(n,\"has-error\"),E(n,\"has-unknown\"),E(n,`has-${i.type||\"unknown\"}`)),i.closeBtnEl&&i.closeBtnEl.remove(),i.closeBtnEl=void 0,i.captionEl&&i.captionEl.remove(),i.captionEl=void 0,i.spinnerEl&&i.spinnerEl.remove(),i.spinnerEl=void 0,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&&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&&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.page0?(i.removeAttribute(\"disabled\"),i.removeAttribute(\"tabindex\")):(i.setAttribute(\"disabled\",\"\"),i.setAttribute(\"tabindex\",\"-1\"))}const i=this.getSlide();if(!i)return;let n=i.downloadSrc||\"\";n||\"image\"!==i.type||i.error||\"string\"!=typeof i.src||(n=i.src);const s=\"disabled\",o=\"tabindex\",a=\"download\",r=\"href\";for(const t of e.querySelectorAll(\"[data-fancybox-download]\")){const e=i.downloadFilename;n?(t.removeAttribute(s),t.removeAttribute(o),t.setAttribute(r,n),t.setAttribute(a,e||n),t.setAttribute(\"target\",\"_blank\")):(t.setAttribute(s,\"\"),t.setAttribute(o,\"-1\"),t.removeAttribute(r),t.removeAttribute(a))}})),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,i;const{container:n,isCompact:s}=this;if(!n||this.isClosing())return;!s&&this.option(\"idle\")&&this.resetIdle();const o=document.activeElement;if(Ft()&&o&&n.contains(o))return;const a=t.composedPath()[0];if(a===(null===(e=this.carousel)||void 0===e?void 0:e.container))return;if(a.closest(\".f-spinner\")||a.closest(\"[data-fancybox-close]\"))return t.preventDefault(),void this.close(t);if(a.closest(\"[data-fancybox-prev]\"))return t.preventDefault(),void this.prev();if(a.closest(\"[data-fancybox-next]\"))return t.preventDefault(),void this.next();if(s&&\"image\"===(null===(i=this.getSlide())||void 0===i?void 0:i.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 r=!1;if(a.closest(\".fancybox__content\")){if(o){if(o.closest(\"[contenteditable]\"))return;a.matches(J)||o.blur()}if(Ft())return;r=this.option(\"contentClick\")}else a.closest(\".fancybox__carousel\")&&!a.matches(J)&&(r=this.option(\"backdropClick\"));\"close\"===r?(t.preventDefault(),this.close(t)):\"next\"===r?(t.preventDefault(),this.next()):\"prev\"===r&&(t.preventDefault(),this.prev())}onWheel(t){var e;let i=this.option(\"wheel\",t);(null===(e=t.target)||void 0===e?void 0:e.closest(\".fancybox__thumbs\"))&&(i=\"slide\");const n=\"slide\"===i,s=[-t.deltaX||0,-t.deltaY||0,-t.detail||0].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t})),o=Math.max(-1,Math.min(1,s)),a=Date.now();this.pwt&&a-this.pwt<300?n&&t.preventDefault():(this.pwt=a,this.emit(\"wheel\",t),t.defaultPrevented||(\"close\"===i?(t.preventDefault(),this.close(t)):\"slide\"===i&&(t.preventDefault(),this[o>0?\"prev\":\"next\"]())))}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||t.ctrlKey||t.altKey||t.shiftKey)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&&x(n)){if(n.isContentEditable||-1!==[\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(n.nodeName))return}this.emit(\"keydown\",e,t);const a=i[e];\"function\"==typeof this[a]&&(t.preventDefault(),this[a]())}onResize(){const t=It,e=this.container;if(!e)return;const i=this.isCompact;e.classList.toggle(t,i),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===Pt.Ready)return}if(!e)return;if(!t.contentEl||t.closeBtnEl)return;const i=this.option(\"tpl.closeButton\");if(i){const e=n(this.localize(i));t.closeBtnEl=t.contentEl.appendChild(e),t.el&&S(t.el,\"has-close-btn\")}}manageCaption(t=void 0){var e,i;const n=\"fancybox__caption\",s=\"has-caption\",o=this.container;if(!o)return;const a=this.isCompact||this.option(\"commonCaption\"),r=!a;if(this.caption&&this.stop(this.caption),r&&this.caption&&(this.caption.remove(),this.caption=null),a&&!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,E(t.el,s),null===(i=t.el)||void 0===i||i.removeAttribute(\"aria-labelledby\"));if(t||(t=this.getSlide()),!t||a&&!this.isCurrentSlide(t))return;const l=t.el;let c=this.optionFor(t,\"caption\",\"\");if(!c)return void(a&&this.caption&&this.animate(this.caption,\"f-fadeOut\",(()=>{this.caption&&(this.caption.innerHTML=\"\")})));let h=null;if(r){if(h=t.captionEl||null,l&&!h){const e=n+`_${this.id}_${t.index}`;h=document.createElement(\"div\"),S(h,n),h.setAttribute(\"id\",e),t.captionEl=l.appendChild(h),S(l,s),l.setAttribute(\"aria-labelledby\",e)}}else{if(h=this.caption,h||(h=o.querySelector(\".\"+n)),!h){h=document.createElement(\"div\"),h.dataset.fancyboxCaption=\"\",S(h,n);(this.footer||o).prepend(h)}S(o,s),this.caption=h}h&&(h.innerHTML=\"\",\"string\"==typeof c?h.innerHTML=c:c instanceof HTMLElement&&h.appendChild(c))}checkFocus(t){var e;const i=document.activeElement||null;i&&(null===(e=this.container)||void 0===e?void 0:e.contains(i))||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=this.getSlide();if(!s||!(null===(e=this.carousel)||void 0===e?void 0:e.viewport))return;if(!t&&i&&s.contains(i))return;const a=o&&o.state===it.Ready?o.el:null;if(!a||a.contains(i)||s===i)return;t&&t.cancelable&&t.preventDefault(),this.ignoreFocusChange=!0;const r=Array.from(s.querySelectorAll(J));let l=[],c=null;for(let t of r){const e=!t.offsetParent||t.closest('[aria-hidden=\"true\"]'),i=a&&a.contains(t),n=!this.carousel.viewport.contains(t);if(t===s||(i||n)&&!e){l.push(t);const e=t.dataset.origTabindex;void 0!==e&&e&&(t.tabIndex=parseFloat(e)),t.removeAttribute(\"data-orig-tabindex\"),!t.hasAttribute(\"autoFocus\")&&c||(c=t)}else{const e=void 0===t.dataset.origTabindex?t.getAttribute(\"tabindex\")||\"\":t.dataset.origTabindex;e&&(t.dataset.origTabindex=e),t.tabIndex=-1}}let h=null;t?(!n||l.indexOf(n)<0)&&(h=c||s,l.length&&(i===Ht?h=l[0]:this.lastFocus!==s&&i!==jt||(h=l[l.length-1]))):h=o&&\"image\"===o.type?s:c||s,h&&Q(h),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=_t.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(),E(t,e))};t.dataset.animationName=e,t.addEventListener(\"animationend\",n),S(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(x(e)?o=e:(o=n(e+\"\"),x(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}x(o)&&t.filter&&!t.error&&(o=o.querySelector(t.filter)),o&&x(o)?(S(o,\"fancybox__content\"),t.id&&o.setAttribute(\"id\",t.id),\"none\"!==o.style.display&&\"none\"!==getComputedStyle(o).getPropertyValue(\"display\")||(o.style.display=t.display||this.option(\"defaultDisplay\")||\"flex\"),s.classList.add(`has-${t.error?\"error\":t.type||\"unknown\"}`),s.prepend(o),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=it.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=it.Ready,this.emit(\"done\",t),S(t.el,\"is-done\"),this.isCurrentSlide(t)&&this.option(\"autoFocus\")&&queueMicrotask((()=>{this.option(\"autoFocus\")&&(this.option(\"autoFocus\")?this.focus():this.checkFocus())})),this.isOpeningSlide(t)&&!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.index===(null===(i=this.getSlide())||void 0===i?void 0:i.index)}showLoading(t){t.state=it.Loading;const e=t.el;if(!e)return;S(e,Dt),this.emit(\"loading\",t),t.spinnerEl||setTimeout((()=>{if(!this.isClosing()&&!t.spinnerEl&&t.state===it.Loading){let i=n(w);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():(E(e,Dt),i&&this.animate(i,\"f-fadeOut\",(()=>{i.remove()})),t.state===it.Loading&&(this.emit(\"loaded\",t),t.state=it.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){var e;null===(e=this.carousel)||void 0===e||e.emit(\"removeSlide\",t)}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.fsAPI,s=()=>{this.proceedClose(t,e)};n&&n.isFullscreen()?Promise.resolve(n.exit()).then((()=>s())):s()}clearIdle(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null}setIdle(t=!1){const e=()=>{this.clearIdle(),this.idle=!0,S(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,E(this.container,\"is-idle\"),this.emit(\"endIdle\"))}resetIdle(){this.endIdle(),this.setIdle()}toggleIdle(){this.idle?this.endIdle():this.setIdle(!0)}toggleFullscreen(){const t=this.fsAPI;t&&(t.isFullscreen()?t.exit():this.container&&t.request(this.container))}isClosing(){return[et.Closing,et.CustomClosing,et.Destroy].includes(this.state)}proceedClose(t,e){var i,n;this.state=et.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&&(U(r)?Q(r):r.focus()),s&&(S(s,\"is-closing\"),s.setAttribute(\"aria-hidden\",\"true\"),this.option(\"animated\")&&S(s,kt),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=it.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)}}this.emit(\"close\",t),this.state!==et.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===et.Destroy)return;this.state=et.Destroy,null===(t=this.carousel)||void 0===t||t.destroy();const e=this.container;e&&e.remove(),Bt.delete(this.id);const i=_t.getInstance();i?i.focus():(jt&&(jt.remove(),jt=null),Ht&&(Ht.remove(),Ht=null),E(document.documentElement,At),(()=>{if(!G)return;const t=document,e=t.body;e.classList.remove(zt),e.style.setProperty(Rt,\"\"),t.documentElement.style.setProperty(Lt,\"\")})(),this.emit(\"destroy\"))}static bind(t,e,i){if(!G)return;let n,s=\"\",o={};if(void 0===t?n=document.body:\"string\"==typeof t?(n=document.body,s=t,\"object\"==typeof e&&(o=e||{})):(n=t,\"string\"==typeof e&&(s=e),\"object\"==typeof i&&(o=i||{})),!n||!x(n))return;s=s||\"[data-fancybox]\";const a=_t.openers.get(n)||new Map;a.set(s,o),_t.openers.set(n,a),1===a.size&&n.addEventListener(\"click\",_t.fromEvent)}static unbind(t,e){let i,n=\"\";if(\"string\"==typeof t?(i=document.body,n=t):(i=t,\"string\"==typeof e&&(n=e)),!i)return;const s=_t.openers.get(i);s&&n&&s.delete(n),n&&s||(_t.openers.delete(i),i.removeEventListener(\"click\",_t.fromEvent))}static destroy(){let t;for(;t=_t.getInstance();)t.destroy();for(const t of _t.openers.keys())t.removeEventListener(\"click\",_t.fromEvent);_t.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([..._t.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=u({},tt,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=_t.getInstance();return p&&p.options.triggerEl&&r.indexOf(p.options.triggerEl)>-1?void 0:(e&&(l.startIndex=r.indexOf(e)),_t.fromNodes(r,l))}static fromSelector(t,e){let i=null,n=\"\";if(\"string\"==typeof t?(i=document.body,n=t):t instanceof HTMLElement&&\"string\"==typeof e&&(i=t,n=e),!i||!n)return!1;const s=_t.openers.get(i);if(!s)return!1;const o=s.get(n);return!!o&&_t.fromNodes(Array.from(i.querySelectorAll(n)),o)}static fromNodes(t,e){e=u({},tt,e||{});const i=[];for(const n of t){const t=n.dataset||{},s=t.src||n.getAttribute(\"href\")||n.getAttribute(\"currentSrc\")||n.getAttribute(\"src\")||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.src||void 0,!r&&o.dataset&&(r=o.dataset.lazySrc||o.dataset.src||void 0));const l={src:s,triggerEl:n,thumbEl:o,thumbElSrc:r,thumbSrc:r};for(const e in t)l[e]=t[e]+\"\";i.push(l)}return new _t(i,e)}static getInstance(t){if(t)return Bt.get(t);return Array.from(Bt.values()).reverse().find((t=>!t.isClosing()&&t))||null}static getSlide(){var t;return(null===(t=_t.getInstance())||void 0===t?void 0:t.getSlide())||null}static show(t=[],e={}){return new _t(t,e)}static next(){const t=_t.getInstance();t&&t.next()}static prev(){const t=_t.getInstance();t&&t.prev()}static close(t=!0,...e){if(t)for(const t of Bt.values())t.close(...e);else{const t=_t.getInstance();t&&t.close(...e)}}}Object.defineProperty(_t,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.22\"}),Object.defineProperty(_t,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:tt}),Object.defineProperty(_t,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:Ot}),Object.defineProperty(_t,\"openers\",{enumerable:!0,configurable:!0,writable:!0,value:new Map});export{Z as Carousel,_t as Fancybox,R as Panzoom};\n"], - "mappings": "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", - "names": ["t", "e", "i", "n", "s", "o", "a", "r", "l", "c", "h", "d", "u", "p", "f", "m", "g", "b", "v", "y", "w", "x", "E", "S"] -} diff --git a/.vitepress/cache/deps/@theme_index.js b/.vitepress/cache/deps/@theme_index.js index a20cba1..55e6b6d 100644 --- a/.vitepress/cache/deps/@theme_index.js +++ b/.vitepress/cache/deps/@theme_index.js @@ -12,27 +12,27 @@ import { } from "./chunk-OX6HOUGK.js"; // node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/index.js -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/fonts.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/fonts.css"; // node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/without-fonts.js -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/vars.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/base.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/utils.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css"; -import "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css"; -import VPBadge from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; -import Layout from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/Layout.vue"; -import { default as default2 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue"; -import { default as default3 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue"; -import { default as default4 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue"; -import { default as default5 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue"; -import { default as default6 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue"; -import { default as default7 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue"; -import { default as default8 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue"; -import { default as default9 } from "/Users/zllv/my-space/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/vars.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/base.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/utils.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css"; +import "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css"; +import VPBadge from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue"; +import Layout from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/Layout.vue"; +import { default as default2 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue"; +import { default as default3 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue"; +import { default as default4 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue"; +import { default as default5 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue"; +import { default as default6 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue"; +import { default as default7 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue"; +import { default as default8 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue"; +import { default as default9 } from "/Users/lvzl/mine/front-end-blog/node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue"; // node_modules/.pnpm/@vueuse+shared@10.2.1_vue@3.3.4/node_modules/@vueuse/shared/index.mjs function tryOnScopeDispose(fn) { diff --git a/.vitepress/cache/deps/_metadata.json b/.vitepress/cache/deps/_metadata.json index 27a47f0..1df7d4e 100644 --- a/.vitepress/cache/deps/_metadata.json +++ b/.vitepress/cache/deps/_metadata.json @@ -1,35 +1,23 @@ { - "hash": "5e286541", - "browserHash": "4428f65d", + "hash": "5eec9526", + "browserHash": "bafb1687", "optimized": { "vue": { "src": "../../../node_modules/.pnpm/vue@3.3.4/node_modules/vue/dist/vue.runtime.esm-bundler.js", "file": "vue.js", - "fileHash": "ebc95804", + "fileHash": "b6d8aaa7", "needsInterop": false }, "vitepress > @vue/devtools-api": { "src": "../../../node_modules/.pnpm/@vue+devtools-api@6.5.0/node_modules/@vue/devtools-api/lib/esm/index.js", "file": "vitepress___@vue_devtools-api.js", - "fileHash": "bacd3d77", + "fileHash": "4f3a99fb", "needsInterop": false }, "@theme/index": { "src": "../../../node_modules/.pnpm/vitepress@1.0.0-beta.5_@algolia+client-search@4.18.0_@types+node@20.4.2_search-insights@2.7.0/node_modules/vitepress/dist/client/theme-default/index.js", "file": "@theme_index.js", - "fileHash": "f4d2ee12", - "needsInterop": false - }, - "@fancyapps/ui": { - "src": "../../../node_modules/.pnpm/registry.npmmirror.com+@fancyapps+ui@5.0.22/node_modules/@fancyapps/ui/dist/index.esm.js", - "file": "@fancyapps_ui.js", - "fileHash": "0fefbb61", - "needsInterop": false - }, - "xmind-embed-viewer": { - "src": "../../../node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/index.js", - "file": "xmind-embed-viewer.js", - "fileHash": "27de47a5", + "fileHash": "1dcd32d5", "needsInterop": false } }, diff --git a/.vitepress/cache/deps/xmind-embed-viewer.js b/.vitepress/cache/deps/xmind-embed-viewer.js deleted file mode 100644 index 0450cd9..0000000 --- a/.vitepress/cache/deps/xmind-embed-viewer.js +++ /dev/null @@ -1,178 +0,0 @@ -// node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/channel-controller.js -var IframeEventChannelController = class { - constructor(iFrameController, domain = "*") { - this.channel = new MessageChannel(); - this.eventIndex = 0; - this.handlers = {}; - const iframe = iFrameController.getIframe(); - if (iframe.hasAttribute("data-event-channel-setup")) { - throw new Error("An embed viewer instance already initialized on the iframe!"); - } else { - iframe.setAttribute("data-event-channel-setup", "true"); - } - this.channelSetupPromise = (async () => { - await new Promise((resolve) => { - iframe.addEventListener("load", () => { - var _a; - this.channel.port1.start(); - const port1Handler = (e) => { - const [type] = e.data; - if (type === "channel-ready") { - e.preventDefault(); - this.channel.port1.removeEventListener("message", port1Handler); - this.channel.port1.addEventListener("message", this.eventDispatcher.bind(this)); - resolve(void 0); - } - }; - this.channel.port1.addEventListener("message", port1Handler); - (_a = iframe.contentWindow) == null ? void 0 : _a.postMessage(["setup-channel", { port: this.channel.port2 }], domain || "*", [this.channel.port2]); - }); - }); - })(); - } - eventDispatcher(e) { - const [type, eventName, payload] = e.data || []; - if (type === "event" && eventName && this.handlers[eventName]) { - this.handlers[eventName].forEach((handler) => handler(payload)); - } - } - addEventListener(event, callback) { - this.handlers[event] = this.handlers[event] || []; - if (this.handlers[event].includes(callback)) - return; - this.handlers[event].push(callback); - } - removeEventListener(event, callback) { - if (!this.handlers[event]) - return; - const index = this.handlers[event].findIndex((fn) => fn === callback); - this.handlers[event].splice(index, 1); - } - async emit(event, payload) { - await this.channelSetupPromise; - const replyEvent = `xmind-embed-viewer#${this.eventIndex++}`; - await new Promise((resolve) => { - const handler = (e) => { - const [message, payload2] = e.data; - if (message === replyEvent) { - this.channel.port1.removeEventListener("message", handler); - resolve(payload2); - } - }; - this.channel.port1.addEventListener("message", handler); - this.channel.port1.postMessage([event, payload, replyEvent]); - }); - } -}; - -// node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/iframe-controller.js -var IframeController = class { - constructor(target, src) { - let iframe; - const element = typeof target === "string" ? document.querySelector(target) : target; - if (element === null) { - throw new Error("IFrame or mount element not found by selector " + target); - } - if (element instanceof HTMLIFrameElement) { - iframe = element; - } else { - iframe = document.createElement("iframe"); - element.appendChild(iframe); - } - iframe.setAttribute("frameborder", "0"); - iframe.setAttribute("scrolling", "no"); - iframe.setAttribute("allowfullscreen", "true"); - iframe.setAttribute("allow", "allowfullscreen"); - iframe.setAttribute("crossorigin", "anonymous"); - iframe.setAttribute("src", src); - this.iframe = iframe; - } - getIframe() { - return this.iframe; - } - setStyles(styles) { - const iframe = this.getIframe(); - for (const [styleKey, value] of Object.entries(styles)) { - iframe.style[styleKey] = value; - } - } -}; - -// node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/index.js -var XMindEmbedViewer = class { - /** - * Initialize a iframe element from a div/iframe html element. - */ - constructor(args) { - this.internalState = { - sheets: [], - zoomScale: 100, - currentSheetId: "" - }; - const { file, el, styles = { - "height": "350px", - "width": "750px" - }, isPitchModeDisabled } = args; - const iframeController = new IframeController(el, `https://www.xmind.app/embed-viewer${isPitchModeDisabled ? "?pitch-mode=disabled" : ""}`); - const iframeEventChannelController = new IframeEventChannelController(iframeController, "https://www.xmind.app"); - this.iframeController = iframeController; - this.iframeEventChannelController = iframeEventChannelController; - iframeEventChannelController.addEventListener("sheet-switch", (payload) => this.internalState.currentSheetId = payload); - iframeEventChannelController.addEventListener("zoom-change", (payload) => this.internalState.zoomScale = payload); - iframeEventChannelController.addEventListener("sheets-load", (payload) => this.internalState.sheets = payload); - this.iframeController.setStyles(styles); - if (file) { - this.load(file); - } - } - /** - * Add event listener for embed viewer. - * - * Available events: - * - map-ready - * - zoom-change - * - sheet-switch - * - sheets-load - * - */ - addEventListener(event, callback) { - this.iframeEventChannelController.addEventListener(event, callback); - } - removeEventListener(event, callback) { - this.iframeEventChannelController.removeEventListener(event, callback); - } - /** - * Update styles for created iframe element. - */ - setStyles(styles) { - this.iframeController.setStyles(styles); - } - /** - * Load a file for embed viewer after iframe ready. - */ - load(file) { - this.iframeEventChannelController.emit("open-file", file); - } - setZoomScale(zoomScale) { - this.iframeEventChannelController.emit("zoom", zoomScale); - } - setFitMap() { - this.iframeEventChannelController.emit("fit-map"); - } - switchSheet(sheetId) { - this.iframeEventChannelController.emit("switch-sheet", sheetId); - } - get zoom() { - return this.internalState.zoomScale; - } - get sheets() { - return JSON.parse(JSON.stringify(this.internalState.sheets)); - } - get currentSheetId() { - return this.internalState.currentSheetId; - } -}; -export { - XMindEmbedViewer -}; -//# sourceMappingURL=xmind-embed-viewer.js.map diff --git a/.vitepress/cache/deps/xmind-embed-viewer.js.map b/.vitepress/cache/deps/xmind-embed-viewer.js.map deleted file mode 100644 index 2826ab2..0000000 --- a/.vitepress/cache/deps/xmind-embed-viewer.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/channel-controller.ts", "../../../node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/iframe-controller.ts", "../../../node_modules/.pnpm/xmind-embed-viewer@1.1.0/node_modules/xmind-embed-viewer/dist/esm/index.ts"], - "sourcesContent": [null, null, null], - "mappings": "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", - "names": ["payload"] -} diff --git a/articles/react/index.md b/articles/react/index.md new file mode 100644 index 0000000..1ed9763 --- /dev/null +++ b/articles/react/index.md @@ -0,0 +1,6 @@ +--- +title: React +author: lvzl +--- + +[React DOC](https://react.docschina.org/) \ No newline at end of file diff --git a/articles/react/nav.js b/articles/react/nav.js new file mode 100644 index 0000000..f4f6894 --- /dev/null +++ b/articles/react/nav.js @@ -0,0 +1,5 @@ +module.exports = { + navText: 'React', + sideText: ['React', 'React Router', 'Redux'], + sort: 11, +} diff --git a/articles/react/react/index.md b/articles/react/react/index.md new file mode 100644 index 0000000..c64e0b0 --- /dev/null +++ b/articles/react/react/index.md @@ -0,0 +1,738 @@ +--- +title: React 学习总结 +author: lvzl +--- + +# React 学习总结 + +## 什么是 React +**React 是 Facebook 推出的一个用于构建用户界面的 JavaScript 库。** +**React 是一个用于构建 UI 的 JavaScript 库,它是 Facebook 开源。** + + +## React 特点 +- 声明式:React 采用声明式编程,可以让你将 UI 组件看作是函数或类,而不是对象。 +- 组件化:React 组件让你将 UI 拆分成独立的、可重用的代码块,并将它们组合成更大的 UI。 +- 高效:React 通过对 DOM 的模拟,最大限度地减少与 DOM 的交互 + +## React 类组件及其生命周期(不推荐使用) +**React 类组件开发如下,只需要了解即可,现在都函数组件开发** + +```jsx +class ComponentName extends React.Component { + + // 构造函数最先执行 + constructor(props) { + super(props); + } + state = { + // 组件的状态 + name: 'Hello React!', + } + // 当组件抛出错误时,会触发此生命周期方法。可以用来从错误中恢复,返回一个值以更新 state + static getDerivedStateFromError(error) { + console.log('getDerivedStateFromError'); + } + + // 当组件接收新的 props 时,会触发此生命周期方法。可以返回一个对象以更新 state,或返回 null 表示不需要更新 state + static getDerivedStateFromProps(nextProps, prevState) { + console.log('getDerivedStateFromProps'); + return null; + } + + // 在 DOM 更新之前立即调用,返回值将作为 componentDidUpdate 的第三个参数 + getSnapshotBeforeUpdate(prevProps, prevState) { + console.log('getSnapshotBeforeUpdate'); + return null; + } + + // 组件挂载(插入 DOM 树中)后立即调用,只会在客户端执行,是请求数据的好地方 + componentDidMount() { + console.log('componentDidMount'); + } + + // 组件卸载及销毁之前直接调用,可以在此方法中执行必要的清理操作 + componentWillUnmount() { + console.log('componentWillUnmount'); + } + + // 组件完成更新后立即调用,首次渲染不会调用 + componentDidUpdate() { + console.log('componentDidUpdate'); + } + + // 当组件抛出错误时,此生命周期方法会被触发,用于记录错误信息、发送网络请求或者清理无效的本地状态等 + componentDidCatch() { + console.log('componentDidCatch'); + } + + // 当组件接收新的 props 时会调用,但在 React 17 中已被废弃,建议使用 getDerivedStateFromProps + componentWillReceiveProps(nextProps) { + console.log('componentWillReceiveProps'); + } + + // 当组件接收新的 props 或 state 时,会在渲染前调用,返回 false 可以阻止渲染 + shouldComponentUpdate(nextProps, nextState) { + console.log('shouldComponentUpdate'); + return true; + } + + // 在渲染前调用,但在 React 17 中已被废弃,建议使用 getSnapshotBeforeUpdate + componentWillUpdate(nextProps, nextState) { + console.log('componentWillUpdate'); + } + + // 在渲染前调用,但在 React 17 中已被废弃,建议使用 componentDidMount + componentWillMount() { + console.log('componentWillMount'); + } + + // 绑定更新逻辑 + onClick() { + this.setState({ + name: 'Hello React!', + }); + } + + render() { + return ( +
+

{this.state.name}

+ +
+ } +} +``` + +## React函数组件(推荐使用) +函数组件使用 `JSX` 的语法开发,说的简单些,JSX 其实就是在 html(或者说是模版) 中能够写 js,但并不是使用 script 标签那种方式,而是使用 `{}`, 在`{}`中可以写任何的js表达式或语法。 + +### 那 `JSX` 的本质是什么? +先看一个例子,一个最简单的例子,我们通过对比这个例子的 开发态 和 运行态 来看看JSX的本质到底是什么。 + +开发态: +```jsx +const Test = function () { + const [count, setCount] = useState(0); + + const handleClick = useCallback(() => { + console.log('click') + setCount(count + 1); + }, [count]); + + return
click me {count}
; +}; + +ReactDom.render(, document.getElementById('app')); +``` + +运行态: +```js +const Test = function () { + const [count, setCount] = useState(0); + const handleClick = useCallback(() => { + console.log('click'); + setCount(count + 1); + }, [count]); + return /*#__PURE__*/React.createElement("div", { + onClick: handleClick + }, "click me ", count); +}; + +ReactDom.render( /*#__PURE__*/React.createElement(Test, null), document.getElementById('app')); +``` + +不难观察出,开发态 和 运行态 的区别就是在 JSX 的节点,`
`变成了 `React.createElement('div', attrs, child)`。不难猜出`React.createElement`的实现应该大致如下所示: +```js +React.createElement = (tag, attrs, ...children) => { + if (typeof tag === 'string') { + const node = document.createElement(tag); + Object.keys(attrs).forEach(key => { + if(isDomAttr(key)) { // dom 属性 + node.setAttribute(key, attrs[key]); + } else if(isEvent(key)) { // 事件监听 + node.addEventListener(key.slice(2).toLowerCase(), attrs[key]); + } else { + // xxx + } + }); + children.forEach(child => node.appendChild(child)) + } + if (typeof tag === 'function') { // 组件 + return tag({ + ...attrs, + children + }); + } +} +``` +那是什么把jsx 转换成 React.createElement 的呢?一想到转换,那跟 Babel 就扯上关系了(@babel/preset-react)。 + + +React 函数组件的基本格式如下: + +```jsx +// 接收一个参数props, 能够获取到父组件传入的prop,以及children +export default function ComponentName(props) { + const onClick = () => { + console.log('点击了H1'); + props.onH1Click && props.onH1Click(); // 调用父组件的onH1Click事件,相当于 Vue 的 $emit 派发事件 + }; + return ( +
+

{props.name}

+
+ ); +} +``` + +### React Hooks + +Hooks 是 React 16.8 的新增特性,它可以让我们通过函数组件的方式开发 `React` 应用,并可以使用 `state` 以及其他 `React` 特性。 + +### useState +`useState`用于声明一个状态,并返回一个数组,数组的第一个元素是状态的值,第二个元素是更新状态的函数。在`React`中,所有的状态更新都需要通过`setState`方法来进行,`setState`方法可以接收一个函数,这个函数会接收当前的`state`作为参数,并返回一个新的`state`;也可以直接接收一个新的`state`。(**需要注意这个 新的,意味着如果是对象、数组等引用类型,需要返回一个新的**) + +```jsx +import React, { useState } from'react'; +const [state, setState] = useState('Hello React!'); + +// 触发更新,直接变更成另一个状态 +setState('Hello Hooks!'); +// 触发更新,传递一个函数 +setState(prevState => prevState +'Hooks!'); +``` +**简单理解,useState 用于在 React 中声明像 Vue data 选项中的属性** +- Vue: @xxx -> this.xxx = xxx -> get/set -> notify -> watcher.update -> render -> 界面更新 +- React: onXxx -> setState -> React更新逻辑 -> 界面更新 + +```jsx +import React, { useState } from 'react'; + +export default function ComponentName() { + const [name, setName] = useState('Hello React!'); + const onClick = () => { + setName('Hello Hooks!'); + }; + return ( +
+

{name}

+ +
+ ); +} +``` + +#### 对象的 setState +```jsx +// 扁平的对象 +const [obj, setObj] = useState({ + name: 'Hello React!', +}); +setObj({ + ...obj, + name: 'Hello Hooks!', +}); + +// 嵌套的对象 +const [obj, setObj] = useState({ + name: 'Hello React!', + sth: 'sth', + obj1: { + work: '前端', + age: 18, + } +}); + +setObj({ + ...obj, + sth: 'xxx', + obj1: { + ...obj.obj1, + age: 19, + } +}); +// 一般情况下,我们应该尽量减少对象的嵌套层数,但是如果你实在不想改变对象的结构,也能简单的 setState +// 使用 Immer +// npm install use-immer +import { useImmer } from 'use-immer' +const [obj, setObj] = useImmer({ + name: 'Hello React!', + sth:'sth', + obj1: { + work: '前端', + age: 18, + } +}); + +setObj(draft => { + draft.sth = 'xxx'; + draft.obj1.age = 19; +}); +``` + +#### 数组的 setState +需要返回一个新的数组,因此: +- `push pop shift unshift reverse sort splice` 等方法都不推荐使用,因为他们改变的是原始的数组,不会返回新的数组。 +- `concat slice filter map [...arr]` 会返回新的数组,是推荐的做法。 + +`use-immer`依然可以很好的支持我们使用平时操作数组的方式达到更新状态的目的,因为`use-immer`会根据改动后的数组创建一个新的`state`,这就意味着我们可以尽情的使用`push pop shift unshift reverse sort splice`等方法。 + +```jsx +import { useImmer } from 'use-immer' +const [arr, setArr] = useImmer([1, 2, 3]); +setArr(draft => { + draft.push(4); + draft.splice(0, 1); +}); +``` + +### useRef +**当你需要组件“记住”某些信息,但又不想让这些信息 触发新的渲染 时,你可以使用 useRef。** +- 使用`useRef`创建的变量,在组件的生命周期内一直存在,并且他的值具有缓存的特性,不会在每次渲染后变为初始值。 +- 可以改变,并且改变不会触发组件重新渲染。 +- 在一个节点中使用`ref={useRef返回的变量}`,在组件的生命周期内,`ref.current` 指向该节点`DOM`对象。 + +```jsx +import React, { useRef } from'react'; + +export default function ComponentName() { + // 你将能够 refH1 访问到 H1 的 DOM 对象 + const refH1 = useRef(); + // 在组件的生命周期内,当你点击了changeRef按钮,执行了changeRef,ref.current 将被更新为 'Hello Hooks!',并且不会触发组件的更新。 + const ref = useRef('Hello React!'); + const changeRef = () => { + ref.current = 'Hello Hooks!'; + }; + // 当你点击了changeName按钮,执行了changeName,name 将被更新为 'new name',触发组件的更新,ref.current 依然为 'Hello Hooks!' + const [name, setName] = useState('name') + const changeName = () => { + setName('new name') + }; + return ( +
+

{name}

+ + +
+ ) +} +``` + +#### forwardRef +useRef只能用在当前组件内的节点上,那如果咱们想获取到子组件的某个节点DOM对象的引用呢?那就可以使用 forwardRef。 + +使用 forwardRef 包裹子组件,然后可以将父组件绑定在该子组件上的 ref 拿到,然后绑定到 子组件内的任意节点上,这样父组件的 ref 就能拿到子组件的 DOM 节点了。示例如下: +```jsx +import React, { forwardRef, useRef } from'react'; + +const Toolbar = forwardRef(({children}, childRef) => { + return ( +
+

tool-bar

+ {children} +
+ ); +}) + +const Button = ({btnText, onClick}) => { + return ( + + ); +} +export default function FunctionComp() { + const childRef = useRef() + + const handleClick = () => { + // 打印的是 Toolbar 组件中的 h2 节点 + console.log(childRef.current) + } + return ( + <> +

FunctionComp

+ + + + + + + ); +} +``` + +### useEffect +#### 什么是effect? +在React中,有两种逻辑:组件的渲染逻辑、事件处理程序。 +#### 怎么理解? +- 组件的渲染逻辑:React组件是一个函数,这个函数的执行逻辑 就是 渲染逻辑。 +- 事件处理程序:在React将组件渲染到页面之后,用户的一些操作可能会触发一些事件处理程序,比如用户点击按钮、输入框输入内容等。 +#### 什么是effect? +指由渲染本身引起的,而不是由用户触发特定事件 的副作用。比如你用到了外部的一些插件(各种编辑器,图表、创建连接等),你可能需要在渲染完成之后执行这些插件的初始化逻辑,或者创建连接,这时候就可以使用 useEffect。 + +**不要随意在组件中使用useEffect,我们需要明确其使用场景:暂时跳出React代码,与React外部(这包括浏览器 API、第三方小部件,以及网络等等)交互。** +**如果只是想根据组件内的某些状态的变更 去改变另外的某些状态,那么你可能不需要使用useEffect。** + +#### 如何使用useEffect? +```jsx +useEffect(() => { + // do sth + return destory // 可选 +}, [dependencies]) + +// 没有传第二个参数,组件每次重新渲染都将执行 +useEffect(() => { + console.log('组件每次重新渲染都将执行') +}) +// 传递了一个 [], 仅当第一次挂载会执行,相当于 Vue 的 mounted +useEffect(() => { + console.log('仅当第一次挂载会执行') +}, []) +// 有具体的依赖,只有当依赖发生变化时才会执行 +// 下面的例子只有当状态 name 发生变化时,才会执行 +const [name, setName] = useState('name') +useEffect(() => { + console.log('仅当 name 发生变化时,才会执行') +}, [name]) + +// 返回了一个函数,在组件卸载的时候执行 +useEffect(() => { + function handleScroll(e) { + console.log(window.scrollX, window.scrollY); + } + // 组件第一次渲染完成后执行 mounted + window.addEventListener('scroll', handleScroll); + // 组件卸载的时候执行 unmounted + return () => window.removeEventListener('scroll', handleScroll); +}, []); +``` + +#### 使用useEffect的经典场景 +- 添加事件监听 +- fetch数据 +- 初始化第三方插件 +- 初始化设置样式、动画等 + +#### 不需要使用useEffect的场景 +- 根据 prop 或 state 的变更,更新另外的一些state(官方文档中有几个例子很好理解) +- 能在事件处理函数中处理的,就不要拿到 useEffect 中执行,可能导致一些预期之外的bug。 +- 不要把只需要执行一次,与组件的重新渲染无关的逻辑放到useEffect中。 +- 不要在useEffect中通知父组件状态的变更,因为这个执行的时机太晚了。(状态变更->重新渲染->执行useEffect回调->父组件函数执行->状态变更->重新渲染) + +### useLayoutEffect +useLayoutEffect 是 useEffect 的一个版本,在浏览器重新绘制屏幕之前触发,会阻塞浏览器的绘制。 +```jsx +useLayoutEffect(setup, dependencies?) +``` +用处:在浏览器重新绘制屏幕前计算布局,在某些计算布局的场景下使用 useEffect 可能会出现闪烁的问题,使用 useLayoutEffect 则不会。 + +### useMemo +组件重新渲染的时候能够缓存计算的结果,避免重复计算以提升性能。 +```jsx +// 是否重新计算取决于 dependencies 是否发生变化 +const cachedValue = useMemo(() => calcValue, dependencies) +``` +缓存一个计算的值,并且这个计算的过程很耗时的情况下,效果会比较显著 +```jsx +import React, { useMemo } from'react'; + +const Child = () => { + return (

Child

) +} +function FunctionComp({todos, filter, name}) { + // showChild is a memoized value, only re-evaluated when todos or filter changes + const showChild = useMemo(() => todos.includes(filter), [todos, filter]) + return ( <> +
{name}
+ + ); +} + +export default FunctionComp; +``` +也可以直接缓存一个组件/DOM元素,当且仅当这个组件/DOM元素使用到的状态变更才会重新渲染它. +```jsx +import React, { useMemo } from'react'; + +const Child = ({ name }) => { + return (

Child

) +} +const memoChild = useMemo(() => , [todos, filter]) +function FunctionComp({todos, filter, name}) { + return ( <> +
{name}
+ {memoChild} + ); +} +``` + +#### React.memo +`React.memo`用于缓存一个组件,只有这个组件接收的props变化时才会重新渲染它,也是`React`中的一种性能优化手段,可以避免一些组件不必要的重复渲染。举一个简单的例子: +```jsx +import React from'react'; + +const Child = ({childText}) => { + console.log('Child render') + return (

{childText}

) +} +// 如果此处我们不使用React.memo 包裹 Child,那么当FunctionComp组件的的任何一个props变化,都会引起Child组件的重新渲染 +// 但是只有childText属性变化才会影响Child组件的渲染结果,即只有当childText属性变化才需要重新渲染 +const MemoChild = React.memo(Child) + +function FunctionComp({name, childText}) { + console.log('parent render') + return ( <> +
{name}
+ + ); +} + +export default FunctionComp; +``` +`React.memo`还有第二个参数,一个函数,可由开发者自行指定是否需要重新渲染组件。 +```jsx +const MemoChild = React.memo(Child, (prevProps, nextProps) => { + return prevProps.childText === nextProps.childText +}) +``` + +### useCallback +用于缓存函数本身,只有当依赖项变化,才会重新创建一个新的函数返回。 + +用法: +```jsx +const handleClick = useCallback(fn, dependencies) +``` + +没有使用 useCallback 的时候: +```jsx +import React from'react'; + +const fn = [] +function FunctionComp({name, childText}) { + const handleClick = () => { + console.log('click' + childText) + } + fn.push(handleClick) + const l = fn.length + if(l > 1) { + // 每次重新渲染都会返回false,handleClick都会得到一个新的函数 + console.log(fn[l - 2] === fn[l - 1]) + } + return ( <> +
{name}
+ ); +} + +export default FunctionComp; +``` +加上useCallback: +```jsx +import React, { useCallback } from'react'; + +const fn = [] +function FunctionComp({name, childText}) { + // 只有当 childText 这个 prop 变化,才会得到与之前不一致的 handleClick 函数 + const handleClick = useCallback(() => { + console.log('click' + childText) + }, [childText]) + + fn.push(handleClick) + const l = fn.length + if(l > 1) { + console.log(fn[l - 2] === fn[l - 1]) + } + return ( <> +
{name}
+ ); +} + +export default FunctionComp; +``` +了解了 useCallback 的作用之后,那么我们结合一下之前的 useMemo React.memo 想一下,不难猜出它们经常配合起来使用。 +- React.memo 通过判断 props 是否改变 来 决定能否使用组件的缓存,props 可以传递函数吧,那假如就有函数类型的prop,如果这个 prop 没有使用 useCallback 包裹,那么每次都会返回一个新的函数,props肯定就改变了,也就导致 React.memo 无法使用组件的缓存了。 +- 同样的 useMemo 不仅可以缓存普通的计算结果,也可以用于缓存组件,那么结合 useCallback 也能达到 React.memo 的组件缓存效果。 + +用 useMemo 实现 useCallback: +```jsx +function useCallback(fn, dependencies) { + return useMemo(() => fn, dependencies); +} +``` + +### useContext +配合 createContext 使用,可以让我们在组件之间共享状态,无关组件的层级,只要在一个组件中 Provider,该组件的任意子孙组件都能通过 useContext 获取到,如下示例: + +**就是Vue 中的 provider 和 inject。** + +```jsx +import React, { createContext, useContext } from'react'; + +const ThemeContext = createContext('red') + +const Toolbar = ({children}) => { + return ( +
+ {children} +
+ ); +} + +const Button = ({children}) => { + const theme = useContext(ThemeContext); + const style = { + color: theme, + } + return ( + + ); +} + +function FunctionComp() { + return ( + +

FunctionComp

+ + + + + +
+ ); +} + +export default FunctionComp; +``` + +### useImperativeHandle +通过 useImperativeHandle 可以可以暴露一些 API 给父组件,父组件可调用,改变子组件的状态。 + +相当于 Vue3 的 expose。 +```jsx +import React, { forwardRef, useImperativeHandle, useRef } from'react'; + +const Toolbar = forwardRef(({children}, childRef) => { + const _ref = useRef() + // 一定要注意,使用了 useImperativeHandle 给 childRef 暴露一些API,就不能再吧 childRef 绑定到 节点,绑定了也无效 + useImperativeHandle(childRef, () => { + return { + changeBgColor() { + _ref.current.style.backgroundColor ='red' + }, + $el() { + return _ref.current + } + } + }) + return ( +
+

tool-bar

+ {children} +
+ ); +}) + +const Button = ({children, onClick}) => { + return ( + + ); +} +export default function FunctionComp() { + const childRef = useRef() + + const handleClick = () => { + // 打印的是 Toolbar 组件中的 h2 节点 + console.log(childRef.current.$el()) + childRef.current.changeBgColor() + } + return ( + <> +

FunctionComp

+ + + + + ); +} +``` + +### useSyncExternalStore +useSyncExternalStore 用于订阅一些外部的数据源,当数据源发生变化时,会自动重新渲染组件。比如你想获取浏览器API上的一些数据: +```jsx +import React, { useSyncExternalStore } from'react'; +const subscribe = (callback) => { + // 监听网络状态的变化 + window.addEventListener('online', callback) + window.addEventListener('offline', callback) + return () => { + // 移除事件监听 + window.removeEventListener('online', callback) + window.removeEventListener('offline', callback) + } +} +// 获取网络状态 +const getSnapshot = () => { + return navigator.onLine +} + +export default function FunctionComp() { + const isOnline = useSyncExternalStore(subscribe, getSnapshot) + return ( +

{isOnline ? 'online' : 'offline'}

+ ); +} +``` + +## 自定义Hook +与 react 内置的 Hook 一致,自定义 Hook 也以 use 开头,用于将一些需要在多个地方重复使用的逻辑封装起来,提高复用性。类似`Vue Composition API` 的 组合式函数。比如 useSyncExternalStore 的例子,我们在多个地方需要使用网络状态,那我们就可以把这个处理网络状态的逻辑封装起来,成为一个自定义的 `Hook`, 然后在需要的地方使用。 + +```jsx +import React, { useState, useEffect, useRef } from'react'; + +const subscribe = (callback) => { + // 监听网络状态的变化 + window.addEventListener('online', callback) + window.addEventListener('offline', callback) + return () => { + // 移除事件监听 + window.removeEventListener('online', callback) + window.removeEventListener('offline', callback) + } +} +// 获取网络状态 +const getSnapshot = () => { + return navigator.onLine +} + +export default const useNetworkState = () => { + const isOnline = useSyncExternalStore(subscribe, getSnapshot) + return isOnline +} +``` + +## 高阶组件 + +所谓高阶组件,就是一个函数,接收一个组件作为参数,返回一个新的组件。经常用于做属性代理。 + +```jsx +import React, { Component } from'react'; + +const Comp = () => { + return

Comp

+} + +const HighComp = (Comp) => { + // 可以在这里做一些逻辑处理,比如传递一些属性给Comp, 或者添加一些样式等等 + const props = {propA: 'xxx', propB: 'yyy'} + + const styles = { + color:'red', + } + + return () => { + return + } +} +``` +