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