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