1(function () { 2var exports = {}; 3var module = { exports: exports }; 4!( 5 /*! License details at fancyapps.com/license */ (function (e, t) { 6 'object' == typeof exports && 'u' > typeof module 7 ? t(exports) 8 : 'function' == typeof define && define.amd 9 ? define(['exports'], t) 10 : t(((e = 'u' > typeof globalThis ? globalThis : e || self).window = e.window || {})); 11 })(this, function (e) { 12 'use strict'; 13 let t, 14 n, 15 o, 16 i, 17 r, 18 l, 19 a = (e) => 20 'object' == typeof e && 21 null !== e && 22 e.constructor === Object && 23 '[object Object]' === Object.prototype.toString.call(e), 24 s = (e) => 'string' == typeof e, 25 c = (e) => e && null !== e && e instanceof Element && 'nodeType' in e, 26 u = function (e) { 27 var t = new DOMParser().parseFromString(e, 'text/html').body; 28 if (t.childElementCount > 1) { 29 for (var n = document.createElement('div'); t.firstChild; ) n.appendChild(t.firstChild); 30 return n; 31 } 32 let o = t.firstChild; 33 if (o && !(o instanceof HTMLElement)) { 34 var n = document.createElement('div'); 35 return n.appendChild(o), n; 36 } 37 return o; 38 }, 39 d = function (e) { 40 if (!(e && e instanceof Element && e.offsetParent)) return !1; 41 let t = !1, 42 n = !1; 43 if (e.scrollWidth > e.clientWidth) { 44 let n = window.getComputedStyle(e).overflowX, 45 o = -1 !== n.indexOf('hidden'), 46 i = -1 !== n.indexOf('clip'), 47 r = -1 !== n.indexOf('visible'); 48 t = !o && !i && !r; 49 } 50 if (e.scrollHeight > e.clientHeight) { 51 let t = window.getComputedStyle(e).overflowY, 52 o = -1 !== t.indexOf('hidden'), 53 i = -1 !== t.indexOf('clip'), 54 r = -1 !== t.indexOf('visible'); 55 n = !o && !i && !r; 56 } 57 return t || n; 58 }, 59 f = function (e, t) { 60 return !e || e === document.body || (t && e === t) ? null : d(e) ? e : f(e.parentElement, t); 61 }, 62 g = (e = !0, t = '--f-scrollbar-compensate', n = '--f-body-margin', o = 'hide-scrollbar') => { 63 let i = document, 64 r = i.body, 65 l = i.documentElement; 66 if (e) { 67 if (r.classList.contains(o)) return; 68 let e = window.innerWidth - l.getBoundingClientRect().width; 69 e < 0 && (e = 0), l.style.setProperty(t, `${e}px`); 70 let i = parseFloat(window.getComputedStyle(r).marginRight); 71 i && r.style.setProperty(n, `${i}px`), r.classList.add(o); 72 } else 73 r.classList.remove(o), r.style.setProperty(n, ''), i.documentElement.style.setProperty(t, ''); 74 }, 75 m = (e, ...t) => { 76 let n = t.length; 77 for (let o = 0; o < n; o++) 78 Object.entries(t[o] || {}).forEach(([t, n]) => { 79 let o = Array.isArray(n) ? [] : {}; 80 e[t] || Object.assign(e, { [t]: o }), 81 a(n) 82 ? Object.assign(e[t], m(e[t], n)) 83 : Array.isArray(n) 84 ? Object.assign(e, { [t]: [...n] }) 85 : Object.assign(e, { [t]: n }); 86 }); 87 return e; 88 }; 89 function p() { 90 return !!('u' > typeof window && window.document && window.document.createElement); 91 } 92 let h = function (e = 0, t = 0, n = 0) { 93 return Math.max(Math.min(t, n), e); 94 }, 95 y = function (e = 0, t = 0, n = 0, o = 0, i = 0, r = !1) { 96 let l = ((e - t) / (n - t)) * (i - o) + o; 97 return r ? (o < i ? h(o, l, i) : h(i, l, o)) : l; 98 }, 99 v = (e, t = '') => { 100 e && 101 e.classList && 102 t.split(' ').forEach((t) => { 103 t && e.classList.add(t); 104 }); 105 }, 106 b = (e, t = '') => { 107 e && 108 e.classList && 109 t.split(' ').forEach((t) => { 110 t && e.classList.remove(t); 111 }); 112 }, 113 E = (e, t = '', n) => { 114 e && 115 e.classList && 116 t.split(' ').forEach((t) => { 117 t && e.classList.toggle(t, n || !1); 118 }); 119 }; 120 function w(e) { 121 return a(e) || Array.isArray(e); 122 } 123 function x(e, t) { 124 let n = Object.keys(e), 125 o = Object.keys(t); 126 return ( 127 n.length === o.length && 128 n.every((n) => { 129 let o = e[n], 130 i = t[n]; 131 return 'function' == typeof o ? `${o}` == `${i}` : w(o) && w(i) ? x(o, i) : o === i; 132 }) 133 ); 134 } 135 let M = (1 / 60) * 3e3, 136 L = function (e) { 137 for (let t of H) t.getState() === S.Running && t.tick(V ? e - V : 0);
138 (V = e), (D = window.requestAnimationFrame(L)); 139 }, 140 S = 141 (((T = {})[(T.Initializing = 0)] = 'Initializing'), 142 (T[(T.Running = 1)] = 'Running'), 143 (T[(T.Paused = 2)] = 'Paused'), 144 (T[(T.Completed = 3)] = 'Completed'), 145 (T[(T.Destroyed = 4)] = 'Destroyed'), 146 T); 147 var T, 148 R, 149 P, 150 A, 151 C, 152 O, 153 I, 154 z, 155 k, 156 $, 157 F = (((R = F || {})[(R.Spring = 0)] = 'Spring'), (R[(R.Ease = 1)] = 'Ease'), R); 158 let _ = (((P = {})[(P.Loop = 0)] = 'Loop'), (P[(P.Reverse = 1)] = 'Reverse'), P), 159 H = new Set(), 160 D = null, 161 V = 0; 162 function j() { 163 let e = S.Initializing, 164 t = F.Ease, 165 n = 0, 166 o = 0, 167 i = j.Easings.Linear, 168 r = 500, 169 l = 0, 170 a = 0, 171 s = 0, 172 c = 0, 173 u = 1 / 0, 174 d = 0.01, 175 f = 0.01, 176 g = !1, 177 m = {}, 178 p = null, 179 y = {}, 180 v = {}, 181 b = {}, 182 E = 0, 183 w = 0, 184 T = _.Loop, 185 R = j.Easings.Linear, 186 P = new Map(); 187 function A(e, ...t) { 188 for (let n of P.get(e) || []) n(...t); 189 } 190 function C(e) { 191 return ( 192 (o = 0), 193 e 194 ? (p = setTimeout(() => { 195 O(); 196 }, e)) 197 : O(), 198 z 199 ); 200 } 201 function O() { 202 (e = S.Running), A('start', y, v); 203 } 204 function I() { 205 if (((e = S.Completed), (b = {}), A('end', y), e === S.Completed)) 206 if (n < E) { 207 if ((n++, T === _.Reverse)) { 208 let e = { ...m }; 209 (m = { ...v }), (v = e); 210 } 211 C(w); 212 } else n = 0; 213 return z; 214 } 215 let z = { 216 getState: function () { 217 return e; 218 }, 219 easing: function (e) { 220 return (i = e), (t = F.Ease), (b = {}), z; 221 }, 222 duration: function (e) { 223 return (r = e), z; 224 }, 225 spring: function (e = {}) { 226 t = F.Spring; 227 let { 228 velocity: n, 229 mass: o, 230 tension: i, 231 friction: r, 232 restDelta: m, 233 restSpeed: p, 234 maxSpeed: h, 235 clamp: y, 236 } = { 237 velocity: 0, 238 mass: 1, 239 tension: 170, 240 friction: 26, 241 restDelta: 0.1, 242 restSpeed: 0.1, 243 maxSpeed: 1 / 0, 244 clamp: !0, 245 ...e, 246 }; 247 return (l = n), (a = o), (s = i), (c = r), (f = m), (d = p), (u = h), (g = y), (b = {}), z; 248 }, 249 isRunning: function () { 250 return e === S.Running; 251 }, 252 isSpring: function () { 253 return t === F.Spring; 254 }, 255 from: function (e) { 256 return (y = { ...e }), z; 257 }, 258 to: function (e) { 259 return (v = e), z; 260 }, 261 repeat: function (e, t = 0, n = _.Loop, o) { 262 return (E = e), (w = t), (T = n), (R = o || i), z; 263 }, 264 on: function (e, t) { 265 return P.set(e, [...(P.get(e) || []), t]), z; 266 }, 267 off: function (e, t) { 268 return ( 269 P.has(e) && 270 P.set( 271 e, 272 P.get(e).filter((e) => e !== t) 273 ), 274 z 275 ); 276 }, 277 start: function (t) { 278 return ( 279 x(y, v) || 280 ((e = S.Initializing), 281 (m = { ...y }), 282 H.add(this), 283 D || (D = window.requestAnimationFrame(L)), 284 C(t)), 285 z 286 ); 287 }, 288 pause: function () { 289 return ( 290 p && (clearTimeout(p), (p = null)), e === S.Running && ((e = S.Paused), A('pause', y)), z 291 ); 292 }, 293 end: I, 294 tick: function (n) { 295 n > M && (n = M), (o += n); 296 let p = 0, 297 E = !1; 298 if (e !== S.Running) return z; 299 if (t === F.Ease) { 300 E = 1 === (p = h(0, o / r, 1)); 301 let e = T === _.Reverse ? R : i; 302 for (let t in y) y[t] = m[t] + (v[t] - m[t]) * e(p); 303 } 304 if (t === F.Spring) { 305 let e = 0.001 * n, 306 t = 0; 307 for (let n in y) { 308 let o = v[n], 309 i = y[n]; 310 if (!('number' == typeof o && !isNaN(o)) || !('number' == typeof i && !isNaN(i))) continue; 311 if (Math.abs(o - i) <= f) { 312 (y[n] = o), (b[n] = 0); 313 continue; 314 } 315 b[n] || 316 ('object' == typeof l && 'number' == typeof l[n] 317 ? (b[n] = l[n]) 318 : 'number' == typeof l 319 ? (b[n] = l) 320 : (b[n] = 0)); 321 let r = b[n], 322 m = (r = h(-1 * Math.abs(u), r, Math.abs(u))) * a * c, 323 p = Math.abs(o - i) * s; 324 (r += (((i > o ? -1 : 1) * p - m) / a) * e), (i += r * e); 325 let E = y[n] > o ? i < o : i > o, 326 w = Math.abs(r) < d && Math.abs(o - i) <= f;
327 g && E && (w = !0), w ? ((i = o), (r = 0)) : t++, (y[n] = i), (b[n] = r); 328 } 329 E = !t; 330 } 331 let w = { ...v }; 332 return A('step', y, m, v, p), E && e === S.Running && x(v, w) && ((e = S.Completed), I()), z; 333 }, 334 getStartValues: function () { 335 return m; 336 }, 337 getCurrentValues: function () { 338 return y; 339 }, 340 getCurrentVelocities: function () { 341 return b; 342 }, 343 getEndValues: function () { 344 return v; 345 }, 346 destroy: function () { 347 (e = S.Destroyed), p && (clearTimeout(p), (p = null)), (m = y = v = {}), H.delete(this); 348 }, 349 }; 350 return z; 351 } 352 function q(e) { 353 return 'u' > typeof TouchEvent && e instanceof TouchEvent; 354 } 355 function N(e, t) { 356 let n = []; 357 for (let o of q(e) 358 ? e[t] 359 : e instanceof MouseEvent && ('changedTouches' === t || 'mouseup' !== e.type) 360 ? [e] 361 : []) 362 n.push({ x: o.clientX, y: o.clientY, ts: Date.now() }); 363 return n; 364 } 365 function B(e) { 366 return N(e, 'touches'); 367 } 368 function W(e) { 369 return N(e, 'targetTouches'); 370 } 371 function Z(e) { 372 return N(e, 'changedTouches'); 373 } 374 function G(e) { 375 let t = e[0], 376 n = e[1] || t; 377 return { x: (t.x + n.x) / 2, y: (t.y + n.y) / 2, ts: n.ts }; 378 } 379 function U(e) { 380 let t = e[0], 381 n = e[1] || e[0]; 382 return t && n ? -1 * Math.sqrt((n.x - t.x) * (n.x - t.x) + (n.y - t.y) * (n.y - t.y)) : 0; 383 } 384 (j.destroy = () => { 385 for (let e of H) e.destroy(); 386 D && (cancelAnimationFrame(D), (D = null)); 387 }), 388 (j.Easings = { 389 Linear: function (e) { 390 return e; 391 }, 392 EaseIn: function (e) { 393 return 0 === e ? 0 : Math.pow(2, 10 * e - 10); 394 }, 395 EaseOut: function (e) { 396 return 1 === e ? 1 : 1 - Math.pow(2, -10 * e); 397 }, 398 EaseInOut: function (e) { 399 return 0 === e 400 ? 0 401 : 1 === e 402 ? 1 403 : e < 0.5 404 ? Math.pow(2, 20 * e - 10) / 2 405 : (2 - Math.pow(2, -20 * e + 10)) / 2; 406 }, 407 }); 408 let X = (e) => { 409 e.cancelable && e.preventDefault(); 410 }, 411 Y = { passive: !1 }, 412 K = { 413 panThreshold: 5, 414 swipeThreshold: 3, 415 ignore: [ 416 'textarea', 417 'input', 418 'select', 419 '[contenteditable]', 420 '[data-selectable]', 421 '[data-draggable]', 422 ], 423 }, 424 J = !1, 425 Q = !0, 426 ee = (e, t) => { 427 let n, 428 o, 429 i, 430 r, 431 l, 432 a = { ...K, ...t }, 433 s = [], 434 c = [], 435 u = [], 436 d = !1, 437 f = !1, 438 g = !1, 439 m = !1, 440 p = 0, 441 h = 0, 442 y = 0, 443 v = 0, 444 b = 0, 445 E = 0, 446 w = 0, 447 x = 0, 448 M = 0, 449 L = [], 450 S = new Map(); 451 function T(e) { 452 let t = U(c), 453 i = U(u), 454 r = Math.abs(w) > Math.abs(x) ? w : x, 455 a = { 456 srcEvent: l, 457 isPanRecognized: d, 458 isSwipeRecognized: f, 459 firstTouch: s, 460 previousTouch: u, 461 currentTouch: c, 462 deltaX: y, 463 deltaY: v, 464 offsetX: b, 465 offsetY: E, 466 velocityX: w, 467 velocityY: x, 468 velocity: r, 469 angle: M, 470 axis: o, 471 scale: t && i ? t / i : 0, 472 center: n, 473 }; 474 for (let t of S.get(e) || []) t(a); 475 } 476 function R(e) { 477 let t = e.target, 478 n = e.composedPath()[0], 479 o = a.ignore.join(','), 480 i = (e) => e && e instanceof HTMLElement && (e.matches(o) || e.closest(o)); 481 if (i(t) || i(n)) return !1; 482 } 483 function P(e) { 484 let t = Date.now(); 485 if ( 486 ((L = L.filter((e) => !e.ts || e.ts > t - 100)), 487 e && L.push(e), 488 (w = 0), 489 (x = 0), 490 L.length > 3) 491 ) { 492 let e = L[0], 493 t = L[L.length - 1]; 494 if (e && t) { 495 let n = t.x - e.x, 496 o = t.y - e.y, 497 i = e.ts && t.ts ? t.ts - e.ts : 0; 498 i > 0 && 499 ((w = Math.abs(n) > 3 ? n / (i / 30) : 0), (x = Math.abs(o) > 3 ? o / (i / 30) : 0)); 500 } 501 } 502 } 503 function A(e) { 504 if (!1 === R(e)) return; 505 if ('u' > typeof MouseEvent && e instanceof MouseEvent) { 506 if (J) return; 507 } else J = !0; 508 if ('u' > typeof MouseEvent && e instanceof MouseEvent) { 509 if (!e.buttons || 0 !== e.button) return; 510 X(e); 511 } 512 e instanceof MouseEvent && 513 (window.addEventListener('mousemove', C), window.addEventListener('mouseup', O)), 514 window.addEventListener('blur', I), 515 (l = e), 516 (s = [...(c = W(e))]), 517 (u = []), 518 (h = c.length), 519 (n = G(c)), 520 1 === h && ((d = !1), (f = !1), (g = !1)), 521 h && P(G(c)); 522 let t = Date.now(), 523 o = t - (p || t); 524 (m = o > 0 && o <= 250 && 1 === h), (p = t), clearTimeout(i), T('start'); 525 } 526 function C(e) { 527 if (!s.length || e.defaultPrevented || !1 === R(e)) return; 528 (l = e), (u = [...c]), (c = B(e)); 529 let t = G(u), 530 i = G(B(e)); 531 if ( 532 (P(i), 533 (h = c.length), 534 (n = i), 535 u.length === c.length ? ((y = i.x - t.x), (v = i.y - t.y)) : ((y = 0), (v = 0)), 536 s.length) 537 ) { 538 let e = G(s); 539 (b = i.x - e.x), (E = i.y - e.y); 540 } 541 c.length > 1 && Math.abs(U(c) - U(u)) >= 0.1 && ((g = !0), T('pinch')), 542 !d && 543 (d = Math.abs(b) >= a.panThreshold || Math.abs(E) >= a.panThreshold) && 544 ((Q = !1), 545 clearTimeout(r), 546 (r = void 0), 547 (o = (M = Math.abs((180 * Math.atan2(E, b)) / Math.PI)) > 45 && M < 135 ? 'y' : 'x'), 548 (s = [...c]), 549 (u = [...c]), 550 (b = 0), 551 (E = 0), 552 (y = 0), 553 (v = 0), 554 window.getSelection()?.removeAllRanges(), 555 T('panstart')), 556 d && (y || v) && T('pan'), 557 T('move'); 558 } 559 function O(e) { 560 if (((l = e), !s.length)) return; 561 let t = W(e), 562 o = Z(e); 563 if ( 564 ((h = t.length), 565 (n = G(o)), 566 o.length && P(G(o)), 567 (u = [...c]), 568 (c = [...t]), 569 (s = [...t]), 570 h > 0) 571 ) 572 T('end'), (d = !1), (f = !1), (L = []); 573 else { 574 let e = a.swipeThreshold; 575 (Math.abs(w) > e || Math.abs(x) > e) && (f = !0), 576 d && T('panend'), 577 f && T('swipe'), 578 d || 579 f || 580 g || 581 (T('tap'), 582 m 583 ? T('doubleTap') 584 : (i = setTimeout(function () { 585 T('singleTap'); 586 }, 250))), 587 T('end'), 588 z(); 589 } 590 } 591 function I() { 592 clearTimeout(i), z(), d && T('panend'), T('end'); 593 } 594 function z() { 595 (J = !1), 596 (d = !1), 597 (f = !1), 598 (m = !1), 599 (h = 0), 600 (L = []), 601 (c = []), 602 (u = []), 603 (s = []), 604 (y = 0), 605 (v = 0), 606 (b = 0), 607 (E = 0), 608 (w = 0), 609 (x = 0), 610 (M = 0), 611 (o = void 0), 612 window.removeEventListener('mousemove', C), 613 window.removeEventListener('mouseup', O), 614 window.removeEventListener('blur', I), 615 Q || 616 r || 617 (r = setTimeout(() => { 618 (Q = !0), (r = void 0); 619 }, 100)); 620 } 621 function k(e) { 622 let t = e.target; 623 (J = !1), t && !e.defaultPrevented && (Q || (X(e), e.stopPropagation())); 624 } 625 let $ = { 626 init: function () { 627 return ( 628 e && 629 (e.addEventListener('click', k, Y), 630 e.addEventListener('mousedown', A, Y), 631 e.addEventListener('touchstart', A, Y), 632 e.addEventListener('touchmove', C, Y), 633 e.addEventListener('touchend', O), 634 e.addEventListener('touchcancel', O)), 635 $ 636 ); 637 }, 638 on: function (e, t) { 639 return S.set(e, [...(S.get(e) || []), t]), $; 640 }, 641 off: function (e, t) { 642 return ( 643 S.has(e) && 644 S.set( 645 e, 646 S.get(e).filter((e) => e !== t) 647 ), 648 $ 649 ); 650 }, 651 isPointerDown: () => h > 0, 652 destroy: function () { 653 clearTimeout(i), 654 clearTimeout(r), 655 (r = void 0), 656 e && 657 (e.removeEventListener('click', k, Y), 658 e.removeEventListener('mousedown', A, Y), 659 e.removeEventListener('touchstart', A, Y), 660 e.removeEventListener('touchmove', C, Y), 661 e.removeEventListener('touchend', O), 662 e.removeEventListener('touchcancel', O)), 663 (e = null),
664 z(); 665 }, 666 }; 667 return $; 668 }; 669 ee.isClickAllowed = () => Q; 670 let et = { 671 IMAGE_ERROR: "This image couldn't be loaded. <br /> Please try again later.", 672 MOVE_UP: 'Move up', 673 MOVE_DOWN: 'Move down', 674 MOVE_LEFT: 'Move left', 675 MOVE_RIGHT: 'Move right', 676 ZOOM_IN: 'Zoom in', 677 ZOOM_OUT: 'Zoom out', 678 TOGGLE_FULL: 'Toggle zoom level', 679 TOGGLE_1TO1: 'Toggle zoom level', 680 ITERATE_ZOOM: 'Toggle zoom level', 681 ROTATE_CCW: 'Rotate counterclockwise', 682 ROTATE_CW: 'Rotate clockwise', 683 FLIP_X: 'Flip horizontally', 684 FLIP_Y: 'Flip vertically', 685 RESET: 'Reset', 686 TOGGLE_FS: 'Toggle fullscreen', 687 }, 688 en = 1e4, 689 eo = (e) => { 690 e.cancelable && e.preventDefault(); 691 }, 692 ei = (e, t = en) => Math.round(((e = parseFloat(e + '') || 0) + Number.EPSILON) * t) / t, 693 er = 694 (((A = {}).Reset = 'reset'), 695 (A.Zoom = 'zoom'), 696 (A.ZoomIn = 'zoomIn'), 697 (A.ZoomOut = 'zoomOut'), 698 (A.ZoomTo = 'zoomTo'), 699 (A.ToggleCover = 'toggleCover'), 700 (A.ToggleFull = 'toggleFull'), 701 (A.ToggleMax = 'toggleMax'), 702 (A.IterateZoom = 'iterateZoom'), 703 (A.Pan = 'pan'), 704 (A.Swipe = 'swipe'), 705 (A.Move = 'move'), 706 (A.MoveLeft = 'moveLeft'), 707 (A.MoveRight = 'moveRight'), 708 (A.MoveUp = 'moveUp'), 709 (A.MoveDown = 'moveDown'), 710 (A.RotateCCW = 'rotateCCW'), 711 (A.RotateCW = 'rotateCW'), 712 (A.FlipX = 'flipX'), 713 (A.FlipY = 'flipY'), 714 (A.ToggleFS = 'toggleFS'), 715 A), 716 el = (((C = {}).Cover = 'cover'), (C.Full = 'full'), (C.Max = 'max'), C), 717 ea = { x: 0, y: 0, scale: 1, angle: 0, flipX: 1, flipY: 1 }, 718 es = 719 (((O = {})[(O.Init = 0)] = 'Init'), 720 (O[(O.Loading = 1)] = 'Loading'), 721 (O[(O.Error = 2)] = 'Error'), 722 (O[(O.Ready = 3)] = 'Ready'), 723 (O[(O.Destroyed = 4)] = 'Destroyed'), 724 O), 725 ec = { 726 bounds: !0, 727 classes: { 728 container: 'f-panzoom', 729 wrapper: 'f-panzoom__wrapper', 730 content: 'f-panzoom__content', 731 viewport: 'f-panzoom__viewport', 732 }, 733 clickAction: er.ToggleFull, 734 dblClickAction: !1, 735 gestures: {}, 736 height: 'auto', 737 l10n: et, 738 maxScale: 4, 739 minScale: 1, 740 mouseMoveFactor: 1, 741 panMode: 'drag', 742 protected: !1, 743 singleClickAction: !1, 744 spinnerTpl: '<div class="f-spinner"></div>', 745 wheelAction: er.Zoom, 746 width: 'auto', 747 }, 748 eu = 0, 749 ed = 0, 750 ef = 0, 751 eg = (e, n = {}, o = {}) => { 752 let i, 753 r, 754 l, 755 a, 756 d, 757 g, 758 m, 759 p, 760 y = es.Init, 761 w = { ...ec, ...n }, 762 M = {}, 763 L = { ...ea }, 764 S = { ...ea }, 765 T = []; 766 function R(e) { 767 let t = w[e]; 768 return t && 'function' == typeof t ? t(eL) : t; 769 } 770 function P() { 771 return e && e.parentElement && i && y === es.Ready; 772 } 773 let A = new Map(); 774 function C(e, ...t) { 775 let n = [...(A.get(e) || [])]; 776 for (let o of (w.on && n.push(w.on[e]), n)) o && o instanceof Function && o(eL, ...t); 777 '*' !== e && C('*', e, ...t); 778 } 779 function O(e) { 780 if (!P() || f(e.target)) return; 781 let t = Date.now(), 782 n = h( 783 -1, 784 [-e.deltaX || 0, -e.deltaY || 0, -e.detail || 0].reduce(function (e, t) { 785 return Math.abs(t) > Math.abs(e) ? t : e; 786 }), 787 1 788 ); 789 C('wheel', e, n); 790 let o = R('wheelAction'); 791 if (!o || e.defaultPrevented) return; 792 let i = S.scale, 793 r = i * (n > 0 ? 1.5 : 0.5); 794 if (o === er.Zoom) { 795 let o = 100 > Math.abs(e.deltaY) && 100 > Math.abs(e.deltaX); 796 if (t - ed < (o ? 200 : 45)) return void eo(e); 797 ed = t; 798 let l = B(), 799 a = X(); 800 if ( 801 (ei(r) < ei(l) && ei(i) <= ei(l) 802 ? ((ef += Math.abs(n)), (r = l)) 803 : ei(r) > ei(a) && ei(i) >= ei(a) 804 ? ((ef += Math.abs(n)), (r = a)) 805 : ((ef = 0), (r = h(l, r, a))), 806 ef > 7) 807 ) 808 return; 809 } 810 switch ((eo(e), o)) { 811 case er.Pan: 812 Q(o, { srcEvent: e, deltaX: -(2 * e.deltaX), deltaY: -(2 * e.deltaY) }); 813 break; 814 case er.Zoom: 815 Q(er.ZoomTo, { srcEvent: e, scale: r, center: { x: e.clientX, y: e.clientY } }); 816 break; 817 default: 818 Q(o, { srcEvent: e }); 819 } 820 } 821 function I(n) { 822 let o = n.composedPath()[0]; 823 if ( 824 !ee.isClickAllowed() || 825 !c(o) || 826 n.defaultPrevented || 827 !e?.contains(o) || 828 o.hasAttribute('disabled') || 829 o.hasAttribute('aria-disabled') || 830 o.hasAttribute('data-carousel-go-prev') || 831 o.hasAttribute('data-carousel-go-next') 832 ) 833 return; 834 let r = o.closest('[data-panzoom-action]'), 835 l = r?.dataset?.panzoomAction, 836 a = r?.dataset?.panzoomValue || ''; 837 if (l) { 838 switch ((eo(n), l)) { 839 case er.ZoomTo: 840 case er.ZoomIn: 841 case er.ZoomOut: 842 Q(l, { scale: parseFloat(a || '') || void 0 }); 843 break; 844 case er.MoveLeft: 845 case er.MoveRight: 846 Q(l, { deltaX: parseFloat(a || '') || void 0 }); 847 break; 848 case er.MoveUp: 849 case er.MoveDown: 850 Q(l, { deltaY: parseFloat(a || '') || void 0 }); 851 break; 852 case er.ToggleFS: 853 ex(); 854 break; 855 default: 856 Q(l); 857 } 858 return; 859 } 860 if (!i?.contains(o)) return; 861 let s = { srcEvent: n }; 862 if ((Q(R('clickAction'), s), R('dblClickAction'))) { 863 let e = Date.now(), 864 n = e - (eu || e); 865 (eu = e), 866 n > 0 && n <= 250 867 ? (t && (clearTimeout(t), (t = void 0)), Q(R('dblClickAction'), s)) 868 : (t = setTimeout(() => { 869 Q(R('singleClickAction'), s); 870 }, 250)); 871 } 872 } 873 function z(e) { 874 if ( 875 ((p = e), 876 !P() || 877 !V() || 878 L.scale <= 1 || 879 S.scale <= 1 || 880 (i?.dataset.animationName || '').indexOf('zoom') > -1) 881 ) 882 return; 883 let t = q(S.scale); 884 if (!t) return; 885 let { x: n, y: o } = t; 886 Q(er.Pan, { deltaX: n - S.x, deltaY: o - S.y }); 887 } 888 function k() { 889 e && (b(e, 'is-loading'), e.querySelector('.f-spinner')?.remove()); 890 } 891 function $() { 892 if (!e || !r) return; 893 if ((k(), r instanceof HTMLImageElement && !(r.complete && r.naturalWi
893dth))) { 894 (y = es.Error), i?.classList.add('has-error'), C('error'); 895 return; 896 } 897 C('loaded'); 898 let { width: t, height: n } = H(); 899 r instanceof HTMLImageElement && 900 (r.setAttribute('width', t + ''), r.setAttribute('height', n + '')), 901 i && 902 (b(i, 'has-error'), 903 r instanceof HTMLImageElement && 904 (i.setAttribute('width', t + ''), 905 i.setAttribute('height', n + ''), 906 (i.style.aspectRatio = `${t / n || ''}`))), 907 (g = j() 908 .on('start', (e, t) => { 909 void 0 !== t.angle && (t.angle = 90 * Math.round(t.angle / 90)), 910 void 0 !== t.flipX && (t.flipX = t.flipX > 0 ? 1 : -1), 911 void 0 !== t.flipY && (t.flipY = t.flipY > 0 ? 1 : -1), 912 (S = { ...ea, ...t }), 913 J(), 914 C('animationStart'); 915 }) 916 .on('pause', (e) => { 917 S = { ...ea, ...e }; 918 }) 919 .on('step', (e) => { 920 if (!P()) return void g?.end(); 921 if ( 922 ((L = { ...ea, ...e }), V() || !R('bounds') || eb() || S.scale > L.scale || S.scale < W()) 923 ) 924 return void et(); 925 let t = Y(S.scale), 926 n = !1, 927 o = !1, 928 i = !1, 929 r = !1; 930 L.x < t.x[0] && (n = !0), 931 L.x > t.x[1] && (o = !0), 932 L.y < t.y[0] && (r = !0), 933 L.y > t.y[1] && (i = !0); 934 let l = !1, 935 a = !1, 936 s = !1, 937 c = !1; 938 S.x < t.x[0] && (l = !0), 939 S.x > t.x[1] && (a = !0), 940 S.y < t.y[0] && (c = !0), 941 S.y > t.y[1] && (s = !0); 942 let u = !1; 943 ((o && a) || (n && l)) && ((S.x = h(t.x[0], S.x, t.x[1])), (u = !0)), 944 ((i && s) || (r && c)) && ((S.y = h(t.y[0], S.y, t.y[1])), (u = !0)), 945 u && 946 g && 947 g 948 .spring({ 949 tension: 94, 950 friction: 17, 951 maxSpeed: 555 * S.scale, 952 restDelta: 0.1, 953 restSpeed: 0.1, 954 velocity: g.getCurrentVelocities(), 955 }) 956 .from(L) 957 .to(S) 958 .start(), 959 et(); 960 }) 961 .on('end', () => { 962 d?.isPointerDown() || K(), g?.isRunning() || (J(), C('animationEnd')); 963 })), 964 (function () { 965 let e = R('gestures'); 966 if (!e || !a || !r) return; 967 let t = !1; 968 d = ee(a, e) 969 .on('start', (e) => { 970 if (!R('gestures') || !g || !P() || V()) return; 971 let n = e.srcEvent; 972 (L.scale > 1 || e.currentTouch.length > 1) && (n?.stopPropagation(), g.pause(), (t = !0)), 973 1 === e.currentTouch.length && C('touchStart'); 974 }) 975 .on('move', (e) => { 976 t && 977 (1 !== S.scale || e.currentTouch.length > 1) && 978 (eo(e.srcEvent), e.srcEvent?.stopPropagation()); 979 }) 980 .on('pan', (e) => { 981 if (!t) return; 982 let n = e.srcEvent; 983 (1 !== S.scale || e.currentTouch.length > 1) && (eo(n), Q(er.Pan, e)); 984 }) 985 .on('swipe', (e) => { 986 t && S.scale > 1 && Q(er.Swipe, e); 987 }) 988 .on('tap', (e) => { 989 C('click', e); 990 }) 991 .on('singleTap', (e) => { 992 C('singleClick', e); 993 }) 994 .on('doubleTap', (e) => { 995 C('dblClick', e); 996 }) 997 .on('pinch', (e) => { 998 t && (e.scale > W() ? Q(er.ZoomIn, e) : e.scale < W() ? Q(er.ZoomOut, e) : Q(er.Pan, e)); 999 }) 1000 .on('end', (e) => { 1001 t && 1002 (e.currentTouch.length 1003 ? (e.srcEvent.stopPropagation(), eo(e.srcEvent), g?.end()) 1004 : ((t = !1), J(), K(), C('touchEnd'))); 1005 }) 1006 .init(); 1007 })(), 1008 a && 1009 (a.addEventListener('wheel', O, { passive: !1 }), 1010 T.push(() => { 1011 a?.removeEventListener('wheel', O, { passive: !1 }); 1012 })), 1013 e?.addEventListener('click', I), 1014 document?.addEventListener('mousemove', z), 1015 T.push(() => { 1016 e?.removeEventListener('click', I), document?.removeEventListener('mousemove', z); 1017 }); 1018 let o = F(); 1019 (L = { ...o }), 1020 (S = { ...o }), 1021 (y = es.Ready), 1022 et(), 1023 J(), 1024 C('ready'), 1025 requestAnimationFrame(() => { 1026 y === es.Ready && (k(), a && (a.style.visibility = '')); 1027 }); 1028 } 1029 function F() { 1030 let e = { ...(R('startPos') || {}) }, 1031 t = e.scale, 1032 n = 1; 1033 n = 'string' == typeof t ? N(t) : 'number' == typeof t ? t : W(); 1034 let o = { ...ea, ...e, scale: n }, 1035 i = V() ? q(n) : void 0; 1036 if (i) { 1037 let { x: e, y: t } = i; 1038 (o.x = e), (o.y = t); 1039 } 1040 return o; 1041 } 1042 function _() { 1043 let e = { top: 0, left: 0, width: 0, height: 0 }; 1044 if (i) { 1045 let t = i.getBoundingClientRect(); 1046 S.angle % 180 == 90 1047 ? ((e.top = t.top + 0.5 * t.height - 0.5 * t.width), 1048 (e.left = t.left + 0.5 * t.width - 0.5 * t.height), 1049 (e.width = t.height), 1050 (e.height = t.width)) 1051 : ((e.top = t.top), (e.left = t.left), (e.width = t.width), (e.height = t.height)); 1052 } 1053 return e; 1054 } 1055 function H() { 1056 let e = R('width'), 1057 t = R('height'); 1058 if (r && 'auto' === e) { 1059 let t = r.getAttribute('width'); 1060 e = t 1061 ? parseFloat(t + '') 1062 : void 0 !== r.dataset.width 1063 ? parseFloat(r.dataset.width + '') 1064 : a instanceof HTMLImageElement
1065 ? a.naturalWidth 1066 : r instanceof HTMLImageElement 1067 ? r.naturalWidth 1068 : i?.getBoundingClientRect().width || 0; 1069 } else e = s(e) ? parseFloat(e) : e; 1070 if (r && 'auto' === t) { 1071 let e = r.getAttribute('height'); 1072 t = e 1073 ? parseFloat(e + '') 1074 : void 0 !== r.dataset.height 1075 ? parseFloat(r.dataset.height + '') 1076 : a instanceof HTMLImageElement 1077 ? a.naturalHeight 1078 : r instanceof HTMLImageElement 1079 ? r.naturalHeight 1080 : i?.getBoundingClientRect().height || 0; 1081 } else t = s(t) ? parseFloat(t) : t; 1082 return { width: e, height: t }; 1083 } 1084 function D() { 1085 let e = _(); 1086 return { width: e.width, height: e.height }; 1087 } 1088 function V() { 1089 return 'mousemove' === R('panMode') && matchMedia('(hover: hover)').matches; 1090 } 1091 function q(e) { 1092 let t = p || R('event'), 1093 n = i?.getBoundingClientRect(); 1094 if (!t || !n || e <= 1) return { x: 0, y: 0 }; 1095 let o = (t.clientX || 0) - n.left, 1096 r = (t.clientY || 0) - n.top, 1097 { width: l, height: a } = D(), 1098 s = Y(e); 1099 if (e > 1) { 1100 let t = R('mouseMoveFactor'); 1101 t > 1 && (e *= t); 1102 } 1103 let c = l * e, 1104 u = a * e, 1105 d = (c - l) * 0.5 - (((o / l) * 100) / 100) * (c - l), 1106 f = (u - a) * 0.5 - (((r / a) * 100) / 100) * (u - a); 1107 return { x: (d = h(s.x[0], d, s.x[1])), y: (f = h(s.y[0], f, s.y[1])) }; 1108 } 1109 function N(t) { 1110 if (!t) return S.scale; 1111 if (!e) return 1; 1112 let n = e.getBoundingClientRect(), 1113 o = _(), 1114 { width: i, height: r } = H(), 1115 l = (e) => { 1116 if ('number' == typeof e) return e; 1117 switch (e) { 1118 case 'min': 1119 case 'base': 1120 return 1; 1121 case 'cover': 1122 return Math.max(n.height / o.height, n.width / o.width) || 1; 1123 case 'full': 1124 case 'max': { 1125 let e = S.angle % 180 == 90 ? r : i; 1126 return e && o.width ? e / o.width : 1; 1127 } 1128 } 1129 }, 1130 a = R('minScale'), 1131 s = R('maxScale'), 1132 c = Math.min(l('full'), l(a)), 1133 u = 'number' == typeof s ? l('full') * s : Math.min(l('full'), l(s)); 1134 switch (t) { 1135 case 'min': 1136 return c; 1137 case 'base': 1138 return h(c, 1, u); 1139 case 'cover': 1140 return l('cover'); 1141 case 'full': 1142 return Math.min(u, l('full')); 1143 case 'max': 1144 return u; 1145 } 1146 } 1147 function B() { 1148 return N('min'); 1149 } 1150 function W() { 1151 return N('base'); 1152 } 1153 function U() { 1154 return N('full'); 1155 } 1156 function X() { 1157 return N('max'); 1158 } 1159 function Y(t) { 1160 let n = { x: [0, 0], y: [0, 0] }, 1161 o = e?.getBoundingClientRect(); 1162 if (!o) return n; 1163 let i = _(), 1164 r = o.width, 1165 l = o.height, 1166 a = i.width, 1167 s = i.height, 1168 c = (t = void 0 === t ? S.scale : t), 1169 u = t; 1170 if (V() && t > 1) { 1171 let e = R('mouseMoveFactor'); 1172 e > 1 && (a * t > r + 0.01 && (c *= e), s * t > l + 0.01 && (u *= e)); 1173 } 1174 return ( 1175 (a *= c), 1176 (s *= u), 1177 t > 1 && 1178 (a > r && ((n.x[0] = (r - a) * 0.5), (n.x[1] = (a - r) * 0.5)), 1179 (n.x[0] -= (i.left - o.left) * 0.5), 1180 (n.x[1] -= (i.left - o.left) * 0.5), 1181 (n.x[0] -= (i.left + i.width - o.right) * 0.5), 1182 (n.x[1] -= (i.left + i.width - o.right) * 0.5), 1183 s > l && ((n.y[0] = (l - s) * 0.5), (n.y[1] = (s - l) * 0.5)), 1184 (n.y[0] -= (i.top - o.top) * 0.5), 1185 (n.y[1] -= (i.top - o.top) * 0.5), 1186 (n.y[0] -= (i.top + i.height - o.bottom) * 0.5), 1187 (n.y[1] -= (i.top + i.height - o.bottom) * 0.5)), 1188 n 1189 ); 1190 } 1191 function K() { 1192 if (!P() || !R('bounds') || !g) return; 1193 let e = B(), 1194 t = X(), 1195 n = h(e, S.scale, t); 1196 if (S.scale < e - 0.01 || S.scale > t + 0.01) return void Q(er.ZoomTo, { scale: n }); 1197 if (g.isRunning() || eb()) return; 1198 let o = Y(n); 1199 S.x < o.x[0] || S.x > o.x[1] || S.y < o.y[0] || S.y > o.y[1] 1200 ? ((S.x = h(o.x[0], S.x, o.x[1])), 1201 (S.y = h(o.y[0], S.y, o.y[1])), 1202 g.spring({ 1203 tension: 170, 1204 friction: 17, 1205 restDelta: 0.001, 1206 restSpeed: 0.001, 1207 maxSpeed: 1 / 0, 1208 velocity: g.getCurrentVelocities(), 1209 }), 1210 g.from(L).to(S).start()) 1211 : et(); 1212 } 1213 function J(t) { 1214 if (!P()) return; 1215 let n = ev(), 1216 o = eb(), 1217 r = eE(), 1218 l = ew(), 1219 a = eg(), 1220 s = em(); 1221 E(i, 'is-fullsize', l),
1222 E(i, 'is-expanded', r), 1223 E(i, 'is-dragging', o), 1224 E(i, 'can-drag', n), 1225 E(i, 'will-zoom-in', a), 1226 E(i, 'will-zoom-out', s); 1227 let c = eh(), 1228 u = ey(), 1229 d = ep(), 1230 f = !P(); 1231 for (let n of (t || e)?.querySelectorAll('[data-panzoom-action]') || []) { 1232 let e = n.dataset.panzoomAction, 1233 t = !1; 1234 if (f) t = !0; 1235 else 1236 switch (e) { 1237 case er.ZoomIn: 1238 c || (t = !0); 1239 break; 1240 case er.ZoomOut: 1241 d || (t = !0); 1242 break; 1243 case er.ToggleFull: { 1244 u || d || (t = !0); 1245 let e = n.querySelector('g'); 1246 e && (e.style.display = l && !t ? 'none' : ''); 1247 break; 1248 } 1249 case er.IterateZoom: { 1250 c || d || (t = !0); 1251 let e = n.querySelector('g'); 1252 e && (e.style.display = c || t ? '' : 'none'); 1253 break; 1254 } 1255 case er.ToggleCover: 1256 case er.ToggleMax: 1257 c || d || (t = !0); 1258 } 1259 t 1260 ? (n.setAttribute('aria-disabled', ''), n.setAttribute('tabindex', '-1')) 1261 : (n.removeAttribute('aria-disabled'), n.removeAttribute('tabindex')); 1262 } 1263 } 1264 function Q(t, n) { 1265 if ( 1266 !t || 1267 !e || 1268 !r || 1269 !g || 1270 !P() || 1271 (t === er.Swipe && Math.abs(g.getCurrentVelocities().scale) > 0.01) 1272 ) 1273 return; 1274 let o = { ...S }, 1275 i = { ...S }, 1276 l = Y(V() ? o.scale : L.scale), 1277 a = g.getCurrentVelocities(), 1278 s = _(); 1279 n = n || {};
1280 let c = (n.currentTouch?.length || 0) > 1, 1281 u = n.velocityX || 0, 1282 d = n.velocityY || 0, 1283 f = n.center; 1284 n.srcEvent && (f = G(Z(n.srcEvent))); 1285 let m = n.deltaX || 0, 1286 p = n.deltaY || 0; 1287 switch (t) { 1288 case er.MoveRight: 1289 m = n.deltaX || 100; 1290 break; 1291 case er.MoveLeft: 1292 m = n.deltaX || -100; 1293 break; 1294 case er.MoveUp: 1295 p = n.deltaY || -100; 1296 break; 1297 case er.MoveDown: 1298 p = n.deltaY || 100; 1299 } 1300 let y = []; 1301 if ('number' == typeof t) i.scale = t; 1302 else 1303 switch (t) { 1304 case er.Reset: 1305 (i = { ...ea }).scale = W(); 1306 break; 1307 case er.ZoomTo: 1308 case er.ZoomIn: 1309 case er.ZoomOut: 1310 case er.ToggleCover: 1311 case er.ToggleFull: 1312 case er.ToggleMax: 1313 case er.IterateZoom: 1314 case er.Zoom: 1315 i.scale = el(t, n); 1316 break; 1317 case er.Pan: 1318 case er.Move: 1319 case er.MoveLeft: 1320 case er.MoveRight: 1321 case er.MoveUp: 1322 case er.MoveDown: 1323 if (eb()) { 1324 let e = 1, 1325 t = 1; 1326 i.x <= l.x[0] && 1327 u <= 0 && 1328 (e = 0.2 * Math.max(0.01, 1 - Math.abs((1 / s.width) * Math.abs(i.x - l.x[0])))), 1329 i.x >= l.x[1] && 1330 u >= 0 && 1331 (e = 0.2 * Math.max(0.01, 1 - Math.abs((1 / s.width) * Math.abs(i.x - l.x[1])))), 1332 i.y <= l.y[0] && 1333 d <= 0 && 1334 (t = 0.2 * Math.max(0.01, 1 - Math.abs((1 / s.height) * Math.abs(i.y - l.y[0])))), 1335 i.y >= l.y[1] && 1336 d >= 0 && 1337 (t = 0.2 * Math.max(0.01, 1 - Math.abs((1 / s.height) * Math.abs(i.y - l.y[1])))), 1338 (i.x += m * e), 1339 (i.y += p * t); 1340 } else (i.x = h(l.x[0], i.x + m, l.x[1])), (i.y = h(l.y[0], i.y + p, l.y[1])); 1341 break; 1342 case er.Swipe: 1343 let v = (e = 0) => Math.sign(e) * Math.pow(Math.abs(e), 1.5); 1344 (i.x += h(-1e3, v(u), 1e3)), 1345 (i.y += h(-1e3, v(d), 1e3)), 1346 d && !u && (i.x = h(l.x[0], i.x, l.x[1])), 1347 !d && u && (i.y = h(l.y[0], i.y, l.y[1])), 1348 (a.x = u), 1349 (a.y = d); 1350 break; 1351 case er.RotateCW: 1352 i.angle += 90; 1353 break; 1354 case er.RotateCCW: 1355 i.angle -= 90; 1356 break; 1357 case er.FlipX: 1358 i.flipX *= -1; 1359 break; 1360 case er.FlipY: 1361 i.flipY *= -1; 1362 } 1363 if ( 1364 (void 0 !== L.angle && 1365 Math.abs(L.angle) >= 360 && 1366 ((i.angle -= 360 * Math.floor(L.angle / 360)), (L.angle -= 360 * Math.floor(L.angle / 360))), 1367 y.length) 1368 ) { 1369 let e = y.findIndex((e) => e > i.scale + 1 / en); 1370 i.scale = y[e] || y[0]; 1371 } 1372 if ((c && (i.scale = h(B() * (c ? 0.8 : 1), i.scale, X() * (c ? 1.6 : 1))), V())) { 1373 let e = q(i.scale); 1374 if (e) { 1375 let { x: t, y: n } = e; 1376 (i.x = t), (i.y = n); 1377 } 1378 } else if (Math.abs(i.scale - o.scale) > 1e-4) { 1379 let t = 0, 1380 n = 0; 1381 if (f) (t = f.x), (n = f.y); 1382 else { 1383 let o = e.getBoundingClientRect(); 1384 (t = o.x + 0.5 * o.width), (n = o.y + 0.5 * o.height); 1385 } 1386 let r = t - s.left, 1387 a = n - s.top; 1388 (r -= 0.5 * s.width), (a -= 0.5 * s.height); 1389 let u = (r - o.x) / o.scale, 1390 d = (a - o.y) / o.scale; 1391 (i.x = r - u * i.scale), 1392 (i.y = a - d * i.scale), 1393 !c && 1394 R('bounds') && 1395 ((l = Y(i.scale)), (i.x = h(l.x[0], i.x, l.x[1])), (i.y = h(l.y[0], i.y, l.y[1]))); 1396 } 1397 if (t === er.Swipe) { 1398 let e = 500 * i.scale; 1399 g.spring({ 1400 tension: 94, 1401 friction: 17, 1402 maxSpeed: e, 1403 restDelta: 0.1, 1404 restSpeed: 0.1, 1405 velocity: a, 1406 }); 1407 } else 1408 t === er.Pan || c 1409 ? g.spring({ tension: 900, friction: 17, restDelta: 0.01, restSpeed: 0.01, maxSpeed: 1 }) 1410 : g.spring({ 1411 tension: 170, 1412 friction: 17, 1413 restDelta: 0.001, 1414 restSpeed: 0.001, 1415 maxSpeed: 1 / 0, 1416 velocity: a, 1417 }); 1418 if (0 === n.velocity || x(L, i)) (L = { ...i }), (S = { ...i }), g.end(), et(), J(); 1419 else {
1420 if (x(S, i)) return; 1421 g.from(L).to(i).start(); 1422 } 1423 C('action', t); 1424 } 1425 function et() { 1426 if (!r || !i || !a) return; 1427 let { width: t, height: n } = H(); 1428 Object.assign(i.style, { maxWidth: `min(${t}px, 100%)`, maxHeight: `min(${n}px, 100%)` }); 1429 let { 1430 x: o, 1431 y: l, 1432 width: s, 1433 height: c, 1434 scale: u, 1435 angle: d, 1436 flipX: f, 1437 flipY: g, 1438 } = (function () { 1439 let { width: t, height: n } = H(), 1440 { width: o, height: i } = D(); 1441 if (!e) 1442 return { 1443 x: 0, 1444 y: 0, 1445 width: 0, 1446 height: 0, 1447 scale: 0, 1448 flipX: 0, 1449 flipY: 0, 1450 angle: 0, 1451 fitWidth: o, 1452 fitHeight: i, 1453 fullWidth: t, 1454 fullHeight: n, 1455 }; 1456 let { x: r, y: l, scale: a, angle: s, flipX: c, flipY: u } = L, 1457 d = 1 / U(), 1458 f = t, 1459 g = n, 1460 m = L.scale * d, 1461 p = S.scale * d, 1462 h = Math.max(o, i), 1463 y = Math.min(o, i); 1464 t > n ? ((f = h), (g = y)) : ((f = y), (g = h)), 1465 (m = t > n ? (h * a) / t || 1 : (h * a) / n || 1); 1466 let v = f ? t * p : 0, 1467 b = g ? n * p : 0, 1468 E = f && g ? (t * m) / v : 0; 1469 return { 1470 x: (r = r + 0.5 * f - 0.5 * v), 1471 y: (l = l + 0.5 * g - 0.5 * b), 1472 width: v, 1473 height: b, 1474 scale: E, 1475 flipX: c, 1476 flipY: u, 1477 angle: s, 1478 fitWidth: o, 1479 fitHeight: i, 1480 fullWidth: t, 1481 fullHeight: n, 1482 }; 1483 })(), 1484 m = `translate(${ei(o)}px, ${ei(l)}px)`; 1485 1 !== f || 1 !== g 1486 ? (m += ` scaleX(${ei(u * f)}) scaleY(${ei(u * g)})`) 1487 : (m += ` scale(${ei(u)})`), 1488 0 !== d && (m += ` rotate(${d}deg)`), 1489 (a.style.width = `${ei(s)}px`), 1490 (a.style.height = `${ei(c)}px`), 1491 (a.style.transform = `${m}`), 1492 C('render'); 1493 } 1494 function el(e = R('clickAction'), t = {}) { 1495 let n = S.scale, 1496 o = W(), 1497 i = []; 1498 if ('number' == typeof e) o = e; 1499 else if (e) { 1500 switch (e) { 1501 case er.ZoomTo: 1502 o = t.scale || 1; 1503 break; 1504 case er.ZoomIn: 1505 o = n * (t.scale || 2); 1506 break; 1507 case er.ZoomOut: 1508 o = n * (t.scale || 0.5); 1509 break; 1510 case er.ToggleCover: 1511 i = [W(), N('cover')]; 1512 break; 1513 case er.ToggleFull: 1514 i = [W(), U()]; 1515 break; 1516 case er.ToggleMax: 1517 i = [W(), X()]; 1518 break; 1519 case er.IterateZoom: 1520 i = [W(), U(), X()]; 1521 break; 1522 case er.Zoom: 1523 let r = U(); 1524 o = n >= r - 0.05 ? W() : Math.min(r, n * (t.scale || 2)); 1525 } 1526 if (i.length) { 1527 let e = i.findIndex((e) => e > n + 1 / en); 1528 o = i[e] || W(); 1529 } 1530 } 1531 return e !== er.ZoomTo && (o = h(B(), o, X())), o; 1532 } 1533 function eg() { 1534 return !!(P() && el() > S.scale); 1535 } 1536 function em() { 1537 return !!(P() && el() < S.scale); 1538 } 1539 function ep() { 1540 return !!(P() && S.scale > B()); 1541 } 1542 function eh() { 1543 return !!(P() && S.scale < X()); 1544 } 1545 function ey() { 1546 return !!(P() && S.scale < U()); 1547 } 1548 function ev() { 1549 return !!(P() && eE() && d && !V()); 1550 } 1551 function eb() { 1552 return !!(P() && d?.isPointerDown() && !V()); 1553 } 1554 function eE() { 1555 return !!(P() && S.scale > W()); 1556 } 1557 function ew() { 1558 return !!(P() && S.scale >= U()); 1559 } 1560 function ex() { 1561 let t = 'in-fullscreen', 1562 n = 'with-panzoom-in-fullscreen'; 1563 e?.classList.toggle(t); 1564 let o = e?.classList.contains(t); 1565 o 1566 ? (document.documentElement.classList.add(n), document.addEventListener('keydown', eM, !0)) 1567 : (document.documentElement.classList.remove(n), 1568 document.removeEventListener('keydown', eM, !0)), 1569 et(), 1570 C(o ? 'enterFS' : 'exitFS'); 1571 } 1572 function eM(e) { 1573 'Escape' !== e.key || e.defaultPrevented || ex(); 1574 } 1575 let eL = { 1576 canDrag: ev, 1577 canZoomIn: eh, 1578 canZoomOut: ep, 1579 canZoomToFull: ey, 1580 destroy: function () { 1581 for (let e of (C('destroy'), Object.values(M))) e?.destroy(eL); 1582 for (let e of T) e(); 1583 return ( 1584 i && ((i.style.aspectRatio = ''), (i.style.maxWidth = ''), (i.style.maxHeight = '')), 1585 a && ((a.style.width = ''), (a.style.height = ''), (a.style.transform = '')), 1586 (i = void 0), 1587 (r = void 0), 1588 (a = void 0), 1589 (L = { ...ea }), 1590 (S = { ...ea }), 1591 g?.destroy(), 1592 (g = void 0), 1593 d?.destroy(), 1594 (d = void 0), 1595 (y = es.Destroyed), 1596 eL 1597 ); 1598 }, 1599 emit: C, 1600 execute: Q, 1601 getBoundaries: Y, 1602 getContainer: function () { 1603 return e; 1604 }, 1605 getContent: function () { 1606 return r; 1607 }, 1608 getFullDim: H, 1609 getGestures: function () { 1610 return d; 1611 }, 1612 getMousemovePos: q, 1613 getOptions: function () { 1614 return w; 1615 }, 1616 getPlugins: function () { 1617 return M; 1618 }, 1619 getScale: N, 1620 getStartPosition: F, 1621 getState: function () { 1622 return y; 1623 }, 1624 getTransform: function (e) { 1625 return !0 === e ? S : L; 1626 }, 1627 getTween: function () { 1628 return g; 1629 }, 1630 getViewport: function () { 1631 return a; 1632 }, 1633 getWrapper: function () { 1634 return i; 1635 }, 1636 init: function () { 1637 return ( 1638 (y = es.Init), 1639 C('init'), 1640 (function () { 1641 for (let [e, t] of Object.entries({ ...o, ...(w.plugins || {}) })) 1642 if (e && !M[e] && t instanceof Function) { 1643 let n = t(); 1644 n.init(eL), (M[e] = n); 1645 } 1646 C('initPlugins'); 1647 })(), 1648 (function () { 1649 let t = { ...ec.classes, ...R('classes') }, 1650 n = t.content?.split(' ').shift(), 1651 o = t.wrapper?.split(' ').shift(), 1652 s = t.viewport?.split(' ').shift(); 1653 if ( 1654 n && 1655 o && 1656 s && 1657 e && 1658 (v(e, t.container), (r = e.querySelector(`.${n}:not(.is-clone)`))) 1659 ) { 1660 if ( 1661 (r.setAttribute('draggable', 'false'), 1662 (i = e.querySelector(`.${o}`)) || 1663 (v((i = document.createElement('div')), t.wrapper), 1664 r.insertAdjacentElement('beforebegin', i), 1665 i.insertAdjacentElement('afterbegin', r)), 1666 (a = e.querySelector(`.${s}`)) || 1667 (v((a = document.createElement('div')), t.viewport), 1668 i.insertAdjacentElement('beforeend', a)), 1669 a.contains(r) || a.insertAdjacentElement('afterbegin', r), 1670 (l = e.querySelector(`.${n}.is-clone`)) || 1671 ((l = r.cloneNode(!0)).removeAttribute('id'), 1672 v(l, 'is-clone'), 1673 i.insertAdjacentElement('afterbegin', l)), 1674 r instanceof HTMLPictureElement && (r = r.querySelector('img')), 1675 l instanceof HTMLPictureElement && (l = l.querySelector('img')), 1676 a instanceof HTMLPictureElement && (a = a.querySelector('img')), 1677 a && ((a.style.visibility = 'hidden'), R('protected'))) 1678 ) { 1679 a.addEventListener('contextmenu', (e) => { 1680 eo(e); 1681 }); 1682 let e = document.createElement('div'); 1683 v(e, 'f-panzoom__protected'), a.appendChild(e); 1684 } 1685 C('initLayout'); 1686 } 1687 })(), 1688 (function () { 1689 if (e && i && !m) { 1690 let e = null; 1691 (m = new ResizeObserver(() => { 1692 P() && 1693 (e = 1694 e || 1695 requestAnimationFrame(() => { 1696 P() && (J(), K(), C('refresh')), (e = null); 1697 })); 1698 })).observe(i), 1699 T.push(() => { 1700 m?.disconnect(), (m = void 0), e && (cancelAnimationFrame(e), (e = null)); 1701 }); 1702 } 1703 })(), 1704 (function () { 1705 if (!e || !r) return; 1706 if (!(r instanceof HTMLImageElement && l instanceof HTMLImageElement)) return $(); 1707 let t = () => { 1708 r && 1709 r instanceof HTMLImageElement && 1710 r 1711 .decode() 1712 .then(() => { 1713 $(); 1714 }) 1715 .catch(() => { 1716 $(); 1717 }); 1718 }; 1719 ((y = es.Loading), e.classList.add('is-loading'), C('loading'), l.src && l.complete) 1720 ? t() 1721 : ((function () { 1722 if (!e || e?.querySelector('.f-spinner')) return; 1723 let t = u(R('spinnerTpl')); 1724 t && 1725 (t.classList.add('f-spinner'), 1726 e.classList.add('is-loading'), 1727 i?.insertAdjacentElement('afterbegin', t)); 1728 })(), 1729 l.addEventListener('load', t, !1), 1730 l.addEventListener('error', t, !1), 1731 T.push(() => { 1732 l?.removeEventListener('load', t, !1), l?.removeEventListener('error', t, !1); 1733 })); 1734 })(), 1735 eL 1736 ); 1737 }, 1738 isDragging: eb, 1739 isExpanded: eE, 1740 isFullsize: ew, 1741 isMousemoveMode: V, 1742 localize: function (e, t = []) { 1743 let n = R('l10n') || {}; 1744 e = String(e).replace(/\{\{(\w+)\}\}/g, (e, t) => n[t] || e); 1745 for (let n = 0; n < t.length; n++) e = e.split(t[n][0]).join(t[n][1]); 1746 return e.replace(/\{\{(.*?)\}\}/g, (e, t) => t); 1747 }, 1748 off: function (e, t) { 1749 for (let n of e instanceof Array ? e : [e]) 1750 A.has(n) && 1751 A.set( 1752 n, 1753 A.get(n).filter((e) => e !== t) 1754 ); 1755 return eL; 1756 }, 1757 on: function (e, t) { 1758 for (let n of e instanceof Array ? e : [e]) A.set(n, [...(A.get(n) || []), t]); 1759 return eL; 1760 }, 1761 toggleFS: ex, 1762 updateControls: J, 1763 version: '6.1.13', 1764 willZoomIn: eg, 1765 willZoomOut: em, 1766 }; 1767 return eL; 1768 }; 1769 (eg.l10n = { en_EN: et }), (eg.getDefaults = () => ec); 1770 let em = (e, t) => { 1771 let n = []; 1772 return (
1773 e.childNodes.forEach((e) => { 1774 e.nodeType === Node.ELEMENT_NODE && (!t || e.matches(t)) && n.push(e); 1775 }), 1776 n 1777 ); 1778 }, 1779 ep = { 1780 ...et, 1781 ERROR: 'Something went wrong. <br /> Please try again later.', 1782 NEXT: 'Next page', 1783 PREV: 'Previous page', 1784 GOTO: 'Go to page #%d', 1785 DOWNLOAD: 'Download', 1786 TOGGLE_FULLSCREEN: 'Toggle full-screen mode', 1787 TOGGLE_EXPAND: 'Toggle full-size mode', 1788 TOGGLE_THUMBS: 'Toggle thumbnails', 1789 TOGGLE_AUTOPLAY: 'Toggle slideshow', 1790 }, 1791 eh = (e) => { 1792 e.cancelable && e.preventDefault(); 1793 }, 1794 ey = 1795 (((I = {})[(I.Init = 0)] = 'Init'), 1796 (I[(I.Ready = 1)] = 'Ready'), 1797 (I[(I.Destroyed = 2)] = 'Destroyed'), 1798 I), 1799 ev = 1800 (((z = {})[(z.Loading = 0)] = 'Loading'), 1801 (z[(z.Loaded = 1)] = 'Loaded'), 1802 (z[(z.Error = 2)] = 'Error'), 1803 z), 1804 eb = { 1805 adaptiveHeight: !1, 1806 center: !0, 1807 classes: { 1808 container: 'f-carousel', 1809 isEnabled: 'is-enabled', 1810 isLTR: 'is-ltr', 1811 isRTL: 'is-rtl', 1812 isHorizontal: 'is-horizontal', 1813 isVertical: 'is-vertical', 1814 hasAdaptiveHeight: 'has-adaptive-height', 1815 viewport: 'f-carousel__viewport', 1816 slide: 'f-carousel__slide', 1817 isSelected: 'is-selected', 1818 }, 1819 dragFree: !1, 1820 enabled: !0, 1821 errorTpl: '<div class="f-html">{{ERROR}}</div>', 1822 fill: !1, 1823 infinite: !0, 1824 initialPage: 0, 1825 l10n: ep, 1826 rtl: !1, 1827 slides: [], 1828 slidesPerPage: 'auto', 1829 spinnerTpl: '<div class="f-spinner"></div>', 1830 transition: 'fade', 1831 tween: { 1832 clamp: !0, 1833 mass: 1, 1834 tension: 160, 1835 friction: 25, 1836 restDelta: 1, 1837 restSpeed: 1, 1838 velocity: 0, 1839 }, 1840 vertical: !1, 1841 }, 1842 eE = 0, 1843 ew = (e, t = {}, o = {}) => { 1844 let i, r, l, d, g; 1845 eE++; 1846 let p = ey.Init, 1847 w = { ...eb }, 1848 x = { ...eb }, 1849 M = {}, 1850 L = null, 1851 S = null, 1852 T = 0, 1853 R = 0, 1854 P = 0, 1855 A = !1, 1856 C = !1, 1857 O = !1, 1858 I = 'height', 1859 z = 0, 1860 k = !0, 1861 $ = 0, 1862 F = 0, 1863 _ = 0, 1864 H = 0, 1865 D = '*', 1866 V = [], 1867 N = [], 1868 B = new Set(), 1869 W = [], 1870 Z = [], 1871 G = 0, 1872 U = 0, 1873 X = 0; 1874 function Y(e, ...t) { 1875 let n = x[e]; 1876 return n && n instanceof Function ? n(eF, ...t) : n; 1877 } 1878 function K(e, t = []) { 1879 let n = Y('l10n') || {}; 1880 e = String(e).replace(/\{\{(\w+)\}\}/g, (e, t) => n[t] || e); 1881 for (let n = 0; n < t.length; n++) e = e.split(t[n][0]).join(t[n][1]); 1882 return e.replace(/\{\{(.*?)\}\}/g, (e, t) => t); 1883 } 1884 let J = new Map(); 1885 function Q(e, ...t) { 1886 let n = [...(J.get(e) || [])]; 1887 for (let o of (x.on && n.push(x.on[e]), n)) o && o instanceof Function && o(eF, ...t); 1888 '*' !== e && Q('*', e, ...t); 1889 } 1890 function et() { 1891 let e = m({}, eb, w); 1892 m(e, eb, w); 1893 let t = '', 1894 n = w.breakpoints || {}; 1895 if (n) 1896 for (let [o, i] of Object.entries(n)) window.matchMedia(o).matches && ((t += o), m(e, i)); 1897 if (void 0 === g || t !== g) { 1898 if (((g = t), p !== ey.Init)) { 1899 let t = Z[$]?.slides[0]?.index; 1900 for (let n of (void 0 === t && (t = x.initialSlide), 1901 (e.initialSlide = t), 1902 (e.slides = []), 1903 V)) 1904 n.isVirtual && e.slides.push(n); 1905 } 1906 ez(), 1907 (x = e), 1908 !1 !== Y('enabled') && 1909 ((p = ey.Init), 1910 Q('init'), 1911 (function () { 1912 for (let [e, t] of Object.entries({ ...o, ...(x.plugins || {}) })) 1913 if (e && !M[e] && t instanceof Function) { 1914 let n = t(); 1915 n.init(eF, ew), (M[e] = n); 1916 } 1917 Q('initPlugins'); 1918 })(), 1919 (function () { 1920 if (!L) return; 1921 let e = Y('classes') || {}; 1922 v(L, e.container); 1923 let t = Y('style'); 1924 if (t && a(t)) for (let [e, n] of Object.entries(t)) L.style.setProperty(e, n); 1925 (S = L.querySelector(`.${e.viewport}`)) || 1926 (v((S = document.createElement('div')), e.viewport), 1927 S.append(...em(L, `.${e.slide}`)), 1928 L.insertAdjacentElement('afterbegin', S)), 1929 (L.carousel = eF), 1930 Q('initLayout'); 1931 })(), 1932 (function () { 1933 if (!S) return; 1934 let e = Y('classes') || {}; 1935 for (let t of ((V = []), 1936 [...em(S, `.${e.slide}
1936`)].forEach((e) => { 1937 if (e.parentElement) { 1938 let t = ef({ el: e, isVirtual: !1, ...(e.dataset || {}) }); 1939 Q('createSlide', t), V.push(t); 1940 } 1941 }), 1942 ev(), 1943 V)) 1944 Q('addSlide', t); 1945 for (let e of (ed(Y('slides')), V)) { 1946 let t = e.el; 1947 t?.parentElement === S && 1948 (v(t, x.classes.slide), v(t, e.class), eA(e), Q('attachSlideEl', e)); 1949 } 1950 Q('initSlides'); 1951 })(), 1952 ex(), 1953 (p = ey.Ready), 1954 v(L, (Y('classes') || {}).isEnabled || ''), 1955 eI(), 1956 el(), 1957 (r = j() 1958 .on('start', () => { 1959 (i && i.isPointerDown()) || (er(), eI()); 1960 }) 1961 .on('step', (e) => { 1962 let t = z; 1963 (z = e.pos) !== t && ((k = !1), eI()); 1964 }) 1965 .on('end', (e) => { 1966 !i?.isPointerDown() && 1967 ((z = e.pos), 1968 r && !A && (z < _ || z > H) 1969 ? r 1970 .spring({ 1971 clamp: !0, 1972 mass: 1, 1973 tension: 200, 1974 friction: 25, 1975 velocity: 0, 1976 restDelta: 1, 1977 restSpeed: 1, 1978 }) 1979 .from({ pos: z }) 1980 .to({ pos: h(_, z, H) }) 1981 .start() 1982 : k || ((k = !0), Q('settle'))); 1983 })), 1984 eo(), 1985 (function () { 1986 if (!L || !S) return; 1987 L.addEventListener('click', eT), document.addEventListener('mousemove', en); 1988 let e = S.getBoundingClientRect(); 1989 if (((G = e.height), (U = e.width), !l)) { 1990 let e = null; 1991 (l = new ResizeObserver(() => { 1992 e || 1993 (e = requestAnimationFrame(() => { 1994 (function () { 1995 if (p !== ey.Ready || !S) return; 1996 let e = Z.length, 1997 t = S.getBoundingClientRect(), 1998 n = t.height, 1999 o = t.width; 2000 (e > 1 && ((O && 0.5 > Math.abs(n - G)) || (!O && 0.5 > Math.abs(o - U)))) || 2001 (ex(), 2002 eo(), 2003 (G = n), 2004 (U = o), 2005 (O && !G) || 2006 (!O && !U) || 2007 (L && 2008 S && 2009 ((e === Z.length && i?.isPointerDown()) || 2010 (Y('dragFree') && (A || (z > _ && z < H)) 2011 ? (er(), eI()) 2012 : eC($, { transition: !1 }))))); 2013 })(), 2014 (e = null); 2015 })); 2016 })).observe(S); 2017 } 2018 })(), 2019 Q('ready')); 2020 } 2021 } 2022 function en(e) { 2023 n = e; 2024 } 2025 function eo() { 2026 if (!1 === Y('gestures')) i && (i.destroy(), (i = void 0)); 2027 else { 2028 let e; 2029 i || 2030 ((e = Y('gestures')), 2031 !i && 2032 !1 !== e && 2033 S && 2034 (i = ee(S, e) 2035 .on('start', (e) => { 2036 if (!r || !1 === Y('gestures', e)) return; 2037 let { srcEvent: t } = e; 2038 O && q(t) && !f(t.target) && eh(t), r.pause(), (r.getCurrentVelocities().pos = 0); 2039 let n = Z[$]?.slides[0], 2040 o = n?.el; 2041 if (n && B.has(n.index) && o) { 2042 let e; 2043 z = 2044 (n.offset || 0) + 2045 ({ 2046 width: (e = new DOMMatrixReadOnly(window.getComputedStyle(o).transform)).m41 || 0, 2047 height: e.m42 || 0, 2048 }[I] || 0) * 2049 (C && !O ? 1 : -1); 2050 } 2051 eL(), 2052 !A && 2053 (z < _ || z > H) && 2054 r 2055 .spring({ 2056 clamp: !0, 2057 mass: 1, 2058 tension: 500, 2059 friction: 25, 2060 velocity: r.getCurrentVelocities()?.pos || 0, 2061 restDelta: 1, 2062 restSpeed: 1, 2063 }) 2064 .from({ pos: z }) 2065 .to({ pos: h(_, z, H) }) 2066 .start(); 2067 }) 2068 .on('move', (e) => { 2069 if (!1 === Y('gestures', e)) return; 2070 let { srcEvent: t, axis: n, deltaX: o, deltaY: i } = e; 2071 if (q(t) && t.touches?.length > 1) return; 2072 let l = f(t.target), 2073 a = l ? (l.scrollHeight > l.clientHeight ? 'y' : 'x') : void 0; 2074 if (l && l !== S && (!n || n === a)) return; 2075 if (!n) { 2076 eh(t), t.stopPropagation(), t.stopImmediatePropagation(); 2077 return; 2078 } 2079 if (('y' === n && !O) || ('x' === n && O) || (eh(t), t.stopPropagation(), !r)) return; 2080 let s = C && !O ? 1 : -1, 2081 c = O ? i : o, 2082 u = r?.isRunning() ? r.getEndValues().pos : z, 2083 d = 1; 2084 !A && 2085 (u <= _ && c * s < 0 2086 ? (d = 0.2 * Math.max(0.01, 1 - (Math.abs((1 / T) * Math.abs(u - _)) || 0))) 2087 : u >= H && 2088 c * s > 0 && 2089 (d = 0.2 * Math.max(0.01, 1 - (Math.abs((1 / T) * Math.abs(u - H)) || 0)))), 2090 (u += c * d * s), 2091 r 2092 .spring({ 2093 clamp: !0, 2094 mass: 1, 2095 tension: 700, 2096 friction: 25, 2097 velocity: r.getCurrentVelocities()?.pos || 0, 2098 restDelta: 1, 2099 restSpeed: 1, 2100 }) 2101 .from({ pos: z }) 2102 .to({ pos: u }) 2103 .start(); 2104 }) 2105 .on('panstart', (e) => { 2106 !1 !== Y('gestures', e) && e?.axis === (O ? 'y' : 'x') && v(S, 'is-dragging'); 2107 }) 2108 .on('panend', (e) => { 2109 !1 !== Y('gestures', e) && b(S, 'is-dragging'); 2110 }) 2111 .on('end', (e) => { 2112 if (!1 === Y('gestures', e)) return; 2113 let { srcEvent: t, axis: n, velocityX: o, velocityY: i, currentTouch: l } = e; 2114 if (l.length > 0 || !r) return; 2115 let a = f(t.target), 2116 s = a ? (a.scrollHeight > a.clientHeight ? 'y' : 'x') : void 0, 2117 c = a && (!n || n === s); 2118 O && q(t) && !n && eT(t); 2119 let u = Z.length, 2120 d = Y('dragFree'); 2121 if (!u) return; 2122 let g = c ? 0 : Y('vertical') ? i : o; 2123 n !== (O ? 'y' : 'x') && (g = 0); 2124 let m = r?.isRunning() ? r.getEndValues().pos : z, 2125 p = C && !O ? 1 : -1; 2126 if ( 2127 (c || (m += g * (d ? 5 : 1) * p), !A && ((g * p <= 0 && m < _) || (g * p >= 0 && m > H))) 2128 ) { 2129 let e = 0; 2130 Math.abs(g) > 0 && (e = Math.min(0.3 * T, (e = 2 * Math.abs(g)))), 2131 (m = h(_ + -1 * e, m, H + e)), 2132 r 2133 .spring({ 2134 clamp: !0, 2135 mass: 1, 2136 tension: 380, 2137 friction: 25, 2138 velocity: -1 * g, 2139 restDelta: 1, 2140 restSpeed: 1, 2141 }) 2142 .from({ pos: z }) 2143 .to({ pos: m }) 2144 .start(); 2145 return; 2146 } 2147 if (d || M.Autoscroll?.isEnabled()) 2148 return void (Math.abs(g) > 10 2149 ? r 2150 .spring({ 2151 clamp: !0, 2152 mass: 1, 2153 tension: 150, 2154 friction: 25, 2155 velocity: -1 * g, 2156 restDelta: 1, 2157 restSpeed: 1, 2158 }) 2159 .from({ pos: z }) 2160 .to({ pos: m }) 2161 .start() 2162 : r.isRunning() || k || ((k = !0), Q('settle'))); 2163 if ( 2164 !(d || M.Autoscroll?.isEnabled()) && 2165 (!(e.offsetX || e.offsetY) || ('y' === n && !O) || ('x' === n && O)) 2166 ) 2167 return void eC($, { transition: 'tween' }); 2168 let y = es(m); 2169 Math.abs(g) > 10 && 2170 y === $ && 2171 (g > 0 ? (y += C && !O ? 1 : -1) : (y += C && !O ? -1 : 1)), 2172 eC(y, { transition: 'tween', tween: { velocity: -1 * g } }); 2173 })
2174 .init())); 2175 } 2176 E(S, 'is-draggable', !!i && Z.length > 0); 2177 } 2178 function ei(e = '*') { 2179 let t = []; 2180 for (let n of V) 2181 ('*' === e || (n.class && n.class.includes(e)) || (n.el && n.el?.classList.contains(e))) && 2182 t.push(n); 2183 (d = void 0), (D = e), (N = [...t]); 2184 } 2185 function er() { 2186 if (!r) return; 2187 let e = es(r?.isRunning() ? r.getEndValues().pos : z); 2188 e !== $ && ((d = $), ($ = e), eA(), el(), ea(), Q('change', $, d)); 2189 } 2190 function el() { 2191 if (!L) return; 2192 for (let e of L.querySelectorAll('[data-carousel-index]')) e.innerHTML = $ + ''; 2193 for (let e of L.querySelectorAll('[data-carousel-page]')) e.innerHTML = $ + 1 + ''; 2194 for (let e of L.querySelectorAll('[data-carousel-pages]')) e.innerHTML = Z.length + ''; 2195 for (let e of L.querySelectorAll('[data-carousel-go-to]')) 2196 parseInt(e.dataset?.carouselGoTo || '-1', 10) === $ 2197 ? e.setAttribute('aria-current', 'true') 2198 : e.removeAttribute('aria-current'); 2199 for (let e of L.querySelectorAll('[data-carousel-go-prev]')) 2200 e.toggleAttribute('aria-disabled', !ek()), 2201 ek() ? e.removeAttribute('tabindex') : e.setAttribute('tabindex', '-1'); 2202 for (let e of L.querySelectorAll('[data-carousel-go-next]')) 2203 e.toggleAttribute('aria-disabled', !e$()), 2204 e$() ? e.removeAttribute('tabindex') : e.setAttribute('tabindex', '-1'); 2205 let e = !1, 2206 t = Z[$]?.slides[0]; 2207 for (let n of (t && (t.downloadSrc || ('image' === t.type && t.src)) && (e = !0), 2208 L.querySelectorAll('[data-carousel-download]'))) 2209 n.toggleAttribute('aria-disabled', !e); 2210 } 2211 function ea(e) { 2212 e || (e = Z[$]?.slides[0]); 2213 let t = e?.el; 2214 if (t) for (let n of t.querySelectorAll('[data-slide-index]')) n.innerHTML = e.index + 1 + ''; 2215 } 2216 function es(e) { 2217 if (!Z.length) return 0; 2218 let t = ec(), 2219 n = e; 2220 A 2221 ? (n -= Math.floor((e - Z[0]?.pos) / t) * t || 0) 2222 : (n = h(Z[0]?.pos, e, Z[Z.length - 1]?.pos)); 2223 let o = new Map(), 2224 i = 0; 2225 for (let e of Z) { 2226 let r = Math.min(Math.abs(e.pos - n), Math.abs(e.pos - n - t), Math.abs(e.pos - n + t)); 2227 o.set(i, r), i++; 2228 } 2229 return parseInt( 2230 (o.size > 0 ? [...o.entries()].reduce((e, t) => (t[1] < e[1] ? t : e)) : [$, 0])[0] 2231 ); 2232 } 2233 function ec(e = !0) { 2234 return N.length ? N.reduce((e, t) => e + t.dim, 0) + (N.length - (A && e ? 0 : 1)) * X : 0; 2235 } 2236 function eu(e) { 2237 let t = ec(), 2238 n = T; 2239 if (!t || !S || !n) return []; 2240 let o = []; 2241 (e = void 0 === e ? z : e), A && (e -= Math.floor(e / t) * t || 0); 2242 let i = 0; 2243 for (let r of N) { 2244 let l = (t = 0) => { 2245 !(o.indexOf(r) > -1) && 2246 ((r.pos = i - e + t || 0), 2247 r.offset + t > e - r.dim - R + 0.51 && r.offset + t < e + n + P - 0.51 && o.push(r)); 2248 }; 2249 (r.offset = i), A && (l(t), l(-1 * t)), l(), (i += r.dim + X); 2250 } 2251 return o; 2252 } 2253 function ed(e, t) { 2254 let n = []; 2255 for (let t of Array.isArray(e) ? e : [e]) { 2256 let e = ef({ ...t, isVirtual: !0 }); 2257 e.el || (e.el = document.createElement('div')), Q('createSlide', e), n.push(e); 2258 } 2259 for (let e of (V.splice(void 0 === t ? V.length : t, 0, ...n), ev(), n)) 2260 Q('addSlide', e), 2261 (function (e) { 2262 let t = e.el; 2263 if (!e || !t) return; 2264 let n = e.html ? (e.html instanceof HTMLElement ? e.html : u(e.html)) : void 0; 2265 n && (v(n, 'f-html'), (e.htmlEl = n), v(t, 'has-html'), t.append(n), Q('contentReady', e)); 2266 })(e); 2267 return ei(D), n; 2268 } 2269 function ef(e) { 2270 return ( 2271 (s(e) || e instanceof HTMLElement) && (e = { html: e }), 2272 { 2273 index: -1, 2274 el: void 0, 2275 class: '', 2276 isVirtual: !0, 2277 dim: 0, 2278 pos: 0, 2279 offset: 0, 2280 html: '', 2281 src: '', 2282 ...e, 2283 } 2284 ); 2285 } 2286 function eg(e) { 2287 if (!S || !e) return; 2288 let t = e.el; 2289 if (t) { 2290 if ((t.setAttribute('index', e.index + ''), t.parentElement !== S)) { 2291 let n; 2292 for (let o of (v(t, x.classes.slide), v(t, e.class), eA(e), V)) 2293 if (o.index > e.index) { 2294 n = o.el; 2295 break; 2296 } 2297 S.insertBefore(t, n && S.contains(n) ? n : null), Q('attachSlideEl', e); 2298 } 2299 return ea(e), t; 2300 } 2301 } 2302 function ep(e) { 2303 let t = e?.el; 2304 t && (t.remove(), eM(t), Q('detachSlideEl', e)); 2305 } 2306 function ev() { 2307 for (let e = 0; e < V.length; e++) { 2308 let t = V[e], 2309 n = t.el; 2310 n && (t.index !== e && eM(n), n.setAttribute('index', `${e}`)), (t.index = e); 2311 } 2312 } 2313 function ex() { 2314 if (!L || !S) return; 2315 (C = Y('rtl')), (I = (O = Y('vertical')) ? 'height' : 'width'); 2316 let e = Y('classes'); 2317 if ( 2318 (E(L, e.isLTR, !C),
2319 E(L, e.isRTL, C), 2320 E(L, e.isHorizontal, !O), 2321 E(L, e.isVertical, O), 2322 E(L, e.hasAdaptiveHeight, Y('adaptiveHeight')), 2323 (T = 0), 2324 (R = 0), 2325 (P = 0), 2326 (X = 0), 2327 S) 2328 ) { 2329 S.childElementCount || (S.style.display = 'grid'); 2330 let e = S.getBoundingClientRect(); 2331 T = S.getBoundingClientRect()[I] || 0; 2332 let t = window.getComputedStyle(S); 2333 (X = parseFloat(t.getPropertyValue('--f-carousel-gap')) || 0), 2334 'visible' === t.getPropertyValue('overflow-' + (O ? 'y' : 'x')) && 2335 ((R = Math.abs(e[O ? 'top' : 'left'])), 2336 (P = Math.abs(window[O ? 'innerHeight' : 'innerWidth'] - e[O ? 'bottom' : 'right']))), 2337 (S.style.display = ''); 2338 } 2339 if (!T) return; 2340 let t = (function () { 2341 let e = 0; 2342 if (S) { 2343 let t = document.createElement('div'); 2344 (t.style.display = 'block'), 2345 v(t, x.classes.slide), 2346 S.appendChild(t), 2347 (e = t.getBoundingClientRect()[I]), 2348 t.remove(), 2349 (t = void 0); 2350 } 2351 return e; 2352 })(); 2353 for (let e of N) { 2354 let n = e.el, 2355 o = 0; 2356 if (!e.isVirtual && n && c(n)) { 2357 let e = !1; 2358 (n.parentElement && n.parentElement === S) || (S.appendChild(n), (e = !0)), 2359 (o = n.getBoundingClientRect()[I]), 2360 e && n.parentElement?.removeChild(n); 2361 } else o = t; 2362 e.dim = o; 2363 } 2364 if (((A = !1), Y('infinite'))) { 2365 A = !0; 2366 let e = ec(), 2367 t = T + R + P; 2368 for (let n = 0; n < N.length; n++) { 2369 let o = N[n]?.dim + X; 2370 if (e - o < t && e - o - t < o) { 2371 A = !1; 2372 break; 2373 } 2374 } 2375 } 2376 if ( 2377 (!(function () { 2378 let e; 2379 if (!L) return; 2380 let t = T, 2381 n = ec(!1), 2382 o = Y('slidesPerPage'); 2383 (o = 'auto' === o ? 1 / 0 : parseFloat(o + '')), (Z = []); 2384 let i = 0, 2385 r = 0; 2386 for (let e of N) 2387 (!Z.length || i + e.dim - t > 0.05 || r >= o) && 2388 (Z.push({ index: Z.length, slides: [], dim: 0, offset: 0, pos: 0 }), (i = 0), (r = 0)), 2389 Z[Z.length - 1]?.slides.push(e), 2390 (i += e.dim + X), 2391 r++; 2392 let l = Y('center'), 2393 a = Y('fill'), 2394 s = 0; 2395 for (let e of Z) { 2396 for (let t of ((e.dim = (e.slides.length - 1) * X), e.slides)) e.dim += t.dim; 2397 (e.offset = s), 2398 (e.pos = s), 2399 !1 !== l && (e.pos -= (t - e.dim) * 0.5), 2400 a && !A && n > t && (e.pos = h(0, e.pos, n - t)), 2401 (s += e.dim + X); 2402 } 2403 let c = []; 2404 for (let t of Z) { 2405 let n = { ...t }; 2406 e && 0.1 > Math.abs(n.pos - e.pos) 2407 ? ((e.dim += n.dim), (e.slides = [...e.slides, ...n.slides])) 2408 : ((e = n), (n.index = c.length), c.push(n)); 2409 } 2410 $ = h(0, $, (Z = c).length - 1); 2411 })(), 2412 (_ = Z[0]?.pos || 0), 2413 (H = Z[Z.length - 1]?.pos || 0), 2414 p === ey.Init) 2415 ) { 2416 let e; 2417 (d = void 0), 2418 ($ = Y('initialPage')), 2419 void 0 !== (e = Y('initialSlide') || void 0) && ($ = eF.getPageIndex(e) || 0), 2420 ($ = h(0, $, Z.length - 1)), 2421 (F = z = Z[$]?.pos || 0); 2422 } else F = Z[$ || 0]?.pos || 0; 2423 Q('refresh'), el(); 2424 } 2425 function eM(e) { 2426 if (!e || !c(e)) return; 2427 let t = parseInt(e.getAttribute('index') || '-1'), 2428 n = ''; 2429 for (let t of Array.from(e.classList)) { 2430 let e = t.match(/^f-(\w+)(Out|In)$/); 2431 e && e[1] && (n = e[1] + ''); 2432 } 2433 if (!e || !n) return; 2434 let o = [`f-${n}Out`, `f-${n}In`, 'to-prev', 'to-next', 'from-prev', 'from-next']; 2435 e.removeEventListener('animationend', eS), b(e, o.join(' ')), B.delete(t); 2436 } 2437 function eL() { 2438 if (!S) return; 2439 let e = B.size > 0; 2440 for (let e of N) eM(e.el); 2441 B.clear(), e && eI(); 2442 } 2443 function eS(e) { 2444 e.animationName?.substring(0, 2) === 'f-' && 2445 (eM(e.target), 2446 !B.size && 2447 (b(L, 'in-transition'), 2448 !k && 0.5 > Math.abs(eF.getPosition(!0) - F) && ((k = !0), Q('settle'))), 2449 eI()); 2450 } 2451 function eT(e) { 2452 if (e.defaultPrevented) return; 2453 let t = e.composedPath()[0]; 2454 if (t.closest('[data-carousel-go-prev]')) { 2455 eh(e), eF.prev(); 2456 return; 2457 } 2458 if (t.closest('[data-carousel-go-next]')) { 2459 eh(e), eF.next(); 2460 return; 2461 } 2462 let n = t.closest('[data-carousel-go-to]'); 2463 if (n) { 2464 eh(e), eF.goTo(parseFloat(n.dataset.carouselGoTo || '') || 0); 2465 return; 2466 } 2467 if (t.closest('[data-carousel-download]')) { 2468 eh(e); 2469 let t = Z[$]?.slides[0]; 2470 if (t && (t.downloadSrc || ('image' === t.type && t.src))) { 2471 let e = t.downloadFilename, 2472 n = document.createElement('a'), 2473 o = t.downloadSrc || t.src || ''; 2474 (n.href = o), (n.target = '_blank'), (n.download = e || o), n.click(); 2475 } 2476 return; 2477 } 2478 Q('click', e); 2479 } 2480 function eR(e) { 2481 let t = e.el; 2482 t && t.querySelector('.f-spinner')?.remove(); 2483 } 2484 function eP(e) { 2485 let t = e.el; 2486 t && (t.querySelector('.f-html.is-error')?.remove(), b(t, 'has-error')); 2487 } 2488 function eA(e) { 2489 e || (e = Z[$]?.slides[0]); 2490 let t = e?.el; 2491 if (!t) return; 2492 let n = Y('formatCaption', e); 2493 void 0 === n && (n = e.caption), (n = n || ''); 2494 let o = Y('captionEl'); 2495 if (o && o instanceof HTMLElement) { 2496 if (e.index !== $) return; 2497 if ((s(n) && (o.innerHTML = K(n + '')), n instanceof HTMLElement)) { 2498 if (n.parentElement === o) return; 2499 (o.innerHTML = ''), n.parentElement && (n = n.cloneNode(!0)), o.append(n); 2500 } 2501 return; 2502 } 2503 if (!n) return; 2504 let i = e.captionEl || t.querySelector('.f-caption'); 2505 !i && n instanceof HTMLElement && n.classList.contains('f-caption') && (i = n), 2506 !i && 2507 (v((i = document.createElement('div')), 'f-caption'), 2508 s(n) 2509 ? (i.innerHTML = K(n + '')) 2510 : n instanceof HTMLElement && (n.parentElement && (n = n.cloneNode(!0)), i.append(n))); 2511 let r = `f-caption-${eE}_${e.index}`; 2512 i.setAttribute('id', r), 2513 (i.dataset.selectable = 'true'), 2514 v(t, 'has-caption'), 2515 t.setAttribute('aria-labelledby', r),
2516 (e.captionEl = i), 2517 t.insertAdjacentElement('beforeend', i); 2518 } 2519 function eC(e, t = {}) { 2520 let { transition: n, tween: o } = { 2521 ...{ transition: x.transition, tween: x.tween }, 2522 ...(t || {}), 2523 }; 2524 if (!L || !r) return; 2525 let i = Z.length; 2526 if ( 2527 !i || 2528 (function (e, t) { 2529 if (!L || !T || !r || !t || !s(t) || 'tween' === t) return !1; 2530 for (let e of W) if (T - e.dim > 0.5) return !1; 2531 if (R > 0.5 || P > 0.5) return; 2532 let n = Z.length, 2533 o = e > $ ? 1 : -1; 2534 (e = A ? ((e % n) + n) % n : h(0, e, n - 1)), C && (o *= -1); 2535 let i = Z[$]?.slides[0], 2536 l = i?.index, 2537 a = Z[e]?.slides[0], 2538 c = a?.index, 2539 u = Z[e]?.pos; 2540 if (void 0 === c || void 0 === l || l === c || z === u || Math.abs(T - (a?.dim || 0)) > 1) 2541 return !1; 2542 (k = !1), r.pause(), eL(), v(L, 'in-transition'), (z = F = u); 2543 let d = eg(i), 2544 f = eg(a); 2545 return ( 2546 er(), 2547 d && 2548 (B.add(l), 2549 (d.style.transform = ''), 2550 d.addEventListener('animationend', eS), 2551 b(d, x.classes.isSelected), 2552 (d.inert = !1), 2553 v(d, `f-${t}Out to-${o > 0 ? 'next' : 'prev'}`)), 2554 f && 2555 (B.add(c), 2556 (f.style.transform = ''), 2557 f.addEventListener('animationend', eS), 2558 v(f, x.classes.isSelected), 2559 (f.inert = !1), 2560 v(f, `f-${t}In from-${o > 0 ? 'prev' : 'next'}`)), 2561 eI(), 2562 !0 2563 ); 2564 })(e, n) 2565 ) 2566 return; 2567 (e = A ? ((e % i) + i) % i : h(0, e, i - 1)), (F = Z[e || 0]?.pos || 0); 2568 let l = r.isRunning() ? r.getEndValues().pos : z; 2569 if (1 > Math.abs(F - l)) { 2570 (z = F), 2571 $ !== e && (eA(), (d = $), ($ = e), el(), ea(), Q('change', $, d)), 2572 eI(), 2573 k || ((k = !0), Q('settle')); 2574 return; 2575 } 2576 if ((r.pause(), eL(), A)) { 2577 let e = ec(), 2578 t = Math.floor((l - Z[0]?.pos) / e) || 0, 2579 n = F + t * e, 2580 o = n - e; 2581 F = [n + e, n, o].reduce(function (e, t) { 2582 return Math.abs(t - l) < Math.abs(e - l) ? t : e; 2583 }); 2584 } 2585 !1 !== n && a(o) 2586 ? r 2587 .spring(m({}, x.tween, o)) 2588 .from({ pos: z }) 2589 .to({ pos: F }) 2590 .start() 2591 : ((z = F), er(), eI(), k || ((k = !0), Q('settle'))); 2592 } 2593 function eO(e) { 2594 let t = z; 2595 if (A && !0 !== e) { 2596 let e = ec(); 2597 t -= (Math.floor((z - Z[0]?.pos || 0) / e) || 0) * e; 2598 } 2599 return t; 2600 } 2601 function eI() { 2602 let e; 2603 if (!L || !S) return; 2604 W = eu(); 2605 let t = new Set(), 2606 n = [], 2607 o = Z[$], 2608 i = x.setTransform; 2609 for (let i of N) { 2610 let r = B.has(i.index), 2611 l = W.indexOf(i) > -1, 2612 a = o?.slides?.indexOf(i) > -1; 2613 if (i.isVirtual && !r && !l) continue; 2614 let s = eg(i); 2615 if (s && (n.push(i), a && t.add(s), Y('adaptiveHeight') && a)) { 2616 let t = (s.lastElementChild || s).getBoundingClientRect().height; 2617 e = void 0 == e ? t : Math.max(e, t); 2618 } 2619 } 2620 S && e && (S.style.height = `${e}px`), 2621 [...em(S, `.${x.classes.slide}`)].forEach((e) => { 2622 E(e, x.classes.isSelected, t.has(e)); 2623 let n = V[parseInt(e.getAttribute('index') || '-1')]; 2624 if (!n) { 2625 e.remove(), eM(e); 2626 return; 2627 } 2628 let o = B.has(n.index), 2629 r = W.indexOf(n) > -1; 2630 if (n.isVirtual && !o && !r) return void ep(n); 2631 if (((e.inert = !r), !1 === i)) return; 2632 let l = n.pos ? Math.round(1e4 * n.pos) / 1e4 : 0, 2633 a = 0, 2634 s = 0, 2635 c = 0, 2636 u = 0; 2637 o || 2638 ((a = O ? 0 : C ? -1 * l : l), 2639 (s = O ? l : 0), 2640 (c = y(a, 0, n.dim, 0, 100)), 2641 (u = y(s, 0, n.dim, 0, 100))), 2642 i instanceof Function && !o 2643 ? i(eF, n, { x: a, y: s, xPercent: c, yPercent: u }) 2644 : (e.style.transform = a || s ? `translate3d(${c}%, ${u}%,0)` : ''); 2645 }), 2646 Q('render', n); 2647 } 2648 function ez() { 2649 for (let e of (L?.removeEventListener('click', eT), 2650 document.removeEventListener('mousemove', en), 2651 B.clear(), 2652 l?.disconnect(), 2653 (l = void 0), 2654 V)) { 2655 let t = e.el; 2656 t && 2657 c(t) && 2658 ((e.state = void 0), 2659 eR(e), 2660 eP(e), 2661 e.isVirtual 2662 ? (ep(e), (e.el = void 0)) 2663 : (eM(t), (t.style.transform = ''), S && !S.contains(t) && S.appendChild(t))); 2664 } 2665 for (let e of Object.values(M)) e?.destroy(); 2666 for (let [e, t] of ((M = {}), 2667 i?.destroy(), 2668 (i = void 0), 2669 r?.destroy(), 2670 (r = void 0), 2671 Object.entries(x.classes || {}))) 2672 'container' !== e && b(L, t); 2673 b(S, 'is-draggable'); 2674 } 2675 function ek() { 2676 return A || $ > 0; 2677 } 2678 function e$() { 2679 return A || $ < Z.length - 1; 2680 } 2681 let eF = { 2682 add: function (e, t) { 2683 let n = z, 2684 o = $, 2685 i = ec(), 2686 l = r?.isRunning() ? r.getEndValues().pos : z, 2687 a = (i && Math.floor((l - (Z[0]?.pos || 0)) / i)) || 0; 2688 return ( 2689 ed(e, t), 2690 ei(D), 2691 ex(), 2692 r && 2693 i && 2694 (o === $ && (n -= a * i), 2695 n === F 2696 ? (z = F) 2697 : r 2698 .spring({ clamp: !0, mass: 1, tension: 300, friction: 25, restDelta: 1, restSpeed: 1 }) 2699 .from({ pos: n }) 2700 .to({ pos: F }) 2701 .start()), 2702 eI(), 2703 eF 2704 ); 2705 }, 2706 canGoPrev: ek, 2707 canGoNext: e$, 2708 destroy: function () { 2709 return ( 2710 Q('destroy'), 2711 window.removeEventListener('resize', et), 2712 ez(), 2713 J.clear(), 2714 (L = null),
2715 (Z = []), 2716 (V = []), 2717 (x = { ...eb }), 2718 (M = {}), 2719 (N = []), 2720 (g = void 0), 2721 (D = '*'), 2722 (p = ey.Destroyed), 2723 eF 2724 ); 2725 }, 2726 emit: Q, 2727 filter: function (e = '*') { 2728 return ei(e), ex(), (z = h(_, z, H)), eI(), Q('filter', e), eF; 2729 }, 2730 getContainer: function () { 2731 return L; 2732 }, 2733 getGapDim: function () { 2734 return X; 2735 }, 2736 getGestures: function () { 2737 return i; 2738 }, 2739 getLastMouseMove: function () { 2740 return n; 2741 }, 2742 getOption: function (e) { 2743 return Y(e); 2744 }, 2745 getOptions: function () { 2746 return x; 2747 }, 2748 getPage: function () { 2749 return Z[$]; 2750 }, 2751 getPageIndex: function (e) { 2752 if (void 0 !== e) { 2753 for (let t of Z || []) for (let n of t.slides) if (n.index === e) return t.index; 2754 return -1; 2755 } 2756 return $; 2757 }, 2758 getPageIndexFromPosition: es, 2759 getPageProgress: function (e, t) { 2760 void 0 === e && (e = $); 2761 let n = Z[e]; 2762 if (!n) return e > $ ? -1 : 1; 2763 let o = ec(), 2764 i = X, 2765 r = n.pos, 2766 l = eO(); 2767 if (A && !0 !== t) { 2768 let e = Math.floor((l - Z[0]?.pos) / o) || 0; 2769 (l -= e * o), 2770 (r = [r + o, r, r - o].reduce(function (e, t) { 2771 return Math.abs(t - l) < Math.abs(e - l) ? t : e; 2772 })); 2773 } 2774 return (l - r) / (n.dim + i) || 0; 2775 }, 2776 getPageVisibility: function (e) { 2777 void 0 === e && (e = $); 2778 let t = Z[e]; 2779 if (!t) return e > $ ? -1 : 1; 2780 let n = eO(), 2781 o = T, 2782 i = t.pos; 2783 if (A) { 2784 let e = ec(), 2785 t = i + (Math.floor((n - Z[0]?.pos) / e) || 0) * e, 2786 o = t - e; 2787 i = [t + e, t, o].reduce(function (e, t) { 2788 return Math.abs(t - n) < Math.abs(e - n) ? t : e; 2789 }); 2790 } 2791 return i > n && i + t.dim < n + o 2792 ? 1 2793 : i < n 2794 ? (i + t.dim - n) / t.dim || 0 2795 : (i + t.dim > n + o && (n + o - i) / t.dim) || 0; 2796 }, 2797 getPages: function () { 2798 return Z; 2799 }, 2800 getPlugins: function () { 2801 return M; 2802 }, 2803 getPosition: eO, 2804 getSlides: function () { 2805 return V; 2806 }, 2807 getState: function () { 2808 return p; 2809 }, 2810 getTotalSlideDim: ec, 2811 getTween: function () { 2812 return r; 2813 }, 2814 getViewport: function () { 2815 return S; 2816 }, 2817 getViewportDim: function () { 2818 return T; 2819 }, 2820 getVisibleSlides: function (e) { 2821 return void 0 === e ? W : eu(e); 2822 }, 2823 goTo: eC, 2824 hasNavigated: function () { 2825 return void 0 !== d; 2826 }, 2827 hideError: eP, 2828 hideLoading: eR, 2829 init: function () { 2830 if (!e || !c(e)) throw Error('No Element found'); 2831 return ( 2832 p !== ey.Init && (ez(), (p = ey.Init)), 2833 (L = e), 2834 (w = t), 2835 window.removeEventListener('resize', et), 2836 w.breakpoints && window.addEventListener('resize', et), 2837 et(), 2838 eF 2839 ); 2840 }, 2841 isInfinite: function () { 2842 return A; 2843 }, 2844 isInTransition: function () { 2845 return B.size > 0; 2846 }, 2847 isRTL: function () { 2848 return C; 2849 }, 2850 isSettled: function () { 2851 return k; 2852 }, 2853 isVertical: function () { 2854 return O; 2855 }, 2856 localize: K, 2857 next: function (e = {}) { 2858 return eC($ + 1, e), eF; 2859 }, 2860 off: function (e, t) { 2861 for (let n of e instanceof Array ? e : [e]) 2862 J.has(n) && 2863 J.set( 2864 n, 2865 J.get(n).filter((e) => e !== t) 2866 ); 2867 return eF; 2868 }, 2869 on: function (e, t) { 2870 for (let n of e instanceof Array ? e : [e]) J.set(n, [...(J.get(n) || []), t]); 2871 return eF; 2872 }, 2873 prev: function (e = {}) { 2874 return eC($ - 1, e), eF; 2875 }, 2876 reInit: function (e = {}, n) { 2877 return ( 2878 ez(), (p = ey.Init), (g = void 0), (D = '*'), (t = e), (w = e), a(n) && (o = n), et(), eF 2879 ); 2880 }, 2881 remove: function (e) { 2882 void 0 === e && (e = V.length - 1); 2883 let t = V[e]; 2884 return ( 2885 t && 2886 (Q('removeSlide', t), 2887 t.el && (eM(t.el), t.el.remove(), (t.el = void 0)), 2888 V.splice(e, 1), 2889 ei(D), 2890 ex(), 2891 (z = h(_, z, H)), 2892 eI()), 2893 eF 2894 ); 2895 }, 2896 setPosition: function (e) { 2897 (z = e), er(), eI(); 2898 }, 2899 showError: function (e, t) { 2900 if (p === ey.Ready) { 2901 eR(e), eP(e); 2902 let n = e.el; 2903 if (n) { 2904 let o = document.createElement('div'); 2905 v(o, 'f-html'), 2906 v(o, 'is-error'), 2907 (o.innerHTML = K(t || '<p>{{ERROR}}</p>')), 2908 (e.htmlEl = o), 2909 v(n, 'has-html has-error'), 2910 n.insertAdjacentElement('afterbegin', o), 2911 Q('contentReady', e); 2912 } 2913 } 2914 return eF; 2915 }, 2916 showLoading: function (e) { 2917 let t = e.el, 2918 n = t?.querySelector('.f-spinner'); 2919 if (!t || n) return eF; 2920 let o = u(Y('spinnerTpl')); 2921 return o && (v(o, 'f-spinner'), t.insertAdjacentElement('beforeend', o)), eF; 2922 }, 2923 version: '6.1.13', 2924 }; 2925 return eF; 2926 }; 2927 (ew.l10n = { en_EN: ep }), (ew.getDefaults = () => eb); 2928 let ex = function (e = '', t = '', n = '') { 2929 return e.split(t).join(n); 2930 }, 2931 eM = { 2932 tpl: (e) => `<img class="f-panzoom__content" 2933 ${e.srcset ? 'data-lazy-srcset="{{srcset}}"' : ''} 2934 ${e.sizes ? 'data-lazy-sizes="{{sizes}}"' : ''} 2935 data-lazy-src="{{src}}" alt="{{alt}}" />`, 2936 }, 2937 eL = () => { 2938 let e; 2939 function t(t, n) { 2940 let o = e?.getOptions().Zoomable, 2941 i = (a(o) ? { ...eM, ...o } : eM)[t]; 2942 return i && 'function' == typeof i && n ? i(n) : i; 2943 } 2944 function n() { 2945 e && 2946 !1 !== e.getOptions().Zoomable && 2947 (e.on('addSlide', r), 2948 e.on('removeSlide', l), 2949 e.on('attachSlideEl', c), 2950 e.on('click', i), 2951 e.on('change', o), 2952 e.on('ready', o)); 2953 } 2954 function o() { 2955 u(); 2956 let t = e?.getVisibleSlides() || []; 2957 if (t.length > 1 || e?.getOption('transition') === 'slide') 2958 for (let n of t) { 2959 let t = n.panzoomRef; 2960 t && 2961 0 > (e?.getPage().slides || []).indexOf(n) && 2962 t.execute(er.ZoomTo, { ...t.getStartPosition() }); 2963 } 2964 } 2965 function i(e, t) { 2966 let n = t.target; 2967 n && !t.defaultPrevented && n.dataset.panzoomAction && d(n.dataset.panzoomAction); 2968 } 2969 function r(n, o) { 2970 let i = o.el; 2971 if (!e || !i || o.panzoomRef) return; 2972 let r = o.src || o.lazySrc || '', 2973 l = o.alt || o.caption || `Image #${o.index}`, 2974 a = o.srcset || o.lazySrcset || '', 2975 c = o.sizes || o.lazySizes || ''; 2976 if (r && s(r) && !o.html && (!o.type || 'image' === o.type)) { 2977 (o.type = 'image'), (o.thumbSrc = o.thumbSrc || r); 2978 let e = t('tpl', o); 2979 (e = ex(e, '{{src}}', r + '')), 2980 (e = ex(e, '{{srcset}}', a + '')), 2981 (e = ex(e, '{{sizes}}', c + '')), 2982 i.insertAdjacentHTML('afterbegin', e); 2983 } 2984 let d = i.querySelector('.f-panzoom__content'); 2985 if (!d) return; 2986 d.setAttribute('alt', l + ''); 2987 let f = eg(i, { 2988 width: o.width && 'auto' !== o.width ? parseFloat(o.width + '') : 'auto', 2989 height: o.height && 'auto' !== o.height ? parseFloat(o.height + '') : 'auto', 2990 classes: { container: 'f-zoomable' }, 2991 event: () => e?.getLastMouseMove(), 2992 spinnerTpl: () => e?.getOption('spinnerTpl') || '', 2993 ...t('Panzoom'), 2994 }); 2995 f.on('*', (t, n, ...i) => { 2996 e && 2997 ('loading' === n && (o.state = 0), 2998 'loaded' === n && (o.state = 1), 2999 'error' === n && ((o.state = 2), e?.showError(o, '{{IMAGE_ERROR}}')), 3000 e.emit(`panzoom:${n}`, o, ...i), 3001 'loading' === n && e.emit('contentLoading', o), 3002 'ready' === n && e.emit('contentReady', o), 3003 o.index === e?.getPageIndex() && u()); 3004 }), 3005 (o.panzoomRef = f); 3006 } 3007 function l(e, t) { 3008 t.panzoomRef && (t.panzoomRef.destroy(), (t.panzoomRef = void 0)); 3009 } 3010 function c(e, t) { 3011 let n = t.panzoomRef; 3012 if (n) 3013 switch (n.getState()) { 3014 case es.Init: 3015 n.init(); 3016 break; 3017 case es.Ready: 3018 n.execute(er.ZoomTo, { ...n.getStartPosition(), velocity: 0 }); 3019 } 3020 } 3021 function u() { 3022 let t = e?.getContainer() || void 0, 3023 n = e?.getPage()?.slides[0]?.panzoomRef; 3024 if (t) 3025 if (n) n.updateControls(t); 3026 else 3027 for (let e of t.querySelectorAll('[data-panzoom-action]') || []) 3028 e.setAttribute('aria-disabled', ''), e.setAttribute('tabindex', '-1'); 3029 } 3030 function d(t, ...n) {
3031 e?.getPage().slides[0].panzoomRef?.execute(t, ...n); 3032 } 3033 return { 3034 init: function (t) { 3035 (e = t).on('initPlugins', n); 3036 }, 3037 destroy: function () { 3038 if (e) 3039 for (let t of (e.off('initPlugins', n), 3040 e.off('addSlide', r), 3041 e.off('removeSlide', l), 3042 e.off('attachSlideEl', c), 3043 e.off('click', i), 3044 e.off('change', o), 3045 e.off('ready', o), 3046 e.getSlides())) 3047 l(e, t); 3048 e = void 0; 3049 }, 3050 execute: d, 3051 }; 3052 }, 3053 eS = { syncOnChange: !1, syncOnClick: !0, syncOnHover: !1 }, 3054 eT = () => { 3055 let e, t; 3056 function n() { 3057 let t = e?.getOptions().Sync; 3058 return a(t) ? { ...eS, ...t } : eS; 3059 } 3060 function o() { 3061 let o = n().target; 3062 e && 3063 o && 3064 e && 3065 o && 3066 ((t = o), 3067 (e.getOptions().classes = { ...e.getOptions().classes, isSelected: '' }), 3068 (e.getOptions().initialSlide = t.getPage()?.slides[0]?.index || 0), 3069 n().syncOnChange && e.on('change', r), 3070 n().syncOnClick && e.on('click', s), 3071 n().syncOnHover && e.getViewport()?.addEventListener('mouseover', c), 3072 e && t && (e.on('ready', i), e.on('refresh', u), t.on('change', l), t.on('filter', d))); 3073 } 3074 function i() { 3075 f(); 3076 } 3077 function r() { 3078 if (e && t) { 3079 let n = e.getPage()?.slides || [], 3080 o = t.getPageIndex(n[0].index || 0); 3081 o > -1 && t.goTo(o, e.hasNavigated() ? void 0 : { tween: !1, transition: !1 }), f(); 3082 } 3083 } 3084 function l() { 3085 if (e && t) { 3086 let n = e.getPageIndex(t.getPage()?.slides[0].index || 0); 3087 n > -1 && e.goTo(n, t.hasNavigated() ? void 0 : { tween: !1, transition: !1 }), f(); 3088 } 3089 } 3090 function s(n, o) { 3091 if (!e || !t || e.getTween()?.isRunning()) return; 3092 let i = e?.getOptions().classes.slide; 3093 if (!i) return; 3094 let r = i ? o.target.closest(`.${i}`) : null; 3095 if (r) { 3096 let e = parseInt(r.getAttribute('index') || '') || 0, 3097 n = t.getPageIndex(e); 3098 t.goTo(n); 3099 } 3100 } 3101 function c(t) { 3102 e && s(e, t); 3103 } 3104 function u() { 3105 if (e && t) { 3106 let n = e.getPageIndex(t.getPage()?.slides[0].index || 0); 3107 n > -1 && e.goTo(n, { tween: !1, transition: !1 }), f(); 3108 } 3109 } 3110 function d(n, o) { 3111 e && t && (e.filter(o), l()); 3112 } 3113 function f() { 3114 if (!t) return; 3115 let n = t.getPage()?.slides[0]?.index || 0; 3116 for (let t of e?.getSlides() || []) t.el?.classList.toggle('is-selected', t.index === n); 3117 } 3118 return { 3119 init: function (t) { 3120 (e = t).on('initSlides', o); 3121 }, 3122 destroy: function () { 3123 e?.off('ready', i), 3124 e?.off('refresh', u), 3125 e?.off('change', r), 3126 e?.off('click', s), 3127 e?.getViewport()?.removeEventListener('mouseover', c), 3128 t?.off('change', l), 3129 t?.off('filter', d), 3130 (t = void 0), 3131 e?.off('initSlides', o), 3132 (e = void 0); 3133 }, 3134 getTarget: function () { 3135 return t; 3136 }, 3137 }; 3138 }, 3139 eR = { showLoading: !0, preload: 1 }, 3140 eP = 'is-lazyloading', 3141 eA = 'is-lazyloaded', 3142 eC = 'has-lazyerror', 3143 eO = () => { 3144 let e; 3145 function t() { 3146 let t = e?.getOptions().Lazyload; 3147 return a(t) ? { ...eR, ...t } : eR; 3148 } 3149 function n() { 3150 if (!e) return; 3151 let n = [...e.getVisibleSlides()], 3152 o = t().preload; 3153 if (o > 0) { 3154 let t = e.getPosition(), 3155 i = e.getViewportDim(); 3156 n.push(...e.getVisibleSlides(t + i * o), ...e.getVisibleSlides(t - i * o)); 3157 } 3158 for (let o of n) 3159 !(function (n) { 3160 let o = n.el; 3161 if (!o) return; 3162 let i = '[data-lazy-src],[data-lazy-srcset],[data-lazy-bg]', 3163 r = Array.from(o.querySelectorAll(i)); 3164 for (let l of (o.matches(i) && r.push(o), r)) { 3165 let o = l.dataset.lazySrc, 3166 i = l.dataset.lazySrcset, 3167 r = l.dataset.lazySizes, 3168 a = l.dataset.lazyBg, 3169 s = (l instanceof HTMLImageElement || l instanceof HTMLSourceElement) && (o || i), 3170 c = l instanceof HTMLElement && a; 3171 if (!(s || c)) continue; 3172 let u = o || i || a; 3173 if (u) { 3174 if (s && u) { 3175 let a = l.parentElement?.classList.contains('f-panzoom__wrapper'); 3176 t().showLoading && e?.showLoading(n), 3177 l.addEventListener('load', () => { 3178 e?.hideLoading(n), 3179 b(l, eC), 3180 l instanceof HTMLImageElement 3181 ? l 3182 .decode() 3183 .then(() => { 3184 b(l, eP), v(l, eA); 3185 }) 3186 .catch(() => { 3187 b(l, eP), v(l, eA); 3188 }) 3189 : (b(l, eP), v(l, eA)), 3190 a || e?.emit('lazyLoad:loaded', n, l, u); 3191 }), 3192 l.addEventListener('error', () => { 3193 e?.hideLoading(n), b(l, eP), v(l, eC), a || e?.emit('lazyLoad:error', n, l, u); 3194 }), 3195 l.classList.add('f-lazyload'), 3196 l.classList.add(eP), 3197 a || e?.emit('lazyLoad:load', n, l, u), 3198 o && (l.src = o), 3199 i && (l.srcset = i), 3200 r && (l.sizes = r); 3201 } else 3202 c && 3203 (document.body.contains(l) || (document.createElement('img').src = a), 3204 (l.style.backgroundImage = `url('${a}')`)); 3205 delete l.dataset.lazySrc, 3206 delete l.dataset.lazySrcset, 3207 delete l.dataset.lazySizes, 3208 delete l.dataset.lazyBg; 3209 } 3210 } 3211 })(o); 3212 } 3213 return { 3214 init: function (t) { 3215 (e = t).on('render', n); 3216 }, 3217 destroy: function () { 3218 e?.off('render', n), (e = void 0); 3219 }, 3220 }; 3221 }, 3222 eI = '<svg width="24" height="24" viewBox="0 0 24 24" tabindex="-1">', 3223 ez = '</svg>', 3224 ek = { 3225 prevTpl: eI + '<path d="M15 3l-9 9 9 9"></path>' + ez, 3226 nextTpl: eI + '<path d="M9 3l9 9-9 9"></path>' + ez, 3227 }, 3228 e$ = () => { 3229 let e, t, n; 3230 function o() { 3231 let t = e?.getOptions().Arrows; 3232 return a(t) ? { ...ek, ...t } : ek; 3233 } 3234 function i(t) { 3235 if (!e) return; 3236 let n = 3237 `<button data-carousel-go-${t} tabindex="0" class="f-button is-arrow is-${t}" title="{{${t.toUpperCase()}}}">` + 3238 o()[`${t}Tpl`] + 3239 '</button', 3240 i = u(e.localize(n)) || void 0; 3241 return i && v(i, o()[`${t}Class`]), i; 3242 } 3243 function r() { 3244 t?.remove(), 3245 (t = void 0), 3246 n?.remove(), 3247 (n = void 0), 3248 e?.getContainer()?.classList.remove('has-arrows'); 3249 } 3250 function l() { 3251 e && !1 !== e.getOptions().Arrows && e.getPages().length > 1 3252 ? (!(function () { 3253 if (!e) return; 3254 let o = e.getViewport(); 3255 o && 3256 (!t && (t = i('prev')) && o.insertAdjacentElement('beforebegin', t), 3257 !n && (n = i('next')) && o.insertAdjacentElement('afterend', n),
3258 E(e.getContainer(), 'has-arrows', !!(t || n))); 3259 })(), 3260 e && 3261 (t?.toggleAttribute('aria-disabled', !e.canGoPrev()), 3262 n?.toggleAttribute('aria-disabled', !e.canGoNext()))) 3263 : r(); 3264 } 3265 return { 3266 init: function (t) { 3267 e = t.on(['change', 'refresh'], l); 3268 }, 3269 destroy: function () { 3270 r(), e?.off(['change', 'refresh'], l), (e = void 0); 3271 }, 3272 }; 3273 }, 3274 eF = '<circle cx="11" cy="11" r="7.5"/><path d="m21 21-4.35-4.35M8 11h6"/>', 3275 e_ = '<g><line x1="11" y1="8" x2="11" y2="14"></line></g>' + eF, 3276 eH = {}; 3277 for (let [e, t] of Object.entries({ 3278 moveLeft: ['moveLeft', 'MOVE_LEFT', '<path d="M5 12h14M5 12l6 6M5 12l6-6"/>'], 3279 moveRight: ['moveRight', 'MOVE_RIGHT', '<path d="M5 12h14M13 18l6-6M13 6l6 6"/>'], 3280 moveUp: ['moveUp', 'MOVE_UP', '<path d="M12 5v14M18 11l-6-6M6 11l6-6"/>'], 3281 moveDown: ['moveDown', 'MOVE_DOWN', '<path d="M12 5v14M18 13l-6 6M6 13l6 6"/>'], 3282 zoomOut: ['zoomOut', 'ZOOM_OUT', eF], 3283 zoomIn: ['zoomIn', 'ZOOM_IN', e_], 3284 toggleFull: ['toggleFull', 'TOGGLE_FULL', e_], 3285 iterateZoom: ['iterateZoom', 'ITERATE_ZOOM', e_], 3286 toggle1to1: [ 3287 'toggleFull', 3288 'TOGGLE_FULL', 3289 '<path d="M3.51 3.07c5.74.02 11.48-.02 17.22.02 1.37.1 2.34 1.64 2.18 3.13 0 4.08.02 8.16 0 12.23-.1 1.54-1.47 2.64-2.79 2.46-5.61-.01-11.24.02-16.86-.01-1.36-.12-2.33-1.65-2.17-3.14 0-4.07-.02-8.16 0-12.23.1-1.36 1.22-2.48 2.42-2.46Z"/><path d="M5.65 8.54h1.49v6.92m8.94-6.92h1.49v6.92M11.5 9.4v.02m0 5.18v0"/>', 3290 ], 3291 rotateCCW: [ 3292 'rotateCCW', 3293 'ROTATE_CCW', 3294 '<path d="M15 4.55a8 8 0 0 0-6 14.9M9 15v5H4M18.37 7.16v.01M13 19.94v.01M16.84 18.37v.01M19.37 15.1v.01M19.94 11v.01"/>', 3295 ], 3296 rotateCW: [ 3297 'rotateCW', 3298 'ROTATE_CW', 3299 '<path d="M9 4.55a8 8 0 0 1 6 14.9M15 15v5h5M5.63 7.16v.01M4.06 11v.01M4.63 15.1v.01M7.16 18.37v.01M11 19.94v.01"/>', 3300 ], 3301 flipX: ['flipX', 'FLIP_X', '<path d="M12 3v18M16 7v10h5L16 7M8 7v10H3L8 7"/>'], 3302 flipY: ['flipY', 'FLIP_Y', '<path d="M3 12h18M7 16h10L7 21v-5M7 8h10L7 3v5"/>'], 3303 reset: [ 3304 'reset', 3305 'RESET', 3306 '<path d="M20 11A8.1 8.1 0 0 0 4.5 9M4 5v4h4M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4"/>', 3307 ], 3308 toggleFS: [ 3309 'toggleFS', 3310 'TOGGLE_FS', 3311 '<g><path d="M14.5 9.5 21 3m0 0h-6m6 0v6M3 21l6.5-6.5M3 21v-6m0 6h6"/></g><g><path d="m14 10 7-7m-7 7h6m-6 0V4M3 21l7-7m0 0v6m0-6H4"/></g>', 3312 ], 3313 })) 3314 eH[e] = { 3315 tpl: `<button data-panzoom-action="${t[0]}" class="f-button" title="{{${t[1]}}}"><svg>${t[2]}</svg></button>`, 3316 }; 3317 let eD = (((k = {}).Left = 'left'), (k.middle = 'middle'), (k.right = 'right'), k), 3318 eV = { 3319 counter: { 3320 tpl: '<div class="f-counter"><span data-carousel-page></span>/<span data-carousel-pages></span></div>', 3321 }, 3322 download: { 3323 tpl: '<button data-carousel-download class="f-button" title="{{DOWNLOAD}}"><svg><path d="M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 11l5 5 5-5M12 4v12"/></svg></button>', 3324 }, 3325 autoplay: { 3326 tpl: '<button data-autoplay-action="toggle" class="f-button" title="{{TOGGLE_AUTOPLAY}}"><svg><g><path d="M5 3.5 19 12 5 20.5Z"/></g><g><path d="M8 4v15M17 4v15"/></g></svg></button>', 3327 }, 3328 thumbs: { 3329 tpl: '<button data-thumbs-action="toggle" class="f-button" title="{{TOGGLE_THUMBS}}"><svg><rect width="18" height="14" x="3" y="3" rx="2"/><path d="M4 21h1M9 21h1M14 21h1M19 21h1"/></svg></button>', 3330 }, 3331 ...eH, 3332 }, 3333 ej = { 3334 absolute: !1, 3335 display: { 3336 left: [], 3337 middle: [ 3338 'zoomIn', 3339 'zoomOut', 3340 'toggle1to1', 3341 'rotateCCW', 3342 'rotateCW', 3343 'flipX', 3344 'flipY', 3345 'reset', 3346 ], 3347 right: [], 3348 }, 3349 enabled: 'auto', 3350 items: {}, 3351 }, 3352 eq = () => { 3353 let e, t; 3354 function n(t) { 3355 let n = e?.getOptions().Toolbar, 3356 o = (a(n) ? { ...ej, ...n } : ej)[t]; 3357 return o && 'function' == typeof o && e ? o(e) : o; 3358 } 3359 function o() { 3360 if (!e?.getOptions().Toolbar || !e || t) return; 3361 let o = e.getContainer(); 3362 if (!o) return; 3363 let i = n('enabled'); 3364 if (!i) return; 3365 let r = n('absolute'), 3366 l = e.getSlides().length > 1, 3367 c = !1, 3368 d = !1; 3369 for (let t of e.getSlides()) 3370 t.panzoomRef && (c = !0), (t.downloadSrc || ('image' === t.type && t.src)) && (d = !0); 3371 let f = e.getPlugins().Thumbs?.isEnabled() || !1, 3372 g = (l && e.getPlugins().Autoplay) || !1, 3373 p = 3374 e.getPlugins().Fullscreen && 3375 (document.fullscreenEnabled || document.webkitFullscreenEnabled); 3376 if (('auto' === i && (i = c), !i)) return; 3377 (t = o.querySelector('.f-carousel__toolbar') || void 0) || 3378 v((t = document.createElement('div')), 'f-carousel__toolbar'); 3379 let h = n('display'),
3380 y = m({}, eV, n('items')); 3381 for (let n of ['left', 'middle', 'right']) { 3382 let o = h[n] || [], 3383 i = document.createElement('div'); 3384 for (let t of (v(i, `f-carousel__toolbar__column is-${n}`), o)) { 3385 let n; 3386 if (s(t)) { 3387 if ( 3388 ('counter' === t && !l) || 3389 ('autoplay' === t && !g) || 3390 (eH[t] && !c) || 3391 ('fullscreen' === t && !p) || 3392 ('thumbs' === t && !f) || 3393 ('download' === t && !d) 3394 ) 3395 continue; 3396 n = y[t]; 3397 } 3398 if ((a(t) && (n = t), n && n.tpl)) { 3399 let t = e.localize(n.tpl), 3400 o = u( 3401 (t = t 3402 .split('<svg>') 3403 .join('<svg tabindex="-1" width="24" height="24" viewBox="0 0 24 24">')) 3404 ); 3405 o && 3406 ('function' == typeof n.click && 3407 e && 3408 o.addEventListener('click', (t) => { 3409 t.preventDefault(), 3410 t.stopPropagation(), 3411 'function' == typeof n.click && e && n.click(e, t); 3412 }), 3413 i.append(o)); 3414 } 3415 } 3416 t.append(i); 3417 } 3418 if (t.childElementCount) { 3419 if ((r && v(t, 'is-absolute'), !t.parentElement)) { 3420 let e = n('parentEl'); 3421 e ? e.insertAdjacentElement('afterbegin', t) : o.insertAdjacentElement('afterbegin', t); 3422 } 3423 o.contains(t) && (v(o, 'has-toolbar'), r && v(o, 'has-absolute-toolbar')); 3424 } 3425 } 3426 return { 3427 init: function (t) { 3428 (e = t), e?.on('initSlides', o); 3429 }, 3430 destroy: function () { 3431 e?.off('initSlides', o), 3432 b(e?.getContainer(), 'has-toolbar has-absolute-toolbar'), 3433 t?.remove(), 3434 (t = void 0); 3435 }, 3436 add: function (e, t) { 3437 eV[e] = t; 3438 }, 3439 isEnabled: function () { 3440 return !!t; 3441 }, 3442 }; 3443 }, 3444 eN = { autoStart: !0, pauseOnHover: !0, showProgressbar: !0, timeout: 2e3 }, 3445 eB = () => { 3446 let e, 3447 t, 3448 n = !1, 3449 o = !1, 3450 i = !1, 3451 r = null; 3452 function l(t) { 3453 let n = e?.getOptions().Autoplay, 3454 o = (a(n) ? { ...eN, ...n } : eN)[t]; 3455 return o && 'function' == typeof o && e ? o(e) : o; 3456 } 3457 function s() { 3458 clearTimeout(t), (t = void 0); 3459 } 3460 function c() { 3461 !e || 3462 !n || 3463 i || 3464 o || 3465 t || 3466 !e.isSettled() || 3467 (function () { 3468 for (let t of e?.getPage()?.slides || []) if (0 === t.state) return !0; 3469 return !1; 3470 })() || 3471 ((function () { 3472 if (!e || (f(), !l('showProgressbar'))) return; 3473 let t = l('progressbarParentEl'); 3474 if ( 3475 (!t && e.getPlugins().Toolbar?.isEnabled() && (t = e.getContainer()), 3476 !t && e.getPlugins().Toolbar?.isEnabled() !== !0) 3477 ) { 3478 let n = e.getPages()[0]?.slides || [], 3479 o = e.getPage()?.slides || []; 3480 1 === n.length && 1 === o.length && (t = o[0].el); 3481 } 3482 if ((t || (t = e.getViewport()), !t)) return; 3483 v((r = document.createElement('div')), 'f-progressbar'), t.prepend(r); 3484 let n = l('timeout') || 1e3; 3485 r.style.animationDuration = `${n}ms`; 3486 })(), 3487 (t = setTimeout(() => { 3488 if (e && n && !o) { 3489 if (!e.isInfinite() && e.getPageIndex() === e.getPages().length - 1) return void e.goTo(0); 3490 e.next(); 3491 } 3492 }, l('timeout')))); 3493 } 3494 function u() { 3495 if (!e || e.getPages().length < 2 || !1 === e.getOptions().Autoplay || n) return; 3496 (n = !0), 3497 e.emit('autoplay:start', l('timeout')), 3498 v(e.getContainer(), 'has-autoplay'), 3499 e.getTween()?.on('start', b); 3500 let t = e?.getContainer(); 3501 t && 3502 l('pauseOnHover') && 3503 matchMedia('(hover: hover)').matches && 3504 (t.addEventListener('mouseenter', E, !1), t.addEventListener('mouseleave', w, !1)), 3505 e.on('change', h), 3506 e.on('settle', y), 3507 e.on('contentReady', m), 3508 e.on('panzoom:touchStart', d), 3509 e.on('panzoom:wheel', d), 3510 e.isSettled() && c(); 3511 } 3512 function d() { 3513 if ((s(), f(), e)) { 3514 if (n) { 3515 e.emit('autoplay:end'), e.getTween()?.off('start', b); 3516 let t = e.getContainer(); 3517 t && 3518 (t.classList.remove('has-autoplay'), 3519 t.removeEventListener('mouseenter', E, !1), 3520 t.removeEventListener('mouseleave', w, !1)); 3521 } 3522 e.off('change', h), 3523 e.off('settle', y), 3524 e.off('contentReady', m), 3525 e.off('panzoom:touchStart', d), 3526 e.off('panzoom:wheel', d); 3527 } 3528 (n = !1), (o = !1); 3529 } 3530 function f() { 3531 r && (r.remove(), (r = null)); 3532 } 3533 function g() { 3534 e && e.getPages().length > 1 && l('autoStart') && u(); 3535 } 3536 function m() { 3537 c(); 3538 } 3539 function p(e, t) { 3540 let n = t.target; 3541 n && !t.defaultPrevented && 'toggle' === n.dataset.autoplayAction && x.toggle(); 3542 } 3543 function h() { 3544 e && (e?.isInfinite() || e.getPageIndex() !== e.getPages().length - 1) ? (f(), s()) : d(); 3545 } 3546 function y() { 3547 c(); 3548 } 3549 function b() { 3550 s(), f(); 3551 } 3552 function E() { 3553 (i = !0), n && (f(), s()); 3554 } 3555 function w() { 3556 (i = !1), n && !o && e?.isSettled() && c(); 3557 } 3558 let x = { 3559 init: function (t) { 3560 (e = t).on('ready', g), e.on('click', p); 3561 }, 3562 destroy: function () { 3563 d(), e?.off('ready', g), e?.off('click', p), (e = void 0); 3564 }, 3565 isEnabled: () => n, 3566 pause: function () { 3567 (o = !0), s(); 3568 }, 3569 resume: function () { 3570 (o = !1), n && !i && c(); 3571 }, 3572 start() { 3573 u(); 3574 }, 3575 stop() { 3576 d(); 3577 }, 3578 toggle() { 3579 n ? d() : u(); 3580 }, 3581 }; 3582 return x; 3583 }, 3584 eW = { 3585 Carousel: { Lazyload: { showLoading: !1 } }, 3586 minCount: 2, 3587 showOnStart: !0, 3588 thumbTpl: 3589 '<button aria-label="Slide to #{{page}}"><img draggable="false" alt="{{alt}}" data-lazy-src="{{src}}" /></button>', 3590 type: 'modern', 3591 }, 3592 eZ = () => { 3593 let e, 3594 t, 3595 n, 3596 i, 3597 r, 3598 l = 0, 3599 s = 0, 3600 c = !0; 3601 function d(t) { 3602 let n = e?.getOptions().Thumbs, 3603 o = (a(n) ? { ...eW, ...n } : eW)[t]; 3604 return o && 'function' == typeof o && e ? o(e) : o; 3605 } 3606 function f() { 3607 if (!e || e?.getOptions().Thumbs === !1) return !1; 3608 let t = 0; 3609 for (let n of e.getSlides()) n.thumbSrc && t++; 3610 return t >= d('minCount'); 3611 } 3612 function g() { 3613 return 'modern' === d('type'); 3614 } 3615 function p() { 3616 return 'scrollable' === d('type'); 3617 } 3618 function y() { 3619 let t = []; 3620 for (let n of e?.getSlides() || []) 3621 t.push({ index: n.index, class: n.thumbClass, html: b(n) }); 3622 return t; 3623 } 3624 function b(e) { 3625 let t = e.thumb 3626 ? e.thumb instanceof HTMLImageElement 3627 ? e.thumb.src 3628 : e.thumb 3629 : e.thumbSrc || void 0, 3630 n = void 0 === e.thumbAlt ? `Thumbnail #${(e.index || 0) + 1}` : e.thumbAlt + '', 3631 o = d('thumbTpl'); 3632 return ( 3633 (o = ex(o, '{{alt}}', n)), 3634 (o = ex(o, '{{src}}', t + '')), 3635 (o = ex(o, '{{index}}
3635', `${e.index || 0}`)), 3636 (o = ex(o, '{{page}}', `${(e.index || 0) + 1}`)) 3637 ); 3638 } 3639 function E(e) { 3640 return `<div index="${e.index || 0}" class="f-thumbs__slide ${e.class || ''}">${ 3641 e.html || '' 3642 }</div>`; 3643 } 3644 function w(t = !1) { 3645 let o = e?.getContainer(); 3646 if (!e || !o || n || !f()) return; 3647 let i = d('Carousel')?.classes || {}; 3648 if (((i.container = i.container || 'f-thumbs'), !n)) { 3649 let e = o.nextElementSibling; 3650 e?.classList.contains(i.container) && (n = e); 3651 } 3652 if (!n) { 3653 n = document.createElement('div'); 3654 let e = d('parentEl'); 3655 e ? e.insertAdjacentElement('beforeend', n) : o.insertAdjacentElement('afterend', n); 3656 } 3657 v(n, i.container), v(n, 'f-thumbs'), v(n, `is-${d('type')}`), t && v(n, 'is-hidden'); 3658 } 3659 function x() { 3660 if (!n || !p()) return; 3661 v((i = document.createElement('div')), 'f-thumbs__viewport'); 3662 let t = ''; 3663 for (let e of y()) 'string' == typeof (e.html || '') && (t += E(e)); 3664 (i.innerHTML = t), 3665 n.append(i), 3666 n.addEventListener('click', (t) => { 3667 t.preventDefault(); 3668 let n = t.target.closest('[index]'), 3669 o = parseInt(n?.getAttribute('index') || '-1'); 3670 e && o > -1 && e.goTo(o); 3671 }), 3672 (r = new IntersectionObserver( 3673 (e) => { 3674 e.forEach((e) => { 3675 e.isIntersecting && 3676 e.target instanceof HTMLImageElement && 3677 ((e.target.src = e.target.getAttribute('data-lazy-src') + ''), 3678 e.target.removeAttribute('data-lazy-src'), 3679 r?.unobserve(e.target)); 3680 }); 3681 }, 3682 { root: i, rootMargin: '100px' } 3683 )), 3684 n.querySelectorAll('[data-lazy-src]').forEach((e) => { 3685 r?.observe(e); 3686 }), 3687 e?.emit('thumbs:ready'); 3688 } 3689 function M() { 3690 if (!o || !e || !n || p() || t) return; 3691 let i = y(); 3692 if (!i.length) return; 3693 let r = m( 3694 {}, 3695 { 3696 Sync: { target: e }, 3697 Lazyload: { preload: 1 }, 3698 slides: i, 3699 classes: { container: 'f-thumbs', viewport: 'f-thumbs__viewport', slide: 'f-thumbs__slide' }, 3700 center: !0, 3701 fill: !g(), 3702 infinite: !1, 3703 dragFree: !0, 3704 rtl: e.getOptions().rtl || !1, 3705 slidesPerPage: (e) => { 3706 let t = 0; 3707 return (g() && 3708 ((function () { 3709 if (!g() || !n) return; 3710 let e = (e) => 3711 (n && parseFloat(getComputedStyle(n).getPropertyValue('--f-thumb-' + e))) || 0; 3712 (l = e('width')), (s = e('clip-width')); 3713 })(), 3714 (t = (l - s) * 4)), 3715 e && e.getTotalSlideDim() <= e.getViewportDim() - t) 3716 ? 1 / 0 3717 : 1; 3718 }, 3719 }, 3720 eW.Carousel || {}, 3721 d('Carousel') || {} 3722 ); 3723 (t = o(n, r, { Sync: eT, Lazyload: eO })).on('ready', () => { 3724 v(n, 'is-syncing'), e?.emit('thumbs:ready'), g() && e?.on('render', R); 3725 }), 3726 t.on('destroy', () => { 3727 e?.emit('thumbs:destroy'); 3728 }), 3729 t.init(), 3730 t.getGestures()?.on('start', () => { 3731 c = !1; 3732 }), 3733 t.on('click', (e, t) => { 3734 let n = t.target; 3735 if (n) { 3736 let e = n.matches('button') ? n : n.firstElementChild; 3737 e && e.matches('button') && (t.preventDefault(), e.focus({ preventScroll: !0 })); 3738 } 3739 }), 3740 v(e.getContainer(), 'has-thumbs'), 3741 k(); 3742 } 3743 function L() { 3744 f() && d('showOnStart') && (w(), x()); 3745 } 3746 function S() { 3747 f() && 3748 (M(), 3749 e?.on('addSlide', A), 3750 e?.on('removeSlide', C), 3751 e?.on('click', O), 3752 e?.on('refresh', I), 3753 e?.getGestures()?.on('start', T), 3754 z(!0)); 3755 } 3756 function T() { 3757 (c = !0), document.activeElement?.closest('.f-thumbs') && document.activeElement?.blur(); 3758 } 3759 function R() { 3760 n?.classList.toggle('is-syncing', e?.hasNavigated() === !1 || e?.getTween()?.isRunning()), 3761 k(), 3762 e?.getGestures()?.isPointerDown() && 3763 (function () { 3764 if (!g() || !e || !t || !c) return; 3765 let n = t.getTween(), 3766 o = t.getPages(), 3767 i = e.getPageIndex() || 0, 3768 r = e.getPageProgress() || 0; 3769 if (!e || !o || !o[i] || !n) return; 3770 let a = n.isRunning() ? n.getCurrentValues().pos : t.getPosition(); 3771 if (void 0 === a) return; 3772 let u = o[i].pos + r * (l - s); 3773 (u = h(o[0].pos, u, o[o.length - 1].pos)), n.from({ pos: a }).to({ pos: u }).start(); 3774 })(); 3775 } 3776 function P() { 3777 (c = !0), z(); 3778 } 3779 function A(e, n) { 3780 let o = { html: b(n) }; 3781 if (t) t.add(o, n.index); 3782 else if (i) { 3783 let e = u(E(o)); 3784 if (e) { 3785 i.append(e); 3786 let t = e.querySelector('img'); 3787 t && r?.observe(t); 3788 } 3789 } 3790 } 3791 function C(e, n) { 3792 t ? t.remove(n.index) : i && i.querySelector(`[index="${n.index}"]`)?.remove(); 3793 } 3794 function O(e, t) { 3795 let o = t.target; 3796 !t.defaultPrevented && 3797 o?.dataset?.thumbsAction === 'toggle' && 3798 (n || (w(!0), x(), M()), n && n.classList.toggle('is-hidden')); 3799 } 3800 function I() { 3801 z(); 3802 } 3803 function z(t = !1) { 3804 if (!e || !i || !p()) return; 3805 let n = e.getPageIndex(); 3806 i.querySelectorAll('.is-selected').forEach((e) => { 3807 e.classList.remove('is-selected'); 3808 }); 3809 let o = i.querySelector(`[index="${n}"]`); 3810 if (o) { 3811 o.classList.add('is-selected'); 3812 let e = i.getBoundingClientRect(), 3813 n = o.getBoundingClientRect(), 3814 r = o.offsetTop - i.offsetTop - 0.5 * e.height + 0.5 * n.height, 3815 l = o.scrollLeft - i.scrollLeft - 0.5 * e.width + 0.5 * n.width; 3816 i.scrollTo({ top: r, left: l, behavior: t ? 'instant' : 'smooth' }); 3817 } 3818 } 3819 function k() { 3820 if (!g() || !e || !t) return; 3821 let n = t?.getSlides() || [], 3822 o = -0.5 * l; 3823 for (let t of n) { 3824 let n = t.el; 3825 if (!n) continue; 3826 let i = e.getPageProgress(t.index) || 0; 3827 (i = Math.max(-1, Math.min(1, i))) > -1 && i < 1 && (o += 0.5 * l * (1 - Math.abs(i))), 3828 (i = Math.round(1e4 * i) / 1e4), 3829 (o = Math.round(1e4 * o) / 1e4), 3830 n.style.setProperty('--progress', `${Math.abs(i)}`), 3831 n.style.setProperty('--shift', `${e?.isRTL() ? -1 * o : o}px`), 3832 i > -1 && i < 1 && (o += 0.5 * l * (1 - Math.abs(i))); 3833 } 3834 } 3835 return { 3836 init: function (t, n) { 3837 (o = n), (e = t).on('ready', S), e.on('initSlides', L), e.on('change', P); 3838 }, 3839 destroy: function () { 3840 p() && e?.emit('thumbs:destroy'), 3841 e?.off('ready', S), 3842 e?.off('initSlides', L), 3843 e?.off('change', P), 3844 e?.off('render', R), 3845 e?.off('addSlide', A), 3846 e?.off('click', O), 3847 e?.off('refresh', I), 3848 e?.getGestures()?.off('start', T), 3849 e?.getContainer()?.classList.remove('has-thumbs'), 3850 (e = void 0), 3851 t?.destroy(), 3852 (t = void 0), 3853 n?.remove(), 3854 (n = void 0); 3855 }, 3856 getCarousel: function () { 3857 return t; 3858 }, 3859 getContainer: function () { 3860 return n; 3861 }, 3862 getType: function () { 3863 return d('type'); 3864 }, 3865 isEnabled: f, 3866 }; 3867 }, 3868 eG = { 3869 autosize: !1, 3870 iframeAttr: { allow: 'autoplay; fullscreen', scrolling: 'auto' }, 3871 preload: !1, 3872 }, 3873 eU = () => { 3874 let e; 3875 function t() { 3876 let t = e?.getOptions().Html; 3877 return a(t) ? { ...eG, ...t } : eG; 3878 } 3879 function n(e, n) { 3880 let o = e[n]; 3881 return void 0 === o && (o = t()[n]), 'true' === o || ('false' !== o && o); 3882 } 3883 function o(e, t) { 3884 let n = t.type, 3885 o = t.src; 3886 if (!n && s(o)) { 3887 if ( 3888 ('#' === o.charAt(0) 3889 ? (n = 'inline') 3890 : o.match( 3891 /(^data:image\/[a-z0-9+\/=]*,)|(\.((a)?png|avif|gif|jp(g|eg)|pjp(eg)?|jfif|svg|webp|bmp|
3891ico|tif(f)?)((\?|#).*)?$)/i 3892 ) 3893 ? (n = 'image') 3894 : o.match(/\.(pdf)((\?|#).*)?$/i) 3895 ? (n = 'pdf') 3896 : o.match(/\.(html|php)((\?|#).*)?$/i) && (n = 'iframe'), 3897 !n) 3898 ) { 3899 let e = o.match( 3900 /(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:(?:(?:maps\/(?:place\/(?:.*)\/)?\@(.*),(\d+.?\d+?)z))|(?:\?ll=))(.*)?/i 3901 ); 3902 e && 3903 ((o = `https://maps.google.${e[1]}/?ll=${(e[2] 3904 ? e[2] + '&z=' + Math.floor(parseFloat(e[3])) + (e[4] ? e[4].replace(/^\//, '&') : '') 3905 : e[4] + '' 3906 ).replace(/\?/, '&')}&output=${e[4] && e[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'}`), 3907 (n = 'gmap')); 3908 } 3909 if (!n) { 3910 let e = o.match(/(?:maps\.)?google\.([a-z]{2,3}(?:\.[a-z]{2})?)\/(?:maps\/search\/)(.*)/i); 3911 e && 3912 ((o = `https://maps.google.${e[1]}/maps?q=${e[2] 3913 .replace('query=', 'q=') 3914 .replace('api=1', '')}&output=embed`), 3915 (n = 'gmap')); 3916 } 3917 n && ((t.src = o), (t.type = n)); 3918 } 3919 } 3920 function i(o, i) { 3921 ('iframe' === i.type || 'pdf' === i.type || 'gmap' === i.type) && 3922 (function (o) { 3923 let i = o.el, 3924 r = o.src; 3925 if (!e || !i || !r) return; 3926 let l = document.createElement('iframe'); 3927 for (let [e, n] of (v(l, 'f-iframe'), Object.entries(t().iframeAttr || {}))) 3928 l.setAttribute(e, n); 3929 l.onerror = () => { 3930 (o.state = 2), e?.showError(o, '{{IFRAME_ERROR}}'); 3931 }; 3932 let a = document.createElement('div'); 3933 if ((v(a, 'f-html'), a.append(l), o.width)) { 3934 let e = `${o.width}`; 3935 e.match(/^\d+$/) && (e += 'px'), (a.style.maxWidth = `${e}`); 3936 } 3937 if (o.height) { 3938 let e = `${o.height}`; 3939 e.match(/^\d+$/) && (e += 'px'), (a.style.maxHeight = `${e}`); 3940 } 3941 if (o.aspectRatio) { 3942 let e = i.getBoundingClientRect(); 3943 (a.style.aspectRatio = `${o.aspectRatio}`), 3944 (a.style[e.width > e.height ? 'width' : 'height'] = 'auto'), 3945 (a.style[e.width > e.height ? 'maxWidth' : 'maxHeight'] = 'none'); 3946 } 3947 (o.htmlEl = a), (o.contentEl = l), v(i, `has-html has-iframe has-${o.type}`), i.prepend(a); 3948 let s = n(o, 'preload'), 3949 c = n(o, 'autosize'); 3950 'iframe' === o.type && (s || c) 3951 ? ((o.state = 0), 3952 e.showLoading(o), 3953 v(i, 'is-loading'), 3954 (l.onload = () => { 3955 if (!e || 1 !== e.getState() || !l.src.length) return; 3956 o.state = 1; 3957 let t = 'true' !== l.dataset.ready; 3958 (l.dataset.ready = 'true'), 3959 (function (e) { 3960 let t = e.contentEl, 3961 o = t?.parentElement, 3962 i = o?.style, 3963 r = n(e, 'autosize'), 3964 l = e.width || 0, 3965 a = e.height || 0; 3966 if ((l && a && (r = !1), t && o && i && r)) { 3967 try { 3968 let e = window.getComputedStyle(o), 3969 n = parseFloat(e.paddingLeft) + parseFloat(e.paddingRight), 3970 r = parseFloat(e.paddingTop) + parseFloat(e.paddingBottom), 3971 s = t.contentWindow; 3972 if (s) { 3973 let e = s.document, 3974 t = e.getElementsByTagName('html')[0], 3975 o = e.body; 3976 i.width = ''; 3977 let c = window.getComputedStyle(o), 3978 u = parseFloat(c.marginLeft) + parseFloat(c.marginRight), 3979 d = o.style.overflow || ''; 3980 (o.style.overflow = 'hidden'), 3981 (l = l || o.scrollWidth + u + n), 3982 (i.flex = '0 0 auto'), 3983 (i.width = `${l}px`), 3984 (i.height = `${o.scrollHeight}px`), 3985 (o.style.overflow = d), 3986 (a = Math.max(t.scrollHeight, Math.ceil(t.getBoundingClientRect().height)) + r); 3987 } 3988 } catch (e) {} 3989 if (l || a) { 3990 let e = { flex: '0 1 auto', width: '', height: '' }; 3991 l && 'auto' !== l && (e.width = `${l}px`), 3992 a && 'auto' !== a && (e.height = `${a}px`), 3993 Object.assign(i, e); 3994 } 3995 } 3996 })(o), 3997 e.hideLoading(o), 3998 t && e.emit('contentReady', o), 3999 b(i, 'is-loading'); 4000 }), 4001 (l.src = `${r}`)) 4002 : ((l.src = `${r}`), e.emit('contentReady', o)); 4003 })(i); 4004 } 4005 function r(t, n) { 4006 ('iframe' === n.type || 'pdf' === n.type || 'gmap' === n.type) && 4007 (e?.hideError(n), 4008 n.contentEl?.remove(), 4009 (n.contentEl = void 0), 4010 n.htmlEl?.remove(), 4011 (n.htmlEl = void 0)); 4012 } 4013 return { 4014 init: function (t) { 4015 (e = t).on('addSlide', o), e.on('attachSlideEl', i), e.on('detachSlideEl', r); 4016 }, 4017 destroy: function () { 4018 e?.off('addSlide', o), e?.off('attachSlideEl', i), e?.off('detachSlideEl', r), (e = void 0); 4019 }, 4020 }; 4021 }, 4022 eX = (e, t = {}) => { 4023 let n = new URLSearchParams(new URL(e).search), 4024 o = new URLSearchParams(); 4025 for (let [e, i] of [...n, ...Object.entries(t)]) { 4026 let t = i + ''; 4027 if ('t' === e) { 4028 let e = t.match(/((\d*)m)?(\d*)s?/); 4029 e && o.set('start', 60 * parseInt(e[2] || '0') + parseInt(e[3] || '0') + ''); 4030 } else o.set(e, t); 4031 } 4032 let i = o + '', 4033 r = e.match(/#t=((.*)?\d+s)/); 4034 return r && (i += `#t=${r[1]}`), i; 4035 }, 4036 eY = { 4037 autoplay: !1, 4038 html5videoTpl: `<video class="f-html5video" playsinline controls controlsList="nodownload" poster="{{poster}}"> 4039 <source src="{{src}}" type="{{format}}" />Sorry, your browser doesn't support embedded videos.</video>`, 4040 iframeAttr: { 4041 allow: 'autoplay; fullscreen', 4042 scrolling: 'no', 4043 referrerPolicy: 'strict-origin-when-cross-origin', 4044 credentialless: '', 4045 }, 4046 vimeo: { byline: 1, color: '00adef', controls: 1, dnt: 1, muted: 0 }, 4047 youtube: { controls: 1, enablejsapi: 1, nocookie: 1, rel: 0, fs: 1 }, 4048 }, 4049 eK = () => { 4050 let e, 4051 t = !1; 4052 function n() { 4053 let t = e?.getOptions().Video; 4054 return a(t) ? { ...eY, ...t } : eY; 4055 } 4056 function o() { 4057 return e?.getPage()?.slides[0]; 4058 } 4059 let i = (t) => { 4060 try { 4061 let n = JSON.parse(t.data); 4062 if ('https://player.vimeo.com' === t.origin) { 4063 if ('ready' === n.event) 4064 for (let n of Array.from(e?.getContainer()?.getElementsByClassName('f-iframe') || [])) 4065 n instanceof HTMLIFrameElement && 4066 n.contentWindow === t.source && 4067 (n.dataset.ready = 'true'); 4068 } else if ( 4069 t.origin.match(/^https:\/\/(www.)?youtube(-nocookie)?.com$/) && 4070 'onReady' === n.event 4071 ) { 4072 let e = document.getElementById(n.id); 4073 e && (e.dataset.ready = 'true'); 4074 } 4075 } catch (e) {} 4076 }; 4077 function r(e, t) { 4078 let o = t.src; 4079 if (!s(o)) return; 4080 let i = t.type; 4081 if (!i || 'html5video' === i) { 4082 let e = o.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i); 4083 e && 4084 ((i = 'html5video'), 4085 (t.html5videoFormat = t.html5videoFormat || 'video/' + ('ogv' === e[1] ? 'ogg' : e[1]))); 4086 } 4087 if (!i || 'youtube' === i) { 4088 let e = o.match( 4089 /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(?:watch\?(?:.*&)?v=|v\/|u\/|shorts\/|embed\/?)?(videoseries\?list=(?:.*)|[\w-]{11}|\?listType=(?:.*)&list=(?:.*))(?:.*)/i 4090 ); 4091 if (e) { 4092 let r = { ...n().youtube, ...(t.youtube || {}) }, 4093 l = `www.youtube${r.nocookie ? '-nocookie' : ''}.com`, 4094 a = eX(o, r), 4095 s = encodeURIComponent(e[2]); 4096 (t.videoId = s), 4097 (t.src = `https://${l}/embed/${s}?${a}`), 4098 (t.thumb = t.thumb || `https://i.ytimg.com/vi/${s}/mqdefault.jpg`), 4099 (i = 'youtube'); 4100 } 4101 } 4102 if (!i || 'vimeo' === i) { 4103 let e = o.match(/^.+vimeo.com\/(?:\/)?(video\/)?([\d]+)((\/|\?h=)([a-z0-9]+))?(.*)?/); 4104 if (e) { 4105 let r = eX(o, { ...n().vimeo, ...(t.vimeo || {}) }), 4106 l = encodeURIComponent(e[2]), 4107 a = e[5] || ''; 4108 (t.videoId = l), 4109 (t.src = `https://player.vimeo.com/video/${l}?${a ? `h=${a}${r ? '&' : ''}` : ''}${r}`), 4110 (i = 'vimeo'); 4111 } 4112 } 4113 t.type = i; 4114 } 4115 function l(t, o) { 4116 'html5video' === o.type && 4117 (function (t) { 4118 let o = t.el, 4119 i = t.src; 4120 if (!e || !o || !i) return; 4121 let r = t.html5videoTpl || n().html5videoTpl, 4122 l = t.html5videoFormat || n().html5videoFormat; 4123 if (!r) return; 4124 let a = t.poster || (t.thumb && s(t.thumb) ? t.thumb : ''), 4125 c = u( 4126 r 4127 .replace(/\{\{src\}\}/gi, i + '') 4128 .replace(/\{\{format\}\}/gi, l || '') 4129 .replace(/\{\{poster\}\}/gi, a + '') 4130 ); 4131 if (!c) return; 4132 let d = document.createElement('div'); 4133 v(d, 'f-html'), 4134 d.append(c), 4135 (t.contentEl = c), 4136 (t.htmlEl = d), 4137 v(o, `has-${t.type}`), 4138 o.prepend(d), 4139 g(t), 4140 e.emit('contentReady', t); 4141 })(o), 4142 ('youtube' === o.type || 'vimeo' === o.type) && 4143 (function (t) { 4144 let o = t.el, 4145 i = t.src; 4146 if (!e || !o || !i) return; 4147 let r = document.createElement('iframe'); 4148 for (let [e, o] of (v(r, 'f-iframe'), 4149 r.setAttribute('id', `f-iframe_${t.videoId}`), 4150 Object.entries(n().iframeAttr || {}))) 4151 r.setAttribute(e, o); 4152 'youtube' === t.type && 4153 (r.onload = () => { 4154 e?.getState() === 1 && 4155 r.contentWindow?.postMessage( 4156 JSON.stringify({ event: 'listening', id: r.getAttribute('id') }), 4157 '*' 4158 ); 4159 }), 4160 (r.onerror = () => { 4161 e?.showError(t, '{{IFRAME_ERROR}}'); 4162 }); 4163 let l = document.createElement('div'); 4164 v(l, 'f-html'), 4165 l.append(r), 4166 (t.contentEl = r), 4167 (t.htmlEl = l), 4168 v(o, `has-html has-iframe has-${t.type}`), 4169 (r.src = `${t.src}`), 4170 o.prepend(l), 4171 g(t), 4172 e.emit('contentReady', t); 4173 })(o); 4174 } 4175 function c(e, t) { 4176 ('html5video' === t.type || 'youtube' === t.type || 'vimeo' === t.type) && 4177 (t.contentEl?.remove(), (t.contentEl = void 0), t.htmlEl?.remove(), (t.htmlEl = void 0)), 4178 t.poller && clearTimeout(t.poller); 4179 } 4180 function d() { 4181 t = !1; 4182 } 4183 function f() { 4184 if (t) return; 4185 t = !0; 4186 let e = o(); 4187 (e && void 0 !== e.autoplay ? e.autoplay : n().autoplay) && 4188 (!(function () { 4189 let e = o(), 4190 t = e?.el; 4191 if (t && e?.type === 'html5video') 4192 try { 4193 let e = t.querySelector('video'); 4194 if (e) { 4195 let t = e.play(); 4196 void 0 !== t && 4197 t 4198 .then(() => {}) 4199 .catch((t) => { 4200 (e.muted = !0), e.play(); 4201 }); 4202 } 4203 } catch (e) {} 4204 let n = e?.htmlEl; 4205 n instanceof HTMLIFrameElement && 4206 n.contentWindow?.postMessage('{"event":"command","func":"stopVideo","args":""}', '*'); 4207 })(), 4208 (function () { 4209 let e = o(), 4210 t = e?.type; 4211 if (!(e?.el && ('youtube' === t || 'vimeo' === t))) return; 4212 let n = () => { 4213 if (e.contentEl && e.contentEl instanceof HTMLIFrameElement && e.contentEl.contentWindow) { 4214 let t; 4215 if ('true' === e.contentEl.dataset.ready) { 4216 (t = 4217 'youtube' === e.type 4218 ? { event: 'command', func: 'playVideo' } 4219 : { method: 'play', value: 'true' }) && 4220 e.contentEl.contentWindow.postMessage(JSON.stringify(t), '*'), 4221 (e.poller = void 0); 4222 return; 4223 } 4224 'youtube' === e.type && 4225 ((t = { event: 'listening', id: e.contentEl.getAttribute('id') }), 4226 e.contentEl.contentWindow.postMessage(JSON.stringify(t), '*')); 4227 } 4228 e.poller = setTimeout(n, 250); 4229 }; 4230 n(); 4231 })()); 4232 } 4233 function g(e) { 4234 let t = e?.htmlEl; 4235 if (e && t && ('html5video' === e.type || 'youtube' === e.type || 'vimeo' === e.type)) { 4236 if ( 4237 ((t.style.aspectRatio = ''), 4238 (t.style.width = ''), 4239 (t.style.height = ''), 4240 (t.style.maxWidth = ''), 4241 (t.style.maxHeight = ''), 4242 e.width) 4243 ) { 4244 let n = `${e.width}`; 4245 n.match(/^\d+$/) && (n += 'px'), (t.style.maxWidth = `${n}`); 4246 } 4247 if (e.height) { 4248 let n = `${e.height}`; 4249 n.match(/^\d+$/) && (n += 'px'), (t.style.maxHeight = `${n}`); 4250 } 4251 if (e.aspectRatio) { 4252 let n = e.aspectRatio.split('/'), 4253 o = parseFloat(n[0].trim()), 4254 i = n[1] ? parseFloat(n[1].trim()) : 0; 4255 t.offsetHeight; 4256 let r = t.getBoundingClientRect(), 4257 l = (o && i ? o / i : o) < (r.width || 1) / (r.height || 1); 4258 (t.style.aspectRatio = `${e.aspectRatio}`), 4259 (t.style.width = l ? 'auto' : ''), 4260 (t.style.height = l ? '' : 'auto'); 4261 } 4262 } 4263 } 4264 function m() { 4265 g(o()); 4266 } 4267 return { 4268 init: function (t) { 4269 (e = t).on('addSlide', r), 4270 e.on('attachSlideEl', l), 4271 e.on('detachSlideEl', c), 4272 e.on('ready', f), 4273 e.on('change', d), 4274 e.on('settle', f), 4275 e.on('refresh', m), 4276 window.addEventListener('message', i); 4277 }, 4278 destroy: function () { 4279 e?.off('addSlide', r), 4280 e?.off('attachSlideEl', l), 4281 e?.off('detachSlideEl', c), 4282 e?.off('ready', f), 4283 e?.off('change', d), 4284 e?.off('settle', f), 4285 e?.off('refresh', m), 4286 window.removeEventListener('message', i), 4287 (e = void 0); 4288 }, 4289 }; 4290 }, 4291 eJ = { 4292 autoStart: !1, 4293 btnTpl: 4294 '<button data-fullscreen-action="toggle" class="f-button" title="{{TOGGLE_FULLSCREEN}}"><svg><g><path d="M8 3H5a2 2 0 0 0-2 2v3M21 8V5a2 2 0 0 0-2-2h-3M3 16v3a2 2 0 0 0 2 2h3M16 21h3a2 2 0 0 0 2-2v-3"/></g><g><path d="M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5"/></g></svg></button>', 4295 }, 4296 eQ = 'in-fullscreen-mode', 4297 e0 = () => { 4298 let e; 4299 function t(t) { 4300 let n = e?.getOptions().Fullscreen, 4301 o = (a(n) ? { ...eJ, ...n } : eJ)[t]; 4302 return o && 'function' == typeof o && e ? o(e) : o; 4303 } 4304 function n() { 4305 e?.getPlugins().Toolbar?.add('fullscreen', { tpl: t('btnTpl') }); 4306 } 4307 function o() { 4308 if (t('autoStart')) { 4309 let e = r(); 4310 e && s(e); 4311 } 4312 } 4313 function i(e, t) { 4314 let n = t.target; 4315 n && !t.defaultPrevented && 'toggle' === n.dataset.fullscreenAction && u(); 4316 } 4317 function r() { 4318 return t('el') || e?.getContainer() || void 0; 4319 } 4320 function l() { 4321 let e = document; 4322 return e.fullscreenEnabled 4323 ? !!e.fullscreenElement 4324 : !!e.webkitFullscreenEnabled && !!e.webkitFullscreenElement; 4325 } 4326 function s(e) { 4327 let t, 4328 n = document; 4329 return ( 4330 e || (e = n.documentElement), 4331 n.fullscreenEnabled 4332 ? (t = e.requestFullscreen()) 4333 : n.webkitFullscreenEnabled && (t = e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)), 4334 t && 4335 t.then(() => { 4336 e.classList.add(eQ); 4337 }), 4338 t 4339 ); 4340 } 4341 function c() { 4342 let e, 4343 t = document; 4344 return ( 4345 t.fullscreenEnabled 4346 ? (e = t.fullscreenElement && t.exitFullscreen()) 4347 : t.webkitFullscreenEnabled && (e = t.webkitFullscreenElement && t.webkitExitFullscreen()), 4348 e && 4349 e.then(() => { 4350 r()?.classList.remove(eQ); 4351 }), 4352 e 4353 ); 4354 } 4355 function u() { 4356 if (l()) c(); 4357 else { 4358 let e = r(); 4359 e && s(e); 4360 } 4361 } 4362 return { 4363 init: function (t) { 4364 (e = t).on('initPlugins', n), e.on('ready', o), e.on('click', i); 4365 }, 4366 destroy: function () { 4367 e?.off('initPlugins', n), e?.off('ready', o), e?.off('click', i); 4368 }, 4369 exit: c, 4370 inFullscreen: l, 4371 request: s, 4372 toggle: u, 4373 }; 4374 }, 4375 e1 = !1, 4376 e2 = !1, 4377 e5 = !1, 4378 e4 = !1, 4379 e3 = () => { 4380 let e = new URL(document.URL).hash, 4381 t = e.slice(1).split('-'), 4382 n = t[t.length - 1], 4383 o = (n && /^\+?\d+$/.test(n) && parseInt(t.pop() || '1', 10)) || 1;
4384 return { urlHash: e, urlSlug: t.join('-'), urlIndex: o }; 4385 }, 4386 e6 = () => { 4387 let e = i?.getInstance(), 4388 t = e?.getState(); 4389 return !!e && (0 === t || 1 === t); 4390 }, 4391 e7 = () => { 4392 if (!i || e6()) return; 4393 let { urlSlug: e, urlIndex: t } = e3(); 4394 if (!e) return; 4395 let n = document.querySelector(`[data-slug="${e}"]`); 4396 n && i.fromTriggerEl(n), 4397 !e6() && 4398 (n = document.querySelectorAll(`[data-fancybox="${e}"]`)[t - 1]) && 4399 i.fromTriggerEl(n, { startIndex: t - 1 }), 4400 e6() && 4401 n && 4402 !n.closest('[inert]') && 4403 n.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'center' }); 4404 }, 4405 e9 = (e) => { 4406 let t = e.getOptions().Hash, 4407 n = e.getSlide(); 4408 return (n && (n.slug || n.fancybox || (a(t) ? t.slug : ''))) || ''; 4409 }, 4410 e8 = (e) => { 4411 let t = e9(e), 4412 n = e.getSlide(); 4413 if (!n || !t) return ''; 4414 let o = parseInt(n.index + '', 10) + 1, 4415 i = n.slug ? `#${n.slug}` : `#${t}-${o}`; 4416 return 2 > (e.getCarousel()?.getPages()?.length || 0) && (i = `#${t}`), i; 4417 }, 4418 te = () => { 4419 if (!i || e5) return; 4420 let e = i?.getInstance(), 4421 t = e?.getCarousel(), 4422 { urlSlug: n, urlIndex: o } = e3(), 4423 r = e?.getOptions().Hash; 4424 if (!1 !== r) { 4425 if (e && 1 === e.getState() && t) { 4426 for (let e of t.getSlides() || []) 4427 if (e.slug === n || ((e.fancybox === n || (a(r) && r.slug === n)) && e.index === o - 1)) { 4428 (e2 = !1), t.goTo(e.index); 4429 return; 4430 } 4431 (e4 = !0), e.close(), (e4 = !1); 4432 } 4433 e7(); 4434 } 4435 }, 4436 tt = () => { 4437 i && 4438 ((r = setTimeout(() => { 4439 (e1 = !0), e7(), (e1 = !1); 4440 }, 300)), 4441 window.addEventListener('hashchange', te, !1)); 4442 }; 4443 function tn() { 4444 history.scrollRestoration && l && ((history.scrollRestoration = l), (l = void 0)); 4445 } 4446 let to = () => { 4447 let e, 4448 t = ''; 4449 function n() { 4450 if (!e || !e.isTopMost() || !1 === e.getOptions().Hash) return; 4451 if (e1) { 4452 let t = e.getOptions().sync; 4453 t && t.goTo(e?.getCarousel()?.getPageIndex() || 0, { transition: !1, tween: !1 }); 4454 } 4455 let n = e.getCarousel(); 4456 if (!n || !e.getSlide()) return; 4457 let i = e9(e); 4458 if (!i) return; 4459 let { urlHash: r, urlSlug: a } = e3(), 4460 s = e8(e); 4461 r !== s && (t = r), 4462 history.scrollRestoration && 4463 !l && 4464 ((l = history.scrollRestoration), 4465 (history.scrollRestoration = 'manual'), 4466 window.addEventListener('beforeunload', tn)), 4467 n.on('change', o); 4468 let c = i !== a; 4469 try { 4470 window.history[c ? 'pushState' : 'replaceState']( 4471 {}, 4472 document.title, 4473 window.location.pathname + window.location.search + s 4474 ), 4475 c && (e2 = !0); 4476 } catch (e) {} 4477 } 4478 function o() { 4479 if (!e || !e.isTopMost() || !1 === e.getOptions().Hash || !e.getSlide() || !e9(e)) return; 4480 let t = e8(e); 4481 e5 = !0;
4482 try { 4483 window.history.replaceState( 4484 {}, 4485 document.title, 4486 window.location.pathname + window.location.search + t 4487 ); 4488 } catch (e) {} 4489 e5 = !1; 4490 } 4491 function a() { 4492 if (e && e.isTopMost() && !1 !== e.getOptions().Hash && !e4 && e9(e)) { 4493 e5 = !0; 4494 try { 4495 e2 && 4496 !(function () { 4497 if (window.parent === window) return !1; 4498 try { 4499 var e = window.frameElement; 4500 } catch (t) { 4501 e = null; 4502 } 4503 return null === e ? 'data:' === location.protocol : e.hasAttribute('sandbox'); 4504 })() && 4505 document.activeElement?.nodeName !== 'IFRAME' 4506 ? window.history.back() 4507 : window.history.replaceState( 4508 {}, 4509 document.title, 4510 window.location.pathname + window.location.search + t 4511 ); 4512 } catch (e) {} 4513 e5 = !1; 4514 } 4515 } 4516 return { 4517 init: function (t) { 4518 clearTimeout(r), (e = t).on('ready', n), e.on('close', a); 4519 }, 4520 destroy: function () { 4521 e?.off('ready', n), e?.off('close', a); 4522 let t = e?.getCarousel(); 4523 t && t.off('change', o), 4524 (e = void 0), 4525 i?.getInstance() || (tn(), window.removeEventListener('beforeunload', tn)); 4526 }, 4527 }; 4528 }; 4529 (to.getInfoFromURL = e3), 4530 (to.startFromUrl = e7), 4531 (to.setup = function (e) { 4532 !i && 4533 ((i = e), 4534 p() && 4535 (/complete|interactive|loaded/.test(document.readyState) 4536 ? tt() 4537 : document.addEventListener('DOMContentLoaded', tt))); 4538 }); 4539 let ti = { 4540 ...ep, 4541 CLOSE: 'Close', 4542 NEXT: 'Next', 4543 PREV: 'Previous', 4544 MODAL: 'You can close this modal content with the ESC key', 4545 ELEMENT_NOT_FOUND: 'HTML Element Not Found', 4546 IFRAME_ERROR: 'Error Loading Page', 4547 NO_CAPTION: 'No Caption', 4548 TOGGLE_SIDEBAR: 'Toggle sidebar', 4549 }, 4550 tr = 4551 '<button class="f-button" title="{{CLOSE}}" data-fancybox-close><svg tabindex="-1" width="24" height="24" viewBox="0 0 24 24"><path d="M19.286 4.714 4.714 19.286M4.714 4.714l14.572 14.572" /></svg></button>'; 4552 eq().add('close', { tpl: tr }); 4553 let tl = (e) => { 4554 e.cancelable && e.preventDefault(); 4555 }, 4556 ta = (e = null, t = '', n) => { 4557 if (!e || !e.parentElement || !t) { 4558 n && n(); 4559 return; 4560 } 4561 ts(e); 4562 let o = (i) => { 4563 i.target === e && 4564 e.dataset.animationName && 4565 (e.removeEventListener('animationend', o), 4566 delete e.dataset.animationName, 4567 n && n(), 4568 e.classList.remove(t)); 4569 }; 4570 (e.dataset.animationName = t), e.addEventListener('animationend', o), v(e, t); 4571 }, 4572 ts = (e) => { 4573 e && 4574 e.dispatchEvent( 4575 new CustomEvent('animationend', { bubbles: !1, cancelable: !0, currentTarget: e }) 4576 ); 4577 }, 4578 tc = 4579 ((($ = {})[($.Init = 0)] = 'Init'), 4580 ($[($.Ready = 1)] = 'Ready'), 4581 ($[($.Closing = 2)] = 'Closing'), 4582 ($[($.Destroyed = 3)] = 'Destroyed'), 4583 $), 4584 tu = { 4585 ajax: null, 4586 backdropClick: 'close', 4587 Carousel: {}, 4588 closeButton: 'auto', 4589 closeButtonTpl: tr, 4590 closeExisting: !1, 4591 delegateEl: void 0, 4592 dragToClose: !0, 4593 fadeEffect: !0, 4594 groupAll: !1, 4595 groupAttr: 'data-fancybox', 4596 hideClass: 'f-fadeOut', 4597 hideScrollbar: !0, 4598 id: void 0, 4599 idle: !1, 4600 keyboard: { 4601 Escape: 'close', 4602 Delete: 'close', 4603 Backspace: 'close', 4604 PageUp: 'next', 4605 PageDown: 'prev', 4606 ArrowUp: 'prev', 4607 ArrowDown: 'next', 4608 ArrowRight: 'next', 4609 ArrowLeft: 'prev', 4610 }, 4611 l10n: ti, 4612 mainClass: '', 4613 mainStyle: {}, 4614 mainTpl: `<dialog class="fancybox__dialog"> 4615 <div class="fancybox__container" tabindex="0" aria-label="{{MODAL}}"> 4616 <div class="fancybox__backdrop"></div> 4617 <div class="fancybox__carousel"></div> 4618 </div> 4619 </dialog>`, 4620 modal: !0, 4621 on: {}, 4622 parentEl: void 0, 4623 placeFocusBack: !0, 4624 showClass: 'f-zoomInUp', 4625 startIndex: 0, 4626 sync: void 0, 4627 theme: 'dark', 4628 triggerEl: void 0, 4629 triggerEvent: void 0, 4630 zoomEffect: !0, 4631 }, 4632 td = new Map(), 4633 tf = 0, 4634 tg = 'with-fancybox'; 4635 function tm() { 4636 for (let e of Object.values(th.Plugins)) { 4637 let t = e.setup; 4638 'function' == typeof t && t(th); 4639 } 4640 } 4641 function tp(e, t = {}) { 4642 let n, o, i, r; 4643 if (!(e && e instanceof Element)) return; 4644 let l = {}; 4645 for (let [t, a] of th.openers) 4646 if (t.contains(e)) 4647 for (let [s, c] of a) { 4648 let a; 4649 if (s) { 4650 for (let n of t.querySelectorAll(s)) 4651 if (n.contains(e)) { 4652 a = n; 4653 break; 4654 } 4655 if (!a) continue; 4656 }
4657 for (let [s, u] of c) { 4658 let c = null; 4659 try { 4660 c = e.closest(s); 4661 } catch (e) {} 4662 c && ((o = t), (i = a), (n = c), (r = s), m(l, u || {})); 4663 } 4664 } 4665 if (!o || !r || !n) return; 4666 let a = m({}, tu, t, l, { triggerEl: n }), 4667 s = [].slice.call((i || o).querySelectorAll(r)), 4668 c = n.closest('.f-carousel'), 4669 u = c?.carousel; 4670 if (u && !(i && c.contains(i))) { 4671 let e = []; 4672 for (let t of u?.getSlides()) { 4673 let n = t.el; 4674 n && (n.matches(r) ? e.push(n) : e.push(...[].slice.call(n.querySelectorAll(r)))); 4675 } 4676 e.length && 4677 ((s = [...e]), 4678 u.getPlugins().Autoplay?.pause(), 4679 u.getPlugins().Autoscroll?.pause(), 4680 (a.sync = u)); 4681 } 4682 if (!1 === a.groupAll) { 4683 let e = a.groupAttr, 4684 t = e && n ? n.getAttribute(`${e}`) : ''; 4685 s = e && t ? s.filter((n) => n.getAttribute(`${e}`) === t) : [n]; 4686 } 4687 if (!s.length) return; 4688 a.triggerEvent?.preventDefault(); 4689 let d = th.getInstance(), 4690 f = d?.getState(); 4691 if (d && (f === tc.Init || f === tc.Ready)) { 4692 let e = d.getOptions().triggerEl; 4693 if (e && s.indexOf(e) > -1) return; 4694 } 4695 return ( 4696 { ...(a.Carousel || {}) }.rtl && (s = s.reverse()), 4697 n && void 0 === t.startIndex && (a.startIndex = s.indexOf(n)), 4698 th.fromNodes(s, a) 4699 ); 4700 } 4701 let th = { 4702 Plugins: { Hash: to }, 4703 version: '6.1.13', 4704 openers: new Map(), 4705 bind: function (e, t, n, o) { 4706 if (!p()) return; 4707 let i = document.body, 4708 r = null, 4709 l = '[data-fancybox]', 4710 a = {}; 4711 e instanceof Element && (i = e), 4712 s(e) && s(t) 4713 ? ((r = e), (l = t)) 4714 : s(t) && s(n) 4715 ? ((r = t), (l = n)) 4716 : s(t) 4717 ? (l = t) 4718 : s(e) && (l = e), 4719 'object' == typeof t && (a = t || {}), 4720 'object' == typeof n && (a = n || {}), 4721 'object' == typeof o && (a = o || {}), 4722 (function (e, t, n, o = {}) { 4723 if (!(e && e instanceof Element) || !n) return; 4724 let i = th.openers.get(e) || new Map(), 4725 r = i.get(t) || new Map(); 4726 r.set(n, o), 4727 i.set(t, r), 4728 th.openers.set(e, i), 4729 1 === i.size && e.addEventListener('click', th.fromEvent), 4730 tm(); 4731 })(i, r, l, a); 4732 }, 4733 close: function (e = !0, ...t) { 4734 if (e) for (let e of td.values()) e.close(...t); 4735 else { 4736 let e = th.getInstance(); 4737 e && e.close(...t); 4738 } 4739 }, 4740 destroy: function () { 4741 let e; 4742 for (; (e = th.getInstance()); ) e.destroy(); 4743 for (let e of th.openers.keys()) e.removeEventListener('click', th.fromEvent); 4744 th.openers.clear(); 4745 }, 4746 fromEvent: function (e) { 4747 if (e.defaultPrevented || (e.button && 0 !== e.button) || e.ctrlKey || e.metaKey || e.shiftKey) 4748 return; 4749 let t = e.composedPath()[0], 4750 n = { triggerEvent: e }; 4751 if (t.closest('.fancybox__container.is-hiding')) { 4752 tl(e), e.stopPropagation(); 4753 return; 4754 } 4755 let o = t.closest('[data-fancybox-delegate]') || void 0; 4756 if (o) { 4757 let e = o.dataset.fancyboxDelegate || '', 4758 i = document.querySelectorAll(`[data-fancybox="${e}"]`), 4759 r = parseInt(o.dataset.fancyboxIndex || '', 10) || 0; 4760 (t = i[r] || i[0]), m(n, { delegateEl: o, startIndex: r }); 4761 } 4762 return tp(t, n); 4763 }, 4764 fromNodes: function (e, t) { 4765 t = m({}, tu, t || {}); 4766 let n = [], 4767 o = (e) => 4768 e instanceof HTMLImageElement 4769 ? e 4770 : e instanceof HTMLElement 4771 ? e.querySelector('img:not([aria-hidden])') 4772 : void 0; 4773 for (let i of e) { 4774 let r = i.dataset || {}, 4775 l = t.delegateEl && e.indexOf(i) === t.startIndex ? t.delegateEl : void 0, 4776 a = o(l) || o(i) || void 0, 4777 s = 4778 r.src || 4779 i.getAttribute('href') || 4780 i.getAttribute('currentSrc') || 4781 i.getAttribute('src') || 4782 void 0, 4783 c = 4784 r.thumb || 4785 r.thumbSrc || 4786 a?.getAttribute('currentSrc') || 4787 a?.getAttribute('src') || 4788 a?.dataset.lazySrc || 4789 void 0, 4790 u = { 4791 src: s, 4792 alt: r.alt || a?.getAttribute('alt') || void 0, 4793 thumbSrc: c, 4794 thumbEl: a, 4795 triggerEl: i, 4796 delegateEl: l, 4797 }; 4798 for (let e in r) { 4799 let t = r[e] + ''; 4800 (t = 'false' !== t && ('true' === t || t)), (u[e] = t); 4801 } 4802 n.push(u); 4803 } 4804 return th.show(n, t); 4805 }, 4806 fromSelector: function (e, t, n, o) { 4807 if (!p()) return; 4808 let i = document.body, 4809 r = null, 4810 l = '[data-fancybox]', 4811 a = {}; 4812 for (let [c, u] of (e instanceof Element && (i = e), 4813 s(e) && s(t) 4814 ? ((r = e), (l = t)) 4815 : s(t) && s(n) 4816 ? ((r = t), (l = n)) 4817 : s(t) 4818 ? (l = t) 4819 : s(e) && (l = e), 4820 'object' == typeof t && (a = t || {}), 4821 'object' == typeof n && (a = n || {}), 4822 'object' == typeof o && (a = o || {}), 4823 th.openers)) 4824 for (let [e, t] of u) 4825 for (let [n, o] of t) 4826 if (c === i && e === r) { 4827 let t = i.querySelector((e ? `${e} ` : '') + l); 4828 if (t && t.matches(n)) return th.fromTriggerEl(t, a); 4829 } 4830 }, 4831 fromTriggerEl: tp, 4832 getCarousel: function () { 4833 return th.getInstance()?.getCarousel() || void 0; 4834 }, 4835 getDefaults: function () { 4836 return tu; 4837 }, 4838 getInstance: function (e) { 4839 if (e) { 4840 let t = td.get(e); 4841 return t && t.getState() !== tc.Destroyed ? t : void 0; 4842 } 4843 return ( 4844 Array.from(td.values()) 4845 .reverse() 4846 .find((e) => { 4847 if (e.getState() !== tc.Destroyed) return e; 4848 }) || void 0 4849 ); 4850 }, 4851 getSlide: function () { 4852 return th.getInstance()?.getSlide() || void 0; 4853 }, 4854 show: function (e = [], t = {}) { 4855 return ( 4856 tm(), 4857 (() => { 4858 let e, 4859 t, 4860 n, 4861 o, 4862 i, 4863 r, 4864 l, 4865 d = tc.Init, 4866 p = { ...tu }, 4867 h = -1, 4868 w = {}, 4869 x = [], 4870 M = !1, 4871 L = !0, 4872 S = 0; 4873 function T(e, ...t) { 4874 let n = p[e]; 4875 return n && 'function' == typeof n ? n(ef, ...t) : n; 4876 } 4877 function R(e, t = []) { 4878 let n = T('l10n') || {}; 4879 e = String(e).replace(/\{\{(\w+)\}\}/g, (e, t) => n[t] || e); 4880 for (let n = 0; n < t.length; n++) e = e.split(t[n][0]).join(t[n][1]); 4881 return e.replace(/\{\{(.*?)\}\}/g, (e, t) => t); 4882 } 4883 let P = new Map(); 4884 function A(e, ...t) { 4885 let n = [...(P.get(e) || [])]; 4886 for (let [t, o] of Object.entries(p.on || {})) 4887 (t === e || t.split(' ').indexOf(e) > -1) && n.push(o); 4888 for (let e of n) e && 'function' == typeof e && e(ef, ...t); 4889 '*' !== e && A('*', e, ...t); 4890 } 4891 function C() { 4892 b(r, 'is-revealing'); 4893 try { 4894 document.activeElement === i && (r?.querySelector('[autofocus]') || r).focus(); 4895 } catch (e) {} 4896 } 4897 function O(t, n) { 4898 G(n), 4899 V(), 4900 n.el?.addEventListener('click', z), 4901 ('inline' === n.type || 'clone' === n.type) && 4902 (function (t) { 4903 if (!e || !t || !t.el) return; 4904 let n = null; 4905 if (s(t.src)) { 4906 let e = t.src.split('#', 2).pop(); 4907 n = e ? document.getElementById(e) : null; 4908 } 4909 if (n) { 4910 if ((v(n, 'f-html'), 'clone' === t.type || n.closest('.fancybox__carousel'))) { 4911 let e = (n = n.cloneNode(!0)).dataset.animationName; 4912 e && (n.classList.remove(e), delete n.dataset.animationName); 4913 let o = n.getAttribute('id'); 4914 (o = o ? `${o}--clone` : `clone-${h}-${t.index}`), n.setAttribute('id', o); 4915 } else if (n.parentNode) { 4916 let e = document.createElement('div'); 4917 (e.inert = !0), n.parentNode.insertBefore(e, n), (t.placeholderEl = e); 4918 } 4919 (t.htmlEl = n), 4920 v(t.el, 'has-html'), 4921 t.el.prepend(n), 4922 n.classList.remove('hidden'), 4923 'none' === n.style.display && (n.style.display = ''), 4924 'none' === getComputedStyle(n).getPropertyValue('display') && 4925 (n.style.display = n.dataset.display || 'flex'), 4926 e?.emit('contentReady', t); 4927 } else e?.showError(t, '{{ELEMENT_NOT_FOUND}}'); 4928 })(n), 4929 'ajax' === n.type && 4930 (function (t) { 4931 let n = t.el; 4932 if (!n || t.htmlEl || t.xhr) return; 4933 e?.showLoading(t), (t.state = ev.Loading); 4934 let o = new XMLHttpRequest(); 4935 o.onreadystatechange = function () { 4936 if (o.readyState === XMLHttpRequest.DONE && d === tc.Ready)
4937 if ((e?.hideLoading(t), (t.state = ev.Loaded), 200 === o.status)) { 4938 let i = o.responseText + '', 4939 r = null, 4940 l = null; 4941 if (t.filter) { 4942 let e = document.createElement('div'); 4943 (e.innerHTML = i), (l = e.querySelector(t.filter + '')); 4944 } 4945 l && l instanceof HTMLElement 4946 ? (r = l) 4947 : ((r = document.createElement('div')).innerHTML = i), 4948 r.classList.add('f-html'), 4949 (t.htmlEl = r), 4950 n.classList.add('has-html'), 4951 n.classList.add('has-ajax'), 4952 n.prepend(r), 4953 e?.emit('contentReady', t); 4954 } else e?.showError(t); 4955 }; 4956 let i = T('ajax') || null; 4957 o.open(i ? 'POST' : 'GET', t.src + ''), 4958 o.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'), 4959 o.setRequestHeader('X-Requested-With', 'XMLHttpRequest'), 4960 o.send(i), 4961 (t.xhr = o); 4962 })(n); 4963 } 4964 function I(e, t) { 4965 var n; 4966 let o, i; 4967 U(t),
4968 t.el?.removeEventListener('click', z), 4969 ('inline' === t.type || 'clone' === t.type) && 4970 ((o = (n = t).htmlEl), 4971 (i = n.placeholderEl), 4972 o && 4973 ('none' !== getComputedStyle(o).getPropertyValue('display') && (o.style.display = 'none'), 4974 o.offsetHeight), 4975 i && (o && i.parentNode && i.parentNode.insertBefore(o, i), i.remove()), 4976 (n.htmlEl = void 0), 4977 (n.placeholderEl = void 0)), 4978 t.xhr && (t.xhr.abort(), (t.xhr = void 0)); 4979 } 4980 function z(e) { 4981 if (!Y()) return; 4982 if (d !== tc.Ready) { 4983 tl(e), e.stopPropagation(); 4984 return; 4985 } 4986 if (e.defaultPrevented || !ee.isClickAllowed()) return; 4987 let t = e.composedPath()[0]; 4988 t.closest('.fancybox__carousel') && t.classList.contains('fancybox__slide') && N(e); 4989 } 4990 function k() { 4991 (L = !1), r && e && r.classList.remove('is-revealing'), V(); 4992 let t = T('sync'); 4993 if (e && t) { 4994 let n = t.getPageIndex(e.getPageIndex()) || 0; 4995 t.goTo(n, { transition: !1, tween: !1 }); 4996 } 4997 } 4998 function $() { 4999 (function () { 5000 let o = e?.getViewport(); 5001 if (!T('dragToClose') || !e || !o || !(t = ee(o).init())) return; 5002 let i = !1, 5003 l = 0, 5004 a = 0, 5005 s = {}, 5006 c = 1; 5007 function u() { 5008 n?.spring({ 5009 clamp: !0, 5010 mass: 1, 5011 tension: 0 === a ? 140 : 960, 5012 friction: 17, 5013 restDelta: 0.1, 5014 restSpeed: 0.1, 5015 maxSpeed: 1 / 0, 5016 }) 5017 .from({ y: l }) 5018 .to({ y: a }) 5019 .start(); 5020 let t = e?.getViewport()?.getBoundingClientRect().height || 0, 5021 o = K()?.panzoomRef; 5022 if (t && o) 5023 if (0 === a) o.execute(er.Reset); 5024 else { 5025 let e = y(Math.abs(l), 0, 0.33 * t, c, 0.77 * c, !1); 5026 o.execute(er.ZoomTo, { scale: e }); 5027 } 5028 } 5029 let g = (t) => { 5030 let n = t.srcEvent, 5031 o = n.target; 5032 return e && !(q(n) && n.touches?.length > 1) && o && !f(o); 5033 }; 5034 (n = j().on('step', (e) => { 5035 if (r && o && d === tc.Ready) { 5036 let t = o.getBoundingClientRect().height, 5037 n = y(Math.abs((l = Math.min(t, Math.max(-1 * t, e.y)))), 0, 0.65 * t, 1, 0.2, !0); 5038 r.style.setProperty('--f-drag-opacity', n + ''), 5039 r.style.setProperty('--f-drag-offset', l + 'px'); 5040 } 5041 })), 5042 t 5043 .on('start', function () { 5044 i || (n?.pause(), (a = l)); 5045 }) 5046 .on('panstart', (t) => { 5047 if (!i && g(t) && 'y' === t.axis) { 5048 tl(t.srcEvent), (i = !0), es(), e?.getViewport()?.classList.add('is-dragging'); 5049 let n = K()?.panzoomRef; 5050 if (n) { 5051 c = n.getTransform().scale || 1; 5052 let e = n.getOptions(); 5053 (s = { ...e }), (e.bounds = !1), (e.gestures = !1); 5054 } 5055 } else i = !1; 5056 }) 5057 .on('pan', function (e) { 5058 i && 5059 g(e) && 5060 (tl(e.srcEvent), 5061 e.srcEvent.stopPropagation(), 5062 'y' === e.axis && ((a += e.deltaY), u())); 5063 }) 5064 .on('end', (t) => { 5065 if ((e?.getViewport()?.classList.remove('is-dragging'), i)) { 5066 let e = K()?.panzoomRef; 5067 if (e) { 5068 e.getTween()?.end(); 5069 let t = e.getOptions(); 5070 (t.bounds = s.bounds || !1), (t.gestures = s.gestures || !1); 5071 } 5072 g(t) && 5073 'y' === t.axis && 5074 (Math.abs(t.velocityY) > 5 || Math.abs(l) > 50) && 5075 ec(t.srcEvent, 'f-throwOut' + (t.velocityY > 0 ? 'Down' : 'Up')); 5076 } 5077 (i = !1), d === tc.Ready && 0 !== l && ((a = 0), u()); 5078 }); 5079 })(), 5080 document.body.addEventListener('click', Z), 5081 document.body.addEventListener('keydown', W, { passive: !1, capture: !0 }), 5082 V(), 5083 en(); 5084 let o = T('sync'); 5085 e && o && o.getTween()?.start(), X(K()); 5086 } 5087 function F() { 5088 e?.canGoNext() ? en() : el(); 5089 } 5090 function _(e, t) { 5091 G(t); 5092 } 5093 function H(e, t) { 5094 G(t), X(t); 5095 } 5096 function D() { 5097 let t = e?.getPlugins().Thumbs; 5098 E(r, 'has-thumbs', t?.isEnabled() || !1), 5099 E( 5100 r, 5101 'has-vertical-thumbs', 5102 !!t && ('scrollable' === t.getType() || t.getCarousel()?.isVertical() === !0) 5103 ); 5104 } 5105 function V() { 5106 if (r) { 5107 let t = e?.getPages() || [], 5108 n = e?.getPageIndex() || 0; 5109 for (let e of r.querySelectorAll('[data-fancybox-index]')) e.innerHTML = n + ''; 5110 for (let e of r.querySelectorAll('[data-fancybox-page]')) e.innerHTML = n + 1 + ''; 5111 for (let e of r.querySelectorAll('[data-fancybox-pages]')) e.innerHTML = t.length + ''; 5112 } 5113 } 5114 function N(e) { 5115 e.composedPath()[0].closest('[data-fancybox-close]') 5116 ? ec(e) 5117 : (A('backdropClick', e), e.defaultPrevented || (T('backdropClick') && ec(e))); 5118 } 5119 function B() { 5120 ei(); 5121 } 5122 function W(t) { 5123 let n; 5124 if (!Y() || d !== tc.Ready) return; 5125 let o = t.key, 5126 i = T('keyboard'); 5127 if (!i || t.ctrlKey || t.altKey || t.shiftKey) return; 5128 let r = t.composedPath()[0]; 5129 if ( 5130 !c(r) || 5131 ('Escape' !== o && 5132 ((n = 5133 'input,textarea,select,option,video,iframe,[contenteditable],[data-selectable],[data-draggable]'), 5134 r.matches(n) || r.closest(n))) || 5135 (A('keydown', t), t.defaultPrevented) 5136 ) 5137 return; 5138 let l = i[o]; 5139 if (l) 5140 switch (l) { 5141 case 'close': 5142 ec(t); 5143 break; 5144 case 'next': 5145 tl(t), e?.next(); 5146 break; 5147 case 'prev': 5148 tl(t), e?.prev(); 5149 } 5150 } 5151 function Z(e) { 5152 if (!Y() || d !== tc.Ready || (ei(), e.defaultPrevented)) return; 5153 let t = e.composedPath()[0], 5154 n = !!t.closest('[data-fancybox-close]'), 5155 o = t.classList.contains('fancybox__backdrop'); 5156 (n || o) && N(e); 5157 } 5158 function G(t) { 5159 let { el: n, htmlEl: o, panzoomRef: i, closeButtonEl: r } = t, 5160 l = i ? i.getWrapper() : o; 5161 if (!n || !n.parentElement || !l) return; 5162 let a = T('closeButton'); 5163 if (('auto' === a && (a = e?.getPlugins().Toolbar?.isEnabled() !== !0), !a)) 5164 return void U(t); 5165 if (!r) { 5166 let e = u(R(T('closeButtonTpl'))); 5167 e && 5168 (v(e, 'is-close-button'), 5169 (t.closeButtonEl = l.insertAdjacentElement('afterbegin', e)), 5170 v(n, 'has-close-btn')); 5171 } 5172 } 5173 function U(e) { 5174 e.closeButtonEl && (e.closeButtonEl.remove(), (e.closeButtonEl = void 0)), 5175 b(e.el, 'has-close-btn'); 5176 } 5177 function X(t) { 5178 if ( 5179 !( 5180 L && 5181 e && 5182 e.getState() === ey.Ready && 5183 t && 5184 t.index === e.getOptions().initialPage && 5185 t.el && 5186 t.el.parentElement 5187 ) || 5188 (void 0 !== t.state && t.state !== ev.Loaded) 5189 ) 5190 return; 5191 L = !1; 5192 let n = t.panzoomRef, 5193 o = n?.getTween(), 5194 i = T('zoomEffect') && o ? Q(t) : void 0; 5195 if (n && o && i) { 5196 let { x: e, y: t, scale: r }
5196 = n.getStartPosition(); 5197 o.spring({ 5198 tension: 215, 5199 friction: 25, 5200 restDelta: 0.001, 5201 restSpeed: 0.001, 5202 maxSpeed: 1 / 0, 5203 }) 5204 .from(i) 5205 .to({ x: e, y: t, scale: r }) 5206 .start(); 5207 return; 5208 } 5209 let r = n?.getContent() || t.htmlEl; 5210 r && ta(r, T('showClass', t)); 5211 } 5212 function Y() { 5213 return th.getInstance()?.getId() === h; 5214 } 5215 function K() { 5216 return e?.getPage()?.slides[0]; 5217 } 5218 function J() { 5219 let e = K(); 5220 return e ? e.triggerEl || T('triggerEl') : void 0; 5221 } 5222 function Q(e) { 5223 let t = e.thumbEl; 5224 if ( 5225 !t || 5226 !((e) => { 5227 let t = e.getBoundingClientRect(), 5228 n = e.closest('[style]'), 5229 o = n?.parentElement; 5230 if (n && n.style.transform && o) { 5231 let e = o.getBoundingClientRect(); 5232 if ( 5233 t.left < e.left || 5234 t.left > e.left + e.width - t.width || 5235 t.top < e.top || 5236 t.top > e.top + e.height - t.height 5237 ) 5238 return !1; 5239 } 5240 let i = Math.max(document.documentElement.clientHeight, window.innerHeight), 5241 r = Math.max(document.documentElement.clientWidth, window.innerWidth); 5242 return !(t.bottom < 0) && !(t.top - i >= 0) && !(t.right < 0) && !(t.left - r >= 0); 5243 })(t) 5244 ) 5245 return; 5246 let n = e.panzoomRef?.getWrapper()?.getBoundingClientRect(), 5247 o = n?.width, 5248 i = n?.height; 5249 if (!o || !i) return; 5250 let r = t.getBoundingClientRect(), 5251 l = r.width, 5252 a = r.height, 5253 s = r.left, 5254 c = r.top; 5255 if (!r || !l || !a) return; 5256 if (t instanceof HTMLImageElement) { 5257 let e = window.getComputedStyle(t).getPropertyValue('object-fit'); 5258 if ('contain' === e || 'scale-down' === e) { 5259 let { width: n, height: o } = ((e, t, n, o, i = 'contain') => { 5260 if ('contain' === i || e > n || t > o) { 5261 let i = Math.min(n / e, o / t); 5262 (e *= i), (t *= i); 5263 } 5264 return { width: e, height: t }; 5265 })(t.naturalWidth, t.naturalHeight, l, a, e); 5266 (s += (l - n) * 0.5), (c += (a - o) * 0.5), (l = n), (a = o); 5267 } 5268 } 5269 if (Math.abs(o / i - l / a) > 0.1) return; 5270 let u = s + 0.5 * l - (n.left + 0.5 * o); 5271 return { x: u, y: c + 0.5 * a - (n.top + 0.5 * i), scale: l / o }; 5272 } 5273 function et() { 5274 o && clearTimeout(o), (o = void 0), document.removeEventListener('mousemove', B); 5275 } 5276 function en() { 5277 if (M || o) return; 5278 let e = T('idle'); 5279 e && (o = setTimeout(eo, e)); 5280 } 5281 function eo() { 5282 r && (et(), v(r, 'is-idle'), document.addEventListener('mousemove', B), (M = !0)); 5283 } 5284 function ei() { 5285 M && (el(), en()); 5286 } 5287 function el() { 5288 et(), r?.classList.remove('is-idle'), (M = !1); 5289 } 5290 function es() { 5291 var e; 5292 let t = J(); 5293 !t || 5294 ((e = t.getBoundingClientRect()).bottom > 0 && 5295 e.right > 0 && 5296 e.left < (window.innerWidth || document.documentElement.clientWidth) && 5297 e.top < (window.innerHeight || document.documentElement.clientHeight)) || 5298 t.closest('[inert]') || 5299 t.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'center' }); 5300 } 5301 function ec(o, i) { 5302 if (d === tc.Closing || d === tc.Destroyed) return; 5303 let r = new Event('shouldClose', { bubbles: !0, cancelable: !0 }); 5304 if ((A('shouldClose', r, o), r.defaultPrevented)) return; 5305 if ((et(), o)) { 5306 if (o.defaultPrevented) return; 5307 tl(o), o.stopPropagation(), o.stopImmediatePropagation(); 5308 } 5309 if (((d = tc.Closing), n?.pause(), t?.destroy(), e)) 5310 for (let t of (e.getGestures()?.destroy(), e.getTween()?.pause(), e.getSlides())) { 5311 let e = t.panzoomRef; 5312 e && 5313 (m(e.getOptions(), { 5314 clickAction: !1, 5315 dblClickAction: !1, 5316 wheelAction: !1, 5317 bounds: !1, 5318 minScale: 0, 5319 maxScale: 1 / 0, 5320 }), 5321 e.getGestures()?.destroy(), 5322 e.getTween()?.pause()); 5323 } 5324 let l = e?.getPlugins(); 5325 l?.Autoplay?.stop(); 5326 let a = l?.Fullscreen; 5327 a && a.inFullscreen()
5328 ? Promise.resolve(a.exit()).then(() => { 5329 setTimeout(() => { 5330 eu(o, i); 5331 }, 150); 5332 }) 5333 : eu(o, i); 5334 } 5335 function eu(t, n) { 5336 if (d !== tc.Closing) return; 5337 A('close', t), 5338 (L = !1), 5339 document.body.removeEventListener('click', Z), 5340 document.body.removeEventListener('keydown', W, { passive: !1, capture: !0 }), 5341 T('placeFocusBack') && es(); 5342 let o = document.activeElement; 5343 o && i?.contains(o) && o.blur(), 5344 T('fadeEffect') && (r?.classList.remove('is-ready'), r?.classList.add('is-hiding')), 5345 r?.classList.add('is-closing'); 5346 let l = K(), 5347 a = l?.el, 5348 s = l?.panzoomRef, 5349 c = l?.panzoomRef?.getTween(), 5350 u = n || T('hideClass'), 5351 f = !1, 5352 g = !1; 5353 if (e && l && a && s && c) { 5354 let e; 5355 if ((T('zoomEffect') && l.state === ev.Loaded && (e = Q(l)), e)) { 5356 f = !0; 5357 let t = () => { 5358 (e = Q(l)) ? c.to({ ...ea, ...e }) : ed(); 5359 }; 5360 s.on('refresh', () => { 5361 t(); 5362 }), 5363 c 5364 .easing(j.Easings.EaseOut) 5365 .duration(350) 5366 .from({ ...s.getTransform() }) 5367 .to({ ...ea, ...e }) 5368 .start(), 5369 a?.getAnimations() && 5370 ((a.style.animationPlayState = 'paused'), 5371 requestAnimationFrame(() => { 5372 t(); 5373 })); 5374 } 5375 } 5376 let m = l?.htmlEl || l?.panzoomRef?.getWrapper(); 5377 m && ts(m), 5378 !f && 5379 u && 5380 m && 5381 ((g = !0), 5382 ta(m, u, () => { 5383 ed(); 5384 })), 5385 f || g 5386 ? setTimeout(() => { 5387 ed(); 5388 }, 350) 5389 : ed(); 5390 } 5391 function ed() { 5392 if (d === tc.Destroyed) return; 5393 d = tc.Destroyed; 5394 let t = J(); 5395 for (let t of (A('destroy'), 5396 T('sync')?.getPlugins().Autoplay?.resume(), 5397 T('sync')?.getPlugins().Autoscroll?.resume(), 5398 i instanceof HTMLDialogElement && i.close(), 5399 e?.getContainer()?.classList.remove('is-idle'), 5400 e?.destroy(), 5401 Object.values(w))) 5402 t?.destroy(); 5403 if ( 5404 ((w = {}), 5405 i?.remove(), 5406 (i = void 0), 5407 (r = void 0), 5408 (e = void 0), 5409 td.delete(h), 5410 !td.size && 5411 (g(!1), 5412 document.documentElement.classList.remove(tg), 5413 T('placeFocusBack') && t && !t.closest('[inert]'))) 5414 ) 5415 try { 5416 t?.focus({ preventScroll: !0 }); 5417 } catch (e) {} 5418 } 5419 let ef = { 5420 close: ec, 5421 destroy: ed, 5422 getCarousel: function () { 5423 return e; 5424 }, 5425 getContainer: function () { 5426 return r; 5427 }, 5428 getId: function () { 5429 return h; 5430 }, 5431 getOptions: function () { 5432 return p; 5433 }, 5434 getPlugins: function () { 5435 return w; 5436 }, 5437 getSlide: function () { 5438 return K(); 5439 }, 5440 getState: function () { 5441 return d; 5442 }, 5443 init: function (t = [], n = {}) { 5444 d !== tc.Init && (ef.destroy(), (d = tc.Init)), 5445 (p = m({}, tu, n)), 5446 (h = T('id') || `fancybox-${++tf}`); 5447 let o = td.get(h); 5448 if ( 5449 (o && o.destroy(), 5450 td.set(h, ef), 5451 A('init'), 5452 (function () { 5453 for (let [e, t] of Object.entries({ ...th.Plugins, ...(p.plugins || {}) })) 5454 if (e && !w[e] && t instanceof Function) { 5455 let n = t(); 5456 n.init(ef), (w[e] = n); 5457 } 5458 A('initPlugins'); 5459 })(), 5460 (function (e = []) { 5461 A('initSlides', e), (x = [...e]); 5462 })(t), 5463 (function () { 5464 let t = T('parentEl') || document.body; 5465 if ( 5466 !(t && t instanceof HTMLElement) || 5467 !(i = u(R(T('mainTpl') || '')) || void 0) || 5468 !((r = i.querySelector('.fancybox__container')) && r instanceof HTMLElement) 5469 ) 5470 return; 5471 let n = T('mainClass'); 5472 n && v(r, n); 5473 let o = T('mainStyle'); 5474 if (o && a(o)) for (let [e, t] of Object.entries(o)) r.style.setProperty(e, t); 5475 let l = T('theme'), 5476 s = 5477 'auto' === l 5478 ? window.matchMedia('(prefers-color-scheme:light)').matches 5479 : 'light' === l; 5480 r.setAttribute('theme', s ? 'light' : 'dark'), 5481 i.setAttribute('id', `${h}`), 5482 i.addEventListener('keydown', (e) => { 5483 'Escape' === e.key && tl(e); 5484 }), 5485 i.addEventListener( 5486 'wheel', 5487 (t) => { 5488 let n = t.target, 5489 o = T('wheel', t);
5490 n.closest('.f-thumbs') && (o = 'slide'); 5491 let i = 'slide' === o, 5492 r = Math.max( 5493 -1, 5494 Math.min( 5495 1, 5496 [-t.deltaX || 0, -t.deltaY || 0, -t.detail || 0].reduce(function (e, t) { 5497 return Math.abs(t) > Math.abs(e) ? t : e; 5498 }) 5499 ) 5500 ), 5501 l = Date.now(); 5502 if (S && l - S < 300) { 5503 i && tl(t); 5504 return; 5505 } 5506 (S = l), 5507 A('wheel', t, r), 5508 t.defaultPrevented || 5509 ('close' === o 5510 ? ec(t) 5511 : 'slide' === o && e && !f(n) && (tl(t), e[r > 0 ? 'prev' : 'next']())); 5512 }, 5513 { capture: !0, passive: !1 } 5514 ), 5515 i.addEventListener('cancel', (e) => { 5516 ec(e); 5517 }), 5518 t.append(i), 5519 1 === td.size && 5520 (T('hideScrollbar') && g(!0), document.documentElement.classList.add(tg)), 5521 A('initLayout'), 5522 i instanceof HTMLDialogElement && (T('modal') ? i.showModal() : i.show()); 5523 })(), 5524 (function () { 5525 if (!(l = i?.querySelector('.fancybox__carousel') || void 0)) return; 5526 l.fancybox = ef; 5527 let t = m( 5528 {}, 5529 { 5530 Autoplay: { 5531 autoStart: !1, 5532 pauseOnHover: !1, 5533 progressbarParentEl: (e) => { 5534 let t = e.getContainer(); 5535 return t?.querySelector('.f-carousel__toolbar [data-autoplay-action]') || t; 5536 }, 5537 }, 5538 Fullscreen: { el: r }, 5539 Toolbar: { 5540 absolute: !0, 5541 items: { 5542 counter: { 5543 tpl: '<div class="f-counter"><span data-fancybox-page></span>/<span data-fancybox-pages></span></div>', 5544 }, 5545 }, 5546 display: { 5547 left: ['counter'], 5548 right: ['toggleFull', 'autoplay', 'fullscreen', 'thumbs', 'close'], 5549 }, 5550 }, 5551 Video: { autoplay: !0 }, 5552 Thumbs: { minCount: 2, Carousel: { classes: { container: 'fancybox__thumbs' } } }, 5553 classes: { 5554 container: 'fancybox__carousel', 5555 viewport: 'fancybox__viewport', 5556 slide: 'fancybox__slide', 5557 }, 5558 spinnerTpl: '<div class="f-spinner" data-fancybox-close></div>', 5559 dragFree: !1, 5560 slidesPerPage: 1, 5561 plugins: { 5562 Sync: eT, 5563 Arrows: e$, 5564 Lazyload: eO, 5565 Zoomable: eL, 5566 Html: eU, 5567 Video: eK, 5568 Autoplay: eB, 5569 Fullscreen: e0, 5570 Thumbs: eZ, 5571 Toolbar: eq, 5572 }, 5573 }, 5574 T('Carousel') || {}, 5575 { slides: x, enabled: !0, initialPage: T('startIndex') || 0, l10n: T('l10n') } 5576 ); 5577 A('initCarousel', (e = ew(l, t))), 5578 e.on('*', (e, t, ...n) => { 5579 A(`Carousel.${t}`, e, ...n); 5580 }), 5581 e.on('attachSlideEl', O), 5582 e.on('detachSlideEl', I), 5583 e.on('contentLoading', _), 5584 e.on('contentReady', H), 5585 e.on('ready', $), 5586 e.on('change', k), 5587 e.on('settle', F), 5588 e.on('thumbs:ready', D), 5589 e.on('thumbs:destroy', D), 5590 e.init(); 5591 })(), 5592 i && r) 5593 ) { 5594 if (T('closeExisting')) for (let [e, t] of td.entries()) e !== h && t.close(); 5595 T('fadeEffect') 5596 ? (setTimeout(() => { 5597 C(); 5598 }, 500), 5599 v(r, 'is-revealing')) 5600 : C(), 5601 r.classList.add('is-ready'), 5602 (d = tc.Ready), 5603 A('ready'); 5604 } 5605 }, 5606 isCurrentSlide: function (e) { 5607 let t = K(); 5608 return !!e && !!t && t.index === e.index; 5609 }, 5610 isTopMost: function () { 5611 return Y(); 5612 }, 5613 localize: R, 5614 off: function (e, t) { 5615 return ( 5616 P.has(e) && 5617 P.set( 5618 e, 5619 P.get(e).filter((e) => e !== t) 5620 ), 5621 ef 5622 ); 5623 }, 5624 on: function (e, t) { 5625 return P.set(e, [...(P.get(e) || []), t]), ef; 5626 }, 5627 toggleIdle(e) { 5628 (M || !0 === e) && eo(), (M && !1 !== e) || el(); 5629 }, 5630 }; 5631 return ef; 5632 })().init(e, t) 5633 ); 5634 }, 5635 unbind: function (e, t, n) { 5636 if (!p()) return; 5637 let o = document.body, 5638 i = null, 5639 r = '[data-fancybox]'; 5640 e instanceof Element && (o = e), 5641 s(e) && s(t) 5642 ? ((i = e), (r = t)) 5643 : s(t) && s(n) 5644 ? ((i = t), (r = n)) 5645 : s(t) 5646 ? (r = t) 5647 : s(e) && (r = e), 5648 (function (e, t, n) { 5649 if (!(e && e instanceof Element) || !n) return; 5650 let o = th.openers.get(e) || new Map(), 5651 i = o.get(t) || new Map(); 5652 i && n && i.delete(n), 5653 (i.size && n) || o.delete(t), 5654 o.size || (th.openers.delete(e), e.removeEventListener('click', th.fromEvent)); 5655 })(o, i, r); 5656 }, 5657 }; 5658 (e.Arrows = e$), 5659 (e.Autoplay = eB), 5660 (e.Carousel = ew), 5661 (e.CarouselSlideContentState = ev), 5662 (e.CarouselState = ey), 5663 (e.Fancybox = th), 5664 (e.FancyboxState = tc), 5665 (e.Fullscreen = e0), 5666 (e.Html = eU), 5667 (e.Lazyload = eO), 5668 (e.PANZOOM_DEFAULT_POS = ea), 5669 (e.Panzoom = eg), 5670 (e.PanzoomAction = er), 5671 (e.PanzoomState = es), 5672 (e.PanzoomZoomLevel = el), 5673 (e.Sync = eT), 5674 (e.Thumbs = eZ), 5675 (e.Toolbar = eq), 5676 (e.ToolbarColumn = eD), 5677 (e.Video = eK), 5678 (e.Zoomable = eL); 5679 }) 5680); 5681
5682window.Fancybox = exports.Fancybox; 5683})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.