vendor: 10,041 bytes, lines 1-347
1/*! 2 * Bootstrap v5.2.2 (https://getbootstrap.com/) 3 * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 */ 6(function (global, factory) { 7 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 8 typeof define === 'function' && define.amd ? define(factory) : 9 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory()); 10})(this, (function () { 'use strict'; 11 12 /** 13 * -------------------------------------------------------------------------- 14 * Bootstrap (v5.2.2): util/index.js 15 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 16 * -------------------------------------------------------------------------- 17 */ 18 const MAX_UID = 1000000; 19 const MILLISECONDS_MULTIPLIER = 1000; 20 const TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp) 21 22 const toType = object => { 23 if (object === null || object === undefined) { 24 return `${object}`; 25 } 26 27 return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); 28 }; 29 /** 30 * Public Util API 31 */ 32 33 34 const getUID = prefix => { 35 do { 36 prefix += Math.floor(Math.random() * MAX_UID); 37 } while (document.getElementById(prefix)); 38 39 return prefix; 40 }; 41 42 const getSelector = element => { 43 let selector = element.getAttribute('data-bs-target'); 44 45 if (!selector || selector === '#') { 46 let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes, 47 // so everything starting with `#` or `.`. If a "real" URL is used as the selector, 48 // `document.querySelector` will rightfully complain it is invalid. 49 // See https://github.com/twbs/bootstrap/issues/32273 50 51 if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { 52 return null; 53 } // Just in case some CMS puts out a full URL with the anchor appended 54 55 56 if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { 57 hrefAttribute = `#${hrefAttribute.split('#')[1]}`; 58 } 59 60 selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; 61 } 62 63 return selector; 64 }; 65 66 const getSelectorFromElement = element => { 67 const selector = getSelector(element); 68 69 if (selector) { 70 return document.querySelector(selector) ? selector : null; 71 } 72 73 return null; 74 }; 75 76 const getElementFromSelector = element => { 77 const selector = getSelector(element); 78 return selector ? document.querySelector(selector) : null; 79 }; 80 81 const getTransitionDurationFromElement = element => { 82 if (!element) { 83 return 0; 84 } // Get transition-duration of the element 85 86 87 let { 88 transitionDuration, 89 transitionDelay 90 } = window.getComputedStyle(element); 91 const floatTransitionDuration = Number.parseFloat(transitionDuration); 92 const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found 93 94 if (!floatTransitionDuration && !floatTransitionDelay) { 95 return 0; 96 } // If multiple durations are defined, take the first 97 98 99 transitionDuration = transitionDuration.split(',')[0]; 100 transitionDelay = transitionDelay.split(',')[0]; 101 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 102 }; 103 104 const triggerTransitionEnd = element => { 105 element.dispatchEvent(new Event(TRANSITION_END)); 106 }; 107 108 const isElement$1 = object => { 109 if (!object || typeof object !== 'object') { 110 return false; 111 } 112 113 if (typeof object.jquery !== 'undefined') { 114 object = object[0]; 115 } 116 117 return typeof object.nodeType !== 'undefined'; 118 }; 119 120 const getElement = object => { 121 // it's a jQuery object or a node element 122 if (isElement$1(object)) { 123 return object.jquery ? object[0] : object; 124 } 125 126 if (typeof object === 'string' && object.length > 0) { 127 return document.querySelector(object); 128 } 129 130 return null; 131 }; 132 133 const isVisible = element => { 134 if (!isElement$1(element) || element.getClientRects().length === 0) { 135 return false; 136 } 137 138 const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed 139 140 const closedDetails = element.closest('details:not([open])'); 141 142 if (!closedDetails) { 143 return elementIsVisible; 144 } 145 146 if (closedDetails !== element) { 147 const summary = element.closest('summary'); 148 149 if (summary && summary.parentNode !== closedDetails) { 150 return false; 151 } 152 153 if (summary === null) { 154 return false; 155 } 156 } 157 158 return elementIsVisible; 159 }; 160 161 const isDisabled = element => { 162 if (!element || element.nodeType !== Node.ELEMENT_NODE) { 163 return true; 164 } 165 166 if (element.classList.contains('disabled')) { 167 return true; 168 } 169 170 if (typeof element.disabled !== 'undefined') { 171 return element.disabled; 172 } 173 174 return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; 175 }; 176 177 const findShadowRoot = element => { 178 if (!document.documentElement.attachShadow) { 179 return null; 180 } // Can find the shadow root otherwise it'll return the document 181 182 183 if (typeof element.getRootNode === 'function') { 184 const root = element.getRootNode(); 185 return root instanceof ShadowRoot ? root : null; 186 } 187 188 if (element instanceof ShadowRoot) { 189 return element; 190 } // when we don't find a shadow root 191 192 193 if (!element.parentNode) { 194 return null; 195 } 196 197 return findShadowRoot(element.parentNode); 198 }; 199 200 const noop = () => {}; 201 /** 202 * Trick to restart an element's animation 203 * 204 * @param {HTMLElement} element 205 * @return void 206 * 207 * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation 208 */ 209 210 211 const reflow = element => { 212 element.offsetHeight; // eslint-disable-line no-unused-expressions 213 }; 214 215 const getjQuery = () => { 216 if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { 217 return window.jQuery; 218 } 219 220 return null; 221 }; 222 223 const DOMContentLoadedCallbacks = []; 224 225 const onDOMContentLoaded = callback => { 226 if (document.readyState === 'loading') { 227 // add listener on the first call when the document is in loading state 228 if (!DOMContentLoadedCallbacks.length) { 229 document.addEventListener('DOMContentLoaded', () => { 230 for (const callback of DOMContentLoadedCallbacks) { 231 callback(); 232 } 233 }); 234 } 235 236 DOMContentLoadedCallbacks.push(callback); 237 } else { 238 callback(); 239 } 240 }; 241 242 const isRTL = () => document.documentElement.dir === 'rtl'; 243 244 const defineJQueryPlugin = plugin => { 245 onDOMContentLoaded(() => { 246 const $ = getjQuery(); 247 /* istanbul ignore if */ 248 249 if ($) { 250 const name = plugin.NAME; 251 const JQUERY_NO_CONFLICT = $.fn[name]; 252 $.fn[name] = plugin.jQueryInterface; 253 $.fn[name].Constructor = plugin; 254 255 $.fn[name].noConflict = () => { 256 $.fn[name] = JQUERY_NO_CONFLICT; 257 return plugin.jQueryInterface; 258 }; 259 } 260 }); 261 }; 262 263 const execute = callback => { 264 if (typeof callback === 'function') { 265 callback(); 266 } 267 }; 268 269 const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { 270 if (!waitForTransition) { 271 execute(callback); 272 return; 273 } 274 275 const durationPadding = 5; 276 const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; 277 let called = false; 278 279 const handler = ({ 280 target 281 }) => { 282 if (target !== transitionElement) { 283 return; 284 } 285 286 called = true; 287 transitionElement.removeEventListener(TRANSITION_END, handler); 288 execute(callback); 289 }; 290 291 transitionElement.addEventListener(TRANSITION_END, handler); 292 setTimeout(() => { 293 if (!called) { 294 triggerTransitionEnd(transitionElement); 295 } 296 }, emulatedDuration); 297 }; 298 /** 299 * Return the previous/next element of a list. 300 * 301 * @param {array} list The list of elements 302 * @param activeElement The active element 303 * @param shouldGetNext Choose to get next or previous element 304 * @param isCycleAllowed 305 * @return {Element|elem} The proper element 306 */ 307 308 309 const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { 310 const listLength = list.length; 311 let index = list.indexOf(activeElement); // if the element does not exist in the list return an element 312 // depending on the direction and if cycle is allowed 313 314 if (index === -1) { 315 return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; 316 } 317 318 index += shouldGetNext ? 1 : -1; 319 320 if (isCycleAllowed) { 321 index = (index + listLength) % listLength; 322 } 323 324 return list[Math.max(0, Math.min(index, listLength - 1))]; 325 }; 326 327 /** 328 * -------------------------------------------------------------------------- 329 * Bootstrap (v5.2.2): dom/event-handler.js 330 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 331 * -------------------------------------------------------------------------- 332 */ 333 /** 334 * Constants 335 */ 336 337 const namespaceRegex = /[^.]*(?=\..*)\.|.*/; 338 const stripNameRegex = /\..*/; 339 const stripUidRegex = /::\d+$/; 340 const eventRegistry = {}; // Events storage 341 342 let uidEvent = 1; 343 const customEvents = { 344 mouseenter: 'mouseover', 345 mouseleave: 'mouseout' 346 }; 347 const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'ke
vendor: 6,095 bytes, lines 347-517
347ypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); 348 /** 349 * Private methods 350 */ 351 352 function makeEventUid(element, uid) { 353 return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; 354 } 355 356 function getElementEvents(element) { 357 const uid = makeEventUid(element); 358 element.uidEvent = uid; 359 eventRegistry[uid] = eventRegistry[uid] || {}; 360 return eventRegistry[uid]; 361 } 362 363 function bootstrapHandler(element, fn) { 364 return function handler(event) { 365 hydrateObj(event, { 366 delegateTarget: element 367 }); 368 369 if (handler.oneOff) { 370 EventHandler.off(element, event.type, fn); 371 } 372 373 return fn.apply(element, [event]); 374 }; 375 } 376 377 function bootstrapDelegationHandler(element, selector, fn) { 378 return function handler(event) { 379 const domElements = element.querySelectorAll(selector); 380 381 for (let { 382 target 383 } = event; target && target !== this; target = target.parentNode) { 384 for (const domElement of domElements) { 385 if (domElement !== target) { 386 continue; 387 } 388 389 hydrateObj(event, { 390 delegateTarget: target 391 }); 392 393 if (handler.oneOff) { 394 EventHandler.off(element, event.type, selector, fn); 395 } 396 397 return fn.apply(target, [event]); 398 } 399 } 400 }; 401 } 402 403 function findHandler(events, callable, delegationSelector = null) { 404 return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); 405 } 406 407 function normalizeParameters(originalTypeEvent, handler, delegationFunction) { 408 const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check 409 410 const callable = isDelegated ? delegationFunction : handler || delegationFunction; 411 let typeEvent = getTypeEvent(originalTypeEvent); 412 413 if (!nativeEvents.has(typeEvent)) { 414 typeEvent = originalTypeEvent; 415 } 416 417 return [isDelegated, callable, typeEvent]; 418 } 419 420 function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { 421 if (typeof originalTypeEvent !== 'string' || !element) { 422 return; 423 } 424 425 let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position 426 // this prevents the handler from being dispatched the same way as mouseover or mouseout does 427 428 if (originalTypeEvent in customEvents) { 429 const wrapFunction = fn => { 430 return function (event) { 431 if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { 432 return fn.call(this, event); 433 } 434 }; 435 }; 436 437 callable = wrapFunction(callable); 438 } 439 440 const events = getElementEvents(element); 441 const handlers = events[typeEvent] || (events[typeEvent] = {}); 442 const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); 443 444 if (previousFunction) { 445 previousFunction.oneOff = previousFunction.oneOff && oneOff; 446 return; 447 } 448 449 const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); 450 const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); 451 fn.delegationSelector = isDelegated ? handler : null; 452 fn.callable = callable; 453 fn.oneOff = oneOff; 454 fn.uidEvent = uid; 455 handlers[uid] = fn; 456 element.addEventListener(typeEvent, fn, isDelegated); 457 } 458 459 function removeHandler(element, events, typeEvent, handler, delegationSelector) { 460 const fn = findHandler(events[typeEvent], handler, delegationSelector); 461 462 if (!fn) { 463 return; 464 } 465 466 element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); 467 delete events[typeEvent][fn.uidEvent]; 468 } 469 470 function removeNamespacedHandlers(element, events, typeEvent, namespace) { 471 const storeElementEvent = events[typeEvent] || {}; 472 473 for (const handlerKey of Object.keys(storeElementEvent)) { 474 if (handlerKey.includes(namespace)) { 475 const event = storeElementEvent[handlerKey]; 476 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 477 } 478 } 479 } 480 481 function getTypeEvent(event) { 482 // allow to get the native events from namespaced events ('click.bs.button' --> 'click') 483 event = event.replace(stripNameRegex, ''); 484 return customEvents[event] || event; 485 } 486 487 const EventHandler = { 488 on(element, event, handler, delegationFunction) { 489 addHandler(element, event, handler, delegationFunction, false); 490 }, 491 492 one(element, event, handler, delegationFunction) { 493 addHandler(element, event, handler, delegationFunction, true); 494 }, 495 496 off(element, originalTypeEvent, handler, delegationFunction) { 497 if (typeof originalTypeEvent !== 'string' || !element) { 498 return; 499 } 500 501 const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 502 const inNamespace = typeEvent !== originalTypeEvent; 503 const events = getElementEvents(element); 504 const storeElementEvent = events[typeEvent] || {}; 505 const isNamespace = originalTypeEvent.startsWith('.'); 506 507 if (typeof callable !== 'undefined') { 508 // Simplest case: handler is passed, remove that listener ONLY. 509 if (!Object.keys(storeElementEvent).length) { 510 return; 511 } 512 513 removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); 514 return; 515 } 516 517 if (isNamespace) {
vendor: 7,886 bytes, lines 518-812
518 for (const elementEvent of Object.keys(events)) { 519 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); 520 } 521 } 522 523 for (const keyHandlers of Object.keys(storeElementEvent)) { 524 const handlerKey = keyHandlers.replace(stripUidRegex, ''); 525 526 if (!inNamespace || originalTypeEvent.includes(handlerKey)) { 527 const event = storeElementEvent[keyHandlers]; 528 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 529 } 530 } 531 }, 532 533 trigger(element, event, args) { 534 if (typeof event !== 'string' || !element) { 535 return null; 536 } 537 538 const $ = getjQuery(); 539 const typeEvent = getTypeEvent(event); 540 const inNamespace = event !== typeEvent; 541 let jQueryEvent = null; 542 let bubbles = true; 543 let nativeDispatch = true; 544 let defaultPrevented = false; 545 546 if (inNamespace && $) { 547 jQueryEvent = $.Event(event, args); 548 $(element).trigger(jQueryEvent); 549 bubbles = !jQueryEvent.isPropagationStopped(); 550 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); 551 defaultPrevented = jQueryEvent.isDefaultPrevented(); 552 } 553 554 let evt = new Event(event, { 555 bubbles, 556 cancelable: true 557 }); 558 evt = hydrateObj(evt, args); 559 560 if (defaultPrevented) { 561 evt.preventDefault(); 562 } 563 564 if (nativeDispatch) { 565 element.dispatchEvent(evt); 566 } 567 568 if (evt.defaultPrevented && jQueryEvent) { 569 jQueryEvent.preventDefault(); 570 } 571 572 return evt; 573 } 574 575 }; 576 577 function hydrateObj(obj, meta) { 578 for (const [key, value] of Object.entries(meta || {})) { 579 try { 580 obj[key] = value; 581 } catch (_unused) { 582 Object.defineProperty(obj, key, { 583 configurable: true, 584 585 get() { 586 return value; 587 } 588 589 }); 590 } 591 } 592 593 return obj; 594 } 595 596 /** 597 * -------------------------------------------------------------------------- 598 * Bootstrap (v5.2.2): dom/data.js 599 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 600 * -------------------------------------------------------------------------- 601 */ 602 603 /** 604 * Constants 605 */ 606 const elementMap = new Map(); 607 const Data = { 608 set(element, key, instance) { 609 if (!elementMap.has(element)) { 610 elementMap.set(element, new Map()); 611 } 612 613 const instanceMap = elementMap.get(element); // make it clear we only want one instance per element 614 // can be removed later when multiple key/instances are fine to be used 615 616 if (!instanceMap.has(key) && instanceMap.size !== 0) { 617 // eslint-disable-next-line no-console 618 console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 619 return; 620 } 621 622 instanceMap.set(key, instance); 623 }, 624 625 get(element, key) { 626 if (elementMap.has(element)) { 627 return elementMap.get(element).get(key) || null; 628 } 629 630 return null; 631 }, 632 633 remove(element, key) { 634 if (!elementMap.has(element)) { 635 return; 636 } 637 638 const instanceMap = elementMap.get(element); 639 instanceMap.delete(key); // free up element references if there are no instances left for an element 640 641 if (instanceMap.size === 0) { 642 elementMap.delete(element); 643 } 644 } 645 646 }; 647 648 /** 649 * -------------------------------------------------------------------------- 650 * Bootstrap (v5.2.2): dom/manipulator.js 651 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 652 * -------------------------------------------------------------------------- 653 */ 654 function normalizeData(value) { 655 if (value === 'true') { 656 return true; 657 } 658 659 if (value === 'false') { 660 return false; 661 } 662 663 if (value === Number(value).toString()) { 664 return Number(value); 665 } 666 667 if (value === '' || value === 'null') { 668 return null; 669 } 670 671 if (typeof value !== 'string') { 672 return value; 673 } 674 675 try { 676 return JSON.parse(decodeURIComponent(value)); 677 } catch (_unused) { 678 return value; 679 } 680 } 681 682 function normalizeDataKey(key) { 683 return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); 684 } 685 686 const Manipulator = { 687 setDataAttribute(element, key, value) { 688 element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 689 }, 690 691 removeDataAttribute(element, key) { 692 element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 693 }, 694 695 getDataAttributes(element) { 696 if (!element) { 697 return {}; 698 } 699 700 const attributes = {}; 701 const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); 702 703 for (const key of bsKeys) { 704 let pureKey = key.replace(/^bs/, ''); 705 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 706 attributes[pureKey] = normalizeData(element.dataset[key]); 707 } 708 709 return attributes; 710 }, 711 712 getDataAttribute(element, key) { 713 return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 714 } 715 716 }; 717 718 /** 719 * -------------------------------------------------------------------------- 720 * Bootstrap (v5.2.2): util/config.js 721 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 722 * -------------------------------------------------------------------------- 723 */ 724 /** 725 * Class definition 726 */ 727 728 class Config { 729 // Getters 730 static get Default() { 731 return {}; 732 } 733 734 static get DefaultType() { 735 return {}; 736 } 737 738 static get NAME() { 739 throw new Error('You have to implement the static method "NAME", for each component!'); 740 } 741 742 _getConfig(config) { 743 config = this._mergeConfigObj(config); 744 config = this._configAfterMerge(config); 745 746 this._typeCheckConfig(config); 747 748 return config; 749 } 750 751 _configAfterMerge(config) { 752 return config; 753 } 754 755 _mergeConfigObj(config, element) { 756 const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse 757 758 return { ...this.constructor.Default, 759 ...(typeof jsonConfig === 'object' ? jsonConfig : {}), 760 ...(isElement$1(element) ? Manipulator.getDataAttributes(element) : {}), 761 ...(typeof config === 'object' ? config : {}) 762 }; 763 } 764 765 _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { 766 for (const property of Object.keys(configTypes)) { 767 const expectedTypes = configTypes[property]; 768 const value = config[property]; 769 const valueType = isElement$1(value) ? 'element' : toType(value); 770 771 if (!new RegExp(expectedTypes).test(valueType)) { 772 throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); 773 } 774 } 775 } 776 777 } 778 779 /** 780 * -------------------------------------------------------------------------- 781 * Bootstrap (v5.2.2): base-component.js 782 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 783 * -------------------------------------------------------------------------- 784 */ 785 /** 786 * Constants 787 */ 788 789 const VERSION = '5.2.2'; 790 /** 791 * Class definition 792 */ 793 794 class BaseComponent extends Config { 795 constructor(element, config) { 796 super(); 797 element = getElement(element); 798 799 if (!element) { 800 return; 801 } 802 803 this._element = element; 804 this._config = this._getConfig(config); 805 Data.set(this._element, this.constructor.DATA_KEY, this); 806 } // Public 807 808 809 dispose() { 810 Data.remove(this._element, this.constructor.DATA_KEY); 811 EventHandler.off(this._element, this.constructor.EVENT_KEY); 812
vendor: 2,511 bytes, lines 813-899
813 for (const propertyName of Object.getOwnPropertyNames(this)) { 814 this[propertyName] = null; 815 } 816 } 817 818 _queueCallback(callback, element, isAnimated = true) { 819 executeAfterTransition(callback, element, isAnimated); 820 } 821 822 _getConfig(config) { 823 config = this._mergeConfigObj(config, this._element); 824 config = this._configAfterMerge(config); 825 826 this._typeCheckConfig(config); 827 828 return config; 829 } // Static 830 831 832 static getInstance(element) { 833 return Data.get(getElement(element), this.DATA_KEY); 834 } 835 836 static getOrCreateInstance(element, config = {}) { 837 return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); 838 } 839 840 static get VERSION() { 841 return VERSION; 842 } 843 844 static get DATA_KEY() { 845 return `bs.${this.NAME}`; 846 } 847 848 static get EVENT_KEY() { 849 return `.${this.DATA_KEY}`; 850 } 851 852 static eventName(name) { 853 return `${name}${this.EVENT_KEY}`; 854 } 855 856 } 857 858 /** 859 * -------------------------------------------------------------------------- 860 * Bootstrap (v5.2.2): util/component-functions.js 861 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 862 * -------------------------------------------------------------------------- 863 */ 864 865 const enableDismissTrigger = (component, method = 'hide') => { 866 const clickEvent = `click.dismiss${component.EVENT_KEY}`; 867 const name = component.NAME; 868 EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { 869 if (['A', 'AREA'].includes(this.tagName)) { 870 event.preventDefault(); 871 } 872 873 if (isDisabled(this)) { 874 return; 875 } 876 877 const target = getElementFromSelector(this) || this.closest(`.${name}`); 878 const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method 879 880 instance[method](); 881 }); 882 }; 883 884 /** 885 * -------------------------------------------------------------------------- 886 * Bootstrap (v5.2.2): alert.js 887 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 888 * -------------------------------------------------------------------------- 889 */ 890 /** 891 * Constants 892 */ 893 894 const NAME$f = 'alert'; 895 const DATA_KEY$a = 'bs.alert'; 896 const EVENT_KEY$b = `.${DATA_KEY$a}`; 897 const EVENT_CLOSE = `close${EVENT_KEY$b}`; 898 const EVENT_CLOSED = `closed${EVENT_KEY$b}`; 899 const CLASS_NAME_FADE$5 = 'fade';
vendor: 8,809 bytes, lines 900-1245
900 const CLASS_NAME_SHOW$8 = 'show'; 901 /** 902 * Class definition 903 */ 904 905 class Alert extends BaseComponent { 906 // Getters 907 static get NAME() { 908 return NAME$f; 909 } // Public 910 911 912 close() { 913 const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); 914 915 if (closeEvent.defaultPrevented) { 916 return; 917 } 918 919 this._element.classList.remove(CLASS_NAME_SHOW$8); 920 921 const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); 922 923 this._queueCallback(() => this._destroyElement(), this._element, isAnimated); 924 } // Private 925 926 927 _destroyElement() { 928 this._element.remove(); 929 930 EventHandler.trigger(this._element, EVENT_CLOSED); 931 this.dispose(); 932 } // Static 933 934 935 static jQueryInterface(config) { 936 return this.each(function () { 937 const data = Alert.getOrCreateInstance(this); 938 939 if (typeof config !== 'string') { 940 return; 941 } 942 943 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 944 throw new TypeError(`No method named "${config}"`); 945 } 946 947 data[config](this); 948 }); 949 } 950 951 } 952 /** 953 * Data API implementation 954 */ 955 956 957 enableDismissTrigger(Alert, 'close'); 958 /** 959 * jQuery 960 */ 961 962 defineJQueryPlugin(Alert); 963 964 /** 965 * -------------------------------------------------------------------------- 966 * Bootstrap (v5.2.2): button.js 967 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 968 * -------------------------------------------------------------------------- 969 */ 970 /** 971 * Constants 972 */ 973 974 const NAME$e = 'button'; 975 const DATA_KEY$9 = 'bs.button'; 976 const EVENT_KEY$a = `.${DATA_KEY$9}`; 977 const DATA_API_KEY$6 = '.data-api'; 978 const CLASS_NAME_ACTIVE$3 = 'active'; 979 const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; 980 const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; 981 /** 982 * Class definition 983 */ 984 985 class Button extends BaseComponent { 986 // Getters 987 static get NAME() { 988 return NAME$e; 989 } // Public 990 991 992 toggle() { 993 // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method 994 this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); 995 } // Static 996 997 998 static jQueryInterface(config) { 999 return this.each(function () { 1000 const data = Button.getOrCreateInstance(this); 1001 1002 if (config === 'toggle') { 1003 data[config](); 1004 } 1005 }); 1006 } 1007 1008 } 1009 /** 1010 * Data API implementation 1011 */ 1012 1013 1014 EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { 1015 event.preventDefault(); 1016 const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); 1017 const data = Button.getOrCreateInstance(button); 1018 data.toggle(); 1019 }); 1020 /** 1021 * jQuery 1022 */ 1023 1024 defineJQueryPlugin(Button); 1025 1026 /** 1027 * -------------------------------------------------------------------------- 1028 * Bootstrap (v5.2.2): dom/selector-engine.js 1029 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1030 * -------------------------------------------------------------------------- 1031 */ 1032 /** 1033 * Constants 1034 */ 1035 1036 const SelectorEngine = { 1037 find(selector, element = document.documentElement) { 1038 return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 1039 }, 1040 1041 findOne(selector, element = document.documentElement) { 1042 return Element.prototype.querySelector.call(element, selector); 1043 }, 1044 1045 children(element, selector) { 1046 return [].concat(...element.children).filter(child => child.matches(selector)); 1047 }, 1048 1049 parents(element, selector) { 1050 const parents = []; 1051 let ancestor = element.parentNode.closest(selector); 1052 1053 while (ancestor) { 1054 parents.push(ancestor); 1055 ancestor = ancestor.parentNode.closest(selector); 1056 } 1057 1058 return parents; 1059 }, 1060 1061 prev(element, selector) { 1062 let previous = element.previousElementSibling; 1063 1064 while (previous) { 1065 if (previous.matches(selector)) { 1066 return [previous]; 1067 } 1068 1069 previous = previous.previousElementSibling; 1070 } 1071 1072 return []; 1073 }, 1074 1075 // TODO: this is now unused; remove later along with prev() 1076 next(element, selector) { 1077 let next = element.nextElementSibling; 1078 1079 while (next) { 1080 if (next.matches(selector)) { 1081 return [next]; 1082 } 1083 1084 next = next.nextElementSibling; 1085 } 1086 1087 return []; 1088 }, 1089 1090 focusableChildren(element) { 1091 const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); 1092 return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); 1093 } 1094 1095 }; 1096 1097 /** 1098 * -------------------------------------------------------------------------- 1099 * Bootstrap (v5.2.2): util/swipe.js 1100 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1101 * -------------------------------------------------------------------------- 1102 */ 1103 /** 1104 * Constants 1105 */ 1106 1107 const NAME$d = 'swipe'; 1108 const EVENT_KEY$9 = '.bs.swipe'; 1109 const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; 1110 const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; 1111 const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; 1112 const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; 1113 const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; 1114 const POINTER_TYPE_TOUCH = 'touch'; 1115 const POINTER_TYPE_PEN = 'pen'; 1116 const CLASS_NAME_POINTER_EVENT = 'pointer-event'; 1117 const SWIPE_THRESHOLD = 40; 1118 const Default$c = { 1119 endCallback: null, 1120 leftCallback: null, 1121 rightCallback: null 1122 }; 1123 const DefaultType$c = { 1124 endCallback: '(function|null)', 1125 leftCallback: '(function|null)', 1126 rightCallback: '(function|null)' 1127 }; 1128 /** 1129 * Class definition 1130 */ 1131 1132 class Swipe extends Config { 1133 constructor(element, config) { 1134 super(); 1135 this._element = element; 1136 1137 if (!element || !Swipe.isSupported()) { 1138 return; 1139 } 1140 1141 this._config = this._getConfig(config); 1142 this._deltaX = 0; 1143 this._supportPointerEvents = Boolean(window.PointerEvent); 1144 1145 this._initEvents(); 1146 } // Getters 1147 1148 1149 static get Default() { 1150 return Default$c; 1151 } 1152 1153 static get DefaultType() { 1154 return DefaultType$c; 1155 } 1156 1157 static get NAME() { 1158 return NAME$d; 1159 } // Public 1160 1161 1162 dispose() { 1163 EventHandler.off(this._element, EVENT_KEY$9); 1164 } // Private 1165 1166 1167 _start(event) { 1168 if (!this._supportPointerEvents) { 1169 this._deltaX = event.touches[0].clientX; 1170 return; 1171 } 1172 1173 if (this._eventIsPointerPenTouch(event)) { 1174 this._deltaX = event.clientX; 1175 } 1176 } 1177 1178 _end(event) { 1179 if (this._eventIsPointerPenTouch(event)) { 1180 this._deltaX = event.clientX - this._deltaX; 1181 } 1182 1183 this._handleSwipe(); 1184 1185 execute(this._config.endCallback); 1186 } 1187 1188 _move(event) { 1189 this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; 1190 } 1191 1192 _handleSwipe() { 1193 const absDeltaX = Math.abs(this._deltaX); 1194 1195 if (absDeltaX <= SWIPE_THRESHOLD) { 1196 return; 1197 } 1198 1199 const direction = absDeltaX / this._deltaX; 1200 this._deltaX = 0; 1201 1202 if (!direction) { 1203 return; 1204 } 1205 1206 execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); 1207 } 1208 1209 _initEvents() { 1210 if (this._supportPointerEvents) { 1211 EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); 1212 EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); 1213 1214 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 1215 } else { 1216 EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); 1217 EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); 1218 EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); 1219 } 1220 } 1221 1222 _eventIsPointerPenTouch(event) { 1223 return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); 1224 } // Static 1225 1226 1227 static isSupported() { 1228 return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; 1229 } 1230 1231 } 1232 1233 /** 1234 * -------------------------------------------------------------------------- 1235 * Bootstrap (v5.2.2): carousel.js 1236 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1237 * -------------------------------------------------------------------------- 1238 */ 1239 /** 1240 * Constants 1241 */ 1242 1243 const NAME$c = 'carousel'; 1244 const DATA_KEY$8 = 'bs.carousel'; 1245 const EVENT_KEY$8 = `.${DATA_KEY$8}`;
vendor: 24,803 bytes, lines 1246-2134
1246 const DATA_API_KEY$5 = '.data-api'; 1247 const ARROW_LEFT_KEY$1 = 'ArrowLeft'; 1248 const ARROW_RIGHT_KEY$1 = 'ArrowRight'; 1249 const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch 1250 1251 const ORDER_NEXT = 'next'; 1252 const ORDER_PREV = 'prev'; 1253 const DIRECTION_LEFT = 'left'; 1254 const DIRECTION_RIGHT = 'right'; 1255 const EVENT_SLIDE = `slide${EVENT_KEY$8}`; 1256 const EVENT_SLID = `slid${EVENT_KEY$8}`; 1257 const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; 1258 const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; 1259 const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; 1260 const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; 1261 const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; 1262 const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; 1263 const CLASS_NAME_CAROUSEL = 'carousel'; 1264 const CLASS_NAME_ACTIVE$2 = 'active'; 1265 const CLASS_NAME_SLIDE = 'slide'; 1266 const CLASS_NAME_END = 'carousel-item-end'; 1267 const CLASS_NAME_START = 'carousel-item-start'; 1268 const CLASS_NAME_NEXT = 'carousel-item-next'; 1269 const CLASS_NAME_PREV = 'carousel-item-prev'; 1270 const SELECTOR_ACTIVE = '.active'; 1271 const SELECTOR_ITEM = '.carousel-item'; 1272 const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; 1273 const SELECTOR_ITEM_IMG = '.carousel-item img'; 1274 const SELECTOR_INDICATORS = '.carousel-indicators'; 1275 const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; 1276 const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; 1277 const KEY_TO_DIRECTION = { 1278 [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, 1279 [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT 1280 }; 1281 const Default$b = { 1282 interval: 5000, 1283 keyboard: true, 1284 pause: 'hover', 1285 ride: false, 1286 touch: true, 1287 wrap: true 1288 }; 1289 const DefaultType$b = { 1290 interval: '(number|boolean)', 1291 // TODO:v6 remove boolean support 1292 keyboard: 'boolean', 1293 pause: '(string|boolean)', 1294 ride: '(boolean|string)', 1295 touch: 'boolean', 1296 wrap: 'boolean' 1297 }; 1298 /** 1299 * Class definition 1300 */ 1301 1302 class Carousel extends BaseComponent { 1303 constructor(element, config) { 1304 super(element, config); 1305 this._interval = null; 1306 this._activeElement = null; 1307 this._isSliding = false; 1308 this.touchTimeout = null; 1309 this._swipeHelper = null; 1310 this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); 1311 1312 this._addEventListeners(); 1313 1314 if (this._config.ride === CLASS_NAME_CAROUSEL) { 1315 this.cycle(); 1316 } 1317 } // Getters 1318 1319 1320 static get Default() { 1321 return Default$b; 1322 } 1323 1324 static get DefaultType() { 1325 return DefaultType$b; 1326 } 1327 1328 static get NAME() { 1329 return NAME$c; 1330 } // Public 1331 1332 1333 next() { 1334 this._slide(ORDER_NEXT); 1335 } 1336 1337 nextWhenVisible() { 1338 // FIXME TODO use `document.visibilityState` 1339 // Don't call next when the page isn't visible 1340 // or the carousel or its parent isn't visible 1341 if (!document.hidden && isVisible(this._element)) { 1342 this.next(); 1343 } 1344 } 1345 1346 prev() { 1347 this._slide(ORDER_PREV); 1348 } 1349 1350 pause() { 1351 if (this._isSliding) { 1352 triggerTransitionEnd(this._element); 1353 } 1354 1355 this._clearInterval(); 1356 } 1357 1358 cycle() { 1359 this._clearInterval(); 1360 1361 this._updateInterval(); 1362 1363 this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); 1364 } 1365 1366 _maybeEnableCycle() { 1367 if (!this._config.ride) { 1368 return; 1369 } 1370 1371 if (this._isSliding) { 1372 EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); 1373 return; 1374 } 1375 1376 this.cycle(); 1377 } 1378 1379 to(index) { 1380 const items = this._getItems(); 1381 1382 if (index > items.length - 1 || index < 0) { 1383 return; 1384 } 1385 1386 if (this._isSliding) { 1387 EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); 1388 return; 1389 } 1390 1391 const activeIndex = this._getItemIndex(this._getActive()); 1392 1393 if (activeIndex === index) { 1394 return; 1395 } 1396 1397 const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; 1398 1399 this._slide(order, items[index]); 1400 } 1401 1402 dispose() { 1403 if (this._swipeHelper) { 1404 this._swipeHelper.dispose(); 1405 } 1406 1407 super.dispose(); 1408 } // Private 1409 1410 1411 _configAfterMerge(config) { 1412 config.defaultInterval = config.interval; 1413 return config; 1414 } 1415 1416 _addEventListeners() { 1417 if (this._config.keyboard) { 1418 EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); 1419 } 1420 1421 if (this._config.pause === 'hover') { 1422 EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); 1423 EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); 1424 } 1425 1426 if (this._config.touch && Swipe.isSupported()) { 1427 this._addTouchEventListeners(); 1428 } 1429 } 1430 1431 _addTouchEventListeners() { 1432 for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { 1433 EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); 1434 } 1435 1436 const endCallBack = () => { 1437 if (this._config.pause !== 'hover') { 1438 return; 1439 } // If it's a touch-enabled device, mouseenter/leave are fired as 1440 // part of the mouse compatibility events on first tap - the carousel 1441 // would stop cycling until user tapped out of it; 1442 // here, we listen for touchend, explicitly pause the carousel 1443 // (as if it's the second time we tap on it, mouseenter compat event 1444 // is NOT fired) and after a timeout (to allow for mouse compatibility 1445 // events to fire) we explicitly restart cycling 1446 1447 1448 this.pause(); 1449 1450 if (this.touchTimeout) { 1451 clearTimeout(this.touchTimeout); 1452 } 1453 1454 this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); 1455 }; 1456 1457 const swipeConfig = { 1458 leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), 1459 rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), 1460 endCallback: endCallBack 1461 }; 1462 this._swipeHelper = new Swipe(this._element, swipeConfig); 1463 } 1464 1465 _keydown(event) { 1466 if (/input|textarea/i.test(event.target.tagName)) { 1467 return; 1468 } 1469 1470 const direction = KEY_TO_DIRECTION[event.key]; 1471 1472 if (direction) { 1473 event.preventDefault(); 1474 1475 this._slide(this._directionToOrder(direction)); 1476 } 1477 } 1478 1479 _getItemIndex(element) { 1480 return this._getItems().indexOf(element); 1481 } 1482 1483 _setActiveIndicatorElement(index) { 1484 if (!this._indicatorsElement) { 1485 return; 1486 } 1487 1488 const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); 1489 activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); 1490 activeIndicator.removeAttribute('aria-current'); 1491 const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); 1492 1493 if (newActiveIndicator) { 1494 newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); 1495 newActiveIndicator.setAttribute('aria-current', 'true'); 1496 } 1497 } 1498 1499 _updateInterval() { 1500 const element = this._activeElement || this._getActive(); 1501 1502 if (!element) { 1503 return; 1504 } 1505 1506 const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); 1507 this._config.interval = elementInterval || this._config.defaultInterval; 1508 } 1509 1510 _slide(order, element = null) { 1511 if (this._isSliding) { 1512 return; 1513 } 1514 1515 const activeElement = this._getActive(); 1516 1517 const isNext = order === ORDER_NEXT; 1518 const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); 1519 1520 if (nextElement === activeElement) { 1521 return; 1522 } 1523 1524 const nextElementIndex = this._getItemIndex(nextElement); 1525 1526 const triggerEvent = eventName => { 1527 return EventHandler.trigger(this._element, eventName, { 1528 relatedTarget: nextElement, 1529 direction: this._orderToDirection(order), 1530 from: this._getItemIndex(activeElement), 1531 to: nextElementIndex 1532 }); 1533 }; 1534 1535 const slideEvent = triggerEvent(EVENT_SLIDE); 1536 1537 if (slideEvent.defaultPrevented) { 1538 return; 1539 } 1540 1541 if (!activeElement || !nextElement) { 1542 // Some weirdness is happening, so we bail 1543 // todo: change tests that use empty divs to avoid this check 1544 return; 1545 } 1546 1547 const isCycling = Boolean(this._interval); 1548 this.pause(); 1549 this._isSliding = true; 1550 1551 this._setActiveIndicatorElement(nextElementIndex); 1552 1553 this._activeElement = nextElement; 1554 const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; 1555 const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; 1556 nextElement.classList.add(orderClassName); 1557 reflow(nextElement); 1558 activeElement.classList.add(directionalClassName); 1559 nextElement.classList.add(directionalClassName); 1560 1561 const completeCallBack = () => { 1562 nextElement.classList.remove(directionalClassName, orderClassName); 1563 nextElement.classList.add(CLASS_NAME_ACTIVE$2); 1564 activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); 1565 this._isSliding = false; 1566 triggerEvent(EVENT_SLID); 1567 }; 1568 1569 this._queueCallback(completeCallBack, activeElement, this._isAnimated()); 1570 1571 if (isCycling) { 1572 this.cycle(); 1573 } 1574 } 1575 1576 _isAnimated() { 1577 return this._element.classList.contains(CLASS_NAME_SLIDE); 1578 } 1579 1580 _getActive() { 1581 return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); 1582 } 1583 1584 _getItems() { 1585 return SelectorEngine.find(SELECTOR_ITEM, this._element); 1586 } 1587 1588 _clearInterval() { 1589 if (this._interval) { 1590 clearInterval(this._interval); 1591 this._interval = null; 1592 } 1593 } 1594 1595 _directionToOrder(direction) { 1596 if (isRTL()) { 1597 return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; 1598 } 1599 1600 return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; 1601 } 1602 1603 _orderToDirection(order) { 1604 if (isRTL()) { 1605 return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; 1606 } 1607 1608 return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; 1609 } // Static 1610 1611 1612 static jQueryInterface(config) { 1613 return this.each(function () { 1614 const data = Carousel.getOrCreateInstance(this, config); 1615 1616 if (typeof config === 'number') { 1617 data.to(config); 1618 return; 1619 } 1620 1621 if (typeof config === 'string') { 1622 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 1623 throw new TypeError(`No method named "${config}"`); 1624 } 1625 1626 data[config](); 1627 } 1628 }); 1629 } 1630 1631 } 1632 /** 1633 * Data API implementation 1634 */ 1635 1636 1637 EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { 1638 const target = getElementFromSelector(this); 1639 1640 if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { 1641 return; 1642 } 1643 1644 event.preventDefault(); 1645 const carousel = Carousel.getOrCreateInstance(target); 1646 const slideIndex = this.getAttribute('data-bs-slide-to'); 1647 1648 if (slideIndex) { 1649 carousel.to(slideIndex); 1650 1651 carousel._maybeEnableCycle(); 1652 1653 return; 1654 } 1655 1656 if (Manipulator.getDataAttribute(this, 'slide') === 'next') { 1657 carousel.next(); 1658 1659 carousel._maybeEnableCycle(); 1660 1661 return; 1662 } 1663 1664 carousel.prev(); 1665 1666 carousel._maybeEnableCycle(); 1667 }); 1668 EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { 1669 const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); 1670 1671 for (const carousel of carousels) { 1672 Carousel.getOrCreateInstance(carousel); 1673 } 1674 }); 1675 /** 1676 * jQuery 1677 */ 1678 1679 defineJQueryPlugin(Carousel); 1680 1681 /** 1682 * -------------------------------------------------------------------------- 1683 * Bootstrap (v5.2.2): collapse.js 1684 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 1685 * -------------------------------------------------------------------------- 1686 */ 1687 /** 1688 * Constants 1689 */ 1690 1691 const NAME$b = 'collapse'; 1692 const DATA_KEY$7 = 'bs.collapse'; 1693 const EVENT_KEY$7 = `.${DATA_KEY$7}`; 1694 const DATA_API_KEY$4 = '.data-api'; 1695 const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; 1696 const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; 1697 const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; 1698 const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; 1699 const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; 1700 const CLASS_NAME_SHOW$7 = 'show'; 1701 const CLASS_NAME_COLLAPSE = 'collapse'; 1702 const CLASS_NAME_COLLAPSING = 'collapsing'; 1703 const CLASS_NAME_COLLAPSED = 'collapsed'; 1704 const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; 1705 const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; 1706 const WIDTH = 'width'; 1707 const HEIGHT = 'height'; 1708 const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; 1709 const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; 1710 const Default$a = { 1711 parent: null, 1712 toggle: true 1713 }; 1714 const DefaultType$a = { 1715 parent: '(null|element)', 1716 toggle: 'boolean' 1717 }; 1718 /** 1719 * Class definition 1720 */ 1721 1722 class Collapse extends BaseComponent { 1723 constructor(element, config) { 1724 super(element, config); 1725 this._isTransitioning = false; 1726 this._triggerArray = []; 1727 const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); 1728 1729 for (const elem of toggleList) { 1730 const selector = getSelectorFromElement(elem); 1731 const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); 1732 1733 if (selector !== null && filterElement.length) { 1734 this._triggerArray.push(elem); 1735 } 1736 } 1737 1738 this._initializeChildren(); 1739 1740 if (!this._config.parent) { 1741 this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); 1742 } 1743 1744 if (this._config.toggle) { 1745 this.toggle(); 1746 } 1747 } // Getters 1748 1749 1750 static get Default() { 1751 return Default$a; 1752 } 1753 1754 static get DefaultType() { 1755 return DefaultType$a; 1756 } 1757 1758 static get NAME() { 1759 return NAME$b; 1760 } // Public 1761 1762 1763 toggle() { 1764 if (this._isShown()) { 1765 this.hide(); 1766 } else { 1767 this.show(); 1768 } 1769 } 1770 1771 show() { 1772 if (this._isTransitioning || this._isShown()) { 1773 return; 1774 } 1775 1776 let activeChildren = []; // find active children 1777 1778 if (this._config.parent) { 1779 activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { 1780 toggle: false 1781 })); 1782 } 1783 1784 if (activeChildren.length && activeChildren[0]._isTransitioning) { 1785 return; 1786 } 1787 1788 const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); 1789 1790 if (startEvent.defaultPrevented) { 1791 return; 1792 } 1793 1794 for (const activeInstance of activeChildren) { 1795 activeInstance.hide(); 1796 } 1797 1798 const dimension = this._getDimension(); 1799 1800 this._element.classList.remove(CLASS_NAME_COLLAPSE); 1801 1802 this._element.classList.add(CLASS_NAME_COLLAPSING); 1803 1804 this._element.style[dimension] = 0; 1805 1806 this._addAriaAndCollapsedClass(this._triggerArray, true); 1807 1808 this._isTransitioning = true; 1809 1810 const complete = () => { 1811 this._isTransitioning = false; 1812 1813 this._element.classList.remove(CLASS_NAME_COLLAPSING); 1814 1815 this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 1816 1817 this._element.style[dimension] = ''; 1818 EventHandler.trigger(this._element, EVENT_SHOWN$6); 1819 }; 1820 1821 const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 1822 const scrollSize = `scroll${capitalizedDimension}`; 1823 1824 this._queueCallback(complete, this._element, true); 1825 1826 this._element.style[dimension] = `${this._element[scrollSize]}px`; 1827 } 1828 1829 hide() { 1830 if (this._isTransitioning || !this._isShown()) { 1831 return; 1832 } 1833 1834 const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); 1835 1836 if (startEvent.defaultPrevented) { 1837 return; 1838 } 1839 1840 const dimension = this._getDimension(); 1841 1842 this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; 1843 reflow(this._element); 1844 1845 this._element.classList.add(CLASS_NAME_COLLAPSING); 1846 1847 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 1848 1849 for (const trigger of this._triggerArray) { 1850 const element = getElementFromSelector(trigger); 1851 1852 if (element && !this._isShown(element)) { 1853 this._addAriaAndCollapsedClass([trigger], false); 1854 } 1855 } 1856 1857 this._isTransitioning = true; 1858 1859 const complete = () => { 1860 this._isTransitioning = false; 1861 1862 this._element.classList.remove(CLASS_NAME_COLLAPSING); 1863 1864 this._element.classList.add(CLASS_NAME_COLLAPSE); 1865 1866 EventHandler.trigger(this._element, EVENT_HIDDEN$6); 1867 }; 1868 1869 this._element.style[dimension] = ''; 1870 1871 this._queueCallback(complete, this._element, true); 1872 } 1873 1874 _isShown(element = this._element) { 1875 return element.classList.contains(CLASS_NAME_SHOW$7); 1876 } // Private 1877 1878 1879 _configAfterMerge(config) { 1880 config.toggle = Boolean(config.toggle); // Coerce string values 1881 1882 config.parent = getElement(config.parent); 1883 return config; 1884 } 1885 1886 _getDimension() { 1887 return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; 1888 } 1889 1890 _initializeChildren() { 1891 if (!this._config.parent) { 1892 return; 1893 } 1894 1895 const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); 1896 1897 for (const element of children) { 1898 const selected = getElementFromSelector(element); 1899 1900 if (selected) { 1901 this._addAriaAndCollapsedClass([element], this._isShown(selected)); 1902 } 1903 } 1904 } 1905 1906 _getFirstLevelChildren(selector) { 1907 const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth 1908 1909 return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); 1910 } 1911 1912 _addAriaAndCollapsedClass(triggerArray, isOpen) { 1913 if (!triggerArray.length) { 1914 return; 1915 } 1916 1917 for (const element of triggerArray) { 1918 element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); 1919 element.setAttribute('aria-expanded', isOpen); 1920 } 1921 } // Static 1922 1923 1924 static jQueryInterface(config) { 1925 const _config = {}; 1926 1927 if (typeof config === 'string' && /show|hide/.test(config)) { 1928 _config.toggle = false; 1929 } 1930 1931 return this.each(function () { 1932 const data = Collapse.getOrCreateInstance(this, _config); 1933 1934 if (typeof config === 'string') { 1935 if (typeof data[config] === 'undefined') { 1936 throw new TypeError(`No method named "${config}"`); 1937 } 1938 1939 data[config](); 1940 } 1941 }); 1942 } 1943 1944 } 1945 /** 1946 * Data API implementation 1947 */ 1948 1949 1950 EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { 1951 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 1952 if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { 1953 event.preventDefault(); 1954 } 1955 1956 const selector = getSelectorFromElement(this); 1957 const selectorElements = SelectorEngine.find(selector); 1958 1959 for (const element of selectorElements) { 1960 Collapse.getOrCreateInstance(element, { 1961 toggle: false 1962 }).toggle(); 1963 } 1964 }); 1965 /** 1966 * jQuery 1967 */ 1968 1969 defineJQueryPlugin(Collapse); 1970 1971 var top = 'top'; 1972 var bottom = 'bottom'; 1973 var right = 'right'; 1974 var left = 'left'; 1975 var auto = 'auto'; 1976 var basePlacements = [top, bottom, right, left]; 1977 var start = 'start'; 1978 var end = 'end'; 1979 var clippingParents = 'clippingParents'; 1980 var viewport = 'viewport'; 1981 var popper = 'popper'; 1982 var reference = 'reference'; 1983 var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { 1984 return acc.concat([placement + "-" + start, placement + "-" + end]); 1985 }, []); 1986 var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { 1987 return acc.concat([placement, placement + "-" + start, placement + "-" + end]); 1988 }, []); // modifiers that need to read the DOM 1989 1990 var beforeRead = 'beforeRead'; 1991 var read = 'read'; 1992 var afterRead = 'afterRead'; // pure-logic modifiers 1993 1994 var beforeMain = 'beforeMain'; 1995 var main = 'main'; 1996 var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) 1997 1998 var beforeWrite = 'beforeWrite'; 1999 var write = 'write'; 2000 var afterWrite = 'afterWrite'; 2001 var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; 2002 2003 function getNodeName(element) { 2004 return element ? (element.nodeName || '').toLowerCase() : null; 2005 } 2006 2007 function getWindow(node) { 2008 if (node == null) { 2009 return window; 2010 } 2011 2012 if (node.toString() !== '[object Window]') { 2013 var ownerDocument = node.ownerDocument; 2014 return ownerDocument ? ownerDocument.defaultView || window : window; 2015 } 2016 2017 return node; 2018 } 2019 2020 function isElement(node) { 2021 var OwnElement = getWindow(node).Element; 2022 return node instanceof OwnElement || node instanceof Element; 2023 } 2024 2025 function isHTMLElement(node) { 2026 var OwnElement = getWindow(node).HTMLElement; 2027 return node instanceof OwnElement || node instanceof HTMLElement; 2028 } 2029 2030 function isShadowRoot(node) { 2031 // IE 11 has no ShadowRoot 2032 if (typeof ShadowRoot === 'undefined') { 2033 return false; 2034 } 2035 2036 var OwnElement = getWindow(node).ShadowRoot; 2037 return node instanceof OwnElement || node instanceof ShadowRoot; 2038 } 2039 2040 // and applies them to the HTMLElements such as popper and arrow 2041 2042 function applyStyles(_ref) { 2043 var state = _ref.state; 2044 Object.keys(state.elements).forEach(function (name) { 2045 var style = state.styles[name] || {}; 2046 var attributes = state.attributes[name] || {}; 2047 var element = state.elements[name]; // arrow is optional + virtual elements 2048 2049 if (!isHTMLElement(element) || !getNodeName(element)) { 2050 return; 2051 } // Flow doesn't support to extend this property, but it's the most 2052 // effective way to apply styles to an HTMLElement 2053 // $FlowFixMe[cannot-write] 2054 2055 2056 Object.assign(element.style, style); 2057 Object.keys(attributes).forEach(function (name) { 2058 var value = attributes[name]; 2059 2060 if (value === false) { 2061 element.removeAttribute(name); 2062 } else { 2063 element.setAttribute(name, value === true ? '' : value); 2064 } 2065 }); 2066 }); 2067 } 2068 2069 function effect$2(_ref2) { 2070 var state = _ref2.state; 2071 var initialStyles = { 2072 popper: { 2073 position: state.options.strategy, 2074 left: '0', 2075 top: '0', 2076 margin: '0' 2077 }, 2078 arrow: { 2079 position: 'absolute' 2080 }, 2081 reference: {} 2082 }; 2083 Object.assign(state.elements.popper.style, initialStyles.popper); 2084 state.styles = initialStyles; 2085 2086 if (state.elements.arrow) { 2087 Object.assign(state.elements.arrow.style, initialStyles.arrow); 2088 } 2089 2090 return function () { 2091 Object.keys(state.elements).forEach(function (name) { 2092 var element = state.elements[name]; 2093 var attributes = state.attributes[name] || {}; 2094 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them 2095 2096 var style = styleProperties.reduce(function (style, property) { 2097 style[property] = ''; 2098 return style; 2099 }, {}); // arrow is optional + virtual elements 2100 2101 if (!isHTMLElement(element) || !getNodeName(element)) { 2102 return; 2103 } 2104 2105 Object.assign(element.style, style); 2106 Object.keys(attributes).forEach(function (attribute) { 2107 element.removeAttribute(attribute); 2108 }); 2109 }); 2110 }; 2111 } // eslint-disable-next-line import/no-unused-modules 2112 2113 2114 const applyStyles$1 = { 2115 name: 'applyStyles', 2116 enabled: true, 2117 phase: 'write', 2118 fn: applyStyles, 2119 effect: effect$2, 2120 requires: ['computeStyles'] 2121 }; 2122 2123 function getBasePlacement(placement) { 2124 return placement.split('-')[0]; 2125 } 2126 2127 var max = Math.max; 2128 var min = Math.min; 2129 var round = Math.round; 2130 2131 function getUAString() { 2132 var uaData = navigator.userAgentData; 2133 2134 if (uaData != null && uaData.brands
vendor: 9,607 bytes, lines 2134-2421
2134) { 2135 return uaData.brands.map(function (item) { 2136 return item.brand + "/" + item.version; 2137 }).join(' '); 2138 } 2139 2140 return navigator.userAgent; 2141 } 2142 2143 function isLayoutViewport() { 2144 return !/^((?!chrome|android).)*safari/i.test(getUAString()); 2145 } 2146 2147 function getBoundingClientRect(element, includeScale, isFixedStrategy) { 2148 if (includeScale === void 0) { 2149 includeScale = false; 2150 } 2151 2152 if (isFixedStrategy === void 0) { 2153 isFixedStrategy = false; 2154 } 2155 2156 var clientRect = element.getBoundingClientRect(); 2157 var scaleX = 1; 2158 var scaleY = 1; 2159 2160 if (includeScale && isHTMLElement(element)) { 2161 scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; 2162 scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; 2163 } 2164 2165 var _ref = isElement(element) ? getWindow(element) : window, 2166 visualViewport = _ref.visualViewport; 2167 2168 var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; 2169 var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; 2170 var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; 2171 var width = clientRect.width / scaleX; 2172 var height = clientRect.height / scaleY; 2173 return { 2174 width: width, 2175 height: height, 2176 top: y, 2177 right: x + width, 2178 bottom: y + height, 2179 left: x, 2180 x: x, 2181 y: y 2182 }; 2183 } 2184 2185 // means it doesn't take into account transforms. 2186 2187 function getLayoutRect(element) { 2188 var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. 2189 // Fixes https://github.com/popperjs/popper-core/issues/1223 2190 2191 var width = element.offsetWidth; 2192 var height = element.offsetHeight; 2193 2194 if (Math.abs(clientRect.width - width) <= 1) { 2195 width = clientRect.width; 2196 } 2197 2198 if (Math.abs(clientRect.height - height) <= 1) { 2199 height = clientRect.height; 2200 } 2201 2202 return { 2203 x: element.offsetLeft, 2204 y: element.offsetTop, 2205 width: width, 2206 height: height 2207 }; 2208 } 2209 2210 function contains(parent, child) { 2211 var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method 2212 2213 if (parent.contains(child)) { 2214 return true; 2215 } // then fallback to custom implementation with Shadow DOM support 2216 else if (rootNode && isShadowRoot(rootNode)) { 2217 var next = child; 2218 2219 do { 2220 if (next && parent.isSameNode(next)) { 2221 return true; 2222 } // $FlowFixMe[prop-missing]: need a better way to handle this... 2223 2224 2225 next = next.parentNode || next.host; 2226 } while (next); 2227 } // Give up, the result is false 2228 2229 2230 return false; 2231 } 2232 2233 function getComputedStyle$1(element) { 2234 return getWindow(element).getComputedStyle(element); 2235 } 2236 2237 function isTableElement(element) { 2238 return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; 2239 } 2240 2241 function getDocumentElement(element) { 2242 // $FlowFixMe[incompatible-return]: assume body is always available 2243 return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] 2244 element.document) || window.document).documentElement; 2245 } 2246 2247 function getParentNode(element) { 2248 if (getNodeName(element) === 'html') { 2249 return element; 2250 } 2251 2252 return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle 2253 // $FlowFixMe[incompatible-return] 2254 // $FlowFixMe[prop-missing] 2255 element.assignedSlot || // step into the shadow DOM of the parent of a slotted node 2256 element.parentNode || ( // DOM Element detected 2257 isShadowRoot(element) ? element.host : null) || // ShadowRoot detected 2258 // $FlowFixMe[incompatible-call]: HTMLElement is a Node 2259 getDocumentElement(element) // fallback 2260 2261 ); 2262 } 2263 2264 function getTrueOffsetParent(element) { 2265 if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 2266 getComputedStyle$1(element).position === 'fixed') { 2267 return null; 2268 } 2269 2270 return element.offsetParent; 2271 } // `.offsetParent` reports `null` for fixed elements, while absolute elements 2272 // return the containing block 2273 2274 2275 function getContainingBlock(element) { 2276 var isFirefox = /firefox/i.test(getUAString()); 2277 var isIE = /Trident/i.test(getUAString()); 2278 2279 if (isIE && isHTMLElement(element)) { 2280 // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport 2281 var elementCss = getComputedStyle$1(element); 2282 2283 if (elementCss.position === 'fixed') { 2284 return null; 2285 } 2286 } 2287 2288 var currentNode = getParentNode(element); 2289 2290 if (isShadowRoot(currentNode)) { 2291 currentNode = currentNode.host; 2292 } 2293 2294 while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { 2295 var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that 2296 // create a containing block. 2297 // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block 2298 2299 if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { 2300 return currentNode; 2301 } else { 2302 currentNode = currentNode.parentNode; 2303 } 2304 } 2305 2306 return null; 2307 } // Gets the closest ancestor positioned element. Handles some edge cases, 2308 // such as table ancestors and cross browser bugs. 2309 2310 2311 function getOffsetParent(element) { 2312 var window = getWindow(element); 2313 var offsetParent = getTrueOffsetParent(element); 2314 2315 while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { 2316 offsetParent = getTrueOffsetParent(offsetParent); 2317 } 2318 2319 if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { 2320 return window; 2321 } 2322 2323 return offsetParent || getContainingBlock(element) || window; 2324 } 2325 2326 function getMainAxisFromPlacement(placement) { 2327 return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; 2328 } 2329 2330 function within(min$1, value, max$1) { 2331 return max(min$1, min(value, max$1)); 2332 } 2333 function withinMaxClamp(min, value, max) { 2334 var v = within(min, value, max); 2335 return v > max ? max : v; 2336 } 2337 2338 function getFreshSideObject() { 2339 return { 2340 top: 0, 2341 right: 0, 2342 bottom: 0, 2343 left: 0 2344 }; 2345 } 2346 2347 function mergePaddingObject(paddingObject) { 2348 return Object.assign({}, getFreshSideObject(), paddingObject); 2349 } 2350 2351 function expandToHashMap(value, keys) { 2352 return keys.reduce(function (hashMap, key) { 2353 hashMap[key] = value; 2354 return hashMap; 2355 }, {}); 2356 } 2357 2358 var toPaddingObject = function toPaddingObject(padding, state) { 2359 padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { 2360 placement: state.placement 2361 })) : padding; 2362 return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); 2363 }; 2364 2365 function arrow(_ref) { 2366 var _state$modifiersData$; 2367 2368 var state = _ref.state, 2369 name = _ref.name, 2370 options = _ref.options; 2371 var arrowElement = state.elements.arrow; 2372 var popperOffsets = state.modifiersData.popperOffsets; 2373 var basePlacement = getBasePlacement(state.placement); 2374 var axis = getMainAxisFromPlacement(basePlacement); 2375 var isVertical = [left, right].indexOf(basePlacement) >= 0; 2376 var len = isVertical ? 'height' : 'width'; 2377 2378 if (!arrowElement || !popperOffsets) { 2379 return; 2380 } 2381 2382 var paddingObject = toPaddingObject(options.padding, state); 2383 var arrowRect = getLayoutRect(arrowElement); 2384 var minProp = axis === 'y' ? top : left; 2385 var maxProp = axis === 'y' ? bottom : right; 2386 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; 2387 var startDiff = popperOffsets[axis] - state.rects.reference[axis]; 2388 var arrowOffsetParent = getOffsetParent(arrowElement); 2389 var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; 2390 var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is 2391 // outside of the popper bounds 2392 2393 var min = paddingObject[minProp]; 2394 var max = clientSize - arrowRect[len] - paddingObject[maxProp]; 2395 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; 2396 var offset = within(min, center, max); // Prevents breaking syntax highlighting... 2397 2398 var axisProp = axis; 2399 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); 2400 } 2401 2402 function effect$1(_ref2) { 2403 var state = _ref2.state, 2404 options = _ref2.options; 2405 var _options$element = options.element, 2406 arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; 2407 2408 if (arrowElement == null) { 2409 return; 2410 } // CSS selector 2411 2412 2413 if (typeof arrowElement === 'string') { 2414 arrowElement = state.elements.popper.querySelector(arrowElement); 2415 2416 if (!arrowElement) { 2417 return; 2418 } 2419 } 2420 2421 if (!contains(state.elements.popper, arrowElement)) {
vendor: 1,969 bytes, lines 2422-2500
2422 2423 return; 2424 } 2425 2426 state.elements.arrow = arrowElement; 2427 } // eslint-disable-next-line import/no-unused-modules 2428 2429 2430 const arrow$1 = { 2431 name: 'arrow', 2432 enabled: true, 2433 phase: 'main', 2434 fn: arrow, 2435 effect: effect$1, 2436 requires: ['popperOffsets'], 2437 requiresIfExists: ['preventOverflow'] 2438 }; 2439 2440 function getVariation(placement) { 2441 return placement.split('-')[1]; 2442 } 2443 2444 var unsetSides = { 2445 top: 'auto', 2446 right: 'auto', 2447 bottom: 'auto', 2448 left: 'auto' 2449 }; // Round the offsets to the nearest suitable subpixel based on the DPR. 2450 // Zooming can change the DPR, but it seems to report a value that will 2451 // cleanly divide the values into the appropriate subpixels. 2452 2453 function roundOffsetsByDPR(_ref) { 2454 var x = _ref.x, 2455 y = _ref.y; 2456 var win = window; 2457 var dpr = win.devicePixelRatio || 1; 2458 return { 2459 x: round(x * dpr) / dpr || 0, 2460 y: round(y * dpr) / dpr || 0 2461 }; 2462 } 2463 2464 function mapToStyles(_ref2) { 2465 var _Object$assign2; 2466 2467 var popper = _ref2.popper, 2468 popperRect = _ref2.popperRect, 2469 placement = _ref2.placement, 2470 variation = _ref2.variation, 2471 offsets = _ref2.offsets, 2472 position = _ref2.position, 2473 gpuAcceleration = _ref2.gpuAcceleration, 2474 adaptive = _ref2.adaptive, 2475 roundOffsets = _ref2.roundOffsets, 2476 isFixed = _ref2.isFixed; 2477 var _offsets$x = offsets.x, 2478 x = _offsets$x === void 0 ? 0 : _offsets$x, 2479 _offsets$y = offsets.y, 2480 y = _offsets$y === void 0 ? 0 : _offsets$y; 2481 2482 var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ 2483 x: x, 2484 y: y 2485 }) : { 2486 x: x, 2487 y: y 2488 }; 2489 2490 x = _ref3.x; 2491 y = _ref3.y; 2492 var hasX = offsets.hasOwnProperty('x'); 2493 var hasY = offsets.hasOwnProperty('y'); 2494 var sideX = left; 2495 var sideY = top; 2496 var win = window; 2497 2498 if (adaptive) { 2499 var offsetParent = getOffsetParent(popper); 2500 var heightProp = 'clientHeight';
vendor: 2,614 bytes, lines 2501-2564
2501 var widthProp = 'clientWidth'; 2502 2503 if (offsetParent === getWindow(popper)) { 2504 offsetParent = getDocumentElement(popper); 2505 2506 if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') { 2507 heightProp = 'scrollHeight'; 2508 widthProp = 'scrollWidth'; 2509 } 2510 } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it 2511 2512 2513 offsetParent = offsetParent; 2514 2515 if (placement === top || (placement === left || placement === right) && variation === end) { 2516 sideY = bottom; 2517 var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] 2518 offsetParent[heightProp]; 2519 y -= offsetY - popperRect.height; 2520 y *= gpuAcceleration ? 1 : -1; 2521 } 2522 2523 if (placement === left || (placement === top || placement === bottom) && variation === end) { 2524 sideX = right; 2525 var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] 2526 offsetParent[widthProp]; 2527 x -= offsetX - popperRect.width; 2528 x *= gpuAcceleration ? 1 : -1; 2529 } 2530 } 2531 2532 var commonStyles = Object.assign({ 2533 position: position 2534 }, adaptive && unsetSides); 2535 2536 var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ 2537 x: x, 2538 y: y 2539 }) : { 2540 x: x, 2541 y: y 2542 }; 2543 2544 x = _ref4.x; 2545 y = _ref4.y; 2546 2547 if (gpuAcceleration) { 2548 var _Object$assign; 2549 2550 return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); 2551 } 2552 2553 return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); 2554 } 2555 2556 function computeStyles(_ref5) { 2557 var state = _ref5.state, 2558 options = _ref5.options; 2559 var _options$gpuAccelerat = options.gpuAcceleration, 2560 gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, 2561 _options$adaptive = options.adaptive, 2562 adaptive = _options$adaptive === void 0 ? true : _options$adaptive, 2563 _options$roundOffsets = options.roundOffsets, 2564 roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
vendor: 37,725 bytes, lines 2565-3633
2565 2566 var commonStyles = { 2567 placement: getBasePlacement(state.placement), 2568 variation: getVariation(state.placement), 2569 popper: state.elements.popper, 2570 popperRect: state.rects.popper, 2571 gpuAcceleration: gpuAcceleration, 2572 isFixed: state.options.strategy === 'fixed' 2573 }; 2574 2575 if (state.modifiersData.popperOffsets != null) { 2576 state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { 2577 offsets: state.modifiersData.popperOffsets, 2578 position: state.options.strategy, 2579 adaptive: adaptive, 2580 roundOffsets: roundOffsets 2581 }))); 2582 } 2583 2584 if (state.modifiersData.arrow != null) { 2585 state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { 2586 offsets: state.modifiersData.arrow, 2587 position: 'absolute', 2588 adaptive: false, 2589 roundOffsets: roundOffsets 2590 }))); 2591 } 2592 2593 state.attributes.popper = Object.assign({}, state.attributes.popper, { 2594 'data-popper-placement': state.placement 2595 }); 2596 } // eslint-disable-next-line import/no-unused-modules 2597 2598 2599 const computeStyles$1 = { 2600 name: 'computeStyles', 2601 enabled: true, 2602 phase: 'beforeWrite', 2603 fn: computeStyles, 2604 data: {} 2605 }; 2606 2607 var passive = { 2608 passive: true 2609 }; 2610 2611 function effect(_ref) { 2612 var state = _ref.state, 2613 instance = _ref.instance, 2614 options = _ref.options; 2615 var _options$scroll = options.scroll, 2616 scroll = _options$scroll === void 0 ? true : _options$scroll, 2617 _options$resize = options.resize, 2618 resize = _options$resize === void 0 ? true : _options$resize; 2619 var window = getWindow(state.elements.popper); 2620 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); 2621 2622 if (scroll) { 2623 scrollParents.forEach(function (scrollParent) { 2624 scrollParent.addEventListener('scroll', instance.update, passive); 2625 }); 2626 } 2627 2628 if (resize) { 2629 window.addEventListener('resize', instance.update, passive); 2630 } 2631 2632 return function () { 2633 if (scroll) { 2634 scrollParents.forEach(function (scrollParent) { 2635 scrollParent.removeEventListener('scroll', instance.update, passive); 2636 }); 2637 } 2638 2639 if (resize) { 2640 window.removeEventListener('resize', instance.update, passive); 2641 } 2642 }; 2643 } // eslint-disable-next-line import/no-unused-modules 2644 2645 2646 const eventListeners = { 2647 name: 'eventListeners', 2648 enabled: true, 2649 phase: 'write', 2650 fn: function fn() {}, 2651 effect: effect, 2652 data: {} 2653 }; 2654 2655 var hash$1 = { 2656 left: 'right', 2657 right: 'left', 2658 bottom: 'top', 2659 top: 'bottom' 2660 }; 2661 function getOppositePlacement(placement) { 2662 return placement.replace(/left|right|bottom|top/g, function (matched) { 2663 return hash$1[matched]; 2664 }); 2665 } 2666 2667 var hash = { 2668 start: 'end', 2669 end: 'start' 2670 }; 2671 function getOppositeVariationPlacement(placement) { 2672 return placement.replace(/start|end/g, function (matched) { 2673 return hash[matched]; 2674 }); 2675 } 2676 2677 function getWindowScroll(node) { 2678 var win = getWindow(node); 2679 var scrollLeft = win.pageXOffset; 2680 var scrollTop = win.pageYOffset; 2681 return { 2682 scrollLeft: scrollLeft, 2683 scrollTop: scrollTop 2684 }; 2685 } 2686 2687 function getWindowScrollBarX(element) { 2688 // If <html> has a CSS width greater than the viewport, then this will be 2689 // incorrect for RTL. 2690 // Popper 1 is broken in this case and never had a bug report so let's assume 2691 // it's not an issue. I don't think anyone ever specifies width on <html> 2692 // anyway. 2693 // Browsers where the left scrollbar doesn't cause an issue report `0` for 2694 // this (e.g. Edge 2019, IE11, Safari) 2695 return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; 2696 } 2697 2698 function getViewportRect(element, strategy) { 2699 var win = getWindow(element); 2700 var html = getDocumentElement(element); 2701 var visualViewport = win.visualViewport; 2702 var width = html.clientWidth; 2703 var height = html.clientHeight; 2704 var x = 0; 2705 var y = 0; 2706 2707 if (visualViewport) { 2708 width = visualViewport.width; 2709 height = visualViewport.height; 2710 var layoutViewport = isLayoutViewport(); 2711 2712 if (layoutViewport || !layoutViewport && strategy === 'fixed') { 2713 x = visualViewport.offsetLeft; 2714 y = visualViewport.offsetTop; 2715 } 2716 } 2717 2718 return { 2719 width: width, 2720 height: height, 2721 x: x + getWindowScrollBarX(element), 2722 y: y 2723 }; 2724 } 2725 2726 // of the `<html>` and `<body>` rect bounds if horizontally scrollable 2727 2728 function getDocumentRect(element) { 2729 var _element$ownerDocumen; 2730 2731 var html = getDocumentElement(element); 2732 var winScroll = getWindowScroll(element); 2733 var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; 2734 var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); 2735 var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); 2736 var x = -winScroll.scrollLeft + getWindowScrollBarX(element); 2737 var y = -winScroll.scrollTop; 2738 2739 if (getComputedStyle$1(body || html).direction === 'rtl') { 2740 x += max(html.clientWidth, body ? body.clientWidth : 0) - width; 2741 } 2742 2743 return { 2744 width: width, 2745 height: height, 2746 x: x, 2747 y: y 2748 }; 2749 } 2750 2751 function isScrollParent(element) { 2752 // Firefox wants us to check `-x` and `-y` variations as well 2753 var _getComputedStyle = getComputedStyle$1(element), 2754 overflow = _getComputedStyle.overflow, 2755 overflowX = _getComputedStyle.overflowX, 2756 overflowY = _getComputedStyle.overflowY; 2757 2758 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); 2759 } 2760 2761 function getScrollParent(node) { 2762 if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { 2763 // $FlowFixMe[incompatible-return]: assume body is always available 2764 return node.ownerDocument.body; 2765 } 2766 2767 if (isHTMLElement(node) && isScrollParent(node)) { 2768 return node; 2769 } 2770 2771 return getScrollParent(getParentNode(node)); 2772 } 2773 2774 /* 2775 given a DOM element, return the list of all scroll parents, up the list of ancesors 2776 until we get to the top window object. This list is what we attach scroll listeners 2777 to, because if any of these parent elements scroll, we'll need to re-calculate the 2778 reference element's position. 2779 */ 2780 2781 function listScrollParents(element, list) { 2782 var _element$ownerDocumen; 2783 2784 if (list === void 0) { 2785 list = []; 2786 } 2787 2788 var scrollParent = getScrollParent(element); 2789 var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); 2790 var win = getWindow(scrollParent); 2791 var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; 2792 var updatedList = list.concat(target); 2793 return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here 2794 updatedList.concat(listScrollParents(getParentNode(target))); 2795 } 2796 2797 function rectToClientRect(rect) { 2798 return Object.assign({}, rect, { 2799 left: rect.x, 2800 top: rect.y, 2801 right: rect.x + rect.width, 2802 bottom: rect.y + rect.height 2803 }); 2804 } 2805 2806 function getInnerBoundingClientRect(element, strategy) { 2807 var rect = getBoundingClientRect(element, false, strategy === 'fixed'); 2808 rect.top = rect.top + element.clientTop; 2809 rect.left = rect.left + element.clientLeft; 2810 rect.bottom = rect.top + element.clientHeight; 2811 rect.right = rect.left + element.clientWidth; 2812 rect.width = element.clientWidth; 2813 rect.height = element.clientHeight; 2814 rect.x = rect.left; 2815 rect.y = rect.top; 2816 return rect; 2817 } 2818 2819 function getClientRectFromMixedType(element, clippingParent, strategy) { 2820 return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); 2821 } // A "clipping parent" is an overflowable container with the characteristic of 2822 // clipping (or hiding) overflowing elements with a position different from 2823 // `initial` 2824 2825 2826 function getClippingParents(element) { 2827 var clippingParents = listScrollParents(getParentNode(element)); 2828 var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; 2829 var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; 2830 2831 if (!isElement(clipperElement)) { 2832 return []; 2833 } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 2834 2835 2836 return clippingParents.filter(function (clippingParent) { 2837 return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; 2838 }); 2839 } // Gets the maximum area that the element is visible in due to any number of 2840 // clipping parents 2841 2842 2843 function getClippingRect(element, boundary, rootBoundary, strategy) { 2844 var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); 2845 var clippingParents = [].concat(mainClippingParents, [rootBoundary]); 2846 var firstClippingParent = clippingParents[0]; 2847 var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { 2848 var rect = getClientRectFromMixedType(element, clippingParent, strategy); 2849 accRect.top = max(rect.top, accRect.top); 2850 accRect.right = min(rect.right, accRect.right); 2851 accRect.bottom = min(rect.bottom, accRect.bottom); 2852 accRect.left = max(rect.left, accRect.left); 2853 return accRect; 2854 }, getClientRectFromMixedType(element, firstClippingParent, strategy)); 2855 clippingRect.width = clippingRect.right - clippingRect.left; 2856 clippingRect.height = clippingRect.bottom - clippingRect.top; 2857 clippingRect.x = clippingRect.left; 2858 clippingRect.y = clippingRect.top; 2859 return clippingRect; 2860 } 2861 2862 function computeOffsets(_ref) { 2863 var reference = _ref.reference, 2864 element = _ref.element, 2865 placement = _ref.placement; 2866 var basePlacement = placement ? getBasePlacement(placement) : null; 2867 var variation = placement ? getVariation(placement) : null; 2868 var commonX = reference.x + reference.width / 2 - element.width / 2; 2869 var commonY = reference.y + reference.height / 2 - element.height / 2; 2870 var offsets; 2871 2872 switch (basePlacement) { 2873 case top: 2874 offsets = { 2875 x: commonX, 2876 y: reference.y - element.height 2877 }; 2878 break; 2879 2880 case bottom: 2881 offsets = { 2882 x: commonX, 2883 y: reference.y + reference.height 2884 }; 2885 break; 2886 2887 case right: 2888 offsets = { 2889 x: reference.x + reference.width, 2890 y: commonY 2891 }; 2892 break; 2893 2894 case left: 2895 offsets = { 2896 x: reference.x - element.width, 2897 y: commonY 2898 }; 2899 break; 2900 2901 default: 2902 offsets = { 2903 x: reference.x, 2904 y: reference.y 2905 }; 2906 } 2907 2908 var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; 2909 2910 if (mainAxis != null) { 2911 var len = mainAxis === 'y' ? 'height' : 'width'; 2912 2913 switch (variation) { 2914 case start: 2915 offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); 2916 break; 2917 2918 case end: 2919 offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); 2920 break; 2921 } 2922 } 2923 2924 return offsets; 2925 } 2926 2927 function detectOverflow(state, options) { 2928 if (options === void 0) { 2929 options = {}; 2930 } 2931 2932 var _options = options, 2933 _options$placement = _options.placement, 2934 placement = _options$placement === void 0 ? state.placement : _options$placement, 2935 _options$strategy = _options.strategy, 2936 strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, 2937 _options$boundary = _options.boundary, 2938 boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, 2939 _options$rootBoundary = _options.rootBoundary, 2940 rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, 2941 _options$elementConte = _options.elementContext, 2942 elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, 2943 _options$altBoundary = _options.altBoundary, 2944 altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, 2945 _options$padding = _options.padding, 2946 padding = _options$padding === void 0 ? 0 : _options$padding; 2947 var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); 2948 var altContext = elementContext === popper ? reference : popper; 2949 var popperRect = state.rects.popper; 2950 var element = state.elements[altBoundary ? altContext : elementContext]; 2951 var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); 2952 var referenceClientRect = getBoundingClientRect(state.elements.reference); 2953 var popperOffsets = computeOffsets({ 2954 reference: referenceClientRect, 2955 element: popperRect, 2956 strategy: 'absolute', 2957 placement: placement 2958 }); 2959 var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); 2960 var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect 2961 // 0 or negative = within the clipping rect 2962 2963 var overflowOffsets = { 2964 top: clippingClientRect.top - elementClientRect.top + paddingObject.top, 2965 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, 2966 left: clippingClientRect.left - elementClientRect.left + paddingObject.left, 2967 right: elementClientRect.right - clippingClientRect.right + paddingObject.right 2968 }; 2969 var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element 2970 2971 if (elementContext === popper && offsetData) { 2972 var offset = offsetData[placement]; 2973 Object.keys(overflowOffsets).forEach(function (key) { 2974 var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; 2975 var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; 2976 overflowOffsets[key] += offset[axis] * multiply; 2977 }); 2978 } 2979 2980 return overflowOffsets; 2981 } 2982 2983 function computeAutoPlacement(state, options) { 2984 if (options === void 0) { 2985 options = {}; 2986 } 2987 2988 var _options = options, 2989 placement = _options.placement, 2990 boundary = _options.boundary, 2991 rootBoundary = _options.rootBoundary, 2992 padding = _options.padding, 2993 flipVariations = _options.flipVariations, 2994 _options$allowedAutoP = _options.allowedAutoPlacements, 2995 allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; 2996 var variation = getVariation(placement); 2997 var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { 2998 return getVariation(placement) === variation; 2999 }) : basePlacements; 3000 var allowedPlacements = placements$1.filter(function (placement) { 3001 return allowedAutoPlacements.indexOf(placement) >= 0; 3002 }); 3003 3004 if (allowedPlacements.length === 0) { 3005 allowedPlacements = placements$1; 3006 } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... 3007 3008 3009 var overflows = allowedPlacements.reduce(function (acc, placement) { 3010 acc[placement] = detectOverflow(state, { 3011 placement: placement, 3012 boundary: boundary, 3013 rootBoundary: rootBoundary, 3014 padding: padding 3015 })[getBasePlacement(placement)]; 3016 return acc; 3017 }, {}); 3018 return Object.keys(overflows).sort(function (a, b) { 3019 return overflows[a] - overflows[b]; 3020 }); 3021 } 3022 3023 function getExpandedFallbackPlacements(placement) { 3024 if (getBasePlacement(placement) === auto) { 3025 return []; 3026 } 3027 3028 var oppositePlacement = getOppositePlacement(placement); 3029 return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; 3030 } 3031 3032 function flip(_ref) { 3033 var state = _ref.state, 3034 options = _ref.options, 3035 name = _ref.name; 3036 3037 if (state.modifiersData[name]._skip) { 3038 return; 3039 } 3040 3041 var _options$mainAxis = options.mainAxis, 3042 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, 3043 _options$altAxis = options.altAxis, 3044 checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, 3045 specifiedFallbackPlacements = options.fallbackPlacements, 3046 padding = options.padding, 3047 boundary = options.boundary, 3048 rootBoundary = options.rootBoundary, 3049 altBoundary = options.altBoundary, 3050 _options$flipVariatio = options.flipVariations, 3051 flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, 3052 allowedAutoPlacements = options.allowedAutoPlacements; 3053 var preferredPlacement = state.options.placement; 3054 var basePlacement = getBasePlacement(preferredPlacement); 3055 var isBasePlacement = basePlacement === preferredPlacement; 3056 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); 3057 var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { 3058 return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { 3059 placement: placement, 3060 boundary: boundary, 3061 rootBoundary: rootBoundary, 3062 padding: padding, 3063 flipVariations: flipVariations, 3064 allowedAutoPlacements: allowedAutoPlacements 3065 }) : placement); 3066 }, []); 3067 var referenceRect = state.rects.reference; 3068 var popperRect = state.rects.popper; 3069 var checksMap = new Map(); 3070 var makeFallbackChecks = true; 3071 var firstFittingPlacement = placements[0]; 3072 3073 for (var i = 0; i < placements.length; i++) { 3074 var placement = placements[i]; 3075 3076 var _basePlacement = getBasePlacement(placement); 3077 3078 var isStartVariation = getVariation(placement) === start; 3079 var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; 3080 var len = isVertical ? 'width' : 'height'; 3081 var overflow = detectOverflow(state, { 3082 placement: placement, 3083 boundary: boundary, 3084 rootBoundary: rootBoundary, 3085 altBoundary: altBoundary, 3086 padding: padding 3087 }); 3088 var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; 3089 3090 if (referenceRect[len] > popperRect[len]) { 3091 mainVariationSide = getOppositePlacement(mainVariationSide); 3092 } 3093 3094 var altVariationSide = getOppositePlacement(mainVariationSide); 3095 var checks = []; 3096 3097 if (checkMainAxis) { 3098 checks.push(overflow[_basePlacement] <= 0); 3099 } 3100 3101 if (checkAltAxis) { 3102 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); 3103 } 3104 3105 if (checks.every(function (check) { 3106 return check; 3107 })) { 3108 firstFittingPlacement = placement; 3109 makeFallbackChecks = false; 3110 break; 3111 } 3112 3113 checksMap.set(placement, checks); 3114 } 3115 3116 if (makeFallbackChecks) { 3117 // `2` may be desired in some cases – research later 3118 var numberOfChecks = flipVariations ? 3 : 1; 3119 3120 var _loop = function _loop(_i) { 3121 var fittingPlacement = placements.find(function (placement) { 3122 var checks = checksMap.get(placement); 3123 3124 if (checks) { 3125 return checks.slice(0, _i).every(function (check) { 3126 return check; 3127 }); 3128 } 3129 }); 3130 3131 if (fittingPlacement) { 3132 firstFittingPlacement = fittingPlacement; 3133 return "break"; 3134 } 3135 }; 3136 3137 for (var _i = numberOfChecks; _i > 0; _i--) { 3138 var _ret = _loop(_i); 3139 3140 if (_ret === "break") break; 3141 } 3142 } 3143 3144 if (state.placement !== firstFittingPlacement) { 3145 state.modifiersData[name]._skip = true; 3146 state.placement = firstFittingPlacement; 3147 state.reset = true; 3148 } 3149 } // eslint-disable-next-line import/no-unused-modules 3150 3151 3152 const flip$1 = { 3153 name: 'flip', 3154 enabled: true, 3155 phase: 'main', 3156 fn: flip, 3157 requiresIfExists: ['offset'], 3158 data: { 3159 _skip: false 3160 } 3161 }; 3162 3163 function getSideOffsets(overflow, rect, preventedOffsets) { 3164 if (preventedOffsets === void 0) { 3165 preventedOffsets = { 3166 x: 0, 3167 y: 0 3168 }; 3169 } 3170 3171 return { 3172 top: overflow.top - rect.height - preventedOffsets.y, 3173 right: overflow.right - rect.width + preventedOffsets.x, 3174 bottom: overflow.bottom - rect.height + preventedOffsets.y, 3175 left: overflow.left - rect.width - preventedOffsets.x 3176 }; 3177 } 3178 3179 function isAnySideFullyClipped(overflow) { 3180 return [top, right, bottom, left].some(function (side) { 3181 return overflow[side] >= 0; 3182 }); 3183 } 3184 3185 function hide(_ref) { 3186 var state = _ref.state, 3187 name = _ref.name; 3188 var referenceRect = state.rects.reference; 3189 var popperRect = state.rects.popper; 3190 var preventedOffsets = state.modifiersData.preventOverflow; 3191 var referenceOverflow = detectOverflow(state, { 3192 elementContext: 'reference' 3193 }); 3194 var popperAltOverflow = detectOverflow(state, { 3195 altBoundary: true 3196 }); 3197 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); 3198 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); 3199 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); 3200 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); 3201 state.modifiersData[name] = { 3202 referenceClippingOffsets: referenceClippingOffsets, 3203 popperEscapeOffsets: popperEscapeOffsets, 3204 isReferenceHidden: isReferenceHidden, 3205 hasPopperEscaped: hasPopperEscaped 3206 }; 3207 state.attributes.popper = Object.assign({}, state.attributes.popper, { 3208 'data-popper-reference-hidden': isReferenceHidden, 3209 'data-popper-escaped': hasPopperEscaped 3210 }); 3211 } // eslint-disable-next-line import/no-unused-modules 3212 3213 3214 const hide$1 = { 3215 name: 'hide', 3216 enabled: true, 3217 phase: 'main', 3218 requiresIfExists: ['preventOverflow'], 3219 fn: hide 3220 }; 3221 3222 function distanceAndSkiddingToXY(placement, rects, offset) { 3223 var basePlacement = getBasePlacement(placement); 3224 var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; 3225 3226 var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { 3227 placement: placement 3228 })) : offset, 3229 skidding = _ref[0], 3230 distance = _ref[1]; 3231 3232 skidding = skidding || 0; 3233 distance = (distance || 0) * invertDistance; 3234 return [left, right].indexOf(basePlacement) >= 0 ? { 3235 x: distance, 3236 y: skidding 3237 } : { 3238 x: skidding, 3239 y: distance 3240 }; 3241 } 3242 3243 function offset(_ref2) { 3244 var state = _ref2.state, 3245 options = _ref2.options, 3246 name = _ref2.name; 3247 var _options$offset = options.offset, 3248 offset = _options$offset === void 0 ? [0, 0] : _options$offset; 3249 var data = placements.reduce(function (acc, placement) { 3250 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); 3251 return acc; 3252 }, {}); 3253 var _data$state$placement = data[state.placement], 3254 x = _data$state$placement.x, 3255 y = _data$state$placement.y; 3256 3257 if (state.modifiersData.popperOffsets != null) { 3258 state.modifiersData.popperOffsets.x += x; 3259 state.modifiersData.popperOffsets.y += y; 3260 } 3261 3262 state.modifiersData[name] = data; 3263 } // eslint-disable-next-line import/no-unused-modules 3264 3265 3266 const offset$1 = { 3267 name: 'offset', 3268 enabled: true, 3269 phase: 'main', 3270 requires: ['popperOffsets'], 3271 fn: offset 3272 }; 3273 3274 function popperOffsets(_ref) { 3275 var state = _ref.state, 3276 name = _ref.name; 3277 // Offsets are the actual position the popper needs to have to be 3278 // properly positioned near its reference element 3279 // This is the most basic placement, and will be adjusted by 3280 // the modifiers in the next step 3281 state.modifiersData[name] = computeOffsets({ 3282 reference: state.rects.reference, 3283 element: state.rects.popper, 3284 strategy: 'absolute', 3285 placement: state.placement 3286 }); 3287 } // eslint-disable-next-line import/no-unused-modules 3288 3289 3290 const popperOffsets$1 = { 3291 name: 'popperOffsets', 3292 enabled: true, 3293 phase: 'read', 3294 fn: popperOffsets, 3295 data: {} 3296 }; 3297 3298 function getAltAxis(axis) { 3299 return axis === 'x' ? 'y' : 'x'; 3300 } 3301 3302 function preventOverflow(_ref) { 3303 var state = _ref.state, 3304 options = _ref.options, 3305 name = _ref.name; 3306 var _options$mainAxis = options.mainAxis, 3307 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, 3308 _options$altAxis = options.altAxis, 3309 checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, 3310 boundary = options.boundary, 3311 rootBoundary = options.rootBoundary, 3312 altBoundary = options.altBoundary, 3313 padding = options.padding, 3314 _options$tether = options.tether, 3315 tether = _options$tether === void 0 ? true : _options$tether, 3316 _options$tetherOffset = options.tetherOffset, 3317 tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; 3318 var overflow = detectOverflow(state, { 3319 boundary: boundary, 3320 rootBoundary: rootBoundary, 3321 padding: padding, 3322 altBoundary: altBoundary 3323 }); 3324 var basePlacement = getBasePlacement(state.placement); 3325 var variation = getVariation(state.placement); 3326 var isBasePlacement = !variation; 3327 var mainAxis = getMainAxisFromPlacement(basePlacement); 3328 var altAxis = getAltAxis(mainAxis); 3329 var popperOffsets = state.modifiersData.popperOffsets; 3330 var referenceRect = state.rects.reference; 3331 var popperRect = state.rects.popper; 3332 var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { 3333 placement: state.placement 3334 })) : tetherOffset; 3335 var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { 3336 mainAxis: tetherOffsetValue, 3337 altAxis: tetherOffsetValue 3338 } : Object.assign({ 3339 mainAxis: 0, 3340 altAxis: 0 3341 }, tetherOffsetValue); 3342 var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; 3343 var data = { 3344 x: 0, 3345 y: 0 3346 }; 3347 3348 if (!popperOffsets) { 3349 return; 3350 } 3351 3352 if (checkMainAxis) { 3353 var _offsetModifierState$; 3354 3355 var mainSide = mainAxis === 'y' ? top : left; 3356 var altSide = mainAxis === 'y' ? bottom : right; 3357 var len = mainAxis === 'y' ? 'height' : 'width'; 3358 var offset = popperOffsets[mainAxis]; 3359 var min$1 = offset + overflow[mainSide]; 3360 var max$1 = offset - overflow[altSide]; 3361 var additive = tether ? -popperRect[len] / 2 : 0; 3362 var minLen = variation === start ? referenceRect[len] : popperRect[len]; 3363 var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go 3364 // outside the reference bounds 3365 3366 var arrowElement = state.elements.arrow; 3367 var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { 3368 width: 0, 3369 height: 0 3370 }; 3371 var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); 3372 var arrowPaddingMin = arrowPaddingObject[mainSide]; 3373 var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want 3374 // to include its full size in the calculation. If the reference is small 3375 // and near the edge of a boundary, the popper can overflow even if the 3376 // reference is not overflowing as well (e.g. virtual elements with no 3377 // width or height) 3378 3379 var arrowLen = within(0, referenceRect[len], arrowRect[len]); 3380 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; 3381 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; 3382 var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); 3383 var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; 3384 var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; 3385 var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; 3386 var tetherMax = offset + maxOffset - offsetModifierValue; 3387 var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); 3388 popperOffsets[mainAxis] = preventedOffset; 3389 data[mainAxis] = preventedOffset - offset; 3390 } 3391 3392 if (checkAltAxis) { 3393 var _offsetModifierState$2; 3394 3395 var _mainSide = mainAxis === 'x' ? top : left; 3396 3397 var _altSide = mainAxis === 'x' ? bottom : right; 3398 3399 var _offset = popperOffsets[altAxis]; 3400 3401 var _len = altAxis === 'y' ? 'height' : 'width'; 3402 3403 var _min = _offset + overflow[_mainSide]; 3404 3405 var _max = _offset - overflow[_altSide]; 3406 3407 var isOriginSide = [top, left].indexOf(basePlacement) !== -1; 3408 3409 var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; 3410 3411 var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; 3412 3413 var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; 3414 3415 var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); 3416 3417 popperOffsets[altAxis] = _preventedOffset; 3418 data[altAxis] = _preventedOffset - _offset; 3419 } 3420 3421 state.modifiersData[name] = data; 3422 } // eslint-disable-next-line import/no-unused-modules 3423 3424 3425 const preventOverflow$1 = { 3426 name: 'preventOverflow', 3427 enabled: true, 3428 phase: 'main', 3429 fn: preventOverflow, 3430 requiresIfExists: ['offset'] 3431 }; 3432 3433 function getHTMLElementScroll(element) { 3434 return { 3435 scrollLeft: element.scrollLeft, 3436 scrollTop: element.scrollTop 3437 }; 3438 } 3439 3440 function getNodeScroll(node) { 3441 if (node === getWindow(node) || !isHTMLElement(node)) { 3442 return getWindowScroll(node); 3443 } else { 3444 return getHTMLElementScroll(node); 3445 } 3446 } 3447 3448 function isElementScaled(element) { 3449 var rect = element.getBoundingClientRect(); 3450 var scaleX = round(rect.width) / element.offsetWidth || 1; 3451 var scaleY = round(rect.height) / element.offsetHeight || 1; 3452 return scaleX !== 1 || scaleY !== 1; 3453 } // Returns the composite rect of an element relative to its offsetParent. 3454 // Composite means it takes into account transforms as well as layout. 3455 3456 3457 function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { 3458 if (isFixed === void 0) { 3459 isFixed = false; 3460 } 3461 3462 var isOffsetParentAnElement = isHTMLElement(offsetParent); 3463 var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); 3464 var documentElement = getDocumentElement(offsetParent); 3465 var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); 3466 var scroll = { 3467 scrollLeft: 0, 3468 scrollTop: 0 3469 }; 3470 var offsets = { 3471 x: 0, 3472 y: 0 3473 }; 3474 3475 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { 3476 if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 3477 isScrollParent(documentElement)) { 3478 scroll = getNodeScroll(offsetParent); 3479 } 3480 3481 if (isHTMLElement(offsetParent)) { 3482 offsets = getBoundingClientRect(offsetParent, true); 3483 offsets.x += offsetParent.clientLeft; 3484 offsets.y += offsetParent.clientTop; 3485 } else if (documentElement) { 3486 offsets.x = getWindowScrollBarX(documentElement); 3487 } 3488 } 3489 3490 return { 3491 x: rect.left + scroll.scrollLeft - offsets.x, 3492 y: rect.top + scroll.scrollTop - offsets.y, 3493 width: rect.width, 3494 height: rect.height 3495 }; 3496 } 3497 3498 function order(modifiers) { 3499 var map = new Map(); 3500 var visited = new Set(); 3501 var result = []; 3502 modifiers.forEach(function (modifier) { 3503 map.set(modifier.name, modifier); 3504 }); // On visiting object, check for its dependencies and visit them recursively 3505 3506 function sort(modifier) { 3507 visited.add(modifier.name); 3508 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); 3509 requires.forEach(function (dep) { 3510 if (!visited.has(dep)) { 3511 var depModifier = map.get(dep); 3512 3513 if (depModifier) { 3514 sort(depModifier); 3515 } 3516 } 3517 }); 3518 result.push(modifier); 3519 } 3520 3521 modifiers.forEach(function (modifier) { 3522 if (!visited.has(modifier.name)) { 3523 // check for visited object 3524 sort(modifier); 3525 } 3526 }); 3527 return result; 3528 } 3529 3530 function orderModifiers(modifiers) { 3531 // order based on dependencies 3532 var orderedModifiers = order(modifiers); // order based on phase 3533 3534 return modifierPhases.reduce(function (acc, phase) { 3535 return acc.concat(orderedModifiers.filter(function (modifier) { 3536 return modifier.phase === phase; 3537 })); 3538 }, []); 3539 } 3540 3541 function debounce(fn) { 3542 var pending; 3543 return function () { 3544 if (!pending) { 3545 pending = new Promise(function (resolve) { 3546 Promise.resolve().then(function () { 3547 pending = undefined; 3548 resolve(fn()); 3549 }); 3550 }); 3551 } 3552 3553 return pending; 3554 }; 3555 } 3556 3557 function mergeByName(modifiers) { 3558 var merged = modifiers.reduce(function (merged, current) { 3559 var existing = merged[current.name]; 3560 merged[current.name] = existing ? Object.assign({}, existing, current, { 3561 options: Object.assign({}, existing.options, current.options), 3562 data: Object.assign({}, existing.data, current.data) 3563 }) : current; 3564 return merged; 3565 }, {}); // IE11 does not support Object.values 3566 3567 return Object.keys(merged).map(function (key) { 3568 return merged[key]; 3569 }); 3570 } 3571 3572 var DEFAULT_OPTIONS = { 3573 placement: 'bottom', 3574 modifiers: [], 3575 strategy: 'absolute' 3576 }; 3577 3578 function areValidElements() { 3579 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 3580 args[_key] = arguments[_key]; 3581 } 3582 3583 return !args.some(function (element) { 3584 return !(element && typeof element.getBoundingClientRect === 'function'); 3585 }); 3586 } 3587 3588 function popperGenerator(generatorOptions) { 3589 if (generatorOptions === void 0) { 3590 generatorOptions = {}; 3591 } 3592 3593 var _generatorOptions = generatorOptions, 3594 _generatorOptions$def = _generatorOptions.defaultModifiers, 3595 defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, 3596 _generatorOptions$def2 = _generatorOptions.defaultOptions, 3597 defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; 3598 return function createPopper(reference, popper, options) { 3599 if (options === void 0) { 3600 options = defaultOptions; 3601 } 3602 3603 var state = { 3604 placement: 'bottom', 3605 orderedModifiers: [], 3606 options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), 3607 modifiersData: {}, 3608 elements: { 3609 reference: reference, 3610 popper: popper 3611 }, 3612 attributes: {}, 3613 styles: {} 3614 }; 3615 var effectCleanupFns = []; 3616 var isDestroyed = false; 3617 var instance = { 3618 state: state, 3619 setOptions: function setOptions(setOptionsAction) { 3620 var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; 3621 cleanupModifierEffects(); 3622 state.options = Object.assign({}, defaultOptions, state.options, options); 3623 state.scrollParents = { 3624 reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], 3625 popper: listScrollParents(popper) 3626 }; // Orders the modifiers based on their dependencies and `phase` 3627 // properties 3628 3629 var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers 3630 3631 state.orderedModifiers = orderedModifiers.filter(function (m) { 3632 return m.enabled; 3633 });
vendor: 14,004 bytes, lines 3633-4058
3633 // Validate the provided modifiers so that the consumer will get warned 3634 3635 runModifierEffects(); 3636 return instance.update(); 3637 }, 3638 // Sync update – it will always be executed, even if not necessary. This 3639 // is useful for low frequency updates where sync behavior simplifies the 3640 // logic. 3641 // For high frequency updates (e.g. `resize` and `scroll` events), always 3642 // prefer the async Popper#update method 3643 forceUpdate: function forceUpdate() { 3644 if (isDestroyed) { 3645 return; 3646 } 3647 3648 var _state$elements = state.elements, 3649 reference = _state$elements.reference, 3650 popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements 3651 // anymore 3652 3653 if (!areValidElements(reference, popper)) { 3654 3655 return; 3656 } // Store the reference and popper rects to be read by modifiers 3657 3658 3659 state.rects = { 3660 reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), 3661 popper: getLayoutRect(popper) 3662 }; // Modifiers have the ability to reset the current update cycle. The 3663 // most common use case for this is the `flip` modifier changing the 3664 // placement, which then needs to re-run all the modifiers, because the 3665 // logic was previously ran for the previous placement and is therefore 3666 // stale/incorrect 3667 3668 state.reset = false; 3669 state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier 3670 // is filled with the initial data specified by the modifier. This means 3671 // it doesn't persist and is fresh on each update. 3672 // To ensure persistent data, use `${name}#persistent` 3673 3674 state.orderedModifiers.forEach(function (modifier) { 3675 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); 3676 }); 3677 3678 for (var index = 0; index < state.orderedModifiers.length; index++) { 3679 3680 if (state.reset === true) { 3681 state.reset = false; 3682 index = -1; 3683 continue; 3684 } 3685 3686 var _state$orderedModifie = state.orderedModifiers[index], 3687 fn = _state$orderedModifie.fn, 3688 _state$orderedModifie2 = _state$orderedModifie.options, 3689 _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, 3690 name = _state$orderedModifie.name; 3691 3692 if (typeof fn === 'function') { 3693 state = fn({ 3694 state: state, 3695 options: _options, 3696 name: name, 3697 instance: instance 3698 }) || state; 3699 } 3700 } 3701 }, 3702 // Async and optimistically optimized update – it will not be executed if 3703 // not necessary (debounced to run at most once-per-tick) 3704 update: debounce(function () { 3705 return new Promise(function (resolve) { 3706 instance.forceUpdate(); 3707 resolve(state); 3708 }); 3709 }), 3710 destroy: function destroy() { 3711 cleanupModifierEffects(); 3712 isDestroyed = true; 3713 } 3714 }; 3715 3716 if (!areValidElements(reference, popper)) { 3717 3718 return instance; 3719 } 3720 3721 instance.setOptions(options).then(function (state) { 3722 if (!isDestroyed && options.onFirstUpdate) { 3723 options.onFirstUpdate(state); 3724 } 3725 }); // Modifiers have the ability to execute arbitrary code before the first 3726 // update cycle runs. They will be executed in the same order as the update 3727 // cycle. This is useful when a modifier adds some persistent data that 3728 // other modifiers need to use, but the modifier is run after the dependent 3729 // one. 3730 3731 function runModifierEffects() { 3732 state.orderedModifiers.forEach(function (_ref3) { 3733 var name = _ref3.name, 3734 _ref3$options = _ref3.options, 3735 options = _ref3$options === void 0 ? {} : _ref3$options, 3736 effect = _ref3.effect; 3737 3738 if (typeof effect === 'function') { 3739 var cleanupFn = effect({ 3740 state: state, 3741 name: name, 3742 instance: instance, 3743 options: options 3744 }); 3745 3746 var noopFn = function noopFn() {}; 3747 3748 effectCleanupFns.push(cleanupFn || noopFn); 3749 } 3750 }); 3751 } 3752 3753 function cleanupModifierEffects() { 3754 effectCleanupFns.forEach(function (fn) { 3755 return fn(); 3756 }); 3757 effectCleanupFns = []; 3758 } 3759 3760 return instance; 3761 }; 3762 } 3763 var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules 3764 3765 var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1]; 3766 var createPopper$1 = /*#__PURE__*/popperGenerator({ 3767 defaultModifiers: defaultModifiers$1 3768 }); // eslint-disable-next-line import/no-unused-modules 3769 3770 var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; 3771 var createPopper = /*#__PURE__*/popperGenerator({ 3772 defaultModifiers: defaultModifiers 3773 }); // eslint-disable-next-line import/no-unused-modules 3774 3775 const Popper = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({ 3776 __proto__: null, 3777 popperGenerator, 3778 detectOverflow, 3779 createPopperBase: createPopper$2, 3780 createPopper, 3781 createPopperLite: createPopper$1, 3782 top, 3783 bottom, 3784 right, 3785 left, 3786 auto, 3787 basePlacements, 3788 start, 3789 end, 3790 clippingParents, 3791 viewport, 3792 popper, 3793 reference, 3794 variationPlacements, 3795 placements, 3796 beforeRead, 3797 read, 3798 afterRead, 3799 beforeMain, 3800 main, 3801 afterMain, 3802 beforeWrite, 3803 write, 3804 afterWrite, 3805 modifierPhases, 3806 applyStyles: applyStyles$1, 3807 arrow: arrow$1, 3808 computeStyles: computeStyles$1, 3809 eventListeners, 3810 flip: flip$1, 3811 hide: hide$1, 3812 offset: offset$1, 3813 popperOffsets: popperOffsets$1, 3814 preventOverflow: preventOverflow$1 3815 }, Symbol.toStringTag, { value: 'Module' })); 3816 3817 /** 3818 * -------------------------------------------------------------------------- 3819 * Bootstrap (v5.2.2): dropdown.js 3820 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 3821 * -------------------------------------------------------------------------- 3822 */ 3823 /** 3824 * Constants 3825 */ 3826 3827 const NAME$a = 'dropdown'; 3828 const DATA_KEY$6 = 'bs.dropdown'; 3829 const EVENT_KEY$6 = `.${DATA_KEY$6}`; 3830 const DATA_API_KEY$3 = '.data-api'; 3831 const ESCAPE_KEY$2 = 'Escape'; 3832 const TAB_KEY$1 = 'Tab'; 3833 const ARROW_UP_KEY$1 = 'ArrowUp'; 3834 const ARROW_DOWN_KEY$1 = 'ArrowDown'; 3835 const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button 3836 3837 const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; 3838 const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; 3839 const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; 3840 const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; 3841 const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; 3842 const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; 3843 const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; 3844 const CLASS_NAME_SHOW$6 = 'show'; 3845 const CLASS_NAME_DROPUP = 'dropup'; 3846 const CLASS_NAME_DROPEND = 'dropend'; 3847 const CLASS_NAME_DROPSTART = 'dropstart'; 3848 const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; 3849 const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; 3850 const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; 3851 const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; 3852 const SELECTOR_MENU = '.dropdown-menu'; 3853 const SELECTOR_NAVBAR = '.navbar'; 3854 const SELECTOR_NAVBAR_NAV = '.navbar-nav'; 3855 const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 3856 const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; 3857 const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; 3858 const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; 3859 const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; 3860 const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; 3861 const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; 3862 const PLACEMENT_TOPCENTER = 'top'; 3863 const PLACEMENT_BOTTOMCENTER = 'bottom'; 3864 const Default$9 = { 3865 autoClose: true, 3866 boundary: 'clippingParents', 3867 display: 'dynamic', 3868 offset: [0, 2], 3869 popperConfig: null, 3870 reference: 'toggle' 3871 }; 3872 const DefaultType$9 = { 3873 autoClose: '(boolean|string)', 3874 boundary: '(string|element)', 3875 display: 'string', 3876 offset: '(array|string|function)', 3877 popperConfig: '(null|object|function)', 3878 reference: '(string|element|object)' 3879 }; 3880 /** 3881 * Class definition 3882 */ 3883 3884 class Dropdown extends BaseComponent { 3885 constructor(element, config) { 3886 super(element, config); 3887 this._popper = null; 3888 this._parent = this._element.parentNode; // dropdown wrapper 3889 // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/ 3890 3891 this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); 3892 this._inNavbar = this._detectNavbar(); 3893 } // Getters 3894 3895 3896 static get Default() { 3897 return Default$9; 3898 } 3899 3900 static get DefaultType() { 3901 return DefaultType$9; 3902 } 3903 3904 static get NAME() { 3905 return NAME$a; 3906 } // Public 3907 3908 3909 toggle() { 3910 return this._isShown() ? this.hide() : this.show(); 3911 } 3912 3913 show() { 3914 if (isDisabled(this._element) || this._isShown()) { 3915 return; 3916 } 3917 3918 const relatedTarget = { 3919 relatedTarget: this._element 3920 }; 3921 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); 3922 3923 if (showEvent.defaultPrevented) { 3924 return; 3925 } 3926 3927 this._createPopper(); // If this is a touch-enabled device we add extra 3928 // empty mouseover listeners to the body's immediate children; 3929 // only needed because of broken event delegation on iOS 3930 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 3931 3932 3933 if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { 3934 for (const element of [].concat(...document.body.children)) { 3935 EventHandler.on(element, 'mouseover', noop); 3936 } 3937 } 3938 3939 this._element.focus(); 3940 3941 this._element.setAttribute('aria-expanded', true); 3942 3943 this._menu.classList.add(CLASS_NAME_SHOW$6); 3944 3945 this._element.classList.add(CLASS_NAME_SHOW$6); 3946 3947 EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); 3948 } 3949 3950 hide() { 3951 if (isDisabled(this._element) || !this._isShown()) { 3952 return; 3953 } 3954 3955 const relatedTarget = { 3956 relatedTarget: this._element 3957 }; 3958 3959 this._completeHide(relatedTarget); 3960 } 3961 3962 dispose() { 3963 if (this._popper) { 3964 this._popper.destroy(); 3965 } 3966 3967 super.dispose(); 3968 } 3969 3970 update() { 3971 this._inNavbar = this._detectNavbar(); 3972 3973 if (this._popper) { 3974 this._popper.update(); 3975 } 3976 } // Private 3977 3978 3979 _completeHide(relatedTarget) { 3980 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); 3981 3982 if (hideEvent.defaultPrevented) { 3983 return; 3984 } // If this is a touch-enabled device we remove the extra 3985 // empty mouseover listeners we added for iOS support 3986 3987 3988 if ('ontouchstart' in document.documentElement) { 3989 for (const element of [].concat(...document.body.children)) { 3990 EventHandler.off(element, 'mouseover', noop); 3991 } 3992 } 3993 3994 if (this._popper) { 3995 this._popper.destroy(); 3996 } 3997 3998 this._menu.classList.remove(CLASS_NAME_SHOW$6); 3999 4000 this._element.classList.remove(CLASS_NAME_SHOW$6); 4001 4002 this._element.setAttribute('aria-expanded', 'false'); 4003 4004 Manipulator.removeDataAttribute(this._menu, 'popper'); 4005 EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); 4006 } 4007 4008 _getConfig(config) { 4009 config = super._getConfig(config); 4010 4011 if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { 4012 // Popper virtual elements require a getBoundingClientRect method 4013 throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); 4014 } 4015 4016 return config; 4017 } 4018 4019 _createPopper() { 4020 if (typeof Popper === 'undefined') { 4021 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 4022 } 4023 4024 let referenceElement = this._element; 4025 4026 if (this._config.reference === 'parent') { 4027 referenceElement = this._parent; 4028 } else if (isElement$1(this._config.reference)) { 4029 referenceElement = getElement(this._config.reference); 4030 } else if (typeof this._config.reference === 'object') { 4031 referenceElement = this._config.reference; 4032 } 4033 4034 const popperConfig = this._getPopperConfig(); 4035 4036 this._popper = createPopper(referenceElement, this._menu, popperConfig); 4037 } 4038 4039 _isShown() { 4040 return this._menu.classList.contains(CLASS_NAME_SHOW$6); 4041 } 4042 4043 _getPlacement() { 4044 const parentDropdown = this._parent; 4045 4046 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { 4047 return PLACEMENT_RIGHT; 4048 } 4049 4050 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { 4051 return PLACEMENT_LEFT; 4052 } 4053 4054 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { 4055 return PLACEMENT_TOPCENTER; 4056 } 4057 4058 if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENT
vendor: 4,138 bytes, lines 4058-4194
4058ER)) { 4059 return PLACEMENT_BOTTOMCENTER; 4060 } // We need to trim the value because custom properties can also include spaces 4061 4062 4063 const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; 4064 4065 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { 4066 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; 4067 } 4068 4069 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; 4070 } 4071 4072 _detectNavbar() { 4073 return this._element.closest(SELECTOR_NAVBAR) !== null; 4074 } 4075 4076 _getOffset() { 4077 const { 4078 offset 4079 } = this._config; 4080 4081 if (typeof offset === 'string') { 4082 return offset.split(',').map(value => Number.parseInt(value, 10)); 4083 } 4084 4085 if (typeof offset === 'function') { 4086 return popperData => offset(popperData, this._element); 4087 } 4088 4089 return offset; 4090 } 4091 4092 _getPopperConfig() { 4093 const defaultBsPopperConfig = { 4094 placement: this._getPlacement(), 4095 modifiers: [{ 4096 name: 'preventOverflow', 4097 options: { 4098 boundary: this._config.boundary 4099 } 4100 }, { 4101 name: 'offset', 4102 options: { 4103 offset: this._getOffset() 4104 } 4105 }] 4106 }; // Disable Popper if we have a static display or Dropdown is in Navbar 4107 4108 if (this._inNavbar || this._config.display === 'static') { 4109 Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove 4110 4111 defaultBsPopperConfig.modifiers = [{ 4112 name: 'applyStyles', 4113 enabled: false 4114 }]; 4115 } 4116 4117 return { ...defaultBsPopperConfig, 4118 ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) 4119 }; 4120 } 4121 4122 _selectMenuItem({ 4123 key, 4124 target 4125 }) { 4126 const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); 4127 4128 if (!items.length) { 4129 return; 4130 } // if target isn't included in items (e.g. when expanding the dropdown) 4131 // allow cycling to get the last item in case key equals ARROW_UP_KEY 4132 4133 4134 getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); 4135 } // Static 4136 4137 4138 static jQueryInterface(config) { 4139 return this.each(function () { 4140 const data = Dropdown.getOrCreateInstance(this, config); 4141 4142 if (typeof config !== 'string') { 4143 return; 4144 } 4145 4146 if (typeof data[config] === 'undefined') { 4147 throw new TypeError(`No method named "${config}"`); 4148 } 4149 4150 data[config](); 4151 }); 4152 } 4153 4154 static clearMenus(event) { 4155 if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { 4156 return; 4157 } 4158 4159 const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); 4160 4161 for (const toggle of openToggles) { 4162 const context = Dropdown.getInstance(toggle); 4163 4164 if (!context || context._config.autoClose === false) { 4165 continue; 4166 } 4167 4168 const composedPath = event.composedPath(); 4169 const isMenuTarget = composedPath.includes(context._menu); 4170 4171 if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { 4172 continue; 4173 } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu 4174 4175 4176 if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { 4177 continue; 4178 } 4179 4180 const relatedTarget = { 4181 relatedTarget: context._element 4182 }; 4183 4184 if (event.type === 'click') { 4185 relatedTarget.clickEvent = event; 4186 } 4187 4188 context._completeHide(relatedTarget); 4189 } 4190 } 4191 4192 static dataApiKeydownHandler(event) { 4193 // If not an UP | DOWN | ESCAPE key => not a dropdown command 4194 // If input/textarea && if key is other than ESCAPE => not a dropdown command
vendor: 10,656 bytes, lines 4195-4588
4195 const isInput = /input|textarea/i.test(event.target.tagName); 4196 const isEscapeEvent = event.key === ESCAPE_KEY$2; 4197 const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); 4198 4199 if (!isUpOrDownEvent && !isEscapeEvent) { 4200 return; 4201 } 4202 4203 if (isInput && !isEscapeEvent) { 4204 return; 4205 } 4206 4207 event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/ 4208 4209 const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); 4210 const instance = Dropdown.getOrCreateInstance(getToggleButton); 4211 4212 if (isUpOrDownEvent) { 4213 event.stopPropagation(); 4214 instance.show(); 4215 4216 instance._selectMenuItem(event); 4217 4218 return; 4219 } 4220 4221 if (instance._isShown()) { 4222 // else is escape and we check if it is shown 4223 event.stopPropagation(); 4224 instance.hide(); 4225 getToggleButton.focus(); 4226 } 4227 } 4228 4229 } 4230 /** 4231 * Data API implementation 4232 */ 4233 4234 4235 EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); 4236 EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); 4237 EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); 4238 EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); 4239 EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { 4240 event.preventDefault(); 4241 Dropdown.getOrCreateInstance(this).toggle(); 4242 }); 4243 /** 4244 * jQuery 4245 */ 4246 4247 defineJQueryPlugin(Dropdown); 4248 4249 /** 4250 * -------------------------------------------------------------------------- 4251 * Bootstrap (v5.2.2): util/scrollBar.js 4252 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4253 * -------------------------------------------------------------------------- 4254 */ 4255 /** 4256 * Constants 4257 */ 4258 4259 const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; 4260 const SELECTOR_STICKY_CONTENT = '.sticky-top'; 4261 const PROPERTY_PADDING = 'padding-right'; 4262 const PROPERTY_MARGIN = 'margin-right'; 4263 /** 4264 * Class definition 4265 */ 4266 4267 class ScrollBarHelper { 4268 constructor() { 4269 this._element = document.body; 4270 } // Public 4271 4272 4273 getWidth() { 4274 // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes 4275 const documentWidth = document.documentElement.clientWidth; 4276 return Math.abs(window.innerWidth - documentWidth); 4277 } 4278 4279 hide() { 4280 const width = this.getWidth(); 4281 4282 this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width 4283 4284 4285 this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth 4286 4287 4288 this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 4289 4290 this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); 4291 } 4292 4293 reset() { 4294 this._resetElementAttributes(this._element, 'overflow'); 4295 4296 this._resetElementAttributes(this._element, PROPERTY_PADDING); 4297 4298 this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); 4299 4300 this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); 4301 } 4302 4303 isOverflowing() { 4304 return this.getWidth() > 0; 4305 } // Private 4306 4307 4308 _disableOverFlow() { 4309 this._saveInitialAttribute(this._element, 'overflow'); 4310 4311 this._element.style.overflow = 'hidden'; 4312 } 4313 4314 _setElementAttributes(selector, styleProperty, callback) { 4315 const scrollbarWidth = this.getWidth(); 4316 4317 const manipulationCallBack = element => { 4318 if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { 4319 return; 4320 } 4321 4322 this._saveInitialAttribute(element, styleProperty); 4323 4324 const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); 4325 element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); 4326 }; 4327 4328 this._applyManipulationCallback(selector, manipulationCallBack); 4329 } 4330 4331 _saveInitialAttribute(element, styleProperty) { 4332 const actualValue = element.style.getPropertyValue(styleProperty); 4333 4334 if (actualValue) { 4335 Manipulator.setDataAttribute(element, styleProperty, actualValue); 4336 } 4337 } 4338 4339 _resetElementAttributes(selector, styleProperty) { 4340 const manipulationCallBack = element => { 4341 const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero 4342 4343 if (value === null) { 4344 element.style.removeProperty(styleProperty); 4345 return; 4346 } 4347 4348 Manipulator.removeDataAttribute(element, styleProperty); 4349 element.style.setProperty(styleProperty, value); 4350 }; 4351 4352 this._applyManipulationCallback(selector, manipulationCallBack); 4353 } 4354 4355 _applyManipulationCallback(selector, callBack) { 4356 if (isElement$1(selector)) { 4357 callBack(selector); 4358 return; 4359 } 4360 4361 for (const sel of SelectorEngine.find(selector, this._element)) { 4362 callBack(sel); 4363 } 4364 } 4365 4366 } 4367 4368 /** 4369 * -------------------------------------------------------------------------- 4370 * Bootstrap (v5.2.2): util/backdrop.js 4371 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4372 * -------------------------------------------------------------------------- 4373 */ 4374 /** 4375 * Constants 4376 */ 4377 4378 const NAME$9 = 'backdrop'; 4379 const CLASS_NAME_FADE$4 = 'fade'; 4380 const CLASS_NAME_SHOW$5 = 'show'; 4381 const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; 4382 const Default$8 = { 4383 className: 'modal-backdrop', 4384 clickCallback: null, 4385 isAnimated: false, 4386 isVisible: true, 4387 // if false, we use the backdrop helper without adding any element to the dom 4388 rootElement: 'body' // give the choice to place backdrop under different elements 4389 4390 }; 4391 const DefaultType$8 = { 4392 className: 'string', 4393 clickCallback: '(function|null)', 4394 isAnimated: 'boolean', 4395 isVisible: 'boolean', 4396 rootElement: '(element|string)' 4397 }; 4398 /** 4399 * Class definition 4400 */ 4401 4402 class Backdrop extends Config { 4403 constructor(config) { 4404 super(); 4405 this._config = this._getConfig(config); 4406 this._isAppended = false; 4407 this._element = null; 4408 } // Getters 4409 4410 4411 static get Default() { 4412 return Default$8; 4413 } 4414 4415 static get DefaultType() { 4416 return DefaultType$8; 4417 } 4418 4419 static get NAME() { 4420 return NAME$9; 4421 } // Public 4422 4423 4424 show(callback) { 4425 if (!this._config.isVisible) { 4426 execute(callback); 4427 return; 4428 } 4429 4430 this._append(); 4431 4432 const element = this._getElement(); 4433 4434 if (this._config.isAnimated) { 4435 reflow(element); 4436 } 4437 4438 element.classList.add(CLASS_NAME_SHOW$5); 4439 4440 this._emulateAnimation(() => { 4441 execute(callback); 4442 }); 4443 } 4444 4445 hide(callback) { 4446 if (!this._config.isVisible) { 4447 execute(callback); 4448 return; 4449 } 4450 4451 this._getElement().classList.remove(CLASS_NAME_SHOW$5); 4452 4453 this._emulateAnimation(() => { 4454 this.dispose(); 4455 execute(callback); 4456 }); 4457 } 4458 4459 dispose() { 4460 if (!this._isAppended) { 4461 return; 4462 } 4463 4464 EventHandler.off(this._element, EVENT_MOUSEDOWN); 4465 4466 this._element.remove(); 4467 4468 this._isAppended = false; 4469 } // Private 4470 4471 4472 _getElement() { 4473 if (!this._element) { 4474 const backdrop = document.createElement('div'); 4475 backdrop.className = this._config.className; 4476 4477 if (this._config.isAnimated) { 4478 backdrop.classList.add(CLASS_NAME_FADE$4); 4479 } 4480 4481 this._element = backdrop; 4482 } 4483 4484 return this._element; 4485 } 4486 4487 _configAfterMerge(config) { 4488 // use getElement() with the default "body" to get a fresh Element on each instantiation 4489 config.rootElement = getElement(config.rootElement); 4490 return config; 4491 } 4492 4493 _append() { 4494 if (this._isAppended) { 4495 return; 4496 } 4497 4498 const element = this._getElement(); 4499 4500 this._config.rootElement.append(element); 4501 4502 EventHandler.on(element, EVENT_MOUSEDOWN, () => { 4503 execute(this._config.clickCallback); 4504 }); 4505 this._isAppended = true; 4506 } 4507 4508 _emulateAnimation(callback) { 4509 executeAfterTransition(callback, this._getElement(), this._config.isAnimated); 4510 } 4511 4512 } 4513 4514 /** 4515 * -------------------------------------------------------------------------- 4516 * Bootstrap (v5.2.2): util/focustrap.js 4517 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4518 * -------------------------------------------------------------------------- 4519 */ 4520 /** 4521 * Constants 4522 */ 4523 4524 const NAME$8 = 'focustrap'; 4525 const DATA_KEY$5 = 'bs.focustrap'; 4526 const EVENT_KEY$5 = `.${DATA_KEY$5}`; 4527 const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; 4528 const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; 4529 const TAB_KEY = 'Tab'; 4530 const TAB_NAV_FORWARD = 'forward'; 4531 const TAB_NAV_BACKWARD = 'backward'; 4532 const Default$7 = { 4533 autofocus: true, 4534 trapElement: null // The element to trap focus inside of 4535 4536 }; 4537 const DefaultType$7 = { 4538 autofocus: 'boolean', 4539 trapElement: 'element' 4540 }; 4541 /** 4542 * Class definition 4543 */ 4544 4545 class FocusTrap extends Config { 4546 constructor(config) { 4547 super(); 4548 this._config = this._getConfig(config); 4549 this._isActive = false; 4550 this._lastTabNavDirection = null; 4551 } // Getters 4552 4553 4554 static get Default() { 4555 return Default$7; 4556 } 4557 4558 static get DefaultType() { 4559 return DefaultType$7; 4560 } 4561 4562 static get NAME() { 4563 return NAME$8; 4564 } // Public 4565 4566 4567 activate() { 4568 if (this._isActive) { 4569 return; 4570 } 4571 4572 if (this._config.autofocus) { 4573 this._config.trapElement.focus(); 4574 } 4575 4576 EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop 4577 4578 EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); 4579 EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); 4580 this._isActive = true; 4581 } 4582 4583 deactivate() { 4584 if (!this._isActive) { 4585 return; 4586 } 4587 4588 this._isActive = false;
4589 EventHandler.off(document, EVENT_KEY$5); 4590 } // Private 4591 4592 4593 _handleFocusin(event) { 4594 const { 4595 trapElement 4596 } = this._config; 4597 4598 if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { 4599 return; 4600 } 4601 4602 const elements = SelectorEngine.focusableChildren(trapElement); 4603 4604 if (elements.length === 0) { 4605 trapElement.focus(); 4606 } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { 4607 elements[elements.length - 1].focus(); 4608 } else { 4609 elements[0].focus(); 4610 } 4611 } 4612 4613 _handleKeydown(event) { 4614 if (event.key !== TAB_KEY) { 4615 return; 4616 } 4617 4618 this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; 4619 } 4620 4621 } 4622 4623 /** 4624 * -------------------------------------------------------------------------- 4625 * Bootstrap (v5.2.2): modal.js 4626 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 4627 * -------------------------------------------------------------------------- 4628 */ 4629 /** 4630 * Constants 4631 */ 4632 4633 const NAME$7 = 'modal'; 4634 const DATA_KEY$4 = 'bs.modal'; 4635 const EVENT_KEY$4 = `.${DATA_KEY$4}`; 4636 const DATA_API_KEY$2 = '.data-api'; 4637 const ESCAPE_KEY$1 = 'Escape'; 4638 const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; 4639 const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; 4640 const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; 4641 const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; 4642 const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; 4643 const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; 4644 const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; 4645 const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; 4646 const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; 4647 const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; 4648 const CLASS_NAME_OPEN = 'modal-open'; 4649 const CLASS_NAME_FADE$3 = 'fade';
vendor: 9,423 bytes, lines 4650-5014
4650 const CLASS_NAME_SHOW$4 = 'show'; 4651 const CLASS_NAME_STATIC = 'modal-static'; 4652 const OPEN_SELECTOR$1 = '.modal.show'; 4653 const SELECTOR_DIALOG = '.modal-dialog'; 4654 const SELECTOR_MODAL_BODY = '.modal-body'; 4655 const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; 4656 const Default$6 = { 4657 backdrop: true, 4658 focus: true, 4659 keyboard: true 4660 }; 4661 const DefaultType$6 = { 4662 backdrop: '(boolean|string)', 4663 focus: 'boolean', 4664 keyboard: 'boolean' 4665 }; 4666 /** 4667 * Class definition 4668 */ 4669 4670 class Modal extends BaseComponent { 4671 constructor(element, config) { 4672 super(element, config); 4673 this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); 4674 this._backdrop = this._initializeBackDrop(); 4675 this._focustrap = this._initializeFocusTrap(); 4676 this._isShown = false; 4677 this._isTransitioning = false; 4678 this._scrollBar = new ScrollBarHelper(); 4679 4680 this._addEventListeners(); 4681 } // Getters 4682 4683 4684 static get Default() { 4685 return Default$6; 4686 } 4687 4688 static get DefaultType() { 4689 return DefaultType$6; 4690 } 4691 4692 static get NAME() { 4693 return NAME$7; 4694 } // Public 4695 4696 4697 toggle(relatedTarget) { 4698 return this._isShown ? this.hide() : this.show(relatedTarget); 4699 } 4700 4701 show(relatedTarget) { 4702 if (this._isShown || this._isTransitioning) { 4703 return; 4704 } 4705 4706 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { 4707 relatedTarget 4708 }); 4709 4710 if (showEvent.defaultPrevented) { 4711 return; 4712 } 4713 4714 this._isShown = true; 4715 this._isTransitioning = true; 4716 4717 this._scrollBar.hide(); 4718 4719 document.body.classList.add(CLASS_NAME_OPEN); 4720 4721 this._adjustDialog(); 4722 4723 this._backdrop.show(() => this._showElement(relatedTarget)); 4724 } 4725 4726 hide() { 4727 if (!this._isShown || this._isTransitioning) { 4728 return; 4729 } 4730 4731 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); 4732 4733 if (hideEvent.defaultPrevented) { 4734 return; 4735 } 4736 4737 this._isShown = false; 4738 this._isTransitioning = true; 4739 4740 this._focustrap.deactivate(); 4741 4742 this._element.classList.remove(CLASS_NAME_SHOW$4); 4743 4744 this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); 4745 } 4746 4747 dispose() { 4748 for (const htmlElement of [window, this._dialog]) { 4749 EventHandler.off(htmlElement, EVENT_KEY$4); 4750 } 4751 4752 this._backdrop.dispose(); 4753 4754 this._focustrap.deactivate(); 4755 4756 super.dispose(); 4757 } 4758 4759 handleUpdate() { 4760 this._adjustDialog(); 4761 } // Private 4762 4763 4764 _initializeBackDrop() { 4765 return new Backdrop({ 4766 isVisible: Boolean(this._config.backdrop), 4767 // 'static' option will be translated to true, and booleans will keep their value, 4768 isAnimated: this._isAnimated() 4769 }); 4770 } 4771 4772 _initializeFocusTrap() { 4773 return new FocusTrap({ 4774 trapElement: this._element 4775 }); 4776 } 4777 4778 _showElement(relatedTarget) { 4779 // try to append dynamic modal 4780 if (!document.body.contains(this._element)) { 4781 document.body.append(this._element); 4782 } 4783 4784 this._element.style.display = 'block'; 4785 4786 this._element.removeAttribute('aria-hidden'); 4787 4788 this._element.setAttribute('aria-modal', true); 4789 4790 this._element.setAttribute('role', 'dialog'); 4791 4792 this._element.scrollTop = 0; 4793 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); 4794 4795 if (modalBody) { 4796 modalBody.scrollTop = 0; 4797 } 4798 4799 reflow(this._element); 4800 4801 this._element.classList.add(CLASS_NAME_SHOW$4); 4802 4803 const transitionComplete = () => { 4804 if (this._config.focus) { 4805 this._focustrap.activate(); 4806 } 4807 4808 this._isTransitioning = false; 4809 EventHandler.trigger(this._element, EVENT_SHOWN$4, { 4810 relatedTarget 4811 }); 4812 }; 4813 4814 this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); 4815 } 4816 4817 _addEventListeners() { 4818 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { 4819 if (event.key !== ESCAPE_KEY$1) { 4820 return; 4821 } 4822 4823 if (this._config.keyboard) { 4824 event.preventDefault(); 4825 this.hide(); 4826 return; 4827 } 4828 4829 this._triggerBackdropTransition(); 4830 }); 4831 EventHandler.on(window, EVENT_RESIZE$1, () => { 4832 if (this._isShown && !this._isTransitioning) { 4833 this._adjustDialog(); 4834 } 4835 }); 4836 EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { 4837 // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks 4838 EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { 4839 if (this._element !== event.target || this._element !== event2.target) { 4840 return; 4841 } 4842 4843 if (this._config.backdrop === 'static') { 4844 this._triggerBackdropTransition(); 4845 4846 return; 4847 } 4848 4849 if (this._config.backdrop) { 4850 this.hide(); 4851 } 4852 }); 4853 }); 4854 } 4855 4856 _hideModal() { 4857 this._element.style.display = 'none'; 4858 4859 this._element.setAttribute('aria-hidden', true); 4860 4861 this._element.removeAttribute('aria-modal'); 4862 4863 this._element.removeAttribute('role'); 4864 4865 this._isTransitioning = false; 4866 4867 this._backdrop.hide(() => { 4868 document.body.classList.remove(CLASS_NAME_OPEN); 4869 4870 this._resetAdjustments(); 4871 4872 this._scrollBar.reset(); 4873 4874 EventHandler.trigger(this._element, EVENT_HIDDEN$4); 4875 }); 4876 } 4877 4878 _isAnimated() { 4879 return this._element.classList.contains(CLASS_NAME_FADE$3); 4880 } 4881 4882 _triggerBackdropTransition() { 4883 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); 4884 4885 if (hideEvent.defaultPrevented) { 4886 return; 4887 } 4888 4889 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 4890 const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed 4891 4892 if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { 4893 return; 4894 } 4895 4896 if (!isModalOverflowing) { 4897 this._element.style.overflowY = 'hidden'; 4898 } 4899 4900 this._element.classList.add(CLASS_NAME_STATIC); 4901 4902 this._queueCallback(() => { 4903 this._element.classList.remove(CLASS_NAME_STATIC); 4904 4905 this._queueCallback(() => { 4906 this._element.style.overflowY = initialOverflowY; 4907 }, this._dialog); 4908 }, this._dialog); 4909 4910 this._element.focus(); 4911 } 4912 /** 4913 * The following methods are used to handle overflowing modals 4914 */ 4915 4916 4917 _adjustDialog() { 4918 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 4919 4920 const scrollbarWidth = this._scrollBar.getWidth(); 4921 4922 const isBodyOverflowing = scrollbarWidth > 0; 4923 4924 if (isBodyOverflowing && !isModalOverflowing) { 4925 const property = isRTL() ? 'paddingLeft' : 'paddingRight'; 4926 this._element.style[property] = `${scrollbarWidth}px`; 4927 } 4928 4929 if (!isBodyOverflowing && isModalOverflowing) { 4930 const property = isRTL() ? 'paddingRight' : 'paddingLeft'; 4931 this._element.style[property] = `${scrollbarWidth}px`; 4932 } 4933 } 4934 4935 _resetAdjustments() { 4936 this._element.style.paddingLeft = ''; 4937 this._element.style.paddingRight = ''; 4938 } // Static 4939 4940 4941 static jQueryInterface(config, relatedTarget) { 4942 return this.each(function () { 4943 const data = Modal.getOrCreateInstance(this, config); 4944 4945 if (typeof config !== 'string') { 4946 return; 4947 } 4948 4949 if (typeof data[config] === 'undefined') { 4950 throw new TypeError(`No method named "${config}"`); 4951 } 4952 4953 data[config](relatedTarget); 4954 }); 4955 } 4956 4957 } 4958 /** 4959 * Data API implementation 4960 */ 4961 4962 4963 EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { 4964 const target = getElementFromSelector(this); 4965 4966 if (['A', 'AREA'].includes(this.tagName)) { 4967 event.preventDefault(); 4968 } 4969 4970 EventHandler.one(target, EVENT_SHOW$4, showEvent => { 4971 if (showEvent.defaultPrevented) { 4972 // only register focus restorer if modal will actually get shown 4973 return; 4974 } 4975 4976 EventHandler.one(target, EVENT_HIDDEN$4, () => { 4977 if (isVisible(this)) { 4978 this.focus(); 4979 } 4980 }); 4981 }); // avoid conflict when clicking modal toggler while another one is open 4982 4983 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); 4984 4985 if (alreadyOpen) { 4986 Modal.getInstance(alreadyOpen).hide(); 4987 } 4988 4989 const data = Modal.getOrCreateInstance(target); 4990 data.toggle(this); 4991 }); 4992 enableDismissTrigger(Modal); 4993 /** 4994 * jQuery 4995 */ 4996 4997 defineJQueryPlugin(Modal); 4998 4999 /** 5000 * -------------------------------------------------------------------------- 5001 * Bootstrap (v5.2.2): offcanvas.js 5002 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5003 * -------------------------------------------------------------------------- 5004 */ 5005 /** 5006 * Constants 5007 */ 5008 5009 const NAME$6 = 'offcanvas'; 5010 const DATA_KEY$3 = 'bs.offcanvas'; 5011 const EVENT_KEY$3 = `.${DATA_KEY$3}`; 5012 const DATA_API_KEY$1 = '.data-api'; 5013 const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; 5014 const ESCAPE_KEY = 'Escape';
vendor: 4,885 bytes, lines 5015-5213
5015 const CLASS_NAME_SHOW$3 = 'show'; 5016 const CLASS_NAME_SHOWING$1 = 'showing'; 5017 const CLASS_NAME_HIDING = 'hiding'; 5018 const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; 5019 const OPEN_SELECTOR = '.offcanvas.show'; 5020 const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; 5021 const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; 5022 const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; 5023 const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; 5024 const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; 5025 const EVENT_RESIZE = `resize${EVENT_KEY$3}`; 5026 const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; 5027 const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; 5028 const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; 5029 const Default$5 = { 5030 backdrop: true, 5031 keyboard: true, 5032 scroll: false 5033 }; 5034 const DefaultType$5 = { 5035 backdrop: '(boolean|string)', 5036 keyboard: 'boolean', 5037 scroll: 'boolean' 5038 }; 5039 /** 5040 * Class definition 5041 */ 5042 5043 class Offcanvas extends BaseComponent { 5044 constructor(element, config) { 5045 super(element, config); 5046 this._isShown = false; 5047 this._backdrop = this._initializeBackDrop(); 5048 this._focustrap = this._initializeFocusTrap(); 5049 5050 this._addEventListeners(); 5051 } // Getters 5052 5053 5054 static get Default() { 5055 return Default$5; 5056 } 5057 5058 static get DefaultType() { 5059 return DefaultType$5; 5060 } 5061 5062 static get NAME() { 5063 return NAME$6; 5064 } // Public 5065 5066 5067 toggle(relatedTarget) { 5068 return this._isShown ? this.hide() : this.show(relatedTarget); 5069 } 5070 5071 show(relatedTarget) { 5072 if (this._isShown) { 5073 return; 5074 } 5075 5076 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { 5077 relatedTarget 5078 }); 5079 5080 if (showEvent.defaultPrevented) { 5081 return; 5082 } 5083 5084 this._isShown = true; 5085 5086 this._backdrop.show(); 5087 5088 if (!this._config.scroll) { 5089 new ScrollBarHelper().hide(); 5090 } 5091 5092 this._element.setAttribute('aria-modal', true); 5093 5094 this._element.setAttribute('role', 'dialog'); 5095 5096 this._element.classList.add(CLASS_NAME_SHOWING$1); 5097 5098 const completeCallBack = () => { 5099 if (!this._config.scroll || this._config.backdrop) { 5100 this._focustrap.activate(); 5101 } 5102 5103 this._element.classList.add(CLASS_NAME_SHOW$3); 5104 5105 this._element.classList.remove(CLASS_NAME_SHOWING$1); 5106 5107 EventHandler.trigger(this._element, EVENT_SHOWN$3, { 5108 relatedTarget 5109 }); 5110 }; 5111 5112 this._queueCallback(completeCallBack, this._element, true); 5113 } 5114 5115 hide() { 5116 if (!this._isShown) { 5117 return; 5118 } 5119 5120 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); 5121 5122 if (hideEvent.defaultPrevented) { 5123 return; 5124 } 5125 5126 this._focustrap.deactivate(); 5127 5128 this._element.blur(); 5129 5130 this._isShown = false; 5131 5132 this._element.classList.add(CLASS_NAME_HIDING); 5133 5134 this._backdrop.hide(); 5135 5136 const completeCallback = () => { 5137 this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); 5138 5139 this._element.removeAttribute('aria-modal'); 5140 5141 this._element.removeAttribute('role'); 5142 5143 if (!this._config.scroll) { 5144 new ScrollBarHelper().reset(); 5145 } 5146 5147 EventHandler.trigger(this._element, EVENT_HIDDEN$3); 5148 }; 5149 5150 this._queueCallback(completeCallback, this._element, true); 5151 } 5152 5153 dispose() { 5154 this._backdrop.dispose(); 5155 5156 this._focustrap.deactivate(); 5157 5158 super.dispose(); 5159 } // Private 5160 5161 5162 _initializeBackDrop() { 5163 const clickCallback = () => { 5164 if (this._config.backdrop === 'static') { 5165 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 5166 return; 5167 } 5168 5169 this.hide(); 5170 }; // 'static' option will be translated to true, and booleans will keep their value 5171 5172 5173 const isVisible = Boolean(this._config.backdrop); 5174 return new Backdrop({ 5175 className: CLASS_NAME_BACKDROP, 5176 isVisible, 5177 isAnimated: true, 5178 rootElement: this._element.parentNode, 5179 clickCallback: isVisible ? clickCallback : null 5180 }); 5181 } 5182 5183 _initializeFocusTrap() { 5184 return new FocusTrap({ 5185 trapElement: this._element 5186 }); 5187 } 5188 5189 _addEventListeners() { 5190 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { 5191 if (event.key !== ESCAPE_KEY) { 5192 return; 5193 } 5194 5195 if (!this._config.keyboard) { 5196 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 5197 return; 5198 } 5199 5200 this.hide(); 5201 }); 5202 } // Static 5203 5204 5205 static jQueryInterface(config) { 5206 return this.each(function () { 5207 const data = Offcanvas.getOrCreateInstance(this, config); 5208 5209 if (typeof config !== 'string') { 5210 return; 5211 } 5212 5213 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
vendor: 9,096 bytes, lines 5214-5548
5214 throw new TypeError(`No method named "${config}"`); 5215 } 5216 5217 data[config](this); 5218 }); 5219 } 5220 5221 } 5222 /** 5223 * Data API implementation 5224 */ 5225 5226 5227 EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { 5228 const target = getElementFromSelector(this); 5229 5230 if (['A', 'AREA'].includes(this.tagName)) { 5231 event.preventDefault(); 5232 } 5233 5234 if (isDisabled(this)) { 5235 return; 5236 } 5237 5238 EventHandler.one(target, EVENT_HIDDEN$3, () => { 5239 // focus on trigger when it is closed 5240 if (isVisible(this)) { 5241 this.focus(); 5242 } 5243 }); // avoid conflict when clicking a toggler of an offcanvas, while another is open 5244 5245 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); 5246 5247 if (alreadyOpen && alreadyOpen !== target) { 5248 Offcanvas.getInstance(alreadyOpen).hide(); 5249 } 5250 5251 const data = Offcanvas.getOrCreateInstance(target); 5252 data.toggle(this); 5253 }); 5254 EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { 5255 for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { 5256 Offcanvas.getOrCreateInstance(selector).show(); 5257 } 5258 }); 5259 EventHandler.on(window, EVENT_RESIZE, () => { 5260 for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { 5261 if (getComputedStyle(element).position !== 'fixed') { 5262 Offcanvas.getOrCreateInstance(element).hide(); 5263 } 5264 } 5265 }); 5266 enableDismissTrigger(Offcanvas); 5267 /** 5268 * jQuery 5269 */ 5270 5271 defineJQueryPlugin(Offcanvas); 5272 5273 /** 5274 * -------------------------------------------------------------------------- 5275 * Bootstrap (v5.2.2): util/sanitizer.js 5276 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5277 * -------------------------------------------------------------------------- 5278 */ 5279 const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); 5280 const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 5281 /** 5282 * A pattern that recognizes a commonly useful subset of URLs that are safe. 5283 * 5284 * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts 5285 */ 5286 5287 const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; 5288 /** 5289 * A pattern that matches safe data URLs. Only matches image, video and audio types. 5290 * 5291 * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts 5292 */ 5293 5294 const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i; 5295 5296 const allowedAttribute = (attribute, allowedAttributeList) => { 5297 const attributeName = attribute.nodeName.toLowerCase(); 5298 5299 if (allowedAttributeList.includes(attributeName)) { 5300 if (uriAttributes.has(attributeName)) { 5301 return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue)); 5302 } 5303 5304 return true; 5305 } // Check if a regular expression validates the attribute. 5306 5307 5308 return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); 5309 }; 5310 5311 const DefaultAllowlist = { 5312 // Global attributes allowed on any supplied element below. 5313 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 5314 a: ['target', 'href', 'title', 'rel'], 5315 area: [], 5316 b: [], 5317 br: [], 5318 col: [], 5319 code: [], 5320 div: [], 5321 em: [], 5322 hr: [], 5323 h1: [], 5324 h2: [], 5325 h3: [], 5326 h4: [], 5327 h5: [], 5328 h6: [], 5329 i: [], 5330 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 5331 li: [], 5332 ol: [], 5333 p: [], 5334 pre: [], 5335 s: [], 5336 small: [], 5337 span: [], 5338 sub: [], 5339 sup: [], 5340 strong: [], 5341 u: [], 5342 ul: [] 5343 }; 5344 function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { 5345 if (!unsafeHtml.length) { 5346 return unsafeHtml; 5347 } 5348 5349 if (sanitizeFunction && typeof sanitizeFunction === 'function') { 5350 return sanitizeFunction(unsafeHtml); 5351 } 5352 5353 const domParser = new window.DOMParser(); 5354 const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 5355 const elements = [].concat(...createdDocument.body.querySelectorAll('*')); 5356 5357 for (const element of elements) { 5358 const elementName = element.nodeName.toLowerCase(); 5359 5360 if (!Object.keys(allowList).includes(elementName)) { 5361 element.remove(); 5362 continue; 5363 } 5364 5365 const attributeList = [].concat(...element.attributes); 5366 const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); 5367 5368 for (const attribute of attributeList) { 5369 if (!allowedAttribute(attribute, allowedAttributes)) { 5370 element.removeAttribute(attribute.nodeName); 5371 } 5372 } 5373 } 5374 5375 return createdDocument.body.innerHTML; 5376 } 5377 5378 /** 5379 * -------------------------------------------------------------------------- 5380 * Bootstrap (v5.2.2): util/template-factory.js 5381 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5382 * -------------------------------------------------------------------------- 5383 */ 5384 /** 5385 * Constants 5386 */ 5387 5388 const NAME$5 = 'TemplateFactory'; 5389 const Default$4 = { 5390 allowList: DefaultAllowlist, 5391 content: {}, 5392 // { selector : text , selector2 : text2 , } 5393 extraClass: '', 5394 html: false, 5395 sanitize: true, 5396 sanitizeFn: null, 5397 template: '<div></div>' 5398 }; 5399 const DefaultType$4 = { 5400 allowList: 'object', 5401 content: 'object', 5402 extraClass: '(string|function)', 5403 html: 'boolean', 5404 sanitize: 'boolean', 5405 sanitizeFn: '(null|function)', 5406 template: 'string' 5407 }; 5408 const DefaultContentType = { 5409 entry: '(string|element|function|null)', 5410 selector: '(string|element)' 5411 }; 5412 /** 5413 * Class definition 5414 */ 5415 5416 class TemplateFactory extends Config { 5417 constructor(config) { 5418 super(); 5419 this._config = this._getConfig(config); 5420 } // Getters 5421 5422 5423 static get Default() { 5424 return Default$4; 5425 } 5426 5427 static get DefaultType() { 5428 return DefaultType$4; 5429 } 5430 5431 static get NAME() { 5432 return NAME$5; 5433 } // Public 5434 5435 5436 getContent() { 5437 return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); 5438 } 5439 5440 hasContent() { 5441 return this.getContent().length > 0; 5442 } 5443 5444 changeContent(content) { 5445 this._checkContent(content); 5446 5447 this._config.content = { ...this._config.content, 5448 ...content 5449 }; 5450 return this; 5451 } 5452 5453 toHtml() { 5454 const templateWrapper = document.createElement('div'); 5455 templateWrapper.innerHTML = this._maybeSanitize(this._config.template); 5456 5457 for (const [selector, text] of Object.entries(this._config.content)) { 5458 this._setContent(templateWrapper, text, selector); 5459 } 5460 5461 const template = templateWrapper.children[0]; 5462 5463 const extraClass = this._resolvePossibleFunction(this._config.extraClass); 5464 5465 if (extraClass) { 5466 template.classList.add(...extraClass.split(' ')); 5467 } 5468 5469 return template; 5470 } // Private 5471 5472 5473 _typeCheckConfig(config) { 5474 super._typeCheckConfig(config); 5475 5476 this._checkContent(config.content); 5477 } 5478 5479 _checkContent(arg) { 5480 for (const [selector, content] of Object.entries(arg)) { 5481 super._typeCheckConfig({ 5482 selector, 5483 entry: content 5484 }, DefaultContentType); 5485 } 5486 } 5487 5488 _setContent(template, content, selector) { 5489 const templateElement = SelectorEngine.findOne(selector, template); 5490 5491 if (!templateElement) { 5492 return; 5493 } 5494 5495 content = this._resolvePossibleFunction(content); 5496 5497 if (!content) { 5498 templateElement.remove(); 5499 return; 5500 } 5501 5502 if (isElement$1(content)) { 5503 this._putElementInTemplate(getElement(content), templateElement); 5504 5505 return; 5506 } 5507 5508 if (this._config.html) { 5509 templateElement.innerHTML = this._maybeSanitize(content); 5510 return; 5511 } 5512 5513 templateElement.textContent = content; 5514 } 5515 5516 _maybeSanitize(arg) { 5517 return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; 5518 } 5519 5520 _resolvePossibleFunction(arg) { 5521 return typeof arg === 'function' ? arg(this) : arg; 5522 } 5523 5524 _putElementInTemplate(element, templateElement) { 5525 if (this._config.html) { 5526 templateElement.innerHTML = ''; 5527 templateElement.append(element); 5528 return; 5529 } 5530 5531 templateElement.textContent = element.textContent; 5532 } 5533 5534 } 5535 5536 /** 5537 * -------------------------------------------------------------------------- 5538 * Bootstrap (v5.2.2): tooltip.js 5539 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5540 * -------------------------------------------------------------------------- 5541 */ 5542 /** 5543 * Constants 5544 */ 5545 5546 const NAME$4 = 'tooltip'; 5547 const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); 5548 const CLASS_NAME_FADE$2 = 'fade';
vendor: 4,835 bytes, lines 5549-5738
5549 const CLASS_NAME_MODAL = 'modal'; 5550 const CLASS_NAME_SHOW$2 = 'show'; 5551 const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; 5552 const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; 5553 const EVENT_MODAL_HIDE = 'hide.bs.modal'; 5554 const TRIGGER_HOVER = 'hover'; 5555 const TRIGGER_FOCUS = 'focus'; 5556 const TRIGGER_CLICK = 'click'; 5557 const TRIGGER_MANUAL = 'manual'; 5558 const EVENT_HIDE$2 = 'hide'; 5559 const EVENT_HIDDEN$2 = 'hidden'; 5560 const EVENT_SHOW$2 = 'show'; 5561 const EVENT_SHOWN$2 = 'shown'; 5562 const EVENT_INSERTED = 'inserted'; 5563 const EVENT_CLICK$1 = 'click'; 5564 const EVENT_FOCUSIN$1 = 'focusin'; 5565 const EVENT_FOCUSOUT$1 = 'focusout'; 5566 const EVENT_MOUSEENTER = 'mouseenter'; 5567 const EVENT_MOUSELEAVE = 'mouseleave'; 5568 const AttachmentMap = { 5569 AUTO: 'auto', 5570 TOP: 'top', 5571 RIGHT: isRTL() ? 'left' : 'right', 5572 BOTTOM: 'bottom', 5573 LEFT: isRTL() ? 'right' : 'left' 5574 }; 5575 const Default$3 = { 5576 allowList: DefaultAllowlist, 5577 animation: true, 5578 boundary: 'clippingParents', 5579 container: false, 5580 customClass: '', 5581 delay: 0, 5582 fallbackPlacements: ['top', 'right', 'bottom', 'left'], 5583 html: false, 5584 offset: [0, 0], 5585 placement: 'top', 5586 popperConfig: null, 5587 sanitize: true, 5588 sanitizeFn: null, 5589 selector: false, 5590 template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>', 5591 title: '', 5592 trigger: 'hover focus' 5593 }; 5594 const DefaultType$3 = { 5595 allowList: 'object', 5596 animation: 'boolean', 5597 boundary: '(string|element)', 5598 container: '(string|element|boolean)', 5599 customClass: '(string|function)', 5600 delay: '(number|object)', 5601 fallbackPlacements: 'array', 5602 html: 'boolean', 5603 offset: '(array|string|function)', 5604 placement: '(string|function)', 5605 popperConfig: '(null|object|function)', 5606 sanitize: 'boolean', 5607 sanitizeFn: '(null|function)', 5608 selector: '(string|boolean)', 5609 template: 'string', 5610 title: '(string|element|function)', 5611 trigger: 'string' 5612 }; 5613 /** 5614 * Class definition 5615 */ 5616 5617 class Tooltip extends BaseComponent { 5618 constructor(element, config) { 5619 if (typeof Popper === 'undefined') { 5620 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); 5621 } 5622 5623 super(element, config); // Private 5624 5625 this._isEnabled = true; 5626 this._timeout = 0; 5627 this._isHovered = null; 5628 this._activeTrigger = {}; 5629 this._popper = null; 5630 this._templateFactory = null; 5631 this._newContent = null; // Protected 5632 5633 this.tip = null; 5634 5635 this._setListeners(); 5636 5637 if (!this._config.selector) { 5638 this._fixTitle(); 5639 } 5640 } // Getters 5641 5642 5643 static get Default() { 5644 return Default$3; 5645 } 5646 5647 static get DefaultType() { 5648 return DefaultType$3; 5649 } 5650 5651 static get NAME() { 5652 return NAME$4; 5653 } // Public 5654 5655 5656 enable() { 5657 this._isEnabled = true; 5658 } 5659 5660 disable() { 5661 this._isEnabled = false; 5662 } 5663 5664 toggleEnabled() { 5665 this._isEnabled = !this._isEnabled; 5666 } 5667 5668 toggle() { 5669 if (!this._isEnabled) { 5670 return; 5671 } 5672 5673 this._activeTrigger.click = !this._activeTrigger.click; 5674 5675 if (this._isShown()) { 5676 this._leave(); 5677 5678 return; 5679 } 5680 5681 this._enter(); 5682 } 5683 5684 dispose() { 5685 clearTimeout(this._timeout); 5686 EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 5687 5688 if (this.tip) { 5689 this.tip.remove(); 5690 } 5691 5692 if (this._element.getAttribute('data-bs-original-title')) { 5693 this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); 5694 } 5695 5696 this._disposePopper(); 5697 5698 super.dispose(); 5699 } 5700 5701 show() { 5702 if (this._element.style.display === 'none') { 5703 throw new Error('Please use show on visible elements'); 5704 } 5705 5706 if (!(this._isWithContent() && this._isEnabled)) { 5707 return; 5708 } 5709 5710 const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); 5711 const shadowRoot = findShadowRoot(this._element); 5712 5713 const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); 5714 5715 if (showEvent.defaultPrevented || !isInTheDom) { 5716 return; 5717 } // todo v6 remove this OR make it optional 5718 5719 5720 if (this.tip) { 5721 this.tip.remove(); 5722 this.tip = null; 5723 } 5724 5725 const tip = this._getTipElement(); 5726 5727 this._element.setAttribute('aria-describedby', tip.getAttribute('id')); 5728 5729 const { 5730 container 5731 } = this._config; 5732 5733 if (!this._element.ownerDocument.documentElement.contains(this.tip)) { 5734 container.append(tip); 5735 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); 5736 } 5737 5738 if (this._popper) {
vendor: 3,007 bytes, lines 5739-5844
5739 this._popper.update(); 5740 } else { 5741 this._popper = this._createPopper(tip); 5742 } 5743 5744 tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra 5745 // empty mouseover listeners to the body's immediate children; 5746 // only needed because of broken event delegation on iOS 5747 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 5748 5749 if ('ontouchstart' in document.documentElement) { 5750 for (const element of [].concat(...document.body.children)) { 5751 EventHandler.on(element, 'mouseover', noop); 5752 } 5753 } 5754 5755 const complete = () => { 5756 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); 5757 5758 if (this._isHovered === false) { 5759 this._leave(); 5760 } 5761 5762 this._isHovered = false; 5763 }; 5764 5765 this._queueCallback(complete, this.tip, this._isAnimated()); 5766 } 5767 5768 hide() { 5769 if (!this._isShown()) { 5770 return; 5771 } 5772 5773 const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); 5774 5775 if (hideEvent.defaultPrevented) { 5776 return; 5777 } 5778 5779 const tip = this._getTipElement(); 5780 5781 tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra 5782 // empty mouseover listeners we added for iOS support 5783 5784 if ('ontouchstart' in document.documentElement) { 5785 for (const element of [].concat(...document.body.children)) { 5786 EventHandler.off(element, 'mouseover', noop); 5787 } 5788 } 5789 5790 this._activeTrigger[TRIGGER_CLICK] = false; 5791 this._activeTrigger[TRIGGER_FOCUS] = false; 5792 this._activeTrigger[TRIGGER_HOVER] = false; 5793 this._isHovered = null; // it is a trick to support manual triggering 5794 5795 const complete = () => { 5796 if (this._isWithActiveTrigger()) { 5797 return; 5798 } 5799 5800 if (!this._isHovered) { 5801 tip.remove(); 5802 } 5803 5804 this._element.removeAttribute('aria-describedby'); 5805 5806 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); 5807 5808 this._disposePopper(); 5809 }; 5810 5811 this._queueCallback(complete, this.tip, this._isAnimated()); 5812 } 5813 5814 update() { 5815 if (this._popper) { 5816 this._popper.update(); 5817 } 5818 } // Protected 5819 5820 5821 _isWithContent() { 5822 return Boolean(this._getTitle()); 5823 } 5824 5825 _getTipElement() { 5826 if (!this.tip) { 5827 this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); 5828 } 5829 5830 return this.tip; 5831 } 5832 5833 _createTipElement(content) { 5834 const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6 5835 5836 5837 if (!tip) { 5838 return null; 5839 } 5840 5841 tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only 5842 5843 tip.classList.add(`bs-${this.constructor.NAME}-auto`); 5844 const tipId = getUID(this.constructor.NAME).toString();
vendor: 5,979 bytes, lines 5845-6043
5845 tip.setAttribute('id', tipId); 5846 5847 if (this._isAnimated()) { 5848 tip.classList.add(CLASS_NAME_FADE$2); 5849 } 5850 5851 return tip; 5852 } 5853 5854 setContent(content) { 5855 this._newContent = content; 5856 5857 if (this._isShown()) { 5858 this._disposePopper(); 5859 5860 this.show(); 5861 } 5862 } 5863 5864 _getTemplateFactory(content) { 5865 if (this._templateFactory) { 5866 this._templateFactory.changeContent(content); 5867 } else { 5868 this._templateFactory = new TemplateFactory({ ...this._config, 5869 // the `content` var has to be after `this._config` 5870 // to override config.content in case of popover 5871 content, 5872 extraClass: this._resolvePossibleFunction(this._config.customClass) 5873 }); 5874 } 5875 5876 return this._templateFactory; 5877 } 5878 5879 _getContentForTemplate() { 5880 return { 5881 [SELECTOR_TOOLTIP_INNER]: this._getTitle() 5882 }; 5883 } 5884 5885 _getTitle() { 5886 return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); 5887 } // Private 5888 5889 5890 _initializeOnDelegatedTarget(event) { 5891 return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); 5892 } 5893 5894 _isAnimated() { 5895 return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); 5896 } 5897 5898 _isShown() { 5899 return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); 5900 } 5901 5902 _createPopper(tip) { 5903 const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement; 5904 const attachment = AttachmentMap[placement.toUpperCase()]; 5905 return createPopper(this._element, tip, this._getPopperConfig(attachment)); 5906 } 5907 5908 _getOffset() { 5909 const { 5910 offset 5911 } = this._config; 5912 5913 if (typeof offset === 'string') { 5914 return offset.split(',').map(value => Number.parseInt(value, 10)); 5915 } 5916 5917 if (typeof offset === 'function') { 5918 return popperData => offset(popperData, this._element); 5919 } 5920 5921 return offset; 5922 } 5923 5924 _resolvePossibleFunction(arg) { 5925 return typeof arg === 'function' ? arg.call(this._element) : arg; 5926 } 5927 5928 _getPopperConfig(attachment) { 5929 const defaultBsPopperConfig = { 5930 placement: attachment, 5931 modifiers: [{ 5932 name: 'flip', 5933 options: { 5934 fallbackPlacements: this._config.fallbackPlacements 5935 } 5936 }, { 5937 name: 'offset', 5938 options: { 5939 offset: this._getOffset() 5940 } 5941 }, { 5942 name: 'preventOverflow', 5943 options: { 5944 boundary: this._config.boundary 5945 } 5946 }, { 5947 name: 'arrow', 5948 options: { 5949 element: `.${this.constructor.NAME}-arrow` 5950 } 5951 }, { 5952 name: 'preSetPlacement', 5953 enabled: true, 5954 phase: 'beforeMain', 5955 fn: data => { 5956 // Pre-set Popper's placement attribute in order to read the arrow sizes properly. 5957 // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement 5958 this._getTipElement().setAttribute('data-popper-placement', data.state.placement); 5959 } 5960 }] 5961 }; 5962 return { ...defaultBsPopperConfig, 5963 ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig) 5964 }; 5965 } 5966 5967 _setListeners() { 5968 const triggers = this._config.trigger.split(' '); 5969 5970 for (const trigger of triggers) { 5971 if (trigger === 'click') { 5972 EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { 5973 const context = this._initializeOnDelegatedTarget(event); 5974 5975 context.toggle(); 5976 }); 5977 } else if (trigger !== TRIGGER_MANUAL) { 5978 const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); 5979 const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); 5980 EventHandler.on(this._element, eventIn, this._config.selector, event => { 5981 const context = this._initializeOnDelegatedTarget(event); 5982 5983 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 5984 5985 context._enter(); 5986 }); 5987 EventHandler.on(this._element, eventOut, this._config.selector, event => { 5988 const context = this._initializeOnDelegatedTarget(event); 5989 5990 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); 5991 5992 context._leave(); 5993 }); 5994 } 5995 } 5996 5997 this._hideModalHandler = () => { 5998 if (this._element) { 5999 this.hide(); 6000 } 6001 }; 6002 6003 EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 6004 } 6005 6006 _fixTitle() { 6007 const title = this._element.getAttribute('title'); 6008 6009 if (!title) { 6010 return; 6011 } 6012 6013 if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { 6014 this._element.setAttribute('aria-label', title); 6015 } 6016 6017 this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility 6018 6019 6020 this._element.removeAttribute('title'); 6021 } 6022 6023 _enter() { 6024 if (this._isShown() || this._isHovered) { 6025 this._isHovered = true; 6026 return; 6027 } 6028 6029 this._isHovered = true; 6030 6031 this._setTimeout(() => { 6032 if (this._isHovered) { 6033 this.show(); 6034 } 6035 }, this._config.delay.show); 6036 } 6037 6038 _leave() { 6039 if (this._isWithActiveTrigger()) { 6040 return; 6041 } 6042 6043 this._isHovered = false;
vendor: 14,232 bytes, lines 6044-6551
6044 6045 this._setTimeout(() => { 6046 if (!this._isHovered) { 6047 this.hide(); 6048 } 6049 }, this._config.delay.hide); 6050 } 6051 6052 _setTimeout(handler, timeout) { 6053 clearTimeout(this._timeout); 6054 this._timeout = setTimeout(handler, timeout); 6055 } 6056 6057 _isWithActiveTrigger() { 6058 return Object.values(this._activeTrigger).includes(true); 6059 } 6060 6061 _getConfig(config) { 6062 const dataAttributes = Manipulator.getDataAttributes(this._element); 6063 6064 for (const dataAttribute of Object.keys(dataAttributes)) { 6065 if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { 6066 delete dataAttributes[dataAttribute]; 6067 } 6068 } 6069 6070 config = { ...dataAttributes, 6071 ...(typeof config === 'object' && config ? config : {}) 6072 }; 6073 config = this._mergeConfigObj(config); 6074 config = this._configAfterMerge(config); 6075 6076 this._typeCheckConfig(config); 6077 6078 return config; 6079 } 6080 6081 _configAfterMerge(config) { 6082 config.container = config.container === false ? document.body : getElement(config.container); 6083 6084 if (typeof config.delay === 'number') { 6085 config.delay = { 6086 show: config.delay, 6087 hide: config.delay 6088 }; 6089 } 6090 6091 if (typeof config.title === 'number') { 6092 config.title = config.title.toString(); 6093 } 6094 6095 if (typeof config.content === 'number') { 6096 config.content = config.content.toString(); 6097 } 6098 6099 return config; 6100 } 6101 6102 _getDelegateConfig() { 6103 const config = {}; 6104 6105 for (const key in this._config) { 6106 if (this.constructor.Default[key] !== this._config[key]) { 6107 config[key] = this._config[key]; 6108 } 6109 } 6110 6111 config.selector = false; 6112 config.trigger = 'manual'; // In the future can be replaced with: 6113 // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) 6114 // `Object.fromEntries(keysWithDifferentValues)` 6115 6116 return config; 6117 } 6118 6119 _disposePopper() { 6120 if (this._popper) { 6121 this._popper.destroy(); 6122 6123 this._popper = null; 6124 } 6125 } // Static 6126 6127 6128 static jQueryInterface(config) { 6129 return this.each(function () { 6130 const data = Tooltip.getOrCreateInstance(this, config); 6131 6132 if (typeof config !== 'string') { 6133 return; 6134 } 6135 6136 if (typeof data[config] === 'undefined') { 6137 throw new TypeError(`No method named "${config}"`); 6138 } 6139 6140 data[config](); 6141 }); 6142 } 6143 6144 } 6145 /** 6146 * jQuery 6147 */ 6148 6149 6150 defineJQueryPlugin(Tooltip); 6151 6152 /** 6153 * -------------------------------------------------------------------------- 6154 * Bootstrap (v5.2.2): popover.js 6155 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6156 * -------------------------------------------------------------------------- 6157 */ 6158 /** 6159 * Constants 6160 */ 6161 6162 const NAME$3 = 'popover'; 6163 const SELECTOR_TITLE = '.popover-header'; 6164 const SELECTOR_CONTENT = '.popover-body'; 6165 const Default$2 = { ...Tooltip.Default, 6166 content: '', 6167 offset: [0, 8], 6168 placement: 'right', 6169 template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>', 6170 trigger: 'click' 6171 }; 6172 const DefaultType$2 = { ...Tooltip.DefaultType, 6173 content: '(null|string|element|function)' 6174 }; 6175 /** 6176 * Class definition 6177 */ 6178 6179 class Popover extends Tooltip { 6180 // Getters 6181 static get Default() { 6182 return Default$2; 6183 } 6184 6185 static get DefaultType() { 6186 return DefaultType$2; 6187 } 6188 6189 static get NAME() { 6190 return NAME$3; 6191 } // Overrides 6192 6193 6194 _isWithContent() { 6195 return this._getTitle() || this._getContent(); 6196 } // Private 6197 6198 6199 _getContentForTemplate() { 6200 return { 6201 [SELECTOR_TITLE]: this._getTitle(), 6202 [SELECTOR_CONTENT]: this._getContent() 6203 }; 6204 } 6205 6206 _getContent() { 6207 return this._resolvePossibleFunction(this._config.content); 6208 } // Static 6209 6210 6211 static jQueryInterface(config) { 6212 return this.each(function () { 6213 const data = Popover.getOrCreateInstance(this, config); 6214 6215 if (typeof config !== 'string') { 6216 return; 6217 } 6218 6219 if (typeof data[config] === 'undefined') { 6220 throw new TypeError(`No method named "${config}"`); 6221 } 6222 6223 data[config](); 6224 }); 6225 } 6226 6227 } 6228 /** 6229 * jQuery 6230 */ 6231 6232 6233 defineJQueryPlugin(Popover); 6234 6235 /** 6236 * -------------------------------------------------------------------------- 6237 * Bootstrap (v5.2.2): scrollspy.js 6238 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6239 * -------------------------------------------------------------------------- 6240 */ 6241 /** 6242 * Constants 6243 */ 6244 6245 const NAME$2 = 'scrollspy'; 6246 const DATA_KEY$2 = 'bs.scrollspy'; 6247 const EVENT_KEY$2 = `.${DATA_KEY$2}`; 6248 const DATA_API_KEY = '.data-api'; 6249 const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; 6250 const EVENT_CLICK = `click${EVENT_KEY$2}`; 6251 const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; 6252 const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; 6253 const CLASS_NAME_ACTIVE$1 = 'active'; 6254 const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; 6255 const SELECTOR_TARGET_LINKS = '[href]'; 6256 const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; 6257 const SELECTOR_NAV_LINKS = '.nav-link'; 6258 const SELECTOR_NAV_ITEMS = '.nav-item'; 6259 const SELECTOR_LIST_ITEMS = '.list-group-item'; 6260 const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; 6261 const SELECTOR_DROPDOWN = '.dropdown'; 6262 const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; 6263 const Default$1 = { 6264 offset: null, 6265 // TODO: v6 @deprecated, keep it for backwards compatibility reasons 6266 rootMargin: '0px 0px -25%', 6267 smoothScroll: false, 6268 target: null, 6269 threshold: [0.1, 0.5, 1] 6270 }; 6271 const DefaultType$1 = { 6272 offset: '(number|null)', 6273 // TODO v6 @deprecated, keep it for backwards compatibility reasons 6274 rootMargin: 'string', 6275 smoothScroll: 'boolean', 6276 target: 'element', 6277 threshold: 'array' 6278 }; 6279 /** 6280 * Class definition 6281 */ 6282 6283 class ScrollSpy extends BaseComponent { 6284 constructor(element, config) { 6285 super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper 6286 6287 this._targetLinks = new Map(); 6288 this._observableSections = new Map(); 6289 this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; 6290 this._activeTarget = null; 6291 this._observer = null; 6292 this._previousScrollData = { 6293 visibleEntryTop: 0, 6294 parentScrollTop: 0 6295 }; 6296 this.refresh(); // initialize 6297 } // Getters 6298 6299 6300 static get Default() { 6301 return Default$1; 6302 } 6303 6304 static get DefaultType() { 6305 return DefaultType$1; 6306 } 6307 6308 static get NAME() { 6309 return NAME$2; 6310 } // Public 6311 6312 6313 refresh() { 6314 this._initializeTargetsAndObservables(); 6315 6316 this._maybeEnableSmoothScroll(); 6317 6318 if (this._observer) { 6319 this._observer.disconnect(); 6320 } else { 6321 this._observer = this._getNewObserver(); 6322 } 6323 6324 for (const section of this._observableSections.values()) { 6325 this._observer.observe(section); 6326 } 6327 } 6328 6329 dispose() { 6330 this._observer.disconnect(); 6331 6332 super.dispose(); 6333 } // Private 6334 6335 6336 _configAfterMerge(config) { 6337 // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case 6338 config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only 6339 6340 config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; 6341 6342 if (typeof config.threshold === 'string') { 6343 config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); 6344 } 6345 6346 return config; 6347 } 6348 6349 _maybeEnableSmoothScroll() { 6350 if (!this._config.smoothScroll) { 6351 return; 6352 } // unregister any previous listeners 6353 6354 6355 EventHandler.off(this._config.target, EVENT_CLICK); 6356 EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { 6357 const observableSection = this._observableSections.get(event.target.hash); 6358 6359 if (observableSection) { 6360 event.preventDefault(); 6361 const root = this._rootElement || window; 6362 const height = observableSection.offsetTop - this._element.offsetTop; 6363 6364 if (root.scrollTo) { 6365 root.scrollTo({ 6366 top: height, 6367 behavior: 'smooth' 6368 }); 6369 return; 6370 } // Chrome 60 doesn't support `scrollTo` 6371 6372 6373 root.scrollTop = height; 6374 } 6375 }); 6376 } 6377 6378 _getNewObserver() { 6379 const options = { 6380 root: this._rootElement, 6381 threshold: this._config.threshold, 6382 rootMargin: this._config.rootMargin 6383 }; 6384 return new IntersectionObserver(entries => this._observerCallback(entries), options); 6385 } // The logic of selection 6386 6387 6388 _observerCallback(entries) { 6389 const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); 6390 6391 const activate = entry => { 6392 this._previousScrollData.visibleEntryTop = entry.target.offsetTop; 6393 6394 this._process(targetElement(entry)); 6395 }; 6396 6397 const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; 6398 const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; 6399 this._previousScrollData.parentScrollTop = parentScrollTop; 6400 6401 for (const entry of entries) { 6402 if (!entry.isIntersecting) { 6403 this._activeTarget = null; 6404 6405 this._clearActiveClass(targetElement(entry)); 6406 6407 continue; 6408 } 6409 6410 const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop 6411 6412 if (userScrollsDown && entryIsLowerThanPrevious) { 6413 activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration 6414 6415 if (!parentScrollTop) { 6416 return; 6417 } 6418 6419 continue; 6420 } // if we are scrolling up, pick the smallest offsetTop 6421 6422 6423 if (!userScrollsDown && !entryIsLowerThanPrevious) { 6424 activate(entry); 6425 } 6426 } 6427 } 6428 6429 _initializeTargetsAndObservables() { 6430 this._targetLinks = new Map(); 6431 this._observableSections = new Map(); 6432 const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); 6433 6434 for (const anchor of targetLinks) { 6435 // ensure that the anchor has an id and is not disabled 6436 if (!anchor.hash || isDisabled(anchor)) { 6437 continue; 6438 } 6439 6440 const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible 6441 6442 if (isVisible(observableSection)) { 6443 this._targetLinks.set(anchor.hash, anchor); 6444 6445 this._observableSections.set(anchor.hash, observableSection); 6446 } 6447 } 6448 } 6449 6450 _process(target) { 6451 if (this._activeTarget === target) { 6452 return; 6453 } 6454 6455 this._clearActiveClass(this._config.target); 6456 6457 this._activeTarget = target; 6458 target.classList.add(CLASS_NAME_ACTIVE$1); 6459 6460 this._activateParents(target); 6461 6462 EventHandler.trigger(this._element, EVENT_ACTIVATE, { 6463 relatedTarget: target 6464 }); 6465 } 6466 6467 _activateParents(target) { 6468 // Activate dropdown parents 6469 if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { 6470 SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); 6471 return; 6472 } 6473 6474 for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { 6475 // Set triggered links parents as active 6476 // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor 6477 for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { 6478 item.classList.add(CLASS_NAME_ACTIVE$1); 6479 } 6480 } 6481 } 6482 6483 _clearActiveClass(parent) { 6484 parent.classList.remove(CLASS_NAME_ACTIVE$1); 6485 const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); 6486 6487 for (const node of activeNodes) { 6488 node.classList.remove(CLASS_NAME_ACTIVE$1); 6489 } 6490 } // Static 6491 6492 6493 static jQueryInterface(config) { 6494 return this.each(function () { 6495 const data = ScrollSpy.getOrCreateInstance(this, config); 6496 6497 if (typeof config !== 'string') { 6498 return; 6499 } 6500 6501 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 6502 throw new TypeError(`No method named "${config}"`); 6503 } 6504 6505 data[config](); 6506 }); 6507 } 6508 6509 } 6510 /** 6511 * Data API implementation 6512 */ 6513 6514 6515 EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { 6516 for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { 6517 ScrollSpy.getOrCreateInstance(spy); 6518 } 6519 }); 6520 /** 6521 * jQuery 6522 */ 6523 6524 defineJQueryPlugin(ScrollSpy); 6525 6526 /** 6527 * -------------------------------------------------------------------------- 6528 * Bootstrap (v5.2.2): tab.js 6529 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6530 * -------------------------------------------------------------------------- 6531 */ 6532 /** 6533 * Constants 6534 */ 6535 6536 const NAME$1 = 'tab'; 6537 const DATA_KEY$1 = 'bs.tab'; 6538 const EVENT_KEY$1 = `.${DATA_KEY$1}`; 6539 const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; 6540 const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; 6541 const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; 6542 const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; 6543 const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; 6544 const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; 6545 const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; 6546 const ARROW_LEFT_KEY = 'ArrowLeft'; 6547 const ARROW_RIGHT_KEY = 'ArrowRight'; 6548 const ARROW_UP_KEY = 'ArrowUp'; 6549 const ARROW_DOWN_KEY = 'ArrowDown'; 6550 const CLASS_NAME_ACTIVE = 'active'; 6551 const CLASS_NAME_FADE$1 = 'fade';
vendor: 5,985 bytes, lines 6552-6749
6552 const CLASS_NAME_SHOW$1 = 'show'; 6553 const CLASS_DROPDOWN = 'dropdown'; 6554 const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; 6555 const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; 6556 const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'; 6557 const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; 6558 const SELECTOR_OUTER = '.nav-item, .list-group-item'; 6559 const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; 6560 const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // todo:v6: could be only `tab` 6561 6562 const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; 6563 const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; 6564 /** 6565 * Class definition 6566 */ 6567 6568 class Tab extends BaseComponent { 6569 constructor(element) { 6570 super(element); 6571 this._parent = this._element.closest(SELECTOR_TAB_PANEL); 6572 6573 if (!this._parent) { 6574 return; // todo: should Throw exception on v6 6575 // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`) 6576 } // Set up initial aria attributes 6577 6578 6579 this._setInitialAttributes(this._parent, this._getChildren()); 6580 6581 EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); 6582 } // Getters 6583 6584 6585 static get NAME() { 6586 return NAME$1; 6587 } // Public 6588 6589 6590 show() { 6591 // Shows this elem and deactivate the active sibling if exists 6592 const innerElem = this._element; 6593 6594 if (this._elemIsActive(innerElem)) { 6595 return; 6596 } // Search for active tab on same parent to deactivate it 6597 6598 6599 const active = this._getActiveElem(); 6600 6601 const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { 6602 relatedTarget: innerElem 6603 }) : null; 6604 const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { 6605 relatedTarget: active 6606 }); 6607 6608 if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { 6609 return; 6610 } 6611 6612 this._deactivate(active, innerElem); 6613 6614 this._activate(innerElem, active); 6615 } // Private 6616 6617 6618 _activate(element, relatedElem) { 6619 if (!element) { 6620 return; 6621 } 6622 6623 element.classList.add(CLASS_NAME_ACTIVE); 6624 6625 this._activate(getElementFromSelector(element)); // Search and activate/show the proper section 6626 6627 6628 const complete = () => { 6629 if (element.getAttribute('role') !== 'tab') { 6630 element.classList.add(CLASS_NAME_SHOW$1); 6631 return; 6632 } 6633 6634 element.removeAttribute('tabindex'); 6635 element.setAttribute('aria-selected', true); 6636 6637 this._toggleDropDown(element, true); 6638 6639 EventHandler.trigger(element, EVENT_SHOWN$1, { 6640 relatedTarget: relatedElem 6641 }); 6642 }; 6643 6644 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 6645 } 6646 6647 _deactivate(element, relatedElem) { 6648 if (!element) { 6649 return; 6650 } 6651 6652 element.classList.remove(CLASS_NAME_ACTIVE); 6653 element.blur(); 6654 6655 this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too 6656 6657 6658 const complete = () => { 6659 if (element.getAttribute('role') !== 'tab') { 6660 element.classList.remove(CLASS_NAME_SHOW$1); 6661 return; 6662 } 6663 6664 element.setAttribute('aria-selected', false); 6665 element.setAttribute('tabindex', '-1'); 6666 6667 this._toggleDropDown(element, false); 6668 6669 EventHandler.trigger(element, EVENT_HIDDEN$1, { 6670 relatedTarget: relatedElem 6671 }); 6672 }; 6673 6674 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 6675 } 6676 6677 _keydown(event) { 6678 if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) { 6679 return; 6680 } 6681 6682 event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page 6683 6684 event.preventDefault(); 6685 const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); 6686 const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true); 6687 6688 if (nextActiveElement) { 6689 nextActiveElement.focus({ 6690 preventScroll: true 6691 }); 6692 Tab.getOrCreateInstance(nextActiveElement).show(); 6693 } 6694 } 6695 6696 _getChildren() { 6697 // collection of inner elements 6698 return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); 6699 } 6700 6701 _getActiveElem() { 6702 return this._getChildren().find(child => this._elemIsActive(child)) || null; 6703 } 6704 6705 _setInitialAttributes(parent, children) { 6706 this._setAttributeIfNotExists(parent, 'role', 'tablist'); 6707 6708 for (const child of children) { 6709 this._setInitialAttributesOnChild(child); 6710 } 6711 } 6712 6713 _setInitialAttributesOnChild(child) { 6714 child = this._getInnerElement(child); 6715 6716 const isActive = this._elemIsActive(child); 6717 6718 const outerElem = this._getOuterElement(child); 6719 6720 child.setAttribute('aria-selected', isActive); 6721 6722 if (outerElem !== child) { 6723 this._setAttributeIfNotExists(outerElem, 'role', 'presentation'); 6724 } 6725 6726 if (!isActive) { 6727 child.setAttribute('tabindex', '-1'); 6728 } 6729 6730 this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too 6731 6732 6733 this._setInitialAttributesOnTargetPanel(child); 6734 } 6735 6736 _setInitialAttributesOnTargetPanel(child) { 6737 const target = getElementFromSelector(child); 6738 6739 if (!target) { 6740 return; 6741 } 6742 6743 this._setAttributeIfNotExists(target, 'role', 'tabpanel'); 6744 6745 if (child.id) { 6746 this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`); 6747 } 6748 } 6749
vendor: 7,109 bytes, lines 6750-7038
6750 _toggleDropDown(element, open) { 6751 const outerElem = this._getOuterElement(element); 6752 6753 if (!outerElem.classList.contains(CLASS_DROPDOWN)) { 6754 return; 6755 } 6756 6757 const toggle = (selector, className) => { 6758 const element = SelectorEngine.findOne(selector, outerElem); 6759 6760 if (element) { 6761 element.classList.toggle(className, open); 6762 } 6763 }; 6764 6765 toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); 6766 toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); 6767 outerElem.setAttribute('aria-expanded', open); 6768 } 6769 6770 _setAttributeIfNotExists(element, attribute, value) { 6771 if (!element.hasAttribute(attribute)) { 6772 element.setAttribute(attribute, value); 6773 } 6774 } 6775 6776 _elemIsActive(elem) { 6777 return elem.classList.contains(CLASS_NAME_ACTIVE); 6778 } // Try to get the inner element (usually the .nav-link) 6779 6780 6781 _getInnerElement(elem) { 6782 return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); 6783 } // Try to get the outer element (usually the .nav-item) 6784 6785 6786 _getOuterElement(elem) { 6787 return elem.closest(SELECTOR_OUTER) || elem; 6788 } // Static 6789 6790 6791 static jQueryInterface(config) { 6792 return this.each(function () { 6793 const data = Tab.getOrCreateInstance(this); 6794 6795 if (typeof config !== 'string') { 6796 return; 6797 } 6798 6799 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 6800 throw new TypeError(`No method named "${config}"`); 6801 } 6802 6803 data[config](); 6804 }); 6805 } 6806 6807 } 6808 /** 6809 * Data API implementation 6810 */ 6811 6812 6813 EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 6814 if (['A', 'AREA'].includes(this.tagName)) { 6815 event.preventDefault(); 6816 } 6817 6818 if (isDisabled(this)) { 6819 return; 6820 } 6821 6822 Tab.getOrCreateInstance(this).show(); 6823 }); 6824 /** 6825 * Initialize on focus 6826 */ 6827 6828 EventHandler.on(window, EVENT_LOAD_DATA_API, () => { 6829 for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { 6830 Tab.getOrCreateInstance(element); 6831 } 6832 }); 6833 /** 6834 * jQuery 6835 */ 6836 6837 defineJQueryPlugin(Tab); 6838 6839 /** 6840 * -------------------------------------------------------------------------- 6841 * Bootstrap (v5.2.2): toast.js 6842 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6843 * -------------------------------------------------------------------------- 6844 */ 6845 /** 6846 * Constants 6847 */ 6848 6849 const NAME = 'toast'; 6850 const DATA_KEY = 'bs.toast'; 6851 const EVENT_KEY = `.${DATA_KEY}`; 6852 const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; 6853 const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; 6854 const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; 6855 const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; 6856 const EVENT_HIDE = `hide${EVENT_KEY}`; 6857 const EVENT_HIDDEN = `hidden${EVENT_KEY}`; 6858 const EVENT_SHOW = `show${EVENT_KEY}`; 6859 const EVENT_SHOWN = `shown${EVENT_KEY}`; 6860 const CLASS_NAME_FADE = 'fade'; 6861 const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility 6862 6863 const CLASS_NAME_SHOW = 'show'; 6864 const CLASS_NAME_SHOWING = 'showing'; 6865 const DefaultType = { 6866 animation: 'boolean', 6867 autohide: 'boolean', 6868 delay: 'number' 6869 }; 6870 const Default = { 6871 animation: true, 6872 autohide: true, 6873 delay: 5000 6874 }; 6875 /** 6876 * Class definition 6877 */ 6878 6879 class Toast extends BaseComponent { 6880 constructor(element, config) { 6881 super(element, config); 6882 this._timeout = null; 6883 this._hasMouseInteraction = false; 6884 this._hasKeyboardInteraction = false; 6885 6886 this._setListeners(); 6887 } // Getters 6888 6889 6890 static get Default() { 6891 return Default; 6892 } 6893 6894 static get DefaultType() { 6895 return DefaultType; 6896 } 6897 6898 static get NAME() { 6899 return NAME; 6900 } // Public 6901 6902 6903 show() { 6904 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); 6905 6906 if (showEvent.defaultPrevented) { 6907 return; 6908 } 6909 6910 this._clearTimeout(); 6911 6912 if (this._config.animation) { 6913 this._element.classList.add(CLASS_NAME_FADE); 6914 } 6915 6916 const complete = () => { 6917 this._element.classList.remove(CLASS_NAME_SHOWING); 6918 6919 EventHandler.trigger(this._element, EVENT_SHOWN); 6920 6921 this._maybeScheduleHide(); 6922 }; 6923 6924 this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated 6925 6926 6927 reflow(this._element); 6928 6929 this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); 6930 6931 this._queueCallback(complete, this._element, this._config.animation); 6932 } 6933 6934 hide() { 6935 if (!this.isShown()) { 6936 return; 6937 } 6938 6939 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); 6940 6941 if (hideEvent.defaultPrevented) { 6942 return; 6943 } 6944 6945 const complete = () => { 6946 this._element.classList.add(CLASS_NAME_HIDE); // @deprecated 6947 6948 6949 this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); 6950 6951 EventHandler.trigger(this._element, EVENT_HIDDEN); 6952 }; 6953 6954 this._element.classList.add(CLASS_NAME_SHOWING); 6955 6956 this._queueCallback(complete, this._element, this._config.animation); 6957 } 6958 6959 dispose() { 6960 this._clearTimeout(); 6961 6962 if (this.isShown()) { 6963 this._element.classList.remove(CLASS_NAME_SHOW); 6964 } 6965 6966 super.dispose(); 6967 } 6968 6969 isShown() { 6970 return this._element.classList.contains(CLASS_NAME_SHOW); 6971 } // Private 6972 6973 6974 _maybeScheduleHide() { 6975 if (!this._config.autohide) { 6976 return; 6977 } 6978 6979 if (this._hasMouseInteraction || this._hasKeyboardInteraction) { 6980 return; 6981 } 6982 6983 this._timeout = setTimeout(() => { 6984 this.hide(); 6985 }, this._config.delay); 6986 } 6987 6988 _onInteraction(event, isInteracting) { 6989 switch (event.type) { 6990 case 'mouseover': 6991 case 'mouseout': 6992 { 6993 this._hasMouseInteraction = isInteracting; 6994 break; 6995 } 6996 6997 case 'focusin': 6998 case 'focusout': 6999 { 7000 this._hasKeyboardInteraction = isInteracting; 7001 break; 7002 } 7003 } 7004 7005 if (isInteracting) { 7006 this._clearTimeout(); 7007 7008 return; 7009 } 7010 7011 const nextElement = event.relatedTarget; 7012 7013 if (this._element === nextElement || this._element.contains(nextElement)) { 7014 return; 7015 } 7016 7017 this._maybeScheduleHide(); 7018 } 7019 7020 _setListeners() { 7021 EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); 7022 EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); 7023 EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); 7024 EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); 7025 } 7026 7027 _clearTimeout() { 7028 clearTimeout(this._timeout); 7029 this._timeout = null; 7030 } // Static 7031 7032 7033 static jQueryInterface(config) { 7034 return this.each(function () { 7035 const data = Toast.getOrCreateInstance(this, config); 7036 7037 if (typeof config === 'string') { 7038 if (typeof data[config] === 'undefined') {
vendor: 8,666 bytes, lines 7039-7092
7039 throw new TypeError(`No method named "${config}"`); 7040 } 7041 7042 data[config](this); 7043 } 7044 }); 7045 } 7046 7047 } 7048 /** 7049 * Data API implementation 7050 */ 7051 7052 7053 enableDismissTrigger(Toast); 7054 /** 7055 * jQuery 7056 */ 7057 7058 defineJQueryPlugin(Toast); 7059 7060 /** 7061 * -------------------------------------------------------------------------- 7062 * Bootstrap (v5.2.2): index.umd.js 7063 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7064 * -------------------------------------------------------------------------- 7065 */ 7066 const index_umd = { 7067 Alert, 7068 Button, 7069 Carousel, 7070 Collapse, 7071 Dropdown, 7072 Modal, 7073 Offcanvas, 7074 Popover, 7075 ScrollSpy, 7076 Tab, 7077 Toast, 7078 Tooltip 7079 }; 7080 7081 return index_umd; 7082 7083})); 7084//# sourceMappingURL=bootstrap.bundle.js.map 7085 7086/*! 7087 * clipboard.js v2.0.8 7088 * https://clipboardjs.com/ 7089 * 7090 * Licensed MIT © Zeno Rocha 7091 */ 7092!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body},i="";return"string"==typeof t?(e=t,n="rtl"===document.documentElement.getAttribute("dir"),(o=document.createElement("textarea")).style.fontSize="12pt",o.style.border="0",o.style.padding="0",o.style.margin="0",o.style.position="absolute",o.style[n?"right":"left"]="-9999px",n=window.pageYOffset||document.documentElement.scrollTop,o.style.top="".concat(n,"px"),o.setAttribute("readonly",""),o.value=e,o=o,r.container.appendChild(o),i=c()(o),a("copy"),o.remove()):(i=c()(t),a("copy")),i};function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var s=function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=t.action,n=void 0===e?"copy":e,o=t.container,e=t.target,t=t.text;if("copy"!==n&&"cut"!==n)throw new Error('Invalid "action" value, use either "copy" or "cut"');if(void 0!==e){if(!e||"object"!==r(e)||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===n&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===n&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes')}return t?l(t,{container:o}):e?"cut"===n?f(e):l(e,{container:o}):void 0};function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function y(t,e){return(y=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(n){var o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}();return function(){var t,e=m(n);return t=o?(t=m(this).constructor,Reflect.construct(e,arguments,t)):e.apply(this,arguments),e=this,!(t=t)||"object"!==d(t)&&"function"!=typeof t?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}}function m(t){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function v(t,e){t="data-clipboard-".concat(t);if(e.hasAttribute(t))return e.getAttribute(t)}var o=function(){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&y(t,e)}(r,i());var t,e,n,o=h(r);function r(t,e){var n;return function(t){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}(this),(n=o.call(this)).resolveOptions(e),n.listenClick(t),n}return t=r,n=[{key:"copy",value:function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{container:document.body};return l(t,e)}},{key:"cut",value:function(t){return f(t)}},{key:"isSupported",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof t?[t]:t,e=!!document.queryCommandSupported;return t.forEach(function(t){e=e&&!!document.queryCommandSupported(t)}),e}}],(e=[{key:"resolveOptions",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=u()(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget,t=s({action:this.action(e),container:this.container,target:this.target(e),text:this.text(e)});this.emit(t?"success":"error",{action:this.action,text:t,trigger:e,clearSelection:function(){e&&e.focus(),document.activeElement.blur(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(t){return v("action",t)}},{key:"defaultTarget",value:function(t){t=v("target",t);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(t){return v("text",t)}},{key:"destroy",value:function(){this.listener.destroy()}}])&&p(t.prototype,e),n&&p(t,n),r}()},828:function(t){var e;"undefined"==typeof Element||Element.prototype.matches||((e=Element.prototype).matches=e.matchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector),t.exports=function(t,e){for(;t&&9!==t.nodeType;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},438:function(t,e,n){var u=n(828);function i(t,e,n,o,r){var i=function(e,n,t,o){return function(t){t.delegateTarget=u(t.target,n),t.delegateTarget&&o.call(e,t)}}.apply(this,arguments);return t.addEventListener(n,i,r),{destroy:function(){t.removeEventListener(n,i,r)}}}t.exports=function(t,e,n,o,r){return"function"==typeof t.addEventListener?i.apply(null,arguments):"function"==typeof n?i.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return i(t,e,n,o,r)}))}},879:function(t,n){n.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},n.nodeList=function(t){var e=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===e||"[object HTMLCollection]"===e)&&"length"in t&&(0===t.length||n.node(t[0]))},n.string=function(t){return"string"==typeof t||t instanceof String},n.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},370:function(t,e,n){var f=n(879),l=n(438);t.exports=function(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!f.string(e))throw new TypeError("Second argument must be a String");if(!f.fn(n))throw new TypeError("Third argument must be a Function");if(f.node(t))return c=e,a=n,(u=t).addEventListener(c,a),{destroy:function(){u.removeEventListener(c,a)}};if(f.nodeList(t))return o=t,r=e,i=n,Array.prototype.forEach.call(o,function(t){t.addEventListener(r,i)}),{destroy:function(){Array.prototype.forEach.call(o,function(t){t.removeEventListener(r,i)})}};if(f.string(t))return t=t,e=e,n=n,l(document.body,t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var o,r,i,u,c,a}},817:function(t){t.exports=function(t){var e,n="SELECT"===t.nodeName?(t.focus(),t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((e=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),e||t.removeAttribute("readonly"),t.value):(t.hasAttribute("contenteditable")&&t.focu
7092s(),n=window.getSelection(),(e=document.createRange()).selectNodeContents(t),n.removeAllRanges(),n.addRange(e),n.toString());return n}},279:function(t){function e(){}e.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){var o=this;function r(){o.off(t,r),e.apply(n,arguments)}return r._=e,this.on(t,r,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,u=o.length;i<u;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=e,t.exports.TinyEmitter=e}},r={},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,{a:e}),e},o.d=function(t,e){for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o(686).default;function o(t){if(r[t])return r[t].exports;var e=r[t]={exports:{}};return n[t](e,e.exports,o),e.exports}var n,r}); 7093/*! 7094 * Counter-Up2 v2.0.2 7095 * https://github.com/bfintal/Counter-Up2 7096 */ 7097!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.counterUp=t():e.counterUp=t()}(self,(function(){return(()=>{"use strict";var e={d:(t,n)=>{for(var o in n)e.o(n,o)&&!e.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:n[o]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{default:()=>n,divideNumbers:()=>r});const n=(e,t={})=>{const{action:n="start",duration:i=1e3,delay:u=16}=t;if("stop"===n)return void o(e);if(o(e),!/[0-9]/.test(e.innerHTML))return;const l=r(e.innerHTML,{duration:i||e.getAttribute("data-duration"),delay:u||e.getAttribute("data-delay")});e._countUpOrigInnerHTML=e.innerHTML,e.innerHTML=l[0]||" ",e.style.visibility="visible";const c=function(){e.innerHTML=l.shift()||" ",l.length?(clearTimeout(e.countUpTimeout),e.countUpTimeout=setTimeout(c,u)):e._countUpOrigInnerHTML=void 0};e.countUpTimeout=setTimeout(c,u)},o=e=>{clearTimeout(e.countUpTimeout),e._countUpOrigInnerHTML&&(e.innerHTML=e._countUpOrigInnerHTML,e._countUpOrigInnerHTML=void 0),e.style.visibility=""},r=(e,t={})=>{const{duration:n=1e3,delay:o=16}=t,r=n/o,i=e.toString().split(/(<[^>]+>|[0-9.][,.0-9]*[0-9]*)/),u=[];for(let e=0;e<r;e++)u.push("");for(let e=0;e<i.length;e++)if(/([0-9.][,.0-9]*[0-9]*)/.test(i[e])&&!/<[^>]+>/.test(i[e])){let t=i[e];const n=[...t.matchAll(/[.,]/g)].map((e=>({char:e[0],i:t.length-e.index-1}))).sort(((e,t)=>e.i-t.i));t=t.replace(/[.,]/g,"");let o=u.length-1;for(let e=r;e>=1;e--){let i=parseInt(t/r*e,10);i=n.reduce(((e,{char:t,i:n})=>e.length<=n?e:e.slice(0,-n)+t+e.slice(-n)),i.toString()),u[o--]+=i}}else for(let t=0;t<r;t++)u[t]+=i[e];return u[u.length]=e.toString(),u};return t})()})); 7098/*! 7099 * GLightbox v3.2.0 7100 * https://github.com/biati-digital/glightbox 7101 */ 7102(function (global, factory) { 7103 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : 7104 typeof define === 'function' && define.amd ? define(factory) : 7105 (global = global || self, global.GLightbox = factory()); 7106}(this, (function () { 'use strict'; 7107 7108 function _typeof(obj) { 7109 "@babel/helpers - typeof"; 7110 7111 if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { 7112 _typeof = function (obj) { 7113 return typeof obj; 7114 }; 7115 } else { 7116 _typeof = function (obj) { 7117 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 7118 }; 7119 } 7120 7121 return _typeof(obj); 7122 } 7123 7124 function _classCallCheck(instance, Constructor) { 7125 if (!(instance instanceof Constructor)) { 7126 throw new TypeError("Cannot call a class as a function"); 7127 } 7128 } 7129 7130 function _defineProperties(target, props) { 7131 for (var i = 0; i < props.length; i++) { 7132 var descriptor = props[i]; 7133 descriptor.enumerable = descriptor.enumerable || false; 7134 descriptor.configurable = true; 7135 if ("value" in descriptor) descriptor.writable = true; 7136 Object.defineProperty(target, descriptor.key, descriptor); 7137 } 7138 } 7139 7140 function _createClass(Constructor, protoProps, staticProps) { 7141 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 7142 if (staticProps) _defineProperties(Constructor, staticProps); 7143 return Constructor; 7144 } 7145 7146 var uid = Date.now(); 7147 function extend() { 7148 var extended = {}; 7149 var deep = true; 7150 var i = 0; 7151 var length = arguments.length; 7152 7153 if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') { 7154 deep = arguments[0]; 7155 i++; 7156 } 7157 7158 var merge = function merge(obj) { 7159 for (var prop in obj) { 7160 if (Object.prototype.hasOwnProperty.call(obj, prop)) { 7161 if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') { 7162 extended[prop] = extend(true, extended[prop], obj[prop]); 7163 } else { 7164 extended[prop] = obj[prop]; 7165 } 7166 } 7167 } 7168 }; 7169 7170 for (; i < length; i++) { 7171 var obj = arguments[i]; 7172 merge(obj); 7173 } 7174 7175 return extended; 7176 } 7177 function each(collection, callback) { 7178 if (isNode(collection) || collection === window || collection === document) { 7179 collection = [collection]; 7180 } 7181 7182 if (!isArrayLike(collection) && !isObject(collection)) { 7183 collection = [collection]; 7184 } 7185 7186 if (size(collection) == 0) { 7187 return; 7188 } 7189 7190 if (isArrayLike(collection) && !isObject(collection)) { 7191 var l = collection.length, 7192 i = 0; 7193 7194 for (; i < l; i++) { 7195 if (callback.call(collection[i], collection[i], i, collection) === false) { 7196 break; 7197 } 7198 } 7199 } else if (isObject(collection)) { 7200 for (var key in collection) { 7201 if (has(collection, key)) { 7202 if (callback.call(collection[key], collection[key], key, collection) === false) { 7203 break; 7204 } 7205 } 7206 } 7207 } 7208 } 7209 function getNodeEvents(node) { 7210 var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; 7211 var fn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 7212 var cache = node[uid] = node[uid] || []; 7213 var data = { 7214 all: cache, 7215 evt: null, 7216 found: null 7217 }; 7218 7219 if (name && fn && size(cache) > 0) { 7220 each(cache, function (cl, i) { 7221 if (cl.eventName == name && cl.fn.toString() == fn.toString()) { 7222 data.found = true; 7223 data.evt = i; 7224 return false;
vendor: 105,381 bytes, lines 7225-10735
7225 } 7226 }); 7227 } 7228 7229 return data; 7230 } 7231 function addEvent(eventName) { 7232 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, 7233 onElement = _ref.onElement, 7234 withCallback = _ref.withCallback, 7235 _ref$avoidDuplicate = _ref.avoidDuplicate, 7236 avoidDuplicate = _ref$avoidDuplicate === void 0 ? true : _ref$avoidDuplicate, 7237 _ref$once = _ref.once, 7238 once = _ref$once === void 0 ? false : _ref$once, 7239 _ref$useCapture = _ref.useCapture, 7240 useCapture = _ref$useCapture === void 0 ? false : _ref$useCapture; 7241 7242 var thisArg = arguments.length > 2 ? arguments[2] : undefined; 7243 var element = onElement || []; 7244 7245 if (isString(element)) { 7246 element = document.querySelectorAll(element); 7247 } 7248 7249 function handler(event) { 7250 if (isFunction(withCallback)) { 7251 withCallback.call(thisArg, event, this); 7252 } 7253 7254 if (once) { 7255 handler.destroy(); 7256 } 7257 } 7258 7259 handler.destroy = function () { 7260 each(element, function (el) { 7261 var events = getNodeEvents(el, eventName, handler); 7262 7263 if (events.found) { 7264 events.all.splice(events.evt, 1); 7265 } 7266 7267 if (el.removeEventListener) { 7268 el.removeEventListener(eventName, handler, useCapture); 7269 } 7270 }); 7271 }; 7272 7273 each(element, function (el) { 7274 var events = getNodeEvents(el, eventName, handler); 7275 7276 if (el.addEventListener && avoidDuplicate && !events.found || !avoidDuplicate) { 7277 el.addEventListener(eventName, handler, useCapture); 7278 events.all.push({ 7279 eventName: eventName, 7280 fn: handler 7281 }); 7282 } 7283 }); 7284 return handler; 7285 } 7286 function addClass(node, name) { 7287 each(name.split(' '), function (cl) { 7288 return node.classList.add(cl); 7289 }); 7290 } 7291 function removeClass(node, name) { 7292 each(name.split(' '), function (cl) { 7293 return node.classList.remove(cl); 7294 }); 7295 } 7296 function hasClass(node, name) { 7297 return node.classList.contains(name); 7298 } 7299 function closest(elem, selector) { 7300 while (elem !== document.body) { 7301 elem = elem.parentElement; 7302 7303 if (!elem) { 7304 return false; 7305 } 7306 7307 var matches = typeof elem.matches == 'function' ? elem.matches(selector) : elem.msMatchesSelector(selector); 7308 7309 if (matches) { 7310 return elem; 7311 } 7312 } 7313 } 7314 function animateElement(element) { 7315 var animation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 7316 var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 7317 7318 if (!element || animation === '') { 7319 return false; 7320 } 7321 7322 if (animation === 'none') { 7323 if (isFunction(callback)) { 7324 callback(); 7325 } 7326 7327 return false; 7328 } 7329 7330 var animationEnd = whichAnimationEvent(); 7331 var animationNames = animation.split(' '); 7332 each(animationNames, function (name) { 7333 addClass(element, 'g' + name); 7334 }); 7335 addEvent(animationEnd, { 7336 onElement: element, 7337 avoidDuplicate: false, 7338 once: true, 7339 withCallback: function withCallback(event, target) { 7340 each(animationNames, function (name) { 7341 removeClass(target, 'g' + name); 7342 }); 7343 7344 if (isFunction(callback)) { 7345 callback(); 7346 } 7347 } 7348 }); 7349 } 7350 function cssTransform(node) { 7351 var translate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 7352 7353 if (translate === '') { 7354 node.style.webkitTransform = ''; 7355 node.style.MozTransform = ''; 7356 node.style.msTransform = ''; 7357 node.style.OTransform = ''; 7358 node.style.transform = ''; 7359 return false; 7360 } 7361 7362 node.style.webkitTransform = translate; 7363 node.style.MozTransform = translate; 7364 node.style.msTransform = translate; 7365 node.style.OTransform = translate; 7366 node.style.transform = translate; 7367 } 7368 function show(element) { 7369 element.style.display = 'block'; 7370 } 7371 function hide(element) { 7372 element.style.display = 'none'; 7373 } 7374 function createHTML(htmlStr) { 7375 var frag = document.createDocumentFragment(), 7376 temp = document.createElement('div'); 7377 temp.innerHTML = htmlStr; 7378 7379 while (temp.firstChild) { 7380 frag.appendChild(temp.firstChild); 7381 } 7382 7383 return frag; 7384 } 7385 function windowSize() { 7386 return { 7387 width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, 7388 height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight 7389 }; 7390 } 7391 function whichAnimationEvent() { 7392 var t, 7393 el = document.createElement('fakeelement'); 7394 var animations = { 7395 animation: 'animationend', 7396 OAnimation: 'oAnimationEnd', 7397 MozAnimation: 'animationend', 7398 WebkitAnimation: 'webkitAnimationEnd' 7399 }; 7400 7401 for (t in animations) { 7402 if (el.style[t] !== undefined) { 7403 return animations[t]; 7404 } 7405 } 7406 } 7407 function whichTransitionEvent() { 7408 var t, 7409 el = document.createElement('fakeelement'); 7410 var transitions = { 7411 transition: 'transitionend', 7412 OTransition: 'oTransitionEnd', 7413 MozTransition: 'transitionend', 7414 WebkitTransition: 'webkitTransitionEnd' 7415 }; 7416 7417 for (t in transitions) { 7418 if (el.style[t] !== undefined) { 7419 return transitions[t]; 7420 } 7421 } 7422 } 7423 function createIframe(config) { 7424 var url = config.url, 7425 allow = config.allow, 7426 callback = config.callback, 7427 appendTo = config.appendTo; 7428 var iframe = document.createElement('iframe'); 7429 iframe.className = 'vimeo-video gvideo'; 7430 iframe.src = url; 7431 iframe.style.width = '100%'; 7432 iframe.style.height = '100%'; 7433 7434 if (allow) { 7435 iframe.setAttribute('allow', allow); 7436 } 7437 7438 iframe.onload = function () { 7439 iframe.onload = null; 7440 addClass(iframe, 'node-ready'); 7441 7442 if (isFunction(callback)) { 7443 callback(); 7444 } 7445 }; 7446 7447 if (appendTo) { 7448 appendTo.appendChild(iframe); 7449 } 7450 7451 return iframe; 7452 } 7453 function waitUntil(check, onComplete, delay, timeout) { 7454 if (check()) { 7455 onComplete(); 7456 return; 7457 } 7458 7459 if (!delay) { 7460 delay = 100; 7461 } 7462 7463 var timeoutPointer; 7464 var intervalPointer = setInterval(function () { 7465 if (!check()) { 7466 return; 7467 } 7468 7469 clearInterval(intervalPointer); 7470 7471 if (timeoutPointer) { 7472 clearTimeout(timeoutPointer); 7473 } 7474 7475 onComplete(); 7476 }, delay); 7477 7478 if (timeout) { 7479 timeoutPointer = setTimeout(function () { 7480 clearInterval(intervalPointer); 7481 }, timeout); 7482 } 7483 } 7484 function injectAssets(url, waitFor, callback) { 7485 if (isNil(url)) { 7486 console.error('Inject assets error'); 7487 return; 7488 } 7489 7490 if (isFunction(waitFor)) { 7491 callback = waitFor; 7492 waitFor = false; 7493 } 7494 7495 if (isString(waitFor) && waitFor in window) { 7496 if (isFunction(callback)) { 7497 callback(); 7498 } 7499 7500 return; 7501 } 7502 7503 var found; 7504 7505 if (url.indexOf('.css') !== -1) { 7506 found = document.querySelectorAll('link[href="' + url + '"]'); 7507 7508 if (found && found.length > 0) { 7509 if (isFunction(callback)) { 7510 callback(); 7511 } 7512 7513 return; 7514 } 7515 7516 var head = document.getElementsByTagName('head')[0]; 7517 var headStyles = head.querySelectorAll('link[rel="stylesheet"]'); 7518 var link = document.createElement('link'); 7519 link.rel = 'stylesheet'; 7520 link.type = 'text/css'; 7521 link.href = url; 7522 link.media = 'all'; 7523 7524 if (headStyles) { 7525 head.insertBefore(link, headStyles[0]); 7526 } else { 7527 head.appendChild(link); 7528 } 7529 7530 if (isFunction(callback)) { 7531 callback(); 7532 } 7533 7534 return; 7535 } 7536 7537 found = document.querySelectorAll('script[src="' + url + '"]'); 7538 7539 if (found && found.length > 0) { 7540 if (isFunction(callback)) { 7541 if (isString(waitFor)) { 7542 waitUntil(function () { 7543 return typeof window[waitFor] !== 'undefined'; 7544 }, function () { 7545 callback(); 7546 }); 7547 return false; 7548 } 7549 7550 callback(); 7551 } 7552 7553 return; 7554 } 7555 7556 var script = document.createElement('script'); 7557 script.type = 'text/javascript'; 7558 script.src = url; 7559 7560 script.onload = function () { 7561 if (isFunction(callback)) { 7562 if (isString(waitFor)) { 7563 waitUntil(function () { 7564 return typeof window[waitFor] !== 'undefined'; 7565 }, function () { 7566 callback(); 7567 }); 7568 return false; 7569 } 7570 7571 callback(); 7572 } 7573 }; 7574 7575 document.body.appendChild(script); 7576 } 7577 function isMobile() { 7578 return 'navigator' in window && window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i); 7579 } 7580 function isTouch() { 7581 return isMobile() !== null || document.createTouch !== undefined || 'ontouchstart' in window || 'onmsgesturechange' in window || navigator.msMaxTouchPoints; 7582 } 7583 function isFunction(f) { 7584 return typeof f === 'function'; 7585 } 7586 function isString(s) { 7587 return typeof s === 'string'; 7588 } 7589 function isNode(el) { 7590 return !!(el && el.nodeType && el.nodeType == 1); 7591 } 7592 function isArray(ar) { 7593 return Array.isArray(ar); 7594 } 7595 function isArrayLike(ar) { 7596 return ar && ar.length && isFinite(ar.length); 7597 } 7598 function isObject(o) { 7599 var type = _typeof(o); 7600 7601 return type === 'object' && o != null && !isFunction(o) && !isArray(o); 7602 } 7603 function isNil(o) { 7604 return o == null; 7605 } 7606 function has(obj, key) { 7607 return obj !== null && hasOwnProperty.call(obj, key); 7608 } 7609 function size(o) { 7610 if (isObject(o)) { 7611 if (o.keys) { 7612 return o.keys().length; 7613 } 7614 7615 var l = 0; 7616 7617 for (var k in o) { 7618 if (has(o, k)) { 7619 l++; 7620 } 7621 } 7622 7623 return l; 7624 } else { 7625 return o.length; 7626 } 7627 } 7628 function isNumber(n) { 7629 return !isNaN(parseFloat(n)) && isFinite(n); 7630 } 7631 7632 function getNextFocusElement() { 7633 var current = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; 7634 var btns = document.querySelectorAll('.gbtn[data-taborder]:not(.disabled)'); 7635 7636 if (!btns.length) { 7637 return false; 7638 } 7639 7640 if (btns.length == 1) { 7641 return btns[0]; 7642 } 7643 7644 if (typeof current == 'string') { 7645 current = parseInt(current); 7646 } 7647 7648 var orders = []; 7649 each(btns, function (btn) { 7650 orders.push(btn.getAttribute('data-taborder')); 7651 }); 7652 var highestOrder = Math.max.apply(Math, orders.map(function (order) { 7653 return parseInt(order); 7654 })); 7655 var newIndex = current < 0 ? 1 : current + 1; 7656 7657 if (newIndex > highestOrder) { 7658 newIndex = '1'; 7659 } 7660 7661 var nextOrders = orders.filter(function (el) { 7662 return el >= parseInt(newIndex); 7663 }); 7664 var nextFocus = nextOrders.sort()[0]; 7665 return document.querySelector(".gbtn[data-taborder=\"".concat(nextFocus, "\"]")); 7666 } 7667 7668 function keyboardNavigation(instance) { 7669 if (instance.events.hasOwnProperty('keyboard')) { 7670 return false; 7671 } 7672 7673 instance.events['keyboard'] = addEvent('keydown', { 7674 onElement: window, 7675 withCallback: function withCallback(event, target) { 7676 event = event || window.event; 7677 var key = event.keyCode; 7678 7679 if (key == 9) { 7680 var focusedButton = document.querySelector('.gbtn.focused'); 7681 7682 if (!focusedButton) { 7683 var activeElement = document.activeElement && document.activeElement.nodeName ? document.activeElement.nodeName.toLocaleLowerCase() : false; 7684 7685 if (activeElement == 'input' || activeElement == 'textarea' || activeElement == 'button') { 7686 return; 7687 } 7688 } 7689 7690 event.preventDefault(); 7691 var btns = document.querySelectorAll('.gbtn[data-taborder]'); 7692 7693 if (!btns || btns.length <= 0) { 7694 return; 7695 } 7696 7697 if (!focusedButton) { 7698 var first = getNextFocusElement(); 7699 7700 if (first) { 7701 first.focus(); 7702 addClass(first, 'focused'); 7703 } 7704 7705 return; 7706 } 7707 7708 var currentFocusOrder = focusedButton.getAttribute('data-taborder'); 7709 var nextFocus = getNextFocusElement(currentFocusOrder); 7710 removeClass(focusedButton, 'focused'); 7711 7712 if (nextFocus) { 7713 nextFocus.focus(); 7714 addClass(nextFocus, 'focused'); 7715 } 7716 } 7717 7718 if (key == 39) { 7719 instance.nextSlide(); 7720 } 7721 7722 if (key == 37) { 7723 instance.prevSlide(); 7724 } 7725 7726 if (key == 27) { 7727 instance.close(); 7728 } 7729 } 7730 }); 7731 } 7732 7733 function getLen(v) { 7734 return Math.sqrt(v.x * v.x + v.y * v.y); 7735 } 7736 7737 function dot(v1, v2) { 7738 return v1.x * v2.x + v1.y * v2.y; 7739 } 7740 7741 function getAngle(v1, v2) { 7742 var mr = getLen(v1) * getLen(v2); 7743 7744 if (mr === 0) { 7745 return 0; 7746 } 7747 7748 var r = dot(v1, v2) / mr; 7749 7750 if (r > 1) { 7751 r = 1; 7752 } 7753 7754 return Math.acos(r); 7755 } 7756 7757 function cross(v1, v2) { 7758 return v1.x * v2.y - v2.x * v1.y; 7759 } 7760 7761 function getRotateAngle(v1, v2) { 7762 var angle = getAngle(v1, v2); 7763 7764 if (cross(v1, v2) > 0) { 7765 angle *= -1; 7766 } 7767 7768 return angle * 180 / Math.PI; 7769 } 7770 7771 var EventsHandlerAdmin = function () { 7772 function EventsHandlerAdmin(el) { 7773 _classCallCheck(this, EventsHandlerAdmin); 7774 7775 this.handlers = []; 7776 this.el = el; 7777 } 7778 7779 _createClass(EventsHandlerAdmin, [{ 7780 key: "add", 7781 value: function add(handler) { 7782 this.handlers.push(handler); 7783 } 7784 }, { 7785 key: "del", 7786 value: function del(handler) { 7787 if (!handler) { 7788 this.handlers = []; 7789 } 7790 7791 for (var i = this.handlers.length; i >= 0; i--) { 7792 if (this.handlers[i] === handler) { 7793 this.handlers.splice(i, 1); 7794 } 7795 } 7796 } 7797 }, { 7798 key: "dispatch", 7799 value: function dispatch() { 7800 for (var i = 0, len = this.handlers.length; i < len; i++) { 7801 var handler = this.handlers[i]; 7802 7803 if (typeof handler === 'function') { 7804 handler.apply(this.el, arguments); 7805 } 7806 } 7807 } 7808 }]); 7809 7810 return EventsHandlerAdmin; 7811 }(); 7812 7813 function wrapFunc(el, handler) { 7814 var EventshandlerAdmin = new EventsHandlerAdmin(el); 7815 EventshandlerAdmin.add(handler); 7816 return EventshandlerAdmin; 7817 } 7818 7819 var TouchEvents = function () { 7820 function TouchEvents(el, option) { 7821 _classCallCheck(this, TouchEvents); 7822 7823 this.element = typeof el == 'string' ? document.querySelector(el) : el; 7824 this.start = this.start.bind(this); 7825 this.move = this.move.bind(this); 7826 this.end = this.end.bind(this); 7827 this.cancel = this.cancel.bind(this); 7828 this.element.addEventListener('touchstart', this.start, false); 7829 this.element.addEventListener('touchmove', this.move, false); 7830 this.element.addEventListener('touchend', this.end, false); 7831 this.element.addEventListener('touchcancel', this.cancel, false); 7832 this.preV = { 7833 x: null, 7834 y: null 7835 }; 7836 this.pinchStartLen = null; 7837 this.zoom = 1; 7838 this.isDoubleTap = false; 7839 7840 var noop = function noop() {}; 7841 7842 this.rotate = wrapFunc(this.element, option.rotate || noop); 7843 this.touchStart = wrapFunc(this.element, option.touchStart || noop); 7844 this.multipointStart = wrapFunc(this.element, option.multipointStart || noop); 7845 this.multipointEnd = wrapFunc(this.element, option.multipointEnd || noop); 7846 this.pinch = wrapFunc(this.element, option.pinch || noop); 7847 this.swipe = wrapFunc(this.element, option.swipe || noop); 7848 this.tap = wrapFunc(this.element, option.tap || noop); 7849 this.doubleTap = wrapFunc(this.element, option.doubleTap || noop); 7850 this.longTap = wrapFunc(this.element, option.longTap || noop); 7851 this.singleTap = wrapFunc(this.element, option.singleTap || noop); 7852 this.pressMove = wrapFunc(this.element, option.pressMove || noop); 7853 this.twoFingerPressMove = wrapFunc(this.element, option.twoFingerPressMove || noop); 7854 this.touchMove = wrapFunc(this.element, option.touchMove || noop); 7855 this.touchEnd = wrapFunc(this.element, option.touchEnd || noop); 7856 this.touchCancel = wrapFunc(this.element, option.touchCancel || noop); 7857 this.translateContainer = this.element; 7858 this._cancelAllHandler = this.cancelAll.bind(this); 7859 window.addEventListener('scroll', this._cancelAllHandler); 7860 this.delta = null; 7861 this.last = null; 7862 this.now = null; 7863 this.tapTimeout = null; 7864 this.singleTapTimeout = null; 7865 this.longTapTimeout = null; 7866 this.swipeTimeout = null; 7867 this.x1 = this.x2 = this.y1 = this.y2 = null; 7868 this.preTapPosition = { 7869 x: null, 7870 y: null 7871 }; 7872 } 7873 7874 _createClass(TouchEvents, [{ 7875 key: "start", 7876 value: function start(evt) { 7877 if (!evt.touches) { 7878 return; 7879 } 7880 7881 var ignoreDragFor = ['a', 'button', 'input']; 7882 7883 if (evt.target && evt.target.nodeName && ignoreDragFor.indexOf(evt.target.nodeName.toLowerCase()) >= 0) { 7884 console.log('ignore drag for this touched element', evt.target.nodeName.toLowerCase()); 7885 return; 7886 } 7887 7888 this.now = Date.now(); 7889 this.x1 = evt.touches[0].pageX; 7890 this.y1 = evt.touches[0].pageY; 7891 this.delta = this.now - (this.last || this.now); 7892 this.touchStart.dispatch(evt, this.element); 7893 7894 if (this.preTapPosition.x !== null) { 7895 this.isDoubleTap = this.delta > 0 && this.delta <= 250 && Math.abs(this.preTapPosition.x - this.x1) < 30 && Math.abs(this.preTapPosition.y - this.y1) < 30; 7896 7897 if (this.isDoubleTap) { 7898 clearTimeout(this.singleTapTimeout); 7899 } 7900 } 7901 7902 this.preTapPosition.x = this.x1; 7903 this.preTapPosition.y = this.y1; 7904 this.last = this.now; 7905 var preV = this.preV, 7906 len = evt.touches.length; 7907 7908 if (len > 1) { 7909 this._cancelLongTap(); 7910 7911 this._cancelSingleTap(); 7912 7913 var v = { 7914 x: evt.touches[1].pageX - this.x1, 7915 y: evt.touches[1].pageY - this.y1 7916 }; 7917 preV.x = v.x; 7918 preV.y = v.y; 7919 this.pinchStartLen = getLen(preV); 7920 this.multipointStart.dispatch(evt, this.element); 7921 } 7922 7923 this._preventTap = false; 7924 this.longTapTimeout = setTimeout(function () { 7925 this.longTap.dispatch(evt, this.element); 7926 this._preventTap = true; 7927 }.bind(this), 750); 7928 } 7929 }, { 7930 key: "move", 7931 value: function move(evt) { 7932 if (!evt.touches) { 7933 return; 7934 } 7935 7936 var preV = this.preV, 7937 len = evt.touches.length, 7938 currentX = evt.touches[0].pageX, 7939 currentY = evt.touches[0].pageY; 7940 this.isDoubleTap = false; 7941 7942 if (len > 1) { 7943 var sCurrentX = evt.touches[1].pageX, 7944 sCurrentY = evt.touches[1].pageY; 7945 var v = { 7946 x: evt.touches[1].pageX - currentX, 7947 y: evt.touches[1].pageY - currentY 7948 }; 7949 7950 if (preV.x !== null) { 7951 if (this.pinchStartLen > 0) { 7952 evt.zoom = getLen(v) / this.pinchStartLen; 7953 this.pinch.dispatch(evt, this.element); 7954 } 7955 7956 evt.angle = getRotateAngle(v, preV); 7957 this.rotate.dispatch(evt, this.element); 7958 } 7959 7960 preV.x = v.x; 7961 preV.y = v.y; 7962 7963 if (this.x2 !== null && this.sx2 !== null) { 7964 evt.deltaX = (currentX - this.x2 + sCurrentX - this.sx2) / 2; 7965 evt.deltaY = (currentY - this.y2 + sCurrentY - this.sy2) / 2; 7966 } else { 7967 evt.deltaX = 0; 7968 evt.deltaY = 0; 7969 } 7970 7971 this.twoFingerPressMove.dispatch(evt, this.element); 7972 this.sx2 = sCurrentX; 7973 this.sy2 = sCurrentY; 7974 } else { 7975 if (this.x2 !== null) { 7976 evt.deltaX = currentX - this.x2; 7977 evt.deltaY = currentY - this.y2; 7978 var movedX = Math.abs(this.x1 - this.x2), 7979 movedY = Math.abs(this.y1 - this.y2); 7980 7981 if (movedX > 10 || movedY > 10) { 7982 this._preventTap = true; 7983 } 7984 } else { 7985 evt.deltaX = 0; 7986 evt.deltaY = 0; 7987 } 7988 7989 this.pressMove.dispatch(evt, this.element); 7990 } 7991 7992 this.touchMove.dispatch(evt, this.element); 7993 7994 this._cancelLongTap(); 7995 7996 this.x2 = currentX; 7997 this.y2 = currentY; 7998 7999 if (len > 1) { 8000 evt.preventDefault(); 8001 } 8002 } 8003 }, { 8004 key: "end", 8005 value: function end(evt) { 8006 if (!evt.changedTouches) { 8007 return; 8008 } 8009 8010 this._cancelLongTap(); 8011 8012 var self = this; 8013 8014 if (evt.touches.length < 2) { 8015 this.multipointEnd.dispatch(evt, this.element); 8016 this.sx2 = this.sy2 = null; 8017 } 8018 8019 if (this.x2 && Math.abs(this.x1 - this.x2) > 30 || this.y2 && Math.abs(this.y1 - this.y2) > 30) { 8020 evt.direction = this._swipeDirection(this.x1, this.x2, this.y1, this.y2); 8021 this.swipeTimeout = setTimeout(function () { 8022 self.swipe.dispatch(evt, self.element); 8023 }, 0); 8024 } else { 8025 this.tapTimeout = setTimeout(function () { 8026 if (!self._preventTap) { 8027 self.tap.dispatch(evt, self.element); 8028 } 8029 8030 if (self.isDoubleTap) { 8031 self.doubleTap.dispatch(evt, self.element); 8032 self.isDoubleTap = false; 8033 } 8034 }, 0); 8035 8036 if (!self.isDoubleTap) { 8037 self.singleTapTimeout = setTimeout(function () { 8038 self.singleTap.dispatch(evt, self.element); 8039 }, 250); 8040 } 8041 } 8042 8043 this.touchEnd.dispatch(evt, this.element); 8044 this.preV.x = 0; 8045 this.preV.y = 0; 8046 this.zoom = 1; 8047 this.pinchStartLen = null; 8048 this.x1 = this.x2 = this.y1 = this.y2 = null; 8049 } 8050 }, { 8051 key: "cancelAll", 8052 value: function cancelAll() { 8053 this._preventTap = true; 8054 clearTimeout(this.singleTapTimeout); 8055 clearTimeout(this.tapTimeout); 8056 clearTimeout(this.longTapTimeout); 8057 clearTimeout(this.swipeTimeout); 8058 } 8059 }, { 8060 key: "cancel", 8061 value: function cancel(evt) { 8062 this.cancelAll(); 8063 this.touchCancel.dispatch(evt, this.element); 8064 } 8065 }, { 8066 key: "_cancelLongTap", 8067 value: function _cancelLongTap() { 8068 clearTimeout(this.longTapTimeout); 8069 } 8070 }, { 8071 key: "_cancelSingleTap", 8072 value: function _cancelSingleTap() { 8073 clearTimeout(this.singleTapTimeout); 8074 } 8075 }, { 8076 key: "_swipeDirection", 8077 value: function _swipeDirection(x1, x2, y1, y2) { 8078 return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? 'Left' : 'Right' : y1 - y2 > 0 ? 'Up' : 'Down'; 8079 } 8080 }, { 8081 key: "on", 8082 value: function on(evt, handler) { 8083 if (this[evt]) { 8084 this[evt].add(handler); 8085 } 8086 } 8087 }, { 8088 key: "off", 8089 value: function off(evt, handler) { 8090 if (this[evt]) { 8091 this[evt].del(handler); 8092 } 8093 } 8094 }, { 8095 key: "destroy", 8096 value: function destroy() { 8097 if (this.singleTapTimeout) { 8098 clearTimeout(this.singleTapTimeout); 8099 } 8100 8101 if (this.tapTimeout) { 8102 clearTimeout(this.tapTimeout); 8103 } 8104 8105 if (this.longTapTimeout) { 8106 clearTimeout(this.longTapTimeout); 8107 } 8108 8109 if (this.swipeTimeout) { 8110 clearTimeout(this.swipeTimeout); 8111 } 8112 8113 this.element.removeEventListener('touchstart', this.start); 8114 this.element.removeEventListener('touchmove', this.move); 8115 this.element.removeEventListener('touchend', this.end); 8116 this.element.removeEventListener('touchcancel', this.cancel); 8117 this.rotate.del(); 8118 this.touchStart.del(); 8119 this.multipointStart.del(); 8120 this.multipointEnd.del(); 8121 this.pinch.del(); 8122 this.swipe.del(); 8123 this.tap.del(); 8124 this.doubleTap.del(); 8125 this.longTap.del(); 8126 this.singleTap.del(); 8127 this.pressMove.del(); 8128 this.twoFingerPressMove.del(); 8129 this.touchMove.del(); 8130 this.touchEnd.del(); 8131 this.touchCancel.del(); 8132 this.preV = this.pinchStartLen = this.zoom = this.isDoubleTap = this.delta = this.last = this.now = this.tapTimeout = this.singleTapTimeout = this.longTapTimeout = this.swipeTimeout = this.x1 = this.x2 = this.y1 = this.y2 = this.preTapPosition = this.rotate = this.touchStart = this.multipointStart = this.multipointEnd = this.pinch = this.swipe = this.tap = this.doubleTap = this.longTap = this.singleTap = this.pressMove = this.touchMove = this.touchEnd = this.touchCancel = this.twoFingerPressMove = null; 8133 window.removeEventListener('scroll', this._cancelAllHandler); 8134 return null; 8135 } 8136 }]); 8137 8138 return TouchEvents; 8139 }(); 8140 8141 function resetSlideMove(slide) { 8142 var transitionEnd = whichTransitionEvent(); 8143 var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 8144 var media = hasClass(slide, 'gslide-media') ? slide : slide.querySelector('.gslide-media'); 8145 var container = closest(media, '.ginner-container'); 8146 var desc = slide.querySelector('.gslide-description'); 8147 8148 if (windowWidth > 769) { 8149 media = container; 8150 } 8151 8152 addClass(media, 'greset'); 8153 cssTransform(media, 'translate3d(0, 0, 0)'); 8154 addEvent(transitionEnd, { 8155 onElement: media, 8156 once: true, 8157 withCallback: function withCallback(event, target) { 8158 removeClass(media, 'greset'); 8159 } 8160 }); 8161 media.style.opacity = ''; 8162 8163 if (desc) { 8164 desc.style.opacity = ''; 8165 } 8166 } 8167 8168 function touchNavigation(instance) { 8169 if (instance.events.hasOwnProperty('touch')) { 8170 return false; 8171 } 8172 8173 var winSize = windowSize(); 8174 var winWidth = winSize.width; 8175 var winHeight = winSize.height; 8176 var process = false; 8177 var currentSlide = null; 8178 var media = null; 8179 var mediaImage = null; 8180 var doingMove = false; 8181 var initScale = 1; 8182 var maxScale = 4.5; 8183 var currentScale = 1; 8184 var doingZoom = false; 8185 var imageZoomed = false; 8186 var zoomedPosX = null; 8187 var zoomedPosY = null; 8188 var lastZoomedPosX = null; 8189 var lastZoomedPosY = null; 8190 var hDistance; 8191 var vDistance; 8192 var hDistancePercent = 0; 8193 var vDistancePercent = 0; 8194 var vSwipe = false; 8195 var hSwipe = false; 8196 var startCoords = {}; 8197 var endCoords = {}; 8198 var xDown = 0; 8199 var yDown = 0; 8200 var isInlined; 8201 var sliderWrapper = document.getElementById('glightbox-slider'); 8202 var overlay = document.querySelector('.goverlay'); 8203 var touchInstance = new TouchEvents(sliderWrapper, { 8204 touchStart: function touchStart(e) { 8205 process = true; 8206 8207 if (hasClass(e.targetTouches[0].target, 'ginner-container') || closest(e.targetTouches[0].target, '.gslide-desc') || e.targetTouches[0].target.nodeName.toLowerCase() == 'a') { 8208 process = false; 8209 } 8210 8211 if (closest(e.targetTouches[0].target, '.gslide-inline') && !hasClass(e.targetTouches[0].target.parentNode, 'gslide-inline')) { 8212 process = false; 8213 } 8214 8215 if (process) { 8216 endCoords = e.targetTouches[0]; 8217 startCoords.pageX = e.targetTouches[0].pageX; 8218 startCoords.pageY = e.targetTouches[0].pageY; 8219 xDown = e.targetTouches[0].clientX; 8220 yDown = e.targetTouches[0].clientY; 8221 currentSlide = instance.activeSlide; 8222 media = currentSlide.querySelector('.gslide-media'); 8223 isInlined = currentSlide.querySelector('.gslide-inline'); 8224 mediaImage = null; 8225 8226 if (hasClass(media, 'gslide-image')) { 8227 mediaImage = media.querySelector('img'); 8228 } 8229 8230 var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 8231 8232 if (windowWidth > 769) { 8233 media = currentSlide.querySelector('.ginner-container'); 8234 } 8235 8236 removeClass(overlay, 'greset'); 8237 8238 if (e.pageX > 20 && e.pageX < window.innerWidth - 20) { 8239 return; 8240 } 8241 8242 e.preventDefault(); 8243 } 8244 }, 8245 touchMove: function touchMove(e) { 8246 if (!process) { 8247 return; 8248 } 8249 8250 endCoords = e.targetTouches[0]; 8251 8252 if (doingZoom || imageZoomed) { 8253 return; 8254 } 8255 8256 if (isInlined && isInlined.offsetHeight > winHeight) { 8257 var moved = startCoords.pageX - endCoords.pageX; 8258 8259 if (Math.abs(moved) <= 13) { 8260 return false; 8261 } 8262 } 8263 8264 doingMove = true; 8265 var xUp = e.targetTouches[0].clientX; 8266 var yUp = e.targetTouches[0].clientY; 8267 var xDiff = xDown - xUp; 8268 var yDiff = yDown - yUp; 8269 8270 if (Math.abs(xDiff) > Math.abs(yDiff)) { 8271 vSwipe = false; 8272 hSwipe = true; 8273 } else { 8274 hSwipe = false; 8275 vSwipe = true; 8276 } 8277 8278 hDistance = endCoords.pageX - startCoords.pageX; 8279 hDistancePercent = hDistance * 100 / winWidth; 8280 vDistance = endCoords.pageY - startCoords.pageY; 8281 vDistancePercent = vDistance * 100 / winHeight; 8282 var opacity; 8283 8284 if (vSwipe && mediaImage) { 8285 opacity = 1 - Math.abs(vDistance) / winHeight; 8286 overlay.style.opacity = opacity; 8287 8288 if (instance.settings.touchFollowAxis) { 8289 hDistancePercent = 0; 8290 } 8291 } 8292 8293 if (hSwipe) { 8294 opacity = 1 - Math.abs(hDistance) / winWidth; 8295 media.style.opacity = opacity; 8296 8297 if (instance.settings.touchFollowAxis) { 8298 vDistancePercent = 0; 8299 } 8300 } 8301 8302 if (!mediaImage) { 8303 return cssTransform(media, "translate3d(".concat(hDistancePercent, "%, 0, 0)")); 8304 } 8305 8306 cssTransform(media, "translate3d(".concat(hDistancePercent, "%, ").concat(vDistancePercent, "%, 0)")); 8307 }, 8308 touchEnd: function touchEnd() { 8309 if (!process) { 8310 return; 8311 } 8312 8313 doingMove = false; 8314 8315 if (imageZoomed || doingZoom) { 8316 lastZoomedPosX = zoomedPosX; 8317 lastZoomedPosY = zoomedPosY; 8318 return; 8319 } 8320 8321 var v = Math.abs(parseInt(vDistancePercent)); 8322 var h = Math.abs(parseInt(hDistancePercent)); 8323 8324 if (v > 29 && mediaImage) { 8325 instance.close(); 8326 return; 8327 } 8328 8329 if (v < 29 && h < 25) { 8330 addClass(overlay, 'greset'); 8331 overlay.style.opacity = 1; 8332 return resetSlideMove(media); 8333 } 8334 }, 8335 multipointEnd: function multipointEnd() { 8336 setTimeout(function () { 8337 doingZoom = false; 8338 }, 50); 8339 }, 8340 multipointStart: function multipointStart() { 8341 doingZoom = true; 8342 initScale = currentScale ? currentScale : 1; 8343 }, 8344 pinch: function pinch(evt) { 8345 if (!mediaImage || doingMove) { 8346 return false; 8347 } 8348 8349 doingZoom = true; 8350 mediaImage.scaleX = mediaImage.scaleY = initScale * evt.zoom; 8351 var scale = initScale * evt.zoom; 8352 imageZoomed = true; 8353 8354 if (scale <= 1) { 8355 imageZoomed = false; 8356 scale = 1; 8357 lastZoomedPosY = null; 8358 lastZoomedPosX = null; 8359 zoomedPosX = null; 8360 zoomedPosY = null; 8361 mediaImage.setAttribute('style', ''); 8362 return; 8363 } 8364 8365 if (scale > maxScale) { 8366 scale = maxScale; 8367 } 8368 8369 mediaImage.style.transform = "scale3d(".concat(scale, ", ").concat(scale, ", 1)"); 8370 currentScale = scale; 8371 }, 8372 pressMove: function pressMove(e) { 8373 if (imageZoomed && !doingZoom) { 8374 var mhDistance = endCoords.pageX - startCoords.pageX; 8375 var mvDistance = endCoords.pageY - startCoords.pageY; 8376 8377 if (lastZoomedPosX) { 8378 mhDistance = mhDistance + lastZoomedPosX; 8379 } 8380 8381 if (lastZoomedPosY) { 8382 mvDistance = mvDistance + lastZoomedPosY; 8383 } 8384 8385 zoomedPosX = mhDistance; 8386 zoomedPosY = mvDistance; 8387 var style = "translate3d(".concat(mhDistance, "px, ").concat(mvDistance, "px, 0)"); 8388 8389 if (currentScale) { 8390 style += " scale3d(".concat(currentScale, ", ").concat(currentScale, ", 1)"); 8391 } 8392 8393 cssTransform(mediaImage, style); 8394 } 8395 }, 8396 swipe: function swipe(evt) { 8397 if (imageZoomed) { 8398 return; 8399 } 8400 8401 if (doingZoom) { 8402 doingZoom = false; 8403 return; 8404 } 8405 8406 if (evt.direction == 'Left') { 8407 if (instance.index == instance.elements.length - 1) { 8408 return resetSlideMove(media); 8409 } 8410 8411 instance.nextSlide(); 8412 } 8413 8414 if (evt.direction == 'Right') { 8415 if (instance.index == 0) { 8416 return resetSlideMove(media); 8417 } 8418 8419 instance.prevSlide(); 8420 } 8421 } 8422 }); 8423 instance.events['touch'] = touchInstance; 8424 } 8425 8426 var ZoomImages = function () { 8427 function ZoomImages(el, slide) { 8428 var _this = this; 8429 8430 var onclose = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 8431 8432 _classCallCheck(this, ZoomImages); 8433 8434 this.img = el; 8435 this.slide = slide; 8436 this.onclose = onclose; 8437 8438 if (this.img.setZoomEvents) { 8439 return false; 8440 } 8441 8442 this.active = false; 8443 this.zoomedIn = false; 8444 this.dragging = false; 8445 this.currentX = null; 8446 this.currentY = null; 8447 this.initialX = null; 8448 this.initialY = null; 8449 this.xOffset = 0; 8450 this.yOffset = 0; 8451 this.img.addEventListener('mousedown', function (e) { 8452 return _this.dragStart(e); 8453 }, false); 8454 this.img.addEventListener('mouseup', function (e) { 8455 return _this.dragEnd(e); 8456 }, false); 8457 this.img.addEventListener('mousemove', function (e) { 8458 return _this.drag(e); 8459 }, false); 8460 this.img.addEventListener('click', function (e) { 8461 if (_this.slide.classList.contains('dragging-nav')) { 8462 _this.zoomOut(); 8463 8464 return false; 8465 } 8466 8467 if (!_this.zoomedIn) { 8468 return _this.zoomIn(); 8469 } 8470 8471 if (_this.zoomedIn && !_this.dragging) { 8472 _this.zoomOut(); 8473 } 8474 }, false); 8475 this.img.setZoomEvents = true; 8476 } 8477 8478 _createClass(ZoomImages, [{ 8479 key: "zoomIn", 8480 value: function zoomIn() { 8481 var winWidth = this.widowWidth(); 8482 8483 if (this.zoomedIn || winWidth <= 768) { 8484 return; 8485 } 8486 8487 var img = this.img; 8488 img.setAttribute('data-style', img.getAttribute('style')); 8489 img.style.maxWidth = img.naturalWidth + 'px'; 8490 img.style.maxHeight = img.naturalHeight + 'px'; 8491 8492 if (img.naturalWidth > winWidth) { 8493 var centerX = winWidth / 2 - img.naturalWidth / 2; 8494 this.setTranslate(this.img.parentNode, centerX, 0); 8495 } 8496 8497 this.slide.classList.add('zoomed'); 8498 this.zoomedIn = true; 8499 } 8500 }, { 8501 key: "zoomOut", 8502 value: function zoomOut() { 8503 this.img.parentNode.setAttribute('style', ''); 8504 this.img.setAttribute('style', this.img.getAttribute('data-style')); 8505 this.slide.classList.remove('zoomed'); 8506 this.zoomedIn = false; 8507 this.currentX = null; 8508 this.currentY = null; 8509 this.initialX = null; 8510 this.initialY = null; 8511 this.xOffset = 0; 8512 this.yOffset = 0; 8513 8514 if (this.onclose && typeof this.onclose == 'function') { 8515 this.onclose(); 8516 } 8517 } 8518 }, { 8519 key: "dragStart", 8520 value: function dragStart(e) { 8521 e.preventDefault(); 8522 8523 if (!this.zoomedIn) { 8524 this.active = false; 8525 return; 8526 } 8527 8528 if (e.type === 'touchstart') { 8529 this.initialX = e.touches[0].clientX - this.xOffset; 8530 this.initialY = e.touches[0].clientY - this.yOffset; 8531 } else { 8532 this.initialX = e.clientX - this.xOffset; 8533 this.initialY = e.clientY - this.yOffset; 8534 } 8535 8536 if (e.target === this.img) { 8537 this.active = true; 8538 this.img.classList.add('dragging'); 8539 } 8540 } 8541 }, { 8542 key: "dragEnd", 8543 value: function dragEnd(e) { 8544 var _this2 = this; 8545 8546 e.preventDefault(); 8547 this.initialX = this.currentX; 8548 this.initialY = this.currentY; 8549 this.active = false; 8550 setTimeout(function () { 8551 _this2.dragging = false; 8552 _this2.img.isDragging = false; 8553 8554 _this2.img.classList.remove('dragging'); 8555 }, 100); 8556 } 8557 }, { 8558 key: "drag", 8559 value: function drag(e) { 8560 if (this.active) { 8561 e.preventDefault(); 8562 8563 if (e.type === 'touchmove') { 8564 this.currentX = e.touches[0].clientX - this.initialX; 8565 this.currentY = e.touches[0].clientY - this.initialY; 8566 } else { 8567 this.currentX = e.clientX - this.initialX; 8568 this.currentY = e.clientY - this.initialY; 8569 } 8570 8571 this.xOffset = this.currentX; 8572 this.yOffset = this.currentY; 8573 this.img.isDragging = true; 8574 this.dragging = true; 8575 this.setTranslate(this.img, this.currentX, this.currentY); 8576 } 8577 } 8578 }, { 8579 key: "onMove", 8580 value: function onMove(e) { 8581 if (!this.zoomedIn) { 8582 return; 8583 } 8584 8585 var xOffset = e.clientX - this.img.naturalWidth / 2; 8586 var yOffset = e.clientY - this.img.naturalHeight / 2; 8587 this.setTranslate(this.img, xOffset, yOffset); 8588 } 8589 }, { 8590 key: "setTranslate", 8591 value: function setTranslate(node, xPos, yPos) { 8592 node.style.transform = 'translate3d(' + xPos + 'px, ' + yPos + 'px, 0)'; 8593 } 8594 }, { 8595 key: "widowWidth", 8596 value: function widowWidth() { 8597 return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 8598 } 8599 }]); 8600 8601 return ZoomImages; 8602 }(); 8603 8604 var DragSlides = function () { 8605 function DragSlides() { 8606 var _this = this; 8607 8608 var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 8609 8610 _classCallCheck(this, DragSlides); 8611 8612 var dragEl = config.dragEl, 8613 _config$toleranceX = config.toleranceX, 8614 toleranceX = _config$toleranceX === void 0 ? 40 : _config$toleranceX, 8615 _config$toleranceY = config.toleranceY, 8616 toleranceY = _config$toleranceY === void 0 ? 65 : _config$toleranceY, 8617 _config$slide = config.slide, 8618 slide = _config$slide === void 0 ? null : _config$slide, 8619 _config$instance = config.instance, 8620 instance = _config$instance === void 0 ? null : _config$instance; 8621 this.el = dragEl; 8622 this.active = false; 8623 this.dragging = false; 8624 this.currentX = null; 8625 this.currentY = null; 8626 this.initialX = null; 8627 this.initialY = null; 8628 this.xOffset = 0; 8629 this.yOffset = 0; 8630 this.direction = null; 8631 this.lastDirection = null; 8632 this.toleranceX = toleranceX; 8633 this.toleranceY = toleranceY; 8634 this.toleranceReached = false; 8635 this.dragContainer = this.el; 8636 this.slide = slide; 8637 this.instance = instance; 8638 this.el.addEventListener('mousedown', function (e) { 8639 return _this.dragStart(e); 8640 }, false); 8641 this.el.addEventListener('mouseup', function (e) { 8642 return _this.dragEnd(e); 8643 }, false); 8644 this.el.addEventListener('mousemove', function (e) { 8645 return _this.drag(e); 8646 }, false); 8647 } 8648 8649 _createClass(DragSlides, [{ 8650 key: "dragStart", 8651 value: function dragStart(e) { 8652 if (this.slide.classList.contains('zoomed')) { 8653 this.active = false; 8654 return; 8655 } 8656 8657 if (e.type === 'touchstart') { 8658 this.initialX = e.touches[0].clientX - this.xOffset; 8659 this.initialY = e.touches[0].clientY - this.yOffset; 8660 } else { 8661 this.initialX = e.clientX - this.xOffset; 8662 this.initialY = e.clientY - this.yOffset; 8663 } 8664 8665 var clicked = e.target.nodeName.toLowerCase(); 8666 var exludeClicks = ['input', 'select', 'textarea', 'button', 'a']; 8667 8668 if (e.target.classList.contains('nodrag') || closest(e.target, '.nodrag') || exludeClicks.indexOf(clicked) !== -1) { 8669 this.active = false; 8670 return; 8671 } 8672 8673 e.preventDefault(); 8674 8675 if (e.target === this.el || clicked !== 'img' && closest(e.target, '.gslide-inline')) { 8676 this.active = true; 8677 this.el.classList.add('dragging'); 8678 this.dragContainer = closest(e.target, '.ginner-container'); 8679 } 8680 } 8681 }, { 8682 key: "dragEnd", 8683 value: function dragEnd(e) { 8684 var _this2 = this; 8685 8686 e && e.preventDefault(); 8687 this.initialX = 0; 8688 this.initialY = 0; 8689 this.currentX = null; 8690 this.currentY = null; 8691 this.initialX = null; 8692 this.initialY = null; 8693 this.xOffset = 0; 8694 this.yOffset = 0; 8695 this.active = false; 8696 8697 if (this.doSlideChange) { 8698 this.instance.preventOutsideClick = true; 8699 this.doSlideChange == 'right' && this.instance.prevSlide(); 8700 this.doSlideChange == 'left' && this.instance.nextSlide(); 8701 } 8702 8703 if (this.doSlideClose) { 8704 this.instance.close(); 8705 } 8706 8707 if (!this.toleranceReached) { 8708 this.setTranslate(this.dragContainer, 0, 0, true); 8709 } 8710 8711 setTimeout(function () { 8712 _this2.instance.preventOutsideClick = false; 8713 _this2.toleranceReached = false; 8714 _this2.lastDirection = null; 8715 _this2.dragging = false; 8716 _this2.el.isDragging = false; 8717 8718 _this2.el.classList.remove('dragging'); 8719 8720 _this2.slide.classList.remove('dragging-nav'); 8721 8722 _this2.dragContainer.style.transform = ''; 8723 _this2.dragContainer.style.transition = ''; 8724 }, 100); 8725 } 8726 }, { 8727 key: "drag", 8728 value: function drag(e) { 8729 if (this.active) { 8730 e.preventDefault(); 8731 this.slide.classList.add('dragging-nav'); 8732 8733 if (e.type === 'touchmove') { 8734 this.currentX = e.touches[0].clientX - this.initialX; 8735 this.currentY = e.touches[0].clientY - this.initialY; 8736 } else { 8737 this.currentX = e.clientX - this.initialX; 8738 this.currentY = e.clientY - this.initialY; 8739 } 8740 8741 this.xOffset = this.currentX; 8742 this.yOffset = this.currentY; 8743 this.el.isDragging = true; 8744 this.dragging = true; 8745 this.doSlideChange = false; 8746 this.doSlideClose = false; 8747 var currentXInt = Math.abs(this.currentX); 8748 var currentYInt = Math.abs(this.currentY); 8749 8750 if (currentXInt > 0 && currentXInt >= Math.abs(this.currentY) && (!this.lastDirection || this.lastDirection == 'x')) { 8751 this.yOffset = 0; 8752 this.lastDirection = 'x'; 8753 this.setTranslate(this.dragContainer, this.currentX, 0); 8754 var doChange = this.shouldChange(); 8755 8756 if (!this.instance.settings.dragAutoSnap && doChange) { 8757 this.doSlideChange = doChange; 8758 } 8759 8760 if (this.instance.settings.dragAutoSnap && doChange) { 8761 this.instance.preventOutsideClick = true; 8762 this.toleranceReached = true; 8763 this.active = false; 8764 this.instance.preventOutsideClick = true; 8765 this.dragEnd(null); 8766 doChange == 'right' && this.instance.prevSlide(); 8767 doChange == 'left' && this.instance.nextSlide(); 8768 return; 8769 } 8770 } 8771 8772 if (this.toleranceY > 0 && currentYInt > 0 && currentYInt >= currentXInt && (!this.lastDirection || this.lastDirection == 'y')) { 8773 this.xOffset = 0; 8774 this.lastDirection = 'y'; 8775 this.setTranslate(this.dragContainer, 0, this.currentY); 8776 var doClose = this.shouldClose(); 8777 8778 if (!this.instance.settings.dragAutoSnap && doClose) { 8779 this.doSlideClose = true; 8780 } 8781 8782 if (this.instance.settings.dragAutoSnap && doClose) { 8783 this.instance.close(); 8784 } 8785 8786 return; 8787 } 8788 } 8789 } 8790 }, { 8791 key: "shouldChange", 8792 value: function shouldChange() { 8793 var doChange = false; 8794 var currentXInt = Math.abs(this.currentX); 8795 8796 if (currentXInt >= this.toleranceX) { 8797 var dragDir = this.currentX > 0 ? 'right' : 'left'; 8798 8799 if (dragDir == 'left' && this.slide !== this.slide.parentNode.lastChild || dragDir == 'right' && this.slide !== this.slide.parentNode.firstChild) { 8800 doChange = dragDir; 8801 } 8802 } 8803 8804 return doChange; 8805 } 8806 }, { 8807 key: "shouldClose", 8808 value: function shouldClose() { 8809 var doClose = false; 8810 var currentYInt = Math.abs(this.currentY); 8811 8812 if (currentYInt >= this.toleranceY) { 8813 doClose = true; 8814 } 8815 8816 return doClose; 8817 } 8818 }, { 8819 key: "setTranslate", 8820 value: function setTranslate(node, xPos, yPos) { 8821 var animated = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; 8822 8823 if (animated) { 8824 node.style.transition = 'all .2s ease'; 8825 } else { 8826 node.style.transition = ''; 8827 } 8828 8829 node.style.transform = "translate3d(".concat(xPos, "px, ").concat(yPos, "px, 0)"); 8830 } 8831 }]); 8832 8833 return DragSlides; 8834 }(); 8835 8836 function slideImage(slide, data, index, callback) { 8837 var slideMedia = slide.querySelector('.gslide-media'); 8838 var img = new Image(); 8839 var titleID = 'gSlideTitle_' + index; 8840 var textID = 'gSlideDesc_' + index; 8841 img.addEventListener('load', function () { 8842 if (isFunction(callback)) { 8843 callback(); 8844 } 8845 }, false); 8846 img.src = data.href; 8847 8848 if (data.sizes != '' && data.srcset != '') { 8849 img.sizes = data.sizes; 8850 img.srcset = data.srcset; 8851 } 8852 8853 img.alt = ''; 8854 8855 if (!isNil(data.alt) && data.alt !== '') { 8856 img.alt = data.alt; 8857 } 8858 8859 if (data.title !== '') { 8860 img.setAttribute('aria-labelledby', titleID); 8861 } 8862 8863 if (data.description !== '') { 8864 img.setAttribute('aria-describedby', textID); 8865 } 8866 8867 if (data.hasOwnProperty('_hasCustomWidth') && data._hasCustomWidth) { 8868 img.style.width = data.width; 8869 } 8870 8871 if (data.hasOwnProperty('_hasCustomHeight') && data._hasCustomHeight) { 8872 img.style.height = data.height; 8873 } 8874 8875 slideMedia.insertBefore(img, slideMedia.firstChild); 8876 return; 8877 } 8878 8879 function slideVideo(slide, data, index, callback) { 8880 var _this = this; 8881 8882 var slideContainer = slide.querySelector('.ginner-container'); 8883 var videoID = 'gvideo' + index; 8884 var slideMedia = slide.querySelector('.gslide-media'); 8885 var videoPlayers = this.getAllPlayers(); 8886 addClass(slideContainer, 'gvideo-container'); 8887 slideMedia.insertBefore(createHTML('<div class="gvideo-wrapper"></div>'), slideMedia.firstChild); 8888 var videoWrapper = slide.querySelector('.gvideo-wrapper'); 8889 injectAssets(this.settings.plyr.css, 'Plyr'); 8890 var url = data.href; 8891 var provider = data === null || data === void 0 ? void 0 : data.videoProvider; 8892 var customPlaceholder = false; 8893 slideMedia.style.maxWidth = data.width; 8894 injectAssets(this.settings.plyr.js, 'Plyr', function () { 8895 if (!provider && url.match(/vimeo\.com\/([0-9]*)/)) { 8896 provider = 'vimeo'; 8897 } 8898 8899 if (!provider && (url.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || url.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || url.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/))) { 8900 provider = 'youtube'; 8901 } 8902 8903 if (provider === 'local' || !provider) { 8904 provider = 'local'; 8905 var html = '<video id="' + videoID + '" '; 8906 html += "style=\"background:#000; max-width: ".concat(data.width, ";\" "); 8907 html += 'preload="metadata" '; 8908 html += 'poster="' + data.poster + '" '; 8909 html += 'x-webkit-airplay="allow" '; 8910 html += 'playsinline '; 8911 html += 'controls '; 8912 html += 'class="gvideo-local">'; 8913 html += "<source src=\"".concat(url, "\">"); 8914 html += '</video>'; 8915 customPlaceholder = createHTML(html); 8916 } 8917 8918 var placeholder = customPlaceholder ? customPlaceholder : createHTML("<div id=\"".concat(videoID, "\" data-plyr-provider=\"").concat(provider, "\" data-plyr-embed-id=\"").concat(url, "\"></div>")); 8919 addClass(videoWrapper, "".concat(provider, "-video gvideo")); 8920 videoWrapper.appendChild(placeholder); 8921 videoWrapper.setAttribute('data-id', videoID); 8922 videoWrapper.setAttribute('data-index', index); 8923 var playerConfig = has(_this.settings.plyr, 'config') ? _this.settings.plyr.config : {}; 8924 var player = new Plyr('#' + videoID, playerConfig); 8925 player.on('ready', function (event) { 8926 videoPlayers[videoID] = event.detail.plyr; 8927 8928 if (isFunction(callback)) { 8929 callback(); 8930 } 8931 }); 8932 waitUntil(function () { 8933 return slide.querySelector('iframe') && slide.querySelector('iframe').dataset.ready == 'true'; 8934 }, function () { 8935 _this.resize(slide); 8936 }); 8937 player.on('enterfullscreen', handleMediaFullScreen); 8938 player.on('exitfullscreen', handleMediaFullScreen); 8939 }); 8940 } 8941 8942 function handleMediaFullScreen(event) { 8943 var media = closest(event.target, '.gslide-media'); 8944 8945 if (event.type === 'enterfullscreen') { 8946 addClass(media, 'fullscreen'); 8947 } 8948 8949 if (event.type === 'exitfullscreen') { 8950 removeClass(media, 'fullscreen'); 8951 } 8952 } 8953 8954 function slideInline(slide, data, index, callback) { 8955 var _this = this; 8956 8957 var slideMedia = slide.querySelector('.gslide-media'); 8958 var hash = has(data, 'href') && data.href ? data.href.split('#').pop().trim() : false; 8959 var content = has(data, 'content') && data.content ? data.content : false; 8960 var innerContent; 8961 8962 if (content) { 8963 if (isString(content)) { 8964 innerContent = createHTML("<div class=\"ginlined-content\">".concat(content, "</div>")); 8965 } 8966 8967 if (isNode(content)) { 8968 if (content.style.display == 'none') { 8969 content.style.display = 'block'; 8970 } 8971 8972 var container = document.createElement('div'); 8973 container.className = 'ginlined-content'; 8974 container.appendChild(content); 8975 innerContent = container; 8976 } 8977 } 8978 8979 if (hash) { 8980 var div = document.getElementById(hash); 8981 8982 if (!div) { 8983 return false; 8984 } 8985 8986 var cloned = div.cloneNode(true); 8987 cloned.style.height = data.height; 8988 cloned.style.maxWidth = data.width; 8989 addClass(cloned, 'ginlined-content'); 8990 innerContent = cloned; 8991 } 8992 8993 if (!innerContent) { 8994 console.error('Unable to append inline slide content', data); 8995 return false; 8996 } 8997 8998 slideMedia.style.height = data.height; 8999 slideMedia.style.width = data.width; 9000 slideMedia.appendChild(innerContent); 9001 this.events['inlineclose' + hash] = addEvent('click', { 9002 onElement: slideMedia.querySelectorAll('.gtrigger-close'), 9003 withCallback: function withCallback(e) { 9004 e.preventDefault(); 9005 9006 _this.close(); 9007 } 9008 }); 9009 9010 if (isFunction(callback)) { 9011 callback(); 9012 } 9013 9014 return; 9015 } 9016 9017 function slideIframe(slide, data, index, callback) { 9018 var slideMedia = slide.querySelector('.gslide-media'); 9019 var iframe = createIframe({ 9020 url: data.href, 9021 callback: callback 9022 }); 9023 slideMedia.parentNode.style.maxWidth = data.width; 9024 slideMedia.parentNode.style.height = data.height; 9025 slideMedia.appendChild(iframe); 9026 return; 9027 } 9028 9029 var SlideConfigParser = function () { 9030 function SlideConfigParser() { 9031 var slideParamas = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 9032 9033 _classCallCheck(this, SlideConfigParser); 9034 9035 this.defaults = { 9036 href: '', 9037 sizes: '', 9038 srcset: '', 9039 title: '', 9040 type: '', 9041 videoProvider: '', 9042 description: '', 9043 alt: '', 9044 descPosition: 'bottom', 9045 effect: '', 9046 width: '', 9047 height: '', 9048 content: false, 9049 zoomable: true, 9050 draggable: true 9051 }; 9052 9053 if (isObject(slideParamas)) { 9054 this.defaults = extend(this.defaults, slideParamas); 9055 } 9056 } 9057 9058 _createClass(SlideConfigParser, [{ 9059 key: "sourceType", 9060 value: function sourceType(url) { 9061 var origin = url; 9062 url = url.toLowerCase(); 9063 9064 if (url.match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/) !== null) { 9065 return 'image'; 9066 } 9067 9068 if (url.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || url.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || url.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)) { 9069 return 'video'; 9070 } 9071 9072 if (url.match(/vimeo\.com\/([0-9]*)/)) { 9073 return 'video'; 9074 } 9075 9076 if (url.match(/\.(mp4|ogg|webm|mov)/) !== null) { 9077 return 'video'; 9078 } 9079 9080 if (url.match(/\.(mp3|wav|wma|aac|ogg)/) !== null) { 9081 return 'audio'; 9082 } 9083 9084 if (url.indexOf('#') > -1) { 9085 var hash = origin.split('#').pop(); 9086 9087 if (hash.trim() !== '') { 9088 return 'inline'; 9089 } 9090 } 9091 9092 if (url.indexOf('goajax=true') > -1) { 9093 return 'ajax'; 9094 } 9095 9096 return 'external'; 9097 } 9098 }, { 9099 key: "parseConfig", 9100 value: function parseConfig(element, settings) { 9101 var _this = this; 9102 9103 var data = extend({ 9104 descPosition: settings.descPosition 9105 }, this.defaults); 9106 9107 if (isObject(element) && !isNode(element)) { 9108 if (!has(element, 'type')) { 9109 if (has(element, 'content') && element.content) { 9110 element.type = 'inline'; 9111 } else if (has(element, 'href')) { 9112 element.type = this.sourceType(element.href); 9113 } 9114 } 9115 9116 var objectData = extend(data, element); 9117 this.setSize(objectData, settings); 9118 return objectData; 9119 } 9120 9121 var url = ''; 9122 var config = element.getAttribute('data-glightbox'); 9123 var nodeType = element.nodeName.toLowerCase(); 9124 9125 if (nodeType === 'a') { 9126 url = element.href; 9127 } 9128 9129 if (nodeType === 'img') { 9130 url = element.src; 9131 data.alt = element.alt; 9132 } 9133 9134 data.href = url; 9135 each(data, function (val, key) { 9136 if (has(settings, key) && key !== 'width') { 9137 data[key] = settings[key]; 9138 } 9139 9140 var nodeData = element.dataset[key]; 9141 9142 if (!isNil(nodeData)) { 9143 data[key] = _this.sanitizeValue(nodeData); 9144 } 9145 }); 9146 9147 if (data.content) { 9148 data.type = 'inline'; 9149 } 9150 9151 if (!data.type && url) { 9152 data.type = this.sourceType(url); 9153 } 9154 9155 if (!isNil(config)) { 9156 var cleanKeys = []; 9157 each(data, function (v, k) { 9158 cleanKeys.push(';\\s?' + k); 9159 }); 9160 cleanKeys = cleanKeys.join('\\s?:|'); 9161 9162 if (config.trim() !== '') { 9163 each(data, function (val, key) { 9164 var str = config; 9165 var match = 's?' + key + 's?:s?(.*?)(' + cleanKeys + 's?:|$)'; 9166 var regex = new RegExp(match); 9167 var matches = str.match(regex); 9168 9169 if (matches && matches.length && matches[1]) { 9170 var value = matches[1].trim().replace(/;\s*$/, ''); 9171 data[key] = _this.sanitizeValue(value); 9172 } 9173 }); 9174 } 9175 } else { 9176 if (!data.title && nodeType == 'a') { 9177 var title = element.title; 9178 9179 if (!isNil(title) && title !== '') { 9180 data.title = title; 9181 } 9182 } 9183 9184 if (!data.title && nodeType == 'img') { 9185 var alt = element.alt; 9186 9187 if (!isNil(alt) && alt !== '') { 9188 data.title = alt; 9189 } 9190 } 9191 } 9192 9193 if (data.description && data.description.substring(0, 1) === '.') { 9194 var description; 9195 9196 try { 9197 description = document.querySelector(data.description).innerHTML; 9198 } catch (error) { 9199 if (!(error instanceof DOMException)) { 9200 throw error; 9201 } 9202 } 9203 9204 if (description) { 9205 data.description = description; 9206 } 9207 } 9208 9209 if (!data.description) { 9210 var nodeDesc = element.querySelector('.glightbox-desc'); 9211 9212 if (nodeDesc) { 9213 data.description = nodeDesc.innerHTML; 9214 } 9215 } 9216 9217 this.setSize(data, settings, element); 9218 this.slideConfig = data; 9219 return data; 9220 } 9221 }, { 9222 key: "setSize", 9223 value: function setSize(data, settings) { 9224 var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 9225 var defaultWith = data.type == 'video' ? this.checkSize(settings.videosWidth) : this.checkSize(settings.width); 9226 var defaultHeight = this.checkSize(settings.height); 9227 data.width = has(data, 'width') && data.width !== '' ? this.checkSize(data.width) : defaultWith; 9228 data.height = has(data, 'height') && data.height !== '' ? this.checkSize(data.height) : defaultHeight; 9229 9230 if (element && data.type == 'image') { 9231 data._hasCustomWidth = element.dataset.width ? true : false; 9232 data._hasCustomHeight = element.dataset.height ? true : false; 9233 } 9234 9235 return data; 9236 } 9237 }, { 9238 key: "checkSize", 9239 value: function checkSize(size) { 9240 return isNumber(size) ? "".concat(size, "px") : size; 9241 } 9242 }, { 9243 key: "sanitizeValue", 9244 value: function sanitizeValue(val) { 9245 if (val !== 'true' && val !== 'false') { 9246 return val; 9247 } 9248 9249 return val === 'true'; 9250 } 9251 }]); 9252 9253 return SlideConfigParser; 9254 }(); 9255 9256 var Slide = function () { 9257 function Slide(el, instance, index) { 9258 _classCallCheck(this, Slide); 9259 9260 this.element = el; 9261 this.instance = instance; 9262 this.index = index; 9263 } 9264 9265 _createClass(Slide, [{ 9266 key: "setContent", 9267 value: function setContent() { 9268 var _this = this; 9269 9270 var slide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; 9271 var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 9272 9273 if (hasClass(slide, 'loaded')) { 9274 return false; 9275 } 9276 9277 var settings = this.instance.settings; 9278 var slideConfig = this.slideConfig; 9279 var isMobileDevice = isMobile(); 9280 9281 if (isFunction(settings.beforeSlideLoad)) { 9282 settings.beforeSlideLoad({ 9283 index: this.index, 9284 slide: slide, 9285 player: false 9286 }); 9287 } 9288 9289 var type = slideConfig.type; 9290 var position = slideConfig.descPosition; 9291 var slideMedia = slide.querySelector('.gslide-media'); 9292 var slideTitle = slide.querySelector('.gslide-title'); 9293 var slideText = slide.querySelector('.gslide-desc'); 9294 var slideDesc = slide.querySelector('.gdesc-inner'); 9295 var finalCallback = callback; 9296 var titleID = 'gSlideTitle_' + this.index; 9297 var textID = 'gSlideDesc_' + this.index; 9298 9299 if (isFunction(settings.afterSlideLoad)) { 9300 finalCallback = function finalCallback() { 9301 if (isFunction(callback)) { 9302 callback(); 9303 } 9304 9305 settings.afterSlideLoad({ 9306 index: _this.index, 9307 slide: slide, 9308 player: _this.instance.getSlidePlayerInstance(_this.index) 9309 }); 9310 }; 9311 } 9312 9313 if (slideConfig.title == '' && slideConfig.description == '') { 9314 if (slideDesc) { 9315 slideDesc.parentNode.parentNode.removeChild(slideDesc.parentNode); 9316 } 9317 } else { 9318 if (slideTitle && slideConfig.title !== '') { 9319 slideTitle.id = titleID; 9320 slideTitle.innerHTML = slideConfig.title; 9321 } else { 9322 slideTitle.parentNode.removeChild(slideTitle); 9323 } 9324 9325 if (slideText && slideConfig.description !== '') { 9326 slideText.id = textID; 9327 9328 if (isMobileDevice && settings.moreLength > 0) { 9329 slideConfig.smallDescription = this.slideShortDesc(slideConfig.description, settings.moreLength, settings.moreText); 9330 slideText.innerHTML = slideConfig.smallDescription; 9331 this.descriptionEvents(slideText, slideConfig); 9332 } else { 9333 slideText.innerHTML = slideConfig.description; 9334 } 9335 } else { 9336 slideText.parentNode.removeChild(slideText); 9337 } 9338 9339 addClass(slideMedia.parentNode, "desc-".concat(position)); 9340 addClass(slideDesc.parentNode, "description-".concat(position)); 9341 } 9342 9343 addClass(slideMedia, "gslide-".concat(type)); 9344 addClass(slide, 'loaded'); 9345 9346 if (type === 'video') { 9347 slideVideo.apply(this.instance, [slide, slideConfig, this.index, finalCallback]); 9348 return; 9349 } 9350 9351 if (type === 'external') { 9352 slideIframe.apply(this, [slide, slideConfig, this.index, finalCallback]); 9353 return; 9354 } 9355 9356 if (type === 'inline') { 9357 slideInline.apply(this.instance, [slide, slideConfig, this.index, finalCallback]); 9358 9359 if (slideConfig.draggable) { 9360 new DragSlides({ 9361 dragEl: slide.querySelector('.gslide-inline'), 9362 toleranceX: settings.dragToleranceX, 9363 toleranceY: settings.dragToleranceY, 9364 slide: slide, 9365 instance: this.instance 9366 }); 9367 } 9368 9369 return; 9370 } 9371 9372 if (type === 'image') { 9373 slideImage(slide, slideConfig, this.index, function () { 9374 var img = slide.querySelector('img'); 9375 9376 if (slideConfig.draggable) { 9377 new DragSlides({ 9378 dragEl: img, 9379 toleranceX: settings.dragToleranceX, 9380 toleranceY: settings.dragToleranceY, 9381 slide: slide, 9382 instance: _this.instance 9383 }); 9384 } 9385 9386 if (slideConfig.zoomable && img.naturalWidth > img.offsetWidth) { 9387 addClass(img, 'zoomable'); 9388 new ZoomImages(img, slide, function () { 9389 _this.instance.resize(); 9390 }); 9391 } 9392 9393 if (isFunction(finalCallback)) { 9394 finalCallback(); 9395 } 9396 }); 9397 return; 9398 } 9399 9400 if (isFunction(finalCallback)) { 9401 finalCallback(); 9402 } 9403 } 9404 }, { 9405 key: "slideShortDesc", 9406 value: function slideShortDesc(string) { 9407 var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50; 9408 var wordBoundary = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 9409 var div = document.createElement('div'); 9410 div.innerHTML = string; 9411 var cleanedString = div.innerText; 9412 var useWordBoundary = wordBoundary; 9413 string = cleanedString.trim(); 9414 9415 if (string.length <= n) { 9416 return string; 9417 } 9418 9419 var subString = string.substr(0, n - 1); 9420 9421 if (!useWordBoundary) { 9422 return subString; 9423 } 9424 9425 div = null; 9426 return subString + '... <a href="#" class="desc-more">' + wordBoundary + '</a>'; 9427 } 9428 }, { 9429 key: "descriptionEvents", 9430 value: function descriptionEvents(desc, data) { 9431 var _this2 = this; 9432 9433 var moreLink = desc.querySelector('.desc-more'); 9434 9435 if (!moreLink) { 9436 return false; 9437 } 9438 9439 addEvent('click', { 9440 onElement: moreLink, 9441 withCallback: function withCallback(event, target) { 9442 event.preventDefault(); 9443 var body = document.body; 9444 var desc = closest(target, '.gslide-desc'); 9445 9446 if (!desc) { 9447 return false; 9448 } 9449 9450 desc.innerHTML = data.description; 9451 addClass(body, 'gdesc-open'); 9452 var shortEvent = addEvent('click', { 9453 onElement: [body, closest(desc, '.gslide-description')], 9454 withCallback: function withCallback(event, target) { 9455 if (event.target.nodeName.toLowerCase() !== 'a') { 9456 removeClass(body, 'gdesc-open'); 9457 addClass(body, 'gdesc-closed'); 9458 desc.innerHTML = data.smallDescription; 9459 9460 _this2.descriptionEvents(desc, data); 9461 9462 setTimeout(function () { 9463 removeClass(body, 'gdesc-closed'); 9464 }, 400); 9465 shortEvent.destroy(); 9466 } 9467 } 9468 }); 9469 } 9470 }); 9471 } 9472 }, { 9473 key: "create", 9474 value: function create() { 9475 return createHTML(this.instance.settings.slideHTML); 9476 } 9477 }, { 9478 key: "getConfig", 9479 value: function getConfig() { 9480 if (!isNode(this.element) && !this.element.hasOwnProperty('draggable')) { 9481 this.element.draggable = this.instance.settings.draggable; 9482 } 9483 9484 var parser = new SlideConfigParser(this.instance.settings.slideExtraAttributes); 9485 this.slideConfig = parser.parseConfig(this.element, this.instance.settings); 9486 return this.slideConfig; 9487 } 9488 }]); 9489 9490 return Slide; 9491 }(); 9492 9493 var _version = '3.1.0'; 9494 9495 var isMobile$1 = isMobile(); 9496 9497 var isTouch$1 = isTouch(); 9498 9499 var html = document.getElementsByTagName('html')[0]; 9500 var defaults = { 9501 selector: '.glightbox', 9502 elements: null, 9503 skin: 'clean', 9504 theme: 'clean', 9505 closeButton: true, 9506 startAt: null, 9507 autoplayVideos: true, 9508 autofocusVideos: true, 9509 descPosition: 'bottom', 9510 width: '900px', 9511 height: '506px', 9512 videosWidth: '960px', 9513 beforeSlideChange: null, 9514 afterSlideChange: null, 9515 beforeSlideLoad: null, 9516 afterSlideLoad: null, 9517 slideInserted: null, 9518 slideRemoved: null, 9519 slideExtraAttributes: null, 9520 onOpen: null, 9521 onClose: null, 9522 loop: false, 9523 zoomable: true, 9524 draggable: true, 9525 dragAutoSnap: false, 9526 dragToleranceX: 40, 9527 dragToleranceY: 65, 9528 preload: true, 9529 oneSlidePerOpen: false, 9530 touchNavigation: true, 9531 touchFollowAxis: true, 9532 keyboardNavigation: true, 9533 closeOnOutsideClick: true, 9534 plugins: false, 9535 plyr: { 9536 css: 'https://cdn.plyr.io/3.6.12/plyr.css', 9537 js: 'https://cdn.plyr.io/3.6.12/plyr.js', 9538 config: { 9539 ratio: '16:9', 9540 fullscreen: { 9541 enabled: true, 9542 iosNative: true 9543 }, 9544 youtube: { 9545 noCookie: true, 9546 rel: 0, 9547 showinfo: 0, 9548 iv_load_policy: 3 9549 }, 9550 vimeo: { 9551 byline: false, 9552 portrait: false, 9553 title: false, 9554 transparent: false 9555 } 9556 } 9557 }, 9558 openEffect: 'zoom', 9559 closeEffect: 'zoom', 9560 slideEffect: 'slide', 9561 moreText: 'See more', 9562 moreLength: 60, 9563 cssEfects: { 9564 fade: { 9565 "in": 'fadeIn', 9566 out: 'fadeOut' 9567 }, 9568 zoom: { 9569 "in": 'zoomIn', 9570 out: 'zoomOut' 9571 }, 9572 slide: { 9573 "in": 'slideInRight', 9574 out: 'slideOutLeft' 9575 }, 9576 slideBack: { 9577 "in": 'slideInLeft', 9578 out: 'slideOutRight' 9579 }, 9580 none: { 9581 "in": 'none', 9582 out: 'none' 9583 } 9584 }, 9585 svg: { 9586 close: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>', 9587 next: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>', 9588 prev: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>' 9589 } 9590 }; 9591 defaults.slideHTML = "<div class=\"gslide\">\n <div class=\"gslide-inner-content\">\n <div class=\"ginner-container\">\n <div class=\"gslide-media\">\n </div>\n <div class=\"gslide-description\">\n <div class=\"gdesc-inner\">\n <h4 class=\"gslide-title\"></h4>\n <div class=\"gslide-desc\"></div>\n </div>\n </div>\n </div>\n </div>\n</div>"; 9592 defaults.lightboxHTML = "<div id=\"glightbox-body\" class=\"glightbox-container\" tabindex=\"-1\" role=\"dialog\" aria-hidden=\"false\">\n <div class=\"gloader visible\"></div>\n <div class=\"goverlay\"></div>\n <div class=\"gcontainer\">\n <div id=\"glightbox-slider\" class=\"gslider\"></div>\n <button class=\"gclose gbtn\" aria-label=\"Close\" data-taborder=\"3\">{closeSVG}</button>\n <button class=\"gprev gbtn\" aria-label=\"Previous\" data-taborder=\"2\">{prevSVG}</button>\n <button class=\"gnext gbtn\" aria-label=\"Next\" data-taborder=\"1\">{nextSVG}</button>\n</div>\n</div>"; 9593 9594 var GlightboxInit = function () { 9595 function GlightboxInit() { 9596 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 9597 9598 _classCallCheck(this, GlightboxInit); 9599 9600 this.customOptions = options; 9601 this.settings = extend(defaults, options); 9602 this.effectsClasses = this.getAnimationClasses(); 9603 this.videoPlayers = {}; 9604 this.apiEvents = []; 9605 this.fullElementsList = false; 9606 } 9607 9608 _createClass(GlightboxInit, [{ 9609 key: "init", 9610 value: function init() { 9611 var _this = this; 9612 9613 var selector = this.getSelector(); 9614 9615 if (selector) { 9616 this.baseEvents = addEvent('click', { 9617 onElement: selector, 9618 withCallback: function withCallback(e, target) { 9619 e.preventDefault(); 9620 9621 _this.open(target); 9622 } 9623 }); 9624 } 9625 9626 this.elements = this.getElements(); 9627 } 9628 }, { 9629 key: "open", 9630 value: function open() { 9631 var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; 9632 var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; 9633 9634 if (this.elements.length === 0) { 9635 return false; 9636 } 9637 9638 this.activeSlide = null; 9639 this.prevActiveSlideIndex = null; 9640 this.prevActiveSlide = null; 9641 var index = isNumber(startAt) ? startAt : this.settings.startAt; 9642 9643 if (isNode(element)) { 9644 var gallery = element.getAttribute('data-gallery'); 9645 9646 if (gallery) { 9647 this.fullElementsList = this.elements; 9648 this.elements = this.getGalleryElements(this.elements, gallery); 9649 } 9650 9651 if (isNil(index)) { 9652 index = this.getElementIndex(element); 9653 9654 if (index < 0) { 9655 index = 0; 9656 } 9657 } 9658 } 9659 9660 if (!isNumber(index)) { 9661 index = 0; 9662 } 9663 9664 this.build(); 9665 9666 animateElement(this.overlay, this.settings.openEffect === 'none' ? 'none' : this.settings.cssEfects.fade["in"]); 9667 9668 var body = document.body; 9669 var scrollBar = window.innerWidth - document.documentElement.clientWidth; 9670 9671 if (scrollBar > 0) { 9672 var styleSheet = document.createElement('style'); 9673 styleSheet.type = 'text/css'; 9674 styleSheet.className = 'gcss-styles'; 9675 //styleSheet.innerText = ".gscrollbar-fixer {margin-right: ".concat(scrollBar, "px}"); 9676 document.head.appendChild(styleSheet); 9677 9678 addClass(body, 'gscrollbar-fixer'); 9679 } 9680 9681 addClass(body, 'glightbox-open'); 9682 9683 addClass(html, 'glightbox-open'); 9684 9685 if (isMobile$1) { 9686 addClass(document.body, 'glightbox-mobile'); 9687 9688 this.settings.slideEffect = 'slide'; 9689 this.settings.autoplayVideos = false; 9690 } 9691 9692 this.showSlide(index, true); 9693 9694 if (this.elements.length === 1) { 9695 addClass(this.prevButton, 'glightbox-button-hidden'); 9696 9697 addClass(this.nextButton, 'glightbox-button-hidden'); 9698 } else { 9699 removeClass(this.prevButton, 'glightbox-button-hidden'); 9700 9701 removeClass(this.nextButton, 'glightbox-button-hidden'); 9702 } 9703 9704 this.lightboxOpen = true; 9705 this.trigger('open'); 9706 9707 if (isFunction(this.settings.onOpen)) { 9708 this.settings.onOpen(); 9709 } 9710 9711 if (isTouch$1 && this.settings.touchNavigation) { 9712 touchNavigation(this); 9713 } 9714 9715 if (this.settings.keyboardNavigation) { 9716 keyboardNavigation(this); 9717 } 9718 } 9719 }, { 9720 key: "openAt", 9721 value: function openAt() { 9722 var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 9723 this.open(null, index); 9724 } 9725 }, { 9726 key: "showSlide", 9727 value: function showSlide() { 9728 var _this2 = this; 9729 9730 var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 9731 var first = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 9732 9733 show(this.loader); 9734 9735 this.index = parseInt(index); 9736 var current = this.slidesContainer.querySelector('.current'); 9737 9738 if (current) { 9739 removeClass(current, 'current'); 9740 } 9741 9742 this.slideAnimateOut(); 9743 var slideNode = this.slidesContainer.querySelectorAll('.gslide')[index]; 9744 9745 if (hasClass(slideNode, 'loaded')) { 9746 this.slideAnimateIn(slideNode, first); 9747 9748 hide(this.loader); 9749 } else { 9750 show(this.loader); 9751 9752 var slide = this.elements[index]; 9753 var slideData = { 9754 index: this.index, 9755 slide: slideNode, 9756 slideNode: slideNode, 9757 slideConfig: slide.slideConfig, 9758 slideIndex: this.index, 9759 trigger: slide.node, 9760 player: null 9761 }; 9762 this.trigger('slide_before_load', slideData); 9763 slide.instance.setContent(slideNode, function () { 9764 hide(_this2.loader); 9765 9766 _this2.resize(); 9767 9768 _this2.slideAnimateIn(slideNode, first); 9769 9770 _this2.trigger('slide_after_load', slideData); 9771 }); 9772 } 9773 9774 this.slideDescription = slideNode.querySelector('.gslide-description'); 9775 this.slideDescriptionContained = this.slideDescription && hasClass(this.slideDescription.parentNode, 'gslide-media'); 9776 9777 if (this.settings.preload) { 9778 this.preloadSlide(index + 1); 9779 this.preloadSlide(index - 1); 9780 } 9781 9782 this.updateNavigationClasses(); 9783 this.activeSlide = slideNode; 9784 } 9785 }, { 9786 key: "preloadSlide", 9787 value: function preloadSlide(index) { 9788 var _this3 = this; 9789 9790 if (index < 0 || index > this.elements.length - 1) { 9791 return false; 9792 } 9793 9794 if (isNil(this.elements[index])) { 9795 return false; 9796 } 9797 9798 var slideNode = this.slidesContainer.querySelectorAll('.gslide')[index]; 9799 9800 if (hasClass(slideNode, 'loaded')) { 9801 return false; 9802 } 9803 9804 var slide = this.elements[index]; 9805 var type = slide.type; 9806 var slideData = { 9807 index: index, 9808 slide: slideNode, 9809 slideNode: slideNode, 9810 slideConfig: slide.slideConfig, 9811 slideIndex: index, 9812 trigger: slide.node, 9813 player: null 9814 }; 9815 this.trigger('slide_before_load', slideData); 9816 9817 if (type === 'video' || type === 'external') { 9818 setTimeout(function () { 9819 slide.instance.setContent(slideNode, function () { 9820 _this3.trigger('slide_after_load', slideData); 9821 }); 9822 }, 200); 9823 } else { 9824 slide.instance.setContent(slideNode, function () { 9825 _this3.trigger('slide_after_load', slideData); 9826 }); 9827 } 9828 } 9829 }, { 9830 key: "prevSlide", 9831 value: function prevSlide() { 9832 this.goToSlide(this.index - 1); 9833 } 9834 }, { 9835 key: "nextSlide", 9836 value: function nextSlide() { 9837 this.goToSlide(this.index + 1); 9838 } 9839 }, { 9840 key: "goToSlide", 9841 value: function goToSlide() { 9842 var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; 9843 this.prevActiveSlide = this.activeSlide; 9844 this.prevActiveSlideIndex = this.index; 9845 9846 if (!this.loop() && (index < 0 || index > this.elements.length - 1)) { 9847 return false; 9848 } 9849 9850 if (index < 0) { 9851 index = this.elements.length - 1; 9852 } else if (index >= this.elements.length) { 9853 index = 0; 9854 } 9855 9856 this.showSlide(index); 9857 } 9858 }, { 9859 key: "insertSlide", 9860 value: function insertSlide() { 9861 var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 9862 var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : -1; 9863 9864 if (index < 0) { 9865 index = this.elements.length; 9866 } 9867 9868 var slide = new Slide(config, this, index); 9869 var data = slide.getConfig(); 9870 9871 var slideInfo = extend({}, data); 9872 9873 var newSlide = slide.create(); 9874 var totalSlides = this.elements.length - 1; 9875 slideInfo.index = index; 9876 slideInfo.node = false; 9877 slideInfo.instance = slide; 9878 slideInfo.slideConfig = data; 9879 this.elements.splice(index, 0, slideInfo); 9880 var addedSlideNode = null; 9881 var addedSlidePlayer = null; 9882 9883 if (this.slidesContainer) { 9884 if (index > totalSlides) { 9885 this.slidesContainer.appendChild(newSlide); 9886 } else { 9887 var existingSlide = this.slidesContainer.querySelectorAll('.gslide')[index]; 9888 this.slidesContainer.insertBefore(newSlide, existingSlide); 9889 } 9890 9891 if (this.settings.preload && this.index == 0 && index == 0 || this.index - 1 == index || this.index + 1 == index) { 9892 this.preloadSlide(index); 9893 } 9894 9895 if (this.index === 0 && index === 0) { 9896 this.index = 1; 9897 } 9898 9899 this.updateNavigationClasses(); 9900 addedSlideNode = this.slidesContainer.querySelectorAll('.gslide')[index]; 9901 addedSlidePlayer = this.getSlidePlayerInstance(index); 9902 slideInfo.slideNode = addedSlideNode; 9903 } 9904 9905 this.trigger('slide_inserted', { 9906 index: index, 9907 slide: addedSlideNode, 9908 slideNode: addedSlideNode, 9909 slideConfig: data, 9910 slideIndex: index, 9911 trigger: null, 9912 player: addedSlidePlayer 9913 }); 9914 9915 if (isFunction(this.settings.slideInserted)) { 9916 this.settings.slideInserted({ 9917 index: index, 9918 slide: addedSlideNode, 9919 player: addedSlidePlayer 9920 }); 9921 } 9922 } 9923 }, { 9924 key: "removeSlide", 9925 value: function removeSlide() { 9926 var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; 9927 9928 if (index < 0 || index > this.elements.length - 1) { 9929 return false; 9930 } 9931 9932 var slide = this.slidesContainer && this.slidesContainer.querySelectorAll('.gslide')[index]; 9933 9934 if (slide) { 9935 if (this.getActiveSlideIndex() == index) { 9936 if (index == this.elements.length - 1) { 9937 this.prevSlide(); 9938 } else { 9939 this.nextSlide(); 9940 } 9941 } 9942 9943 slide.parentNode.removeChild(slide); 9944 } 9945 9946 this.elements.splice(index, 1); 9947 this.trigger('slide_removed', index); 9948 9949 if (isFunction(this.settings.slideRemoved)) { 9950 this.settings.slideRemoved(index); 9951 } 9952 } 9953 }, { 9954 key: "slideAnimateIn", 9955 value: function slideAnimateIn(slide, first) { 9956 var _this4 = this; 9957 9958 var slideMedia = slide.querySelector('.gslide-media'); 9959 var slideDesc = slide.querySelector('.gslide-description'); 9960 var prevData = { 9961 index: this.prevActiveSlideIndex, 9962 slide: this.prevActiveSlide, 9963 slideNode: this.prevActiveSlide, 9964 slideIndex: this.prevActiveSlide, 9965 slideConfig: isNil(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig, 9966 trigger: isNil(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node, 9967 player: this.getSlidePlayerInstance(this.prevActiveSlideIndex) 9968 }; 9969 var nextData = { 9970 index: this.index, 9971 slide: this.activeSlide, 9972 slideNode: this.activeSlide, 9973 slideConfig: this.elements[this.index].slideConfig, 9974 slideIndex: this.index, 9975 trigger: this.elements[this.index].node, 9976 player: this.getSlidePlayerInstance(this.index) 9977 }; 9978 9979 if (slideMedia.offsetWidth > 0 && slideDesc) { 9980 hide(slideDesc); 9981 9982 slideDesc.style.display = ''; 9983 } 9984 9985 removeClass(slide, this.effectsClasses); 9986 9987 if (first) { 9988 animateElement(slide, this.settings.cssEfects[this.settings.openEffect]["in"], function () { 9989 if (_this4.settings.autoplayVideos) { 9990 _this4.slidePlayerPlay(slide); 9991 } 9992 9993 _this4.trigger('slide_changed', { 9994 prev: prevData, 9995 current: nextData 9996 }); 9997 9998 if (isFunction(_this4.settings.afterSlideChange)) { 9999 _this4.settings.afterSlideChange.apply(_this4, [prevData, nextData]); 10000 } 10001 }); 10002 } else { 10003 var effectName = this.settings.slideEffect; 10004 var animIn = effectName !== 'none' ? this.settings.cssEfects[effectName]["in"] : effectName; 10005 10006 if (this.prevActiveSlideIndex > this.index) { 10007 if (this.settings.slideEffect == 'slide') { 10008 animIn = this.settings.cssEfects.slideBack["in"]; 10009 } 10010 } 10011 10012 animateElement(slide, animIn, function () { 10013 if (_this4.settings.autoplayVideos) { 10014 _this4.slidePlayerPlay(slide); 10015 } 10016 10017 _this4.trigger('slide_changed', { 10018 prev: prevData, 10019 current: nextData 10020 }); 10021 10022 if (isFunction(_this4.settings.afterSlideChange)) { 10023 _this4.settings.afterSlideChange.apply(_this4, [prevData, nextData]); 10024 } 10025 }); 10026 } 10027 10028 setTimeout(function () { 10029 _this4.resize(slide); 10030 }, 100); 10031 10032 addClass(slide, 'current'); 10033 } 10034 }, { 10035 key: "slideAnimateOut", 10036 value: function slideAnimateOut() { 10037 if (!this.prevActiveSlide) { 10038 return false; 10039 } 10040 10041 var prevSlide = this.prevActiveSlide; 10042 10043 removeClass(prevSlide, this.effectsClasses); 10044 10045 addClass(prevSlide, 'prev'); 10046 10047 var animation = this.settings.slideEffect; 10048 var animOut = animation !== 'none' ? this.settings.cssEfects[animation].out : animation; 10049 this.slidePlayerPause(prevSlide); 10050 this.trigger('slide_before_change', { 10051 prev: { 10052 index: this.prevActiveSlideIndex, 10053 slide: this.prevActiveSlide, 10054 slideNode: this.prevActiveSlide, 10055 slideIndex: this.prevActiveSlideIndex, 10056 slideConfig: isNil(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].slideConfig, 10057 trigger: isNil(this.prevActiveSlideIndex) ? null : this.elements[this.prevActiveSlideIndex].node, 10058 player: this.getSlidePlayerInstance(this.prevActiveSlideIndex) 10059 }, 10060 current: { 10061 index: this.index, 10062 slide: this.activeSlide, 10063 slideNode: this.activeSlide, 10064 slideIndex: this.index, 10065 slideConfig: this.elements[this.index].slideConfig, 10066 trigger: this.elements[this.index].node, 10067 player: this.getSlidePlayerInstance(this.index) 10068 } 10069 }); 10070 10071 if (isFunction(this.settings.beforeSlideChange)) { 10072 this.settings.beforeSlideChange.apply(this, [{ 10073 index: this.prevActiveSlideIndex, 10074 slide: this.prevActiveSlide, 10075 player: this.getSlidePlayerInstance(this.prevActiveSlideIndex) 10076 }, { 10077 index: this.index, 10078 slide: this.activeSlide, 10079 player: this.getSlidePlayerInstance(this.index) 10080 }]); 10081 } 10082 10083 if (this.prevActiveSlideIndex > this.index && this.settings.slideEffect == 'slide') { 10084 animOut = this.settings.cssEfects.slideBack.out; 10085 } 10086 10087 animateElement(prevSlide, animOut, function () { 10088 var container = prevSlide.querySelector('.ginner-container'); 10089 var media = prevSlide.querySelector('.gslide-media'); 10090 var desc = prevSlide.querySelector('.gslide-description'); 10091 container.style.transform = ''; 10092 media.style.transform = ''; 10093 10094 removeClass(media, 'greset'); 10095 10096 media.style.opacity = ''; 10097 10098 if (desc) { 10099 desc.style.opacity = ''; 10100 } 10101 10102 removeClass(prevSlide, 'prev'); 10103 }); 10104 } 10105 }, { 10106 key: "getAllPlayers", 10107 value: function getAllPlayers() { 10108 return this.videoPlayers; 10109 } 10110 }, { 10111 key: "getSlidePlayerInstance", 10112 value: function getSlidePlayerInstance(index) { 10113 var id = 'gvideo' + index; 10114 var videoPlayers = this.getAllPlayers(); 10115 10116 if (has(videoPlayers, id) && videoPlayers[id]) { 10117 return videoPlayers[id]; 10118 } 10119 10120 return false; 10121 } 10122 }, { 10123 key: "stopSlideVideo", 10124 value: function stopSlideVideo(slide) { 10125 if (isNode(slide)) { 10126 var node = slide.querySelector('.gvideo-wrapper'); 10127 10128 if (node) { 10129 slide = node.getAttribute('data-index'); 10130 } 10131 } 10132 10133 console.log('stopSlideVideo is deprecated, use slidePlayerPause'); 10134 var player = this.getSlidePlayerInstance(slide); 10135 10136 if (player && player.playing) { 10137 player.pause(); 10138 } 10139 } 10140 }, { 10141 key: "slidePlayerPause", 10142 value: function slidePlayerPause(slide) { 10143 if (isNode(slide)) { 10144 var node = slide.querySelector('.gvideo-wrapper'); 10145 10146 if (node) { 10147 slide = node.getAttribute('data-index'); 10148 } 10149 } 10150 10151 var player = this.getSlidePlayerInstance(slide); 10152 10153 if (player && player.playing) { 10154 player.pause(); 10155 } 10156 } 10157 }, { 10158 key: "playSlideVideo", 10159 value: function playSlideVideo(slide) { 10160 if (isNode(slide)) { 10161 var node = slide.querySelector('.gvideo-wrapper'); 10162 10163 if (node) { 10164 slide = node.getAttribute('data-index'); 10165 } 10166 } 10167 10168 console.log('playSlideVideo is deprecated, use slidePlayerPlay'); 10169 var player = this.getSlidePlayerInstance(slide); 10170 10171 if (player && !player.playing) { 10172 player.play(); 10173 } 10174 } 10175 }, { 10176 key: "slidePlayerPlay", 10177 value: function slidePlayerPlay(slide) { 10178 var _this$settings$plyr$c; 10179 10180 if (isMobile$1 && !((_this$settings$plyr$c = this.settings.plyr.config) !== null && _this$settings$plyr$c !== void 0 && _this$settings$plyr$c.muted)) { 10181 return; 10182 } 10183 10184 if (isNode(slide)) { 10185 var node = slide.querySelector('.gvideo-wrapper'); 10186 10187 if (node) { 10188 slide = node.getAttribute('data-index'); 10189 } 10190 } 10191 10192 var player = this.getSlidePlayerInstance(slide); 10193 10194 if (player && !player.playing) { 10195 player.play(); 10196 10197 if (this.settings.autofocusVideos) { 10198 player.elements.container.focus(); 10199 } 10200 } 10201 } 10202 }, { 10203 key: "setElements", 10204 value: function setElements(elements) { 10205 var _this5 = this; 10206 10207 this.settings.elements = false; 10208 var newElements = []; 10209 10210 if (elements && elements.length) { 10211 each(elements, function (el, i) { 10212 var slide = new Slide(el, _this5, i); 10213 var data = slide.getConfig(); 10214 10215 var slideInfo = extend({}, data); 10216 10217 slideInfo.slideConfig = data; 10218 slideInfo.instance = slide; 10219 slideInfo.index = i; 10220 newElements.push(slideInfo); 10221 }); 10222 } 10223 10224 this.elements = newElements; 10225 10226 if (this.lightboxOpen) { 10227 this.slidesContainer.innerHTML = ''; 10228 10229 if (this.elements.length) { 10230 each(this.elements, function () { 10231 var slide = createHTML(_this5.settings.slideHTML); 10232 10233 _this5.slidesContainer.appendChild(slide); 10234 }); 10235 10236 this.showSlide(0, true); 10237 } 10238 } 10239 } 10240 }, { 10241 key: "getElementIndex", 10242 value: function getElementIndex(node) { 10243 var index = false; 10244 10245 each(this.elements, function (el, i) { 10246 if (has(el, 'node') && el.node == node) { 10247 index = i; 10248 return true; 10249 } 10250 }); 10251 10252 return index; 10253 } 10254 }, { 10255 key: "getElements", 10256 value: function getElements() { 10257 var _this6 = this; 10258 10259 var list = []; 10260 this.elements = this.elements ? this.elements : []; 10261 10262 if (!isNil(this.settings.elements) && isArray(this.settings.elements) && this.settings.elements.length) { 10263 each(this.settings.elements, function (el, i) { 10264 var slide = new Slide(el, _this6, i); 10265 var elData = slide.getConfig(); 10266 10267 var slideInfo = extend({}, elData); 10268 10269 slideInfo.node = false; 10270 slideInfo.index = i; 10271 slideInfo.instance = slide; 10272 slideInfo.slideConfig = elData; 10273 list.push(slideInfo); 10274 }); 10275 } 10276 10277 var nodes = false; 10278 var selector = this.getSelector(); 10279 10280 if (selector) { 10281 nodes = document.querySelectorAll(this.getSelector()); 10282 } 10283 10284 if (!nodes) { 10285 return list; 10286 } 10287 10288 each(nodes, function (el, i) { 10289 var slide = new Slide(el, _this6, i); 10290 var elData = slide.getConfig(); 10291 10292 var slideInfo = extend({}, elData); 10293 10294 slideInfo.node = el; 10295 slideInfo.index = i; 10296 slideInfo.instance = slide; 10297 slideInfo.slideConfig = elData; 10298 slideInfo.gallery = el.getAttribute('data-gallery'); 10299 list.push(slideInfo); 10300 }); 10301 10302 return list; 10303 } 10304 }, { 10305 key: "getGalleryElements", 10306 value: function getGalleryElements(list, gallery) { 10307 return list.filter(function (el) { 10308 return el.gallery == gallery; 10309 }); 10310 } 10311 }, { 10312 key: "getSelector", 10313 value: function getSelector() { 10314 if (this.settings.elements) { 10315 return false; 10316 } 10317 10318 if (this.settings.selector && this.settings.selector.substring(0, 5) == 'data-') { 10319 return "*[".concat(this.settings.selector, "]"); 10320 } 10321 10322 return this.settings.selector; 10323 } 10324 }, { 10325 key: "getActiveSlide", 10326 value: function getActiveSlide() { 10327 return this.slidesContainer.querySelectorAll('.gslide')[this.index]; 10328 } 10329 }, { 10330 key: "getActiveSlideIndex", 10331 value: function getActiveSlideIndex() { 10332 return this.index; 10333 } 10334 }, { 10335 key: "getAnimationClasses", 10336 value: function getAnimationClasses() { 10337 var effects = []; 10338 10339 for (var key in this.settings.cssEfects) { 10340 if (this.settings.cssEfects.hasOwnProperty(key)) { 10341 var effect = this.settings.cssEfects[key]; 10342 effects.push("g".concat(effect["in"])); 10343 effects.push("g".concat(effect.out)); 10344 } 10345 } 10346 10347 return effects.join(' '); 10348 } 10349 }, { 10350 key: "build", 10351 value: function build() { 10352 var _this7 = this; 10353 10354 if (this.built) { 10355 return false; 10356 } 10357 10358 var children = document.body.childNodes; 10359 var bodyChildElms = []; 10360 10361 each(children, function (el) { 10362 if (el.parentNode == document.body && el.nodeName.charAt(0) !== '#' && el.hasAttribute && !el.hasAttribute('aria-hidden')) { 10363 bodyChildElms.push(el); 10364 el.setAttribute('aria-hidden', 'true'); 10365 } 10366 }); 10367 10368 var nextSVG = has(this.settings.svg, 'next') ? this.settings.svg.next : ''; 10369 var prevSVG = has(this.settings.svg, 'prev') ? this.settings.svg.prev : ''; 10370 var closeSVG = has(this.settings.svg, 'close') ? this.settings.svg.close : ''; 10371 var lightboxHTML = this.settings.lightboxHTML; 10372 lightboxHTML = lightboxHTML.replace(/{nextSVG}/g, nextSVG); 10373 lightboxHTML = lightboxHTML.replace(/{prevSVG}/g, prevSVG); 10374 lightboxHTML = lightboxHTML.replace(/{closeSVG}/g, closeSVG); 10375 lightboxHTML = createHTML(lightboxHTML); 10376 document.body.appendChild(lightboxHTML); 10377 var modal = document.getElementById('glightbox-body'); 10378 this.modal = modal; 10379 var closeButton = modal.querySelector('.gclose'); 10380 this.prevButton = modal.querySelector('.gprev'); 10381 this.nextButton = modal.querySelector('.gnext'); 10382 this.overlay = modal.querySelector('.goverlay'); 10383 this.loader = modal.querySelector('.gloader'); 10384 this.slidesContainer = document.getElementById('glightbox-slider'); 10385 this.bodyHiddenChildElms = bodyChildElms; 10386 this.events = {}; 10387 10388 addClass(this.modal, 'glightbox-' + this.settings.skin); 10389 10390 if (this.settings.closeButton && closeButton) { 10391 this.events['close'] = addEvent('click', { 10392 onElement: closeButton, 10393 withCallback: function withCallback(e, target) { 10394 e.preventDefault(); 10395 10396 _this7.close(); 10397 } 10398 }); 10399 } 10400 10401 if (closeButton && !this.settings.closeButton) { 10402 closeButton.parentNode.removeChild(closeButton); 10403 } 10404 10405 if (this.nextButton) { 10406 this.events['next'] = addEvent('click', { 10407 onElement: this.nextButton, 10408 withCallback: function withCallback(e, target) { 10409 e.preventDefault(); 10410 10411 _this7.nextSlide(); 10412 } 10413 }); 10414 } 10415 10416 if (this.prevButton) { 10417 this.events['prev'] = addEvent('click', { 10418 onElement: this.prevButton, 10419 withCallback: function withCallback(e, target) { 10420 e.preventDefault(); 10421 10422 _this7.prevSlide(); 10423 } 10424 }); 10425 } 10426 10427 if (this.settings.closeOnOutsideClick) { 10428 this.events['outClose'] = addEvent('click', { 10429 onElement: modal, 10430 withCallback: function withCallback(e, target) { 10431 if (!_this7.preventOutsideClick && !hasClass(document.body, 'glightbox-mobile') && !closest(e.target, '.ginner-container')) { 10432 if (!closest(e.target, '.gbtn') && !hasClass(e.target, 'gnext') && !hasClass(e.target, 'gprev')) { 10433 _this7.close(); 10434 } 10435 } 10436 } 10437 }); 10438 } 10439 10440 each(this.elements, function (slide, i) { 10441 _this7.slidesContainer.appendChild(slide.instance.create()); 10442 10443 slide.slideNode = _this7.slidesContainer.querySelectorAll('.gslide')[i]; 10444 }); 10445 10446 if (isTouch$1) { 10447 addClass(document.body, 'glightbox-touch'); 10448 this.settings.autoplayVideos = false; 10449 } 10450 10451 this.events['resize'] = addEvent('resize', { 10452 onElement: window, 10453 withCallback: function withCallback() { 10454 _this7.resize(); 10455 } 10456 }); 10457 this.built = true; 10458 } 10459 }, { 10460 key: "resize", 10461 value: function resize() { 10462 var slide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; 10463 slide = !slide ? this.activeSlide : slide; 10464 10465 if (!slide || hasClass(slide, 'zoomed')) { 10466 return; 10467 } 10468 10469 var winSize = windowSize(); 10470 10471 var video = slide.querySelector('.gvideo-wrapper'); 10472 var image = slide.querySelector('.gslide-image'); 10473 var description = this.slideDescription; 10474 var winWidth = winSize.width; 10475 var winHeight = winSize.height; 10476 10477 if (winWidth <= 768) { 10478 addClass(document.body, 'glightbox-mobile'); 10479 } else { 10480 removeClass(document.body, 'glightbox-mobile'); 10481 } 10482 10483 if (!video && !image) { 10484 return; 10485 } 10486 10487 var descriptionResize = false; 10488 10489 if (description && (hasClass(description, 'description-bottom') || hasClass(description, 'description-top')) && !hasClass(description, 'gabsolute')) { 10490 descriptionResize = true; 10491 } 10492 10493 if (image) { 10494 if (winWidth <= 768) { 10495 var imgNode = image.querySelector('img'); 10496 } else if (descriptionResize) { 10497 var descHeight = description.offsetHeight; 10498 10499 var _imgNode = image.querySelector('img'); 10500 10501 _imgNode.setAttribute('style', "max-height: calc(100vh - ".concat(descHeight, "px)")); 10502 10503 description.setAttribute('style', "max-width: ".concat(_imgNode.offsetWidth, "px;")); 10504 } 10505 } 10506 10507 if (video) { 10508 var ratio = has(this.settings.plyr.config, 'ratio') ? this.settings.plyr.config.ratio : ''; 10509 10510 if (!ratio) { 10511 var containerWidth = video.clientWidth; 10512 var containerHeight = video.clientHeight; 10513 var divisor = containerWidth / containerHeight; 10514 ratio = "".concat(containerWidth / divisor, ":").concat(containerHeight / divisor); 10515 } 10516 10517 var videoRatio = ratio.split(':'); 10518 var videoWidth = this.settings.videosWidth; 10519 var maxWidth = this.settings.videosWidth; 10520 10521 if (isNumber(videoWidth) || videoWidth.indexOf('px') !== -1) { 10522 maxWidth = parseInt(videoWidth); 10523 } else { 10524 if (videoWidth.indexOf('vw') !== -1) { 10525 maxWidth = winWidth * parseInt(videoWidth) / 100; 10526 } else if (videoWidth.indexOf('vh') !== -1) { 10527 maxWidth = winHeight * parseInt(videoWidth) / 100; 10528 } else if (videoWidth.indexOf('%') !== -1) { 10529 maxWidth = winWidth * parseInt(videoWidth) / 100; 10530 } else { 10531 maxWidth = parseInt(video.clientWidth); 10532 } 10533 } 10534 10535 var maxHeight = maxWidth / (parseInt(videoRatio[0]) / parseInt(videoRatio[1])); 10536 maxHeight = Math.floor(maxHeight); 10537 10538 if (descriptionResize) { 10539 winHeight = winHeight - description.offsetHeight; 10540 } 10541 10542 if (maxWidth > winWidth || maxHeight > winHeight || winHeight < maxHeight && winWidth > maxWidth) { 10543 var vwidth = video.offsetWidth; 10544 var vheight = video.offsetHeight; 10545 10546 var _ratio = winHeight / vheight; 10547 10548 var vsize = { 10549 width: vwidth * _ratio, 10550 height: vheight * _ratio 10551 }; 10552 video.parentNode.setAttribute('style', "max-width: ".concat(vsize.width, "px")); 10553 10554 if (descriptionResize) { 10555 description.setAttribute('style', "max-width: ".concat(vsize.width, "px;")); 10556 } 10557 } else { 10558 video.parentNode.style.maxWidth = "".concat(videoWidth); 10559 10560 if (descriptionResize) { 10561 description.setAttribute('style', "max-width: ".concat(videoWidth, ";")); 10562 } 10563 } 10564 } 10565 } 10566 }, { 10567 key: "reload", 10568 value: function reload() { 10569 this.init(); 10570 } 10571 }, { 10572 key: "updateNavigationClasses", 10573 value: function updateNavigationClasses() { 10574 var loop = this.loop(); 10575 10576 removeClass(this.nextButton, 'disabled'); 10577 10578 removeClass(this.prevButton, 'disabled'); 10579 10580 if (this.index == 0 && this.elements.length - 1 == 0) { 10581 addClass(this.prevButton, 'disabled'); 10582 10583 addClass(this.nextButton, 'disabled'); 10584 } else if (this.index === 0 && !loop) { 10585 addClass(this.prevButton, 'disabled'); 10586 } else if (this.index === this.elements.length - 1 && !loop) { 10587 addClass(this.nextButton, 'disabled'); 10588 } 10589 } 10590 }, { 10591 key: "loop", 10592 value: function loop() { 10593 var loop = has(this.settings, 'loopAtEnd') ? this.settings.loopAtEnd : null; 10594 loop = has(this.settings, 'loop') ? this.settings.loop : loop; 10595 return loop; 10596 } 10597 }, { 10598 key: "close", 10599 value: function close() { 10600 var _this8 = this; 10601 10602 if (!this.lightboxOpen) { 10603 if (this.events) { 10604 for (var key in this.events) { 10605 if (this.events.hasOwnProperty(key)) { 10606 this.events[key].destroy(); 10607 } 10608 } 10609 10610 this.events = null; 10611 } 10612 10613 return false; 10614 } 10615 10616 if (this.closing) { 10617 return false; 10618 } 10619 10620 this.closing = true; 10621 this.slidePlayerPause(this.activeSlide); 10622 10623 if (this.fullElementsList) { 10624 this.elements = this.fullElementsList; 10625 } 10626 10627 if (this.bodyHiddenChildElms.length) { 10628 each(this.bodyHiddenChildElms, function (el) { 10629 el.removeAttribute('aria-hidden'); 10630 }); 10631 } 10632 10633 addClass(this.modal, 'glightbox-closing'); 10634 10635 animateElement(this.overlay, this.settings.openEffect == 'none' ? 'none' : this.settings.cssEfects.fade.out); 10636 10637 animateElement(this.activeSlide, this.settings.cssEfects[this.settings.closeEffect].out, function () { 10638 _this8.activeSlide = null; 10639 _this8.prevActiveSlideIndex = null; 10640 _this8.prevActiveSlide = null; 10641 _this8.built = false; 10642 10643 if (_this8.events) { 10644 for (var _key in _this8.events) { 10645 if (_this8.events.hasOwnProperty(_key)) { 10646 _this8.events[_key].destroy(); 10647 } 10648 } 10649 10650 _this8.events = null; 10651 } 10652 10653 var body = document.body; 10654 10655 removeClass(html, 'glightbox-open'); 10656 10657 removeClass(body, 'glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer'); 10658 10659 _this8.modal.parentNode.removeChild(_this8.modal); 10660 10661 _this8.trigger('close'); 10662 10663 if (isFunction(_this8.settings.onClose)) { 10664 _this8.settings.onClose(); 10665 } 10666 10667 var styles = document.querySelector('.gcss-styles'); 10668 10669 if (styles) { 10670 styles.parentNode.removeChild(styles); 10671 } 10672 10673 _this8.lightboxOpen = false; 10674 _this8.closing = null; 10675 }); 10676 } 10677 }, { 10678 key: "destroy", 10679 value: function destroy() { 10680 this.close(); 10681 this.clearAllEvents(); 10682 10683 if (this.baseEvents) { 10684 this.baseEvents.destroy(); 10685 } 10686 } 10687 }, { 10688 key: "on", 10689 value: function on(evt, callback) { 10690 var once = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 10691 10692 if (!evt || !isFunction(callback)) { 10693 throw new TypeError('Event name and callback must be defined'); 10694 } 10695 10696 this.apiEvents.push({ 10697 evt: evt, 10698 once: once, 10699 callback: callback 10700 }); 10701 } 10702 }, { 10703 key: "once", 10704 value: function once(evt, callback) { 10705 this.on(evt, callback, true); 10706 } 10707 }, { 10708 key: "trigger", 10709 value: function trigger(eventName) { 10710 var _this9 = this; 10711 10712 var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; 10713 var onceTriggered = []; 10714 10715 each(this.apiEvents, function (event, i) { 10716 var evt = event.evt, 10717 once = event.once, 10718 callback = event.callback; 10719 10720 if (evt == eventName) { 10721 callback(data); 10722 10723 if (once) { 10724 onceTriggered.push(i); 10725 } 10726 } 10727 }); 10728 10729 if (onceTriggered.length) { 10730 each(onceTriggered, function (i) { 10731 return _this9.apiEvents.splice(i, 1); 10732 }); 10733 } 10734 } 10735 }, {
10736 key: "clearAllEvents", 10737 value: function clearAllEvents() { 10738 this.apiEvents.splice(0, this.apiEvents.length); 10739 } 10740 }, { 10741 key: "version", 10742 value: function version() { 10743 return _version; 10744 } 10745 }]); 10746 10747 return GlightboxInit; 10748 }(); 10749 10750 function glightbox () { 10751 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 10752 var instance = new GlightboxInit(options); 10753 instance.init(); 10754 return instance; 10755 } 10756 10757 return glightbox; 10758 10759}))); 10760/*! 10761 * Headhesive.js v1.2.3 - An on-demand sticky header 10762 * Author: Copyright (c) Mark Goodyear <@markgdyr> <http://markgoodyear.com> 10763 * Url: http://markgoodyear.com/labs/headhesive 10764 * License: MIT 10765 */ 10766!function(t,e){"function"==typeof define&&define.amd?define([],function(){return e()}):"object"==typeof exports?module.exports=e():t.Headhesive=e()}(this,function(){"use strict";var t=function(e,s){for(var o in s)s.hasOwnProperty(o)&&(e[o]="object"==typeof s[o]?t(e[o],s[o]):s[o]);return e},e=function(t,e){var s,o,i,n=Date.now||function(){return(new Date).getTime()},l=null,c=0,r=function(){c=n(),l=null,i=t.apply(s,o),s=o=null};return function(){var f=n(),h=e-(f-c);return s=this,o=arguments,0>=h?(clearTimeout(l),l=null,c=f,i=t.apply(s,o),s=o=null):l||(l=setTimeout(r,h)),i}},s=function(){return void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop},o=function(t,e){for(var s=0,o=t.offsetHeight;t;)s+=t.offsetTop,t=t.offsetParent;return"bottom"===e&&(s+=o),s},i=function(e,s){"querySelector"in document&&"addEventListener"in window&&(this.visible=!1,this.options={offset:300,offsetSide:"top",classes:{clone:"headhesive",stick:"headhesive--stick",unstick:"headhesive--unstick"},throttle:250,onInit:function(){},onStick:function(){},onUnstick:function(){},onDestroy:function(){}},this.elem="string"==typeof e?document.querySelector(e):e,this.options=t(this.options,s),this.init())};return i.prototype={constructor:i,init:function(){if(this.clonedElem=this.elem.cloneNode(!0),this.clonedElem.className+=" "+this.options.classes.clone,document.body.insertBefore(this.clonedElem,document.body.firstChild),"number"==typeof this.options.offset)this.scrollOffset=this.options.offset;else{if("string"!=typeof this.options.offset)throw new Error("Invalid offset: "+this.options.offset);this._setScrollOffset()}this._throttleUpdate=e(this.update.bind(this),this.options.throttle),this._throttleScrollOffset=e(this._setScrollOffset.bind(this),this.options.throttle),window.addEventListener("scroll",this._throttleUpdate,!1),window.addEventListener("resize",this._throttleScrollOffset,!1),this.options.onInit.call(this)},_setScrollOffset:function(){"string"==typeof this.options.offset&&(this.scrollOffset=o(document.querySelector(this.options.offset),this.options.offsetSide))},destroy:function(){document.body.removeChild(this.clonedElem),window.removeEventListener("scroll",this._throttleUpdate),window.removeEventListener("resize",this._throttleScrollOffset),this.options.onDestroy.call(this)},stick:function(){this.visible||(this.clonedElem.className=this.clonedElem.className.replace(new RegExp("(^|\\s)*"+this.options.classes.unstick+"(\\s|$)*","g"),""),this.clonedElem.className+=" "+this.options.classes.stick,this.visible=!0,this.options.onStick.call(this))},unstick:function(){this.visible&&(this.clonedElem.className=this.clonedElem.className.replace(new RegExp("(^|\\s)*"+this.options.classes.stick+"(\\s|$)*","g"),""),this.clonedElem.className+=" "+this.options.classes.unstick,this.visible=!1,this.options.onUnstick.call(this))},update:function(){s()>this.scrollOffset?this.stick():this.unstick()}},i}); 10767/*! 10768 * imagesLoaded PACKAGED v4.1.4 10769 * JavaScript is all like "You images are done yet or what?" 10770 * MIT License 10771 */ 10772 10773!function(e,t){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var i=this._events=this._events||{},n=i[e]=i[e]||[];return n.indexOf(t)==-1&&n.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var i=this._onceEvents=this._onceEvents||{},n=i[e]=i[e]||{};return n[t]=!0,this}},t.off=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){var n=i.indexOf(t);return n!=-1&&i.splice(n,1),this}},t.emitEvent=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){i=i.slice(0),t=t||[];for(var n=this._onceEvents&&this._onceEvents[e],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(e,r),delete n[r]),r.apply(this,t)}return this}},t.allOff=function(){delete this._events,delete this._onceEvents},e}),function(e,t){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return t(e,i)}):"object"==typeof module&&module.exports?module.exports=t(e,require("ev-emitter")):e.imagesLoaded=t(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(e,t){function i(e,t){for(var i in t)e[i]=t[i];return e}function n(e){if(Array.isArray(e))return e;var t="object"==typeof e&&"number"==typeof e.length;return t?d.call(e):[e]}function o(e,t,r){if(!(this instanceof o))return new o(e,t,r);var s=e;return"string"==typeof e&&(s=document.querySelectorAll(e)),s?(this.elements=n(s),this.options=i({},this.options),"function"==typeof t?r=t:i(this.options,t),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(this.check.bind(this))):void a.error("Bad element for imagesLoaded "+(s||e))}function r(e){this.img=e}function s(e,t){this.url=e,this.element=t,this.img=new Image}var h=e.jQuery,a=e.console,d=Array.prototype.slice;o.prototype=Object.create(t.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEac
vendor: 3,411 bytes, line 10773
10773h(this.addElementImages,this)},o.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),this.options.background===!0&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&u[t]){for(var i=e.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=e.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var u={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(e){var t=getComputedStyle(e);if(t)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(t.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,e),n=i.exec(t.backgroundImage)}},o.prototype.addImage=function(e){var t=new r(e);this.images.push(t)},o.prototype.addBackground=function(e,t){var i=new s(e,t);this.images.push(i)},o.prototype.check=function(){function e(e,i,n){setTimeout(function(){t.progress(e,i,n)})}var t=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(t){t.once("progress",e),t.check()}):void this.complete()},o.prototype.progress=function(e,t,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,e,t)},o.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},r.prototype=Object.create(t.prototype),r.prototype.check=function(){var e=this.getIsImageComplete();return e?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},r.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.img,t])},r.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var e=this.getIsImageComplete();e&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},o.makeJQueryPlugin=function(t){t=t||e.jQuery,t&&(h=t,h.fn.imagesLoaded=function(e,t){var i=new o(this,e,t);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o});
vendor: 35,445 bytes, lines 10774-10785
10774/*! 10775 * Isotope PACKAGED v3.0.6 10776 * 10777 * Licensed GPLv3 for open source use 10778 * or Isotope Commercial License for commercial use 10779 * 10780 * https://isotope.metafizzy.co 10781 * Copyright 2010-2018 Metafizzy 10782 */ 10783 10784!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,s,a){function u(t,e,o){var n,s="$()."+i+'("'+e+'")';return t.each(function(t,u){var h=a.data(u,i);if(!h)return void r(i+" not initialized. Cannot call methods, i.e. "+s);var d=h[e];if(!d||"_"==e.charAt(0))return void r(s+" is not a valid method");var l=d.apply(h,o);n=void 0===n?l:n}),void 0!==n?n:t}function h(t,e){t.each(function(t,o){var n=a.data(o,i);n?(n.option(e),n._init()):(n=new s(o,e),a.data(o,i,n))})}a=a||e||t.jQuery,a&&(s.prototype.option||(s.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=n.call(arguments,1);return u(this,t,e)}return h(this,t),this},o(a))}function o(t){!t||t&&t.bridget||(t.bridget=i)}var n=Array.prototype.slice,s=t.console,r="undefined"==typeof s?function(){}:function(t){s.error(t)};return o(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},o=i[t]=i[t]||[];return o.indexOf(e)==-1&&o.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},o=i[t]=i[t]||{};return o[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var o=i.indexOf(e);return o!=-1&&i.splice(o,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var o=this._onceEvents&&this._onceEvents[t],n=0;n<i.length;n++){var s=i[n],r=o&&o[s];r&&(this.off(t,s),delete o[s]),s.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=t.indexOf("%")==-1&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;e<h;e++){var i=u[e];t[i]=0}return t}function o(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function n(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var n=o(e);r=200==Math.round(t(n.width)),s.isBoxSizeOuter=r,i.removeChild(e)}}function s(e){if(n(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var s=o(e);if("none"==s.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==s.boxSizing,l=0;l<h;l++){var f=u[l],c=s[f],m=parseFloat(c);a[f]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,y=a.paddingTop+a.paddingBottom,g=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,I=d&&r,x=t(s.width);x!==!1&&(a.width=x+(I?0:p+_));var S=t(s.height);return S!==!1&&(a.height=S+(I?0:y+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(y+z),a.outerWidth=a.width+g,a.outerHeight=a.height+v,a}}var r,a="undefined"==typeof console?e:function(t){console.error(t)},u=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],h=u.length,d=!1;return s}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var o=e[i],n=o+"MatchesSelector";if(t[n])return n}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var o=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?o.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);i!=-1&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,o){t=i.makeArray(t);var n=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!o)return void n.push(t);e(t,o)&&n.push(t);for(var i=t.querySelectorAll(o),s=0;s<i.length;s++)n.push(i[s])}}),n},i.debounceMethod=function(t,e,i){i=i||100;var o=t.prototype[e],n=e+"Timeout";t.prototype[e]=function(){var t=this[n];clearTimeout(t);var e=arguments,s=this;this[n]=setTimeout(function(){o.apply(s,e),delete s[n]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var n=t.console;return i.htmlInit=function(e,o){i.docReady(function(){var s=i.toDashed(o),r="data-"+s,a=document.querySelectorAll("["+r+"]"),u=document.querySelectorAll(".js-"+s),h=i.makeArray(a).concat(i.makeArray(u)),d=r+"-options",l=t.jQuery;h.forEach(function(t){var i,s=t.getAttribute(r)||t.getAttribute(d);try{i=s&&JSON.parse(s)}catch(a){return void(n&&n.error("Error parsing "+r+" on "+t.className+": "+a))}var u=new e(t,i);l&&l.data(t,o,u)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function o(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function n(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var s=document.documentElement.style,r="string"==typeof s.transition?"transition":"WebkitTransition",a="string"==typeof s.transform?"transform":"WebkitTransform",u={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[r],h={transform:a,transition:r,transitionDuration:r+"Duration",transitionProperty:r+"Property",transitionDelay:r+"Delay"},d=o.prototype=Object.create(t.prototype);d.constructor=o,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var o=h[i]||i;e[o]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),o=t[e?"left":"right"],n=t[i?"top":"bottom"],s=parseFloat(o),r=parseFloat(n),a=this.layout.size;o.indexOf("%")!=-1&&(s=s/100*a.width),n.indexOf("%")!=-1&&(r=r/100*a.height),s=isNaN(s)?0:s,r=isNaN(r)?0:r,s-=e?a.paddingLeft:a.paddingRight,r-=i?a.paddingTop:a.paddingBottom,this.position.x=s,this.position.y=r},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),o=this.layout._getOption("originTop"),n=i?"paddingLeft":"paddingRight",s=i?"left":"right",r=i?"right":"left",a=this.position.x+t[n];e[s]=this.getXValue(a),e[r]="";var u=o?"paddingTop":"paddingBottom",h=o?"top":"bottom",d=o?"bottom":"top",l=this.position.y+t[u];e[h]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,o=this.position.y,n=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),n&&!this.isTransitioning)return void this.layoutPosition();var s=t-i,r=e-o,a={};a.transform=this.getTranslate(s,r),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),o=this.layout._getOption("originTop");return t=i?t:-t,e=o?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var o=this.element.offsetHeight;o=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+n(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(u,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var f={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,o=f[t.propertyName]||t.propertyName;if(delete e.ingProperties[o],i(e.ingProperties)&&this.disableTransition(),o in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[o]),o in e.onEnd){var n=e.onEnd[o];n.call(this),delete e.onEnd[o]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(u,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var c={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(c)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return r&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},o}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,o,n,s){return e(t,i,o,n,s)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,o,n){"use strict";function s(t,e){var i=o.getQueryElement(t);if(!i)return void(u&&u.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,h&&(this.$element=h(this.element)),this.options=o.extend({},this.constructor.defaults),this.option(e);var n=++l;this.element.outlayerGUID=n,f[n]=this,this._create();var s=this._getOption("initLayout");s&&this.layout()}function r(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],o=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var n=m[o]||1;return i*n}var u=t.console,h=t.jQuery,d=function(){},l=0,f={};s.namespace="outlayer",s.Item=n,s.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var c=s.prototype;o.extend(c,e.prototype),c.option=function(t){o.extend(this.options,t)},c._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},s.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},c._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),o.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},c.reloadItems=function(){this.items=this._itemize(this.element.children)},c._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,o=[],n=0;n<e.length;n++){var s=e[n],r=new i(s,this);o.push(r)}return o},c._filterFindItemElements=function(t){return o.filterFindElements(t,this.options.itemSelector)},c.getItemElements=function(){return this.items.map(function(t){return t.element})},c.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},c._init=c.layout,c._resetLayout=function(){this.getSize()},c.getSize=function(){this.size=i(this.element)},c._getMeasurement=function(t,e){var o,n=this.options[t];n?("string"==typeof n?o=this.element.querySelector(n):n instanceof HTMLElement&&(o=n),this[t]=o?i(o)[e]:n):this[t]=0},c.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},c._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},c._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var o=this._getItemLayoutPosition(t);o.item=t,o.isInstant=e||t.isLayoutInstant,i.push(o)},this),this._processLayoutQueue(i)}},c._getItemLayoutPosition=function(){return{x:0,y:0}},c._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},c.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},c._positionItem=function(t,e,i,o,n){o?t.goTo(e,i):(t.stagger(n*this.stagger),t.moveTo(e,i))},c._postLayout=function(){this.resizeContainer()},c.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},c._getContainerSize=d,c._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},c._emitCompleteOnItems=function(t,e){function i(){n.dispatchEvent(t+"Complete",null,[e])}function o(){r++,r==s&&i()}var n=this,s=e.length;if(!e||!s)return void i();var r=0;e.forEach(function(e){e.once(t,o)})},c.dispatchEvent=function(t,e,i){var o=e?[e].concat(i):i;if(this.emitEvent(t,o),h)if(this.$element=this.$element||h(this.element),e){var n=h.Event(e);n.type=t,this.$element.trigger(n,i)}else this.$element.trigger(t,i)},c.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},c.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},c.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},c.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){o.removeFrom(this.stamps,t),this.unignore(t)},this)},c._find=function(t){if(t)return"string"==typeof t&&(t=this.element.querySelectorAll(t)),t=o.makeArray(t)},c._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},c._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},c._manageStamp=d,c._getElementOffset=function(t){var e=t.getBoundingClientRect(),o=this._boundingRect,n=i(t),s={left:e.left-o.left-n.marginLeft,top:e.top-o.top-n.marginTop,right:o.right-e.right-n.marginRight,bottom:o.bottom-e.bottom-n.marginBottom};return s},c.handleEvent=o.handleEvent,c.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},c.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},c.onresize=function(){this.resize()},o.debounceMethod(s,"onresize",100),c.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},c.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},c.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},c.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},c.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},c.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},c.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},c.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},c.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},c.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},c.getItems=function(t){t=o.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},c.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),o.removeFrom(this.items,t)},this)},c.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete f[e],delete this.element.outlayerGUID,h&&h.removeData(this.element,this.constructor.namespace)},s.data=function(t){t=o.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&f[e]},s.create=function(t,e){var i=r(s);return i.defaults=o.extend({},s.defaults),o.extend(i.defaults,e),i.compatOptions=o.extend({},s.compatOptions),i.namespace=t,i.data=s.data,i.Item=r(n),o.htmlInit(i,t),h&&h.bridget&&h.bridget(t,i),i};var m={ms:1,s:1e3};return s.Item=n,s}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/item",["outlayer/outlayer"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.Item=e(t.Outlayer))}(window,function(t){"use strict";function e(){t.Item.apply(this,arguments)}var i=e.prototype=Object.create(t.Item.prototype),o=i._create;i._create=function(){this.id=this.layout.itemGUID++,o.call(this),this.sortData={}},i.updateSortData=function(){if(!this.isIgnored){this.sortData.id=this.id,this.sortData["original-order"]=this.id,this.sortData.random=Math.random();var t=this.layout.options.getSortData,e=this.layout._sorters;for(var i in t){var o=e[i];this.sortData[i]=o(this.element,this)}}};var n=i.destroy;return i.destroy=function(){n.apply(this,arguments),this.css({display:""})},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-mode",["get-size/get-size","outlayer/outlayer"],e):"object"==typeof module&&module.exports?module.exports=e(require("get-size"),require("outlayer")):(t.Isotope=t.Isotope||{},t.Isotope.LayoutMode=e(t.getSize,t.Outlayer))}(window,function(t,e){"use strict";function i(t){this.isotope=t,t&&(this.options=t.options[this.namespace],this.element=t.element,this.items=t.filteredItems,this.size=t.size)}var o=i.prototype,n=["_resetLayout","_getItemLayoutPosition","_manageStamp","_getContainerSize","_getElementOffset","needsResizeLayout","_getOption"];return n.forEach(function(t){o[t]=function(){return e.prototype[t].apply(this.isotope,arguments)}}),o.needsVerticalResizeLayout=function(){var e=t(this.isotope.element),i=this.isotope.size&&e;return i&&e.innerHeight!=this.isotope.size.innerHeight},o._getMeasurement=function(){this.isotope._getMeasurement.apply(this,arguments)},o.getColumnWidth=function(){this.getSegmentSize("column","Width")},o.getRowHeight=function(){this.getSegmentSize("row","Height")},o.getSegmentSize=function(t,e){var i=t+e,o="outer"+e;if(this._getMeasurement(i,o),!this[i]){var n=this.getFirstItemSize();this[i]=n&&n[o]||this.isotope.size["inner"+e]}},o.getFirstItemSize=function(){var e=this.isotope.filteredItems[0];return e&&e.element&&t(e.element)},o.layout=function(){this.isotope.layout.apply(this.isotope,arguments)},o.getSize=function(){this.isotope.getSize(),this.size=this.isotope.size},i.modes={},i.create=function(t,e){function n(){i.apply(this,arguments)}return n.prototype=Object.create(o),n.prototype.constructor=n,e&&(n.options=e),n.prototype.namespace=t,i.modes[t]=n,n},i}),function(t,e){"function"==typeof define&&define.amd?define("masonry-layout/masonry",["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var o=i.prototype;return o._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},o.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var o=this.columnWidth+=this.gutter,n=this.containerWidth+this.gutter,s=n/o,r=o-n%o,a=r&&r<1?"round":"floor";s=Math[a](s),this.cols=Math.max(s,1)},o.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,o=e(i);this.containerWidth=o&&o.innerWidth},o._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&e<1?"round":"ceil",o=Math[i](t.size.outerWidth/this.columnWidth);o=Math.min(o,this.cols);for(var n=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",s=this[n](o,t),r={x:this.columnWidth*s.col,y:s.y},a=s.y+t.size.outerHeight,u=o+s.col,h=s.col;h<u;h++)this.colYs[h]=a;return r},o._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},o._getTopColGroup=function(t){if(t<2)return this.colYs;for(var e=[],i=this.cols+1-t,o=0;o<i;o++)e[o]=this._getColGroupY(o,t);return e},o._getColGroupY=function(t,e){if(e<2)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},o._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,o=t>1&&i+t>this.cols;i=o?0:i;var n=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=n?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},o._manageStamp=function(t){var i=e(t),o=this._getElementOffset(t),n=this._getOption("originLeft"),s=n?o.left:o.right,r=s+i.outerWidth,a=Math.floor(s/this.columnWidth);a=Math.max(0,a);var u=Math.floor(r/this.columnWidth);u-=r%this.columnWidth?0:1,u=Math.min(this.cols-1,u);for(var h=this._getOption("originTop"),d=(h?o.top:o.bottom)+i.outerHeight,l=a;l<=u;l++)this.colYs[l]=Math.max(d,this.colYs[l])},o._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},o._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},o.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-modes/masonry",["../layout-mode","masonry-layout/masonry"],e):"object"==typeof module&&module.exports?module.exports=e(require("../layout-mode"),require("masonry-layout")):e(t.Isotope.LayoutMode,t.Masonry)}(window,function(t,e){"use strict";var i=t.create("masonry"),o=i.prototype,n={_getElementOffset:!0,layout:!0,_getMeasurement:!0};for(var s in e.prototype)n[s]||(o[s]=e.prototype[s]);var r=o.measureColumns;o.measureColumns=function(){this.items=this.isotope.filteredItems,r.call(this)};var a=o._getOption;return o._getOption=function(t){return"fitWidth"==t?void 0!==this.options.isFitWidth?this.options.isFitWidth:this.options.fitWidth:a.apply(this.isotope,arguments)},i}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-modes/fit-rows",["../layout-mode"],e):"object"==typeof exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){"use strict";var e=t.create("fitRows"),i=e.prototype;return i._resetLayout=function(){this.x=0,this.y=0,this.maxY=0,this._getMeasurement("gutter","outerWidth")},i._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth+this.gutter,i=this.isotope.size.innerWidth+this.gutter;0!==this.x&&e+this.x>i&&(this.x=0,this.y=this.maxY);var o={x:this.x,y:this.y};return this.maxY=Math.max(this.maxY,this.y+t.size.outerHeight),this.x+=e,o},i._getContainerSize=function(){return{height:this.maxY}},e}),function(t,e){"function"==typeof define&&define.amd?define("isotope-layout/js/layout-modes/vertical",["../layout-mode"],e):"object"==typeof module&&module.exports?module.exports=e(require("../layout-mode")):e(t.Isotope.LayoutMode)}(window,function(t){"use strict";var e=t.create("vertical",{horizontalAlignment:0}),i=e.prototype;return i._resetLayout=function(){this.y=0},i._getItemLayoutPosition=function(t){t.getSize();var e=(this.isotope.size.innerWidth-t.size.outerWidth)*this.options.horizontalAlignment,i=this.y;return this.y+=t.size.outerHeight,{x:e,y:i}},i._getContainerSize=function(){return{height:this.y}},e}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size","desandro-matches-selector/matches-selector","fizzy-ui-utils/utils","isotope-layout/js/item","isotope-layout/js/layout-mode","isotope-layout/js/layout-modes/masonry","isotope-layout/js/layout-modes/fit-rows","isotope-layout/js/layout-modes/vertical"],function(i,o,n,s,r,a){return e(t,i,o,n,s,r,a)}):"object"==typeof module&&module.exports?module.exports=e(t,require("outlayer"),require("get-size"),require("desandro-matches-selector"),require("fizzy-ui-utils"),require("isotope-layout/js/item"),require("isotope-layout/js/layout-mode"),require("isotope-layout/js/layout-modes/masonry"),require("isotope-layout/js/layout-modes/fit-rows"),require("isotope-layout/js/layout-modes/vertical")):t.Isotope=e(t,t.Outlayer,t.getSize,t.matchesSelector,t.fizzyUIUtils,t.Isotope.Item,t.Isotope.LayoutMode)}(window,function(t,e,i,o,n,s,r){function a(t,e){return function(i,o){for(var n=0;n<t.length;n++){var s=t[n],r=i.sortData[s],a=o.sortData[s];if(r>a||r<a){var u=void 0!==e[s]?e[s]:e,h=u?1:-1;return(r>a?1:-1)*h}}return 0}}var u=t.jQuery,h=String.prototype.trim?function(t){return t.trim()}:function(t){return t.replace(/^\s+|\s+$/g,"")},d=e.create("isotope",{layoutMode:"masonry",isJQueryFiltering:!0,sortAscending:!0});d.Item=s,d.LayoutMode=r;var l=d.prototype;l._create=function(){this.itemGUID=0,this._sorters={},this._getSorters(),e.prototype._create.call(this),this.modes={},this.filteredItems=this.items,this.sortHistory=["original-order"];for(var t in r.modes)this._initLayoutMode(t)},l.reloadItems=function(){this.itemGUID=0,e.prototype.reloadItems.call(this)},l._itemize=function(){for(var t=e.prototype._itemize.apply(this,arguments),i=0;i<t.length;i++){var o=t[i];o.id=this.itemGUID++}return this._updateItemsSortData(t),t},l._initLayoutMode=function(t){var e=r.modes[t],i=this.options[t]||{};this.options[t]=e.options?n.extend(e.options,i):i,this.modes[t]=new e(this)},l.layout=function(){return!this._isLayoutInited&&this._getOption("initLayout")?void this.arrange():void this._layout()},l._layout=function(){var t=this._getIsInstant();this._resetLayout(),this._manageStamps(),this.layoutItems(this.filteredItems,t),this._isLayoutInited=!0},l.arrange=function(t){this.option(t),this._getIsInstant();var e=this._filter(this.items);this.filteredItems=e.matches,this._bindArrangeComplete(),this._isInstant?this._noTransition(this._hideReveal,[e]):this._hideReveal(e),this._sort(),this._layout()},l._init=l.arrange,l._hideReveal=function(t){this.reveal(t.needReveal),this.hide(t.needHide)},l._getIsInstant=function(){var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;return this._isInstant=e,e},l._bindArrangeComplete=function(){function t(){e&&i&&o&&n.dispatchEvent("arrangeComplete",null,[n.filteredItems])}var e,i,o,n=this;this.once("layoutComplete",function(){e=!0,t()}),this.once("hideComplete",function(){i=!0,t()}),this.once("revealComplete",function(){o=!0,t()})},l._filter=function(t){var e=this.options.filter;e=e||"*";for(var i=[],o=[],n=[],s=this._getFilterTest(e),r=0;r<t.length;r++){var a=t[r];if(!a.isIgnored){var u=s(a);u&&i.push(a),u&&a.isHidden?o.push(a):u||a.isHidden||n.push(a)}}return{matches:i,needReveal:o,needHide:n}},l._getFilterTest=function(t){return u&&this.options.isJQueryFiltering?function(e){return u(e.element).is(t); 10785}:"function"==typeof t?function(e){return t(e.element)}:function(e){return o(e.element,t)}},l.updateSortData=function(t){var e;t?(t=n.makeArray(t),e=this.getItems(t)):e=this.items,this._getSorters(),this._updateItemsSortData(e)},l._getSorters=function(){var t=this.options.getSortData;for(var e in t){var i=t[e];this._sorters[e]=f(i)}},l._updateItemsSortData=function(t){for(var e=t&&t.length,i=0;e&&i<e;i++){var o=t[i];o.updateSortData()}};var f=function(){function t(t){if("string"!=typeof t)return t;var i=h(t).split(" "),o=i[0],n=o.match(/^\[(.+)\]$/),s=n&&n[1],r=e(s,o),a=d.sortDataParsers[i[1]];return t=a?function(t){return t&&a(r(t))}:function(t){return t&&r(t)}}function e(t,e){return t?function(e){return e.getAttribute(t)}:function(t){var i=t.querySelector(e);return i&&i.textContent}}return t}();d.sortDataParsers={parseInt:function(t){return parseInt(t,10)},parseFloat:function(t){return parseFloat(t)}},l._sort=function(){if(this.options.sortBy){var t=n.makeArray(this.options.sortBy);this._getIsSameSortBy(t)||(this.sortHistory=t.concat(this.sortHistory));var e=a(this.sortHistory,this.options.sortAscending);this.filteredItems.sort(e)}},l._getIsSameSortBy=function(t){for(var e=0;e<t.length;e++)if(t[e]!=this.sortHistory[e])return!1;return!0},l._mode=function(){var t=this.options.layoutMode,e=this.modes[t];if(!e)throw new Error("No layout mode: "+t);return e.options=this.options[t],e},l._resetLayout=function(){e.prototype._resetLayout.call(this),this._mode()._resetLayout()},l._getItemLayoutPosition=function(t){return this._mode()._getItemLayoutPosition(t)},l._manageStamp=function(t){this._mode()._manageStamp(t)},l._getContainerSize=function(){return this._mode()._getContainerSize()},l.needsResizeLayout=function(){return this._mode().needsResizeLayout()},l.appended=function(t){var e=this.addItems(t);if(e.length){var i=this._filterRevealAdded(e);this.filteredItems=this.filteredItems.concat(i)}},l.prepended=function(t){var e=this._itemize(t);if(e.length){this._resetLayout(),this._manageStamps();var i=this._filterRevealAdded(e);this.layoutItems(this.filteredItems),this.filteredItems=i.concat(this.filteredItems),this.items=e.concat(this.items)}},l._filterRevealAdded=function(t){var e=this._filter(t);return this.hide(e.needHide),this.reveal(e.matches),this.layoutItems(e.matches,!0),e.matches},l.insert=function(t){var e=this.addItems(t);if(e.length){var i,o,n=e.length;for(i=0;i<n;i++)o=e[i],this.element.appendChild(o.element);var s=this._filter(e).matches;for(i=0;i<n;i++)e[i].isLayoutInstant=!0;for(this.arrange(),i=0;i<n;i++)delete e[i].isLayoutInstant;this.reveal(s)}};var c=l.remove;return l.remove=function(t){t=n.makeArray(t);var e=this.getItems(t);c.call(this,t);for(var i=e&&e.length,o=0;i&&o<i;o++){var s=e[o];n.removeFrom(this.filteredItems,s)}},l.shuffle=function(){for(var t=0;t<this.items.length;t++){var e=this.items[t];e.sortData.random=Math.random()}this.options.sortBy="random",this._sort(),this._layout()},l._noTransition=function(t,e){var i=this.options.transitionDuration;this.options.transitionDuration=0;var o=t.apply(this,e);return this.options.transitionDuration=i,o},l.getFilteredItemElements=function(){return this.filteredItems.map(function(t){return t.element})},d});
10785 10786/*! 10787 * iTooltip.js v1.1.1 10788 * https://github.com/Ins-V/iTooltip 10789 */ 10790class DoubleCenterException{constructor(){window.console.error('iTooltip Error: positionX and positionY properties cannot be "center" at the same time.')}}class iTooltip{constructor(t="*"){const e="*"!==t?t:"*[title]";this.objects=document.querySelectorAll(e)}init(t={}){if(this.settings=Object.assign({className:"tooltip",indentX:10,indentY:15,positionX:"right",positionY:"bottom"},t),"center"===this.settings.positionX&&"center"===this.settings.positionY)throw new DoubleCenterException;this.objects.forEach(t=>{t.getAttribute("title")&&(t.addEventListener("mouseenter",t=>this.createTooltip(t)),t.addEventListener("mouseleave",t=>this.removeTooltip(t)))})}createTooltip(t){const e=t.target;this.tooltip=document.createElement("div"),this.tooltip.classList.add(this.settings.className),this.tooltip.innerHTML=e.getAttribute("title");var i=t.target.className.split(" ").find(t=>t.startsWith("itooltip-"));i&&this.tooltip.classList.add(i),this.tooltip.style.position="absolute",this.changePosition(t),e.removeAttribute("title"),document.body.appendChild(this.tooltip),e.addEventListener("mousemove",t=>this.changePosition(t))}removeTooltip(t){t.target.setAttribute("title",this.tooltip.innerHTML),this.tooltip.remove()}changePosition(t){const[e,i]=this.getSizeTooltip(),o=this.getEdges(t),s=window.pageYOffset||document.documentElement.scrollTop;let n=t.pageY,l=t.pageX;if(l="right"===this.settings.positionX?o.right<=e?t.clientX-e-this.settings.indentX:t.clientX+this.settings.indentX:"left"===this.settings.positionX?o.left<=e?o.left+this.settings.indentX:t.clientX-e-this.settings.indentX:o.left<=Math.round(e/2)?t.clientX-o.left:t.clientX-Math.round(e/2),"top"===this.settings.positionY)n=o.top<=i?s+t.clientY+this.settings.indentY:t.pageY-i-this.settings.indentY;else if("bottom"===this.settings.positionY)n=o.bottom<i&&o.top>i+this.settings.indentY?t.pageY-i-this.settings.indentY:s+t.clientY+this.settings.indentY;else{let t=Math.round(i/2);o.bottom<=t&&(t=Math.round(i-o.bottom)),o.top<=t&&(t=o.top),n-=t}this.tooltip.style.top=`${n}px`,this.tooltip.style.left=`${l}px`}getSizeTooltip(){const t=this.tooltip.getBoundingClientRect();return[t.right-t.left,t.bottom-t.top]}getEdges(t){const e=document.documentElement;return{left:t.clientX,right:e.clientWidth-t.clientX,top:t.clientY,bottom:e.clientHeight-t.clientY}}} 10791/*! 10792Waypoints - 4.0.1 10793Copyright © 2011-2016 Caleb Troughton 10794Licensed under the MIT license. 10795https://github.com/imakewebthings/waypoints/blob/master/licenses.txt 10796*/ 10797!function(){"use strict";function t(n){if(!n)throw new Error("No options passed to Waypoint constructor");if(!n.element)throw new Error("No element option passed to Waypoint constructor");if(!n.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,n),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=n.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var n in i)e.push(i[n]);for(var o=0,r=e.length;r>o;o++)e[o][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.Context.refreshAll();for(var e in i)i[e].enabled=!0;return this},t.refreshAll=function(){t.Context.refreshAll()}
vendor: 5,257 bytes, line 10797
10797,t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=o.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,n[t.waypointContextKey]=this,i+=1,o.windowContext||(o.windowContext=!0,o.windowContext=new e(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,n={},o=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete n[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,o.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||o.isTouch)&&(e.didScroll=!0,o.requestAnimationFrame(t))})},e.prototype.handleResize=function(){o.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var n=e[i],o=n.newScroll>n.oldScroll,r=o?n.forward:n.backward;for(var s in this.waypoints[i]){var l=this.waypoints[i][s];if(null!==l.triggerPoint){var a=n.oldScroll<l.triggerPoint,h=n.newScroll>=l.triggerPoint,p=a&&h,u=!a&&!h;(p||u)&&(l.queueTrigger(r),t[l.group.id]=l.group)}}}for(var d in t)t[d].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?o.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?o.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var n=0,o=t.length;o>n;n++)t[n].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),n={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var r in t){var s=t[r];for(var l in this.waypoints[r]){var a,h,p,u,d,f=this.waypoints[r][l],c=f.options.offset,w=f.triggerPoint,y=0,g=null==w;f.element!==f.element.window&&(y=f.adapter.offset()[s.offsetProp]),"function"==typeof c?c=c.apply(f):"string"==typeof c&&(c=parseFloat(c),f.options.offset.indexOf("%")>-1&&(c=Math.ceil(s.contextDimension*c/100))),a=s.contextScroll-s.contextOffset,f.triggerPoint=Math.floor(y+a-c),h=w<s.oldScroll,p=f.triggerPoint>=s.oldScroll,u=h&&p,d=!h&&!p,!g&&u?(f.queueTrigger(s.backward),n[f.group.id]=f.group):!g&&d?(f.queueTrigger(s.forward),n[f.group.id]=f.group):g&&s.oldScroll>=f.triggerPoint&&(f.queueTrigger(s.forward),n[f.group.id]=f.group)}}return o.requestAnimationFrame(function(){for(var t in n)n[t].flushTriggers()}),this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in n)n[t].refresh()},e.findByElement=function(t){return n[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},o.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},o.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),n[this.axis][this.name]=this}var n={vertical:{},horizontal:{}},o=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],r
10797ight:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var n=this.triggerQueues[i],o="up"===i||"left"===i;n.sort(o?e:t);for(var r=0,s=n.length;s>r;r+=1){var l=n[r];(l.options.continuous||r===n.length-1)&&l.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints),n=i===this.waypoints.length-1;return n?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=o.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=o.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return n[t.axis][t.name]||new i(t)},o.Group=i}(),function(){"use strict";function t(t){return t===t.window}function e(e){return t(e)?e:e.defaultView}function i(t){this.element=t,this.handlers={}}var n=window.Waypoint;i.prototype.innerHeight=function(){var e=t(this.element);return e?this.element.innerHeight:this.element.clientHeight},i.prototype.innerWidth=function(){var e=t(this.element);return e?this.element.innerWidth:this.element.clientWidth},i.prototype.off=function(t,e){function i(t,e,i){for(var n=0,o=e.length-1;o>n;n++){var r=e[n];i&&i!==r||t.removeEventListener(r)}}var n=t.split("."),o=n[0],r=n[1],s=this.element;if(r&&this.handlers[r]&&o)i(s,this.handlers[r][o],e),this.handlers[r][o]=[];else if(o)for(var l in this.handlers)i(s,this.handlers[l][o]||[],e),this.handlers[l][o]=[];else if(r&&this.handlers[r]){for(var a in this.handlers[r])i(s,this.handlers[r][a],e);this.handlers[r]={}}},i.prototype.offset=function(){if(!this.element.ownerDocument)return null;var t=this.element.ownerDocument.documentElement,i=e(this.element.ownerDocument),n={top:0,left:0};return this.element.getBoundingClientRect&&(n=this.element.getBoundingClientRect()),{top:n.top+i.pageYOffset-t.clientTop,left:n.left+i.pageXOffset-t.clientLeft}},i.prototype.on=function(t,e){var i=t.split("."),n=i[0],o=i[1]||"__default",r=this.handlers[o]=this.handlers[o]||{},s=r[n]=r[n]||[];s.push(e),this.element.addEventListener(n,e)},i.prototype.outerHeight=function(e){var i,n=this.innerHeight();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginTop,10),n+=parseInt(i.marginBottom,10)),n},i.prototype.outerWidth=function(e){var i,n=this.innerWidth();return e&&!t(this.element)&&(i=window.getComputedStyle(this.element),n+=parseInt(i.marginLeft,10),n+=parseInt(i.marginRight,10)),n},i.prototype.scrollLeft=function(){var t=e(this.element);return t?t.pageXOffset:this.element.scrollLeft},i.prototype.scrollTop=function(){var t=e(this.element);return t?t.pageYOffset:this.element.scrollTop},i.extend=function(){function t(t,e){if("object"==typeof t&&"object"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}for(var e=Array.prototype.slice.call(arguments),i=1,n=e.length;n>i;i++)t(e[0],e[i]);return e[0]},i.inArray=function(t,e,i){return null==e?-1:e.indexOf(t,i)},i.isEmptyObject=function(t){for(var e in t)return!1;return!0},n.adapters.push({name:"noframework",Adapter:i}),n.Adapter=i}(); 10798/*! picturefill - v3.0.2 - 2016-02-12 10799 * https://scottjehl.github.io/picturefill/ 10800 * Copyright (c) 2016 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT 10801 */ 10802!function(a){var b=navigator.userAgent;a.HTMLPictureElement&&/ecko/.test(b)&&b.match(/rv\:(\d+)/)&&RegExp.$1<45&&addEventListener("resize",function(){var b,c=document.createElement("source"),d=function(a){var b,d,e=a.parentNode;"PICTURE"===e.nodeName.toUpperCase()?(b=c.cloneNode(),e.insertBefore(b,e.firstElementChild),setTimeout(function(){e.removeChild(b)})):(!a._pfLastSize||a.offsetWidth>a._pfLastSize)&&(a._pfLastSize=a.offsetWidth,d=a.sizes,a.sizes+=",100vw",setTimeout(function(){a.sizes=d}))},e=function(){var a,b=document.querySelectorAll("picture > img, img[srcset][sizes]");for(a=0;a<b.length;a++)d(b[a])},f=function(){clearTimeout(b),b=setTimeout(e,99)},g=a.matchMedia&&matchMedia("(orientation: landscape)"),h=function(){f(),g&&g.addListener&&g.addListener(f)};return c.srcset="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",/^[c|i]|d$/.test(document.readyState||"")?h():document.addEventListener("DOMContentLoaded",h),f}())}(window),function(a,b,c){"use strict";function d(a){return" "===a||" "===a||"\n"===a||"\f"===a||"\r"===a}function e(b,c){var d=new a.Image;return d.onerror=function(){A[b]=!1,ba()},d.onload=function(){A[b]=1===d.width,ba()},d.src=c,"pending"}function f(){M=!1,P=a.devicePixelRatio,N={},O={},s.DPR=P||1,Q.width=Math.max(a.innerWidth||0,z.clientWidth),Q.height=Math.max(a.innerHeight||0,z.clientHeight),Q.vw=Q.width/100,Q.vh=Q.height/100,r=[Q.height,Q.width,P].join("-"),Q.em=s.getEmValue(),Q.rem=Q.em}function g(a,b,c,d){var e,f,g,h;return"saveData"===B.algorithm?a>2.7?h=c+1:(f=b-c,e=Math.pow(a-.6,1.5),g=f*e,d&&(g+=.1*e),h=a+g):h=c>1?Math.sqrt(a*b):a,h>
vendor: 8,071 bytes, line 10802
10802c}function h(a){var b,c=s.getSet(a),d=!1;"pending"!==c&&(d=r,c&&(b=s.setRes(c),s.applySetCandidate(b,a))),a[s.ns].evaled=d}function i(a,b){return a.res-b.res}function j(a,b,c){var d;return!c&&b&&(c=a[s.ns].sets,c=c&&c[c.length-1]),d=k(b,c),d&&(b=s.makeUrl(b),a[s.ns].curSrc=b,a[s.ns].curCan=d,d.res||aa(d,d.set.sizes)),d}function k(a,b){var c,d,e;if(a&&b)for(e=s.parseSet(b),a=s.makeUrl(a),c=0;c<e.length;c++)if(a===s.makeUrl(e[c].url)){d=e[c];break}return d}function l(a,b){var c,d,e,f,g=a.getElementsByTagName("source");for(c=0,d=g.length;d>c;c++)e=g[c],e[s.ns]=!0,f=e.getAttribute("srcset"),f&&b.push({srcset:f,media:e.getAttribute("media"),type:e.getAttribute("type"),sizes:e.getAttribute("sizes")})}function m(a,b){function c(b){var c,d=b.exec(a.substring(m));return d?(c=d[0],m+=c.length,c):void 0}function e(){var a,c,d,e,f,i,j,k,l,m=!1,o={};for(e=0;e<h.length;e++)f=h[e],i=f[f.length-1],j=f.substring(0,f.length-1),k=parseInt(j,10),l=parseFloat(j),X.test(j)&&"w"===i?((a||c)&&(m=!0),0===k?m=!0:a=k):Y.test(j)&&"x"===i?((a||c||d)&&(m=!0),0>l?m=!0:c=l):X.test(j)&&"h"===i?((d||c)&&(m=!0),0===k?m=!0:d=k):m=!0;m||(o.url=g,a&&(o.w=a),c&&(o.d=c),d&&(o.h=d),d||c||a||(o.d=1),1===o.d&&(b.has1x=!0),o.set=b,n.push(o))}function f(){for(c(T),i="",j="in descriptor";;){if(k=a.charAt(m),"in descriptor"===j)if(d(k))i&&(h.push(i),i="",j="after descriptor");else{if(","===k)return m+=1,i&&h.push(i),void e();if("("===k)i+=k,j="in parens";else{if(""===k)return i&&h.push(i),void e();i+=k}}else if("in parens"===j)if(")"===k)i+=k,j="in descriptor";else{if(""===k)return h.push(i),void e();i+=k}else if("after descriptor"===j)if(d(k));else{if(""===k)return void e();j="in descriptor",m-=1}m+=1}}for(var g,h,i,j,k,l=a.length,m=0,n=[];;){if(c(U),m>=l)return n;g=c(V),h=[],","===g.slice(-1)?(g=g.replace(W,""),e()):f()}}function n(a){function b(a){function b(){f&&(g.push(f),f="")}function c(){g[0]&&(h.push(g),g=[])}for(var e,f="",g=[],h=[],i=0,j=0,k=!1;;){if(e=a.charAt(j),""===e)return b(),c(),h;if(k){if("*"===e&&"/"===a[j+1]){k=!1,j+=2,b();continue}j+=1}else{if(d(e)){if(a.charAt(j-1)&&d(a.charAt(j-1))||!f){j+=1;continue}if(0===i){b(),j+=1;continue}e=" "}else if("("===e)i+=1;else if(")"===e)i-=1;else{if(","===e){b(),c(),j+=1;continue}if("/"===e&&"*"===a.charAt(j+1)){k=!0,j+=2;continue}}f+=e,j+=1}}}function c(a){return k.test(a)&&parseFloat(a)>=0?!0:l.test(a)?!0:"0"===a||"-0"===a||"+0"===a?!0:!1}var e,f,g,h,i,j,k=/^(?:[+-]?[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?(?:ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmin|vmax|vw)$/i,l=/^calc\((?:[0-9a-z \.\+\-\*\/\(\)]+)\)$/i;for(f=b(a),g=f.length,e=0;g>e;e++)if(h=f[e],i=h[h.length-1],c(i)){if(j=i,h.pop(),0===h.length)return j;if(h=h.join(" "),s.matchesMedia(h))return j}return"100vw"}b.createElement("picture");var o,p,q,r,s={},t=!1,u=function(){},v=b.createElement("img"),w=v.getAttribute,x=v.setAttribute,y=v.removeAttribute,z=b.documentElement,A={},B={algorithm:""},C="data-pfsrc",D=C+"set",E=navigator.userAgent,F=/rident/.test(E)||/ecko/.test(E)&&E.match(/rv\:(\d+)/)&&RegExp.$1>35,G="currentSrc",H=/\s+\+?\d+(e\d+)?w/,I=/(\([^)]+\))?\s*(.+)/,J=a.picturefillCFG,K="position:absolute;left:0;visibility:hidden;display:block;padding:0;border:none;font-size:1em;width:1em;overflow:hidden;clip:rect(0px, 0px, 0px, 0px)",L="font-size:100%!important;",M=!0,N={},O={},P=a.devicePixelRatio,Q={px:1,"in":96},R=b.createElement("a"),S=!1,T=/^[ \t\n\r\u000c]+/,U=/^[, \t\n\r\u000c]+/,V=/^[^ \t\n\r\u000c]+/,W=/[,]+$/,X=/^\d+$/,Y=/^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,Z=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d||!1):a.attachEvent&&a.attachEvent("on"+b,c)},$=function(a){var b={};return function(c){return c in b||(b[c]=a(c)),b[c]}},_=function(){var a=/^([\d\.]+)(em|vw|px)$/,b=function(){for(var a=arguments,b=0,c=a[0];++b in a;)c=c.replace(a[b],a[++b]);return c},c=$(function(a){return"return "+b((a||"").toLowerCase(),/\band\b/g,"&&",/,/g,"||",/min-([a-z-\s]+):/g,"e.$1>=",/max-([a-z-\s]+):/g,"e.$1<=",/calc([^)]+)/g,"($1)",/(\d+[\.]*[\d]*)([a-z]+)/g,"($1 * e.$2)",/^(?!(e.[a-z]|[0-9\.&=|><\+\-\*\(\)\/])).*/gi,"")+";"});return function(b,d){var e;if(!(b in N))if(N[b]=!1,d&&(e=b.match(a)))N[b]=e[1]*Q[e[2]];else try{N[b]=new Function("e",c(b))(Q)}catch(f){}return N[b]}}(),aa=function(a,b){return a.w?(a.cWidth=s.calcListLength(b||"100vw"),a.res=a.w/a.cWidth):a.res=a.d,a},ba=function(a){if(t){var c,d,e,f=a||{};if(f.elements&&1===f.elements.nodeType&&("IMG"===f.elements.nodeName.toUpperCase()?f.elements=[f.elements]:(f.context=f.elements,f.elements=null)),c=f.elements||s.qsa(f.context||b,f.reevaluate||f.reselect?s.sel:s.selShort),e=c.length){for(s.setupRun(f),S=!0,d=0;e>d;d++)s.fillImg(c[d],f);s.teardownRun(f)}}};o=a.console&&console.warn?function(a){console.warn(a)}:u,G in v||(G="src"),A["image/jpeg"]=!0,A["image/gif"]=!0,A["image/png"]=!0,A["image/svg+xml"]=b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1"),s.ns=("pf"+(new Date).getTime()).substr(0,9),s.supSrcset="srcset"in v,s.supSizes="sizes"in v,s.supPicture=!!a.HTMLPictureElement,s.supSrcset&&s.supPicture&&!s.supSizes&&!function(a){v.srcset="data:,a",a.src="data:,a",s.supSrcset=v.complete===a.complete,s.supPicture=s.supSrcset&&s.supPicture}(b.createElement("img")),s.supSrcset&&!s.supSizes?!function(){var a="data:image/gif;base64,R0lGODlhAgABAPAAAP///wAAACH5BAAAAAAALAAAAAACAAEAAAICBAoAOw==",c="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",d=b.createElement("img"),e=function(){var a=d.width;2===a&&(s.supSizes=!0),q=s.supSrcset&&!s.supSizes,t=!0,setTimeout(ba)};d.onload=e,d.onerror=e,d.setAttribute("sizes","9px"),d.srcset=c+" 1w,"+a+" 9w",d.src=c}():t=!0,s.selShort="picture>img,img[srcset]",s.sel=s.selShort,s.cfg=B,s.DPR=P||1,s.u=Q,s.types=A,s.setSize=u,s.makeUrl=$(function(a){return R.href=a,R.href}),s.qsa=function(a,b){return"querySelector"in a?a.querySelectorAll(b):[]},s.matchesMedia=function(){return a.matchMedia&&(matchMedia("(min-width: 0.1em)")||{}).matches?s.matchesMedia=function(a){return!a||matchMedia(a).matches}:s.matchesMedia=s.mMQ,s.matchesMedia.apply(this,arguments)},s.mMQ=function(a){return a?_(a):!0},s.calcLength=function(a){var b=_(a,!0)||!1;return 0>b&&(b=!1),b},s.supportsType=function(a){return a?A[a]:!0},s.parseSize=$(function(a){var b=(a||"").match(I);return{media:b&&b[1],length:b&&b[2]}}),s.parseSet=function(a){return a.cands||(a.cands=m(a.srcset,a)),a.cands},s.getEmValue=function(){var a;if(!p&&(a=b.body)){var c=b.createElement("div"),d=z.style.cssText,e=a.style.cssText;c.style.cssText=K,z.style.cssText=L,a.style.cssText=L,a.appendChild(c),p=c.offsetWidth,a.removeChild(c),p=parseFloat(p,10),z.style.cssText=d,a.style.cssText=e}return p||16},s.calcListLength=function(a){if(!(a in O)||B.uT){var b=s.calcLength(n(a));O[a]=b?b:Q.width}return O[a]},s.setRes=function(a){var b;if(a){b=s.parseSet(a);for(var c=0,d=b.length;d>c;c++)aa(b[c],a.sizes)}return b},s.setRes.res=aa,s.applySetCandidate=function(a,b){if(a.length){var c,d,e,f,h,k,l,m,n,o=b[s.ns],p=s.DPR;if(k=o.curSrc||b[G],l=o.curCan||j(b,k,a[0].set),l&&l.set===a[0].set&&(n=F&&!b.complete&&l.res-.1>p,n||(l.cached=!0,l.res>=p&&(h=l))),!h)for(a.sort(i),f=a.length,h=a[f-1],d=0;f>d;d++)if(c=a[d],c.res>=p){e=d-1,h=a[e]&&(n||k!==s.makeUrl(c.url))&&g(a[e].res,c.res,p,a[e].cached)?a[e]:c;break}h&&(m=s.makeUrl(h.url),o.curSrc=m,o.curCan=h,m!==k&&s.setSrc(b,h),s.setSize(b))}},s.setSrc=function(a,b){var c;a.src=b.url,"image/svg+xml"===b.set.type&&(c=a.style.width,a.style.width=a.offsetWidth+1+"px",a.offsetWidth+1&&(a.style.width=c))},s.getSet=function(a){var b,c,d,e=!1,f=a[s.ns].sets;for(b=0;b<f.length&&!e;b++)if(c=f[b],c.srcset&&s.matchesMedia(c.media)&&(d=s.supportsType(c.type))){"pending"===d&&(c=d),e=c;break}return e},s.parseSets=function(a,b,d){var e,f,g,h,i=b&&"PICTURE"===b.nodeName.toUpperCase(),j=a[s.ns];(j.src===c||d.src)&&(j.src=w.call(a,"src"),j.src?x.call(a,C,j.src):y.call(a,C)),(j.srcset===c||d.srcset||!s.supSrcset||a.srcset)&&(e=w.call(a,"srcset"),j.srcset=e,h=!0),j.sets=[],i&&(j.pic=!0,l(b,j.sets)),j.srcset?(f={srcset:j.srcset,sizes:w.call(a,"sizes")}
10802,j.sets.push(f),g=(q||j.src)&&H.test(j.srcset||""),g||!j.src||k(j.src,f)||f.has1x||(f.srcset+=", "+j.src,f.cands.push({url:j.src,d:1,set:f}))):j.src&&j.sets.push({srcset:j.src,sizes:null}),j.curCan=null,j.curSrc=c,j.supported=!(i||f&&!s.supSrcset||g&&!s.supSizes),h&&s.supSrcset&&!j.supported&&(e?(x.call(a,D,e),a.srcset=""):y.call(a,D)),j.supported&&!j.srcset&&(!j.src&&a.src||a.src!==s.makeUrl(j.src))&&(null===j.src?a.removeAttribute("src"):a.src=j.src),j.parsed=!0},s.fillImg=function(a,b){var c,d=b.reselect||b.reevaluate;a[s.ns]||(a[s.ns]={}),c=a[s.ns],(d||c.evaled!==r)&&((!c.parsed||b.reevaluate)&&s.parseSets(a,a.parentNode,b),c.supported?c.evaled=r:h(a))},s.setupRun=function(){(!S||M||P!==a.devicePixelRatio)&&f()},s.supPicture?(ba=u,s.fillImg=u):!function(){var c,d=a.attachEvent?/d$|^c/:/d$|^c|^i/,e=function(){var a=b.readyState||"";f=setTimeout(e,"loading"===a?200:999),b.body&&(s.fillImgs(),c=c||d.test(a),c&&clearTimeout(f))},f=setTimeout(e,b.body?9:99),g=function(a,b){var c,d,e=function(){var f=new Date-d;b>f?c=setTimeout(e,b-f):(c=null,a())};return function(){d=new Date,c||(c=setTimeout(e,b))}},h=z.clientHeight,i=function(){M=Math.max(a.innerWidth||0,z.clientWidth)!==Q.width||z.clientHeight!==h,h=z.clientHeight,M&&s.fillImgs()};Z(a,"resize",g(i,99)),Z(b,"readystatechange",e)}(),s.picturefill=ba,s.fillImgs=ba,s.teardownRun=u,ba._=s,a.picturefillCFG={pf:s,push:function(a){var b=a.shift();"function"==typeof s[b]?s[b].apply(s,a):(B[b]=a[0],S&&s.fillImgs({reselect:!0}))}};for(;J&&J.length;)a.picturefillCFG.push(J.shift());a.picturefill=ba,"object"==typeof module&&"object"==typeof module.exports?module.exports=ba:"function"==typeof define&&define.amd&&define("picturefill",function(){return ba}),s.supPicture||(A["image/webp"]=e("image/webp","data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="))}(window,document); 10803/*! 10804 * Plyr v3.7.2 10805 * https://github.com/sampotts/plyr 10806 */ 10807"object"==typeof navigator&&function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Plyr",t):(e="undefined"!=typeof globalThis?globalThis:e||self).Plyr=t()}(this,(function(){"use strict";function e(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function i(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a={addCSS:!0,thumbWidth:15,watch:!0};function l(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}var o=function(e){return null!=e?e.constructor:null},r=function(e,t){return!!(e&&t&&e instanceof t)},c=function(e){return null==e},h=function(e){return o(e)===Object},u=function(e){return o(e)===String},d=function(e){return Array.isArray(e)},m=function(e){return r(e,NodeList)},p=u,g=d,f=m,b=function(e){return r(e,Element)},y=function(e){return r(e,Event)},v=function(e){return c(e)||(u(e)||d(e)||m(e))&&!e.length||h(e)&&!Object.keys(e).length};function w(e,t){if(1>t){var i=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}var T=function(){function e(t,i){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),b(t)?this.element=t:p(t)&&(this.element=document.querySelector(t)),b(this.element)&&v(this.element.rangeTouch)&&(this.config=n({},a,{},i),this.init())}
10807return function(e,i,s){i&&t(e.prototype,i),s&&t(e,s)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,i=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[i](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!y(t))return null;var i,s=t.target,n=t.changedTouches[0],a=parseFloat(s.getAttribute("min"))||0,l=parseFloat(s.getAttribute("max"))||100,o=parseFloat(s.getAttribute("step"))||1,r=s.getBoundingClientRect(),c=100/r.width*(this.config.thumbWidth/2)/100;return 0>(i=100/r.width*(n.clientX-r.left))?i=0:100<i&&(i=100),50>i?i-=(100-2*i)*c:50<i&&(i+=2*(i-50)*c),a+w(i/100*(l-a),o)}},{key:"set",value:function(t){e.enabled&&y(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var i=new Event(t,{bubbles:!0});e.dispatchEvent(i)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=null;if(v(t)||p(t)?s=Array.from(document.querySelectorAll(p(t)?t:'input[type="range"]')):b(t)?s=[t]:f(t)?s=Array.from(t):g(t)&&(s=t.filter(b)),v(s))return null;var o=n({},a,{},i);if(p(t)&&o.watch){var r=new MutationObserver((function(i){Array.from(i).forEach((function(i){Array.from(i.addedNodes).forEach((function(i){b(i)&&l(i,t)&&new e(i,o)}))}))}));r.observe(document.body,{childList:!0,subtree:!0})}return s.map((function(t){return new e(t,i)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}();const k=e=>null!=e?e.constructor:null,C=(e,t)=>Boolean(e&&t&&e instanceof t),A=e=>null==e,S=e=>k(e)===Object,E=e=>k(e)===String,P=e=>k(e)===Function,M=e=>Array.isArray(e),N=e=>C(e,NodeList),x=e=>A(e)||(E(e)||M(e)||N(e))&&!e.length||S(e)&&!Object.keys(e).length;var I=A,L=S,$=e=>k(e)===Number&&!Number.isNaN(e),_=E,O=e=>k(e)===Boolean,j=P,D=M,q=N,H=e=>null!==e&&"object"==typeof e&&1===e.nodeType&&"object"==typeof e.style&&"object"==typeof e.ownerDocument,R=e=>C(e,Event),F=e=>C(e,KeyboardEvent),V=e=>C(e,TextTrack)||!A(e)&&E(e.kind),B=e=>C(e,Promise)&&P(e.then),U=e=>{if(C(e,window.URL))return!0;if(!E(e))return!1;let t=e;e.startsWith("http://")&&e.startsWith("https://")||(t=`http://${e}`);try{return!x(new URL(t).hostname)}catch(e){return!1}},W=x;const z=(()=>{const e=document.createElement("span"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i=Object.keys(t).find((t=>void 0!==e.style[t]));return!!_(i)&&t[i]})();function K(e,t){setTimeout((()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}const Y={isIE:Boolean(window.document.documentMode),isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||/(iPad|iPhone|iPod)/gi.test(navigator.platform)};function Q(e,t){return t.split(".").reduce(((e,t)=>e&&e[t]),e)}function X(e={},...t){if(!t.length)return e;const i=t.shift();
10807return L(i)?(Object.keys(i).forEach((t=>{L(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),X(e[t],i[t])):Object.assign(e,{[t]:i[t]})})),X(e,...t)):e}function J(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach(((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)}))}function G(e,t){H(e)&&!W(t)&&Object.entries(t).filter((([,e])=>!I(e))).forEach((([t,i])=>e.setAttribute(t,i)))}function Z(e,t,i){const s=document.createElement(e);return L(t)&&G(s,t),_(i)&&(s.innerText=i),s}function ee(e,t,i,s){H(t)&&t.appendChild(Z(e,i,s))}function te(e){q(e)||D(e)?Array.from(e).forEach(te):H(e)&&H(e.parentNode)&&e.parentNode.removeChild(e)}function ie(e){if(!H(e))return;let{length:t}=e.childNodes;for(;t>0;)e.removeChild(e.lastChild),t-=1}function se(e,t){return H(t)&&H(t.parentNode)&&H(e)?(t.parentNode.replaceChild(e,t),e):null}function ne(e,t){if(!_(e)||W(e))return{};const i={},s=X({},t);return e.split(",").forEach((e=>{const t=e.trim(),n=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),[l]=a,o=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":_(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case"#":i.id=t.replace("#","");break;case"[":i[l]=o}})),X(s,i)}function ae(e,t){if(!H(e))return;let i=t;O(i)||(i=!e.hidden),e.hidden=i}function le(e,t,i){if(q(e))return Array.from(e).map((e=>le(e,t,i)));if(H(e)){let s="toggle";return void 0!==i&&(s=i?"add":"remove"),e.classList[s](t),e.classList.contains(t)}return!1}function oe(e,t){return H(e)&&e.classList.contains(t)}function re(e,t){const{prototype:i}=Element;return(i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function ce(e){return this.elements.container.querySelectorAll(e)}function he(e){return this.elements.container.querySelector(e)}function ue(e=null,t=!1){H(e)&&(e.focus({preventScroll:!0}),t&&le(e,this.config.classNames.tabFocus))}const de={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},me={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check(e,t,i){const s=Y.isIPhone&&i&&me.playsinline,n=me[e]||"html5"!==t;return{api:n,ui:n&&me.rangeInput&&("video"!==e||!Y.isIPhone||s)}},pip:!(Y.isIPhone||!j(Z("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||Z("video").disablePictureInPicture)),airplay:j(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(W(e))return!1;const[t]=e.split("/");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(de).includes(i)&&(i+=`; codecs="${de[e]}"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(()=>{const e=document.createElement("input");return e.type="range","range"===e.type})(),touch:"ontouchstart"in document.documentElement,transitions:!1!==z,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},pe=(()=>{let e=!1;try{const t=Object.defineProperty({},"passive",{get:()=>(e=!0,null)});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e})();function ge(e,t,i,s=!1,n=!0,a=!1){if(!e||!("addEventListener"in e)||W(t)||!j(i))return;const l=t.split(" ");let o=a;pe&&(o={passive:n,capture:a}),l.forEach((t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:o}),e[s?"addEventListener":"removeEventListener"](t,i,o)}))}function fe(e,t="",i,s=!0,n=!1){ge.call(this,e,t,i,!0,s,n)}function be(e,t="",i,s=!0,n=!1){ge.call(this,e,t,i,!1,s,n)}function ye(e,t="",i,s=!0,n=!1){const a=(...l)=>{be(e,t,a,s,n),i.apply(this,l)};ge.call(this,e,t,a,!0,s,n)}function ve(e,t="",i=!1,s={}){if(!H(e)||W(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function we(){this&&this.eventListeners&&(this.eventListeners.forEac
vendor: 12,214 bytes, line 10807
10807h((e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)})),this.eventListeners=[])}function Te(){return new Promise((e=>this.ready?setTimeout(e,0):fe.call(this,this.elements.container,"ready",e))).then((()=>{}))}function ke(e){B(e)&&e.then(null,(()=>{}))}function Ce(e){return D(e)?e.filter(((t,i)=>e.indexOf(t)===i)):e}function Ae(e,t){return D(e)&&e.length?e.reduce(((e,i)=>Math.abs(i-t)<Math.abs(e-t)?i:e)):null}function Se(e){return!(!window||!window.CSS)&&window.CSS.supports(e)}const Ee=[[1,1],[4,3],[3,4],[5,4],[4,5],[3,2],[2,3],[16,10],[10,16],[16,9],[9,16],[21,9],[9,21],[32,9],[9,32]].reduce(((e,[t,i])=>({...e,[t/i]:[t,i]})),{});function Pe(e){if(!(D(e)||_(e)&&e.includes(":")))return!1;return(D(e)?e:e.split(":")).map(Number).every($)}function Me(e){if(!D(e)||!e.every($))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function Ne(e){const t=e=>Pe(e)?e.split(":").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!W(this.embed)&&D(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return Me(i)}function xe(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=Ne.call(this,e);if(!D(i))return{};const[s,n]=Me(i),a=100/s*n;if(Se(`aspect-ratio: ${s}/${n}`)?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${a}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-a)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:a,ratio:i}}function Ie(e,t,i=.05){const s=e/t,n=Ae(Object.keys(Ee),s);return Math.abs(n-s)<=i?Ee[n]:[e,t]}const Le={getSources(){if(!this.isHTML5)return[];return Array.from(this.media.querySelectorAll("source")).filter((e=>{const t=e.getAttribute("type");return!!W(t)||me.mime.call(this,t)}))},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:Le.getSources.call(this).map((e=>Number(e.getAttribute("size")))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,W(this.config.ratio)||xe.call(e),Object.defineProperty(e.media,"quality",{get(){const t=Le.getSources.call(e).find((t=>t.getAttribute("src")===e.source));return t&&Number(t.getAttribute("size"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&j(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=Le.getSources.call(e).find((e=>Number(e.getAttribute("size"))===t));if(!i)return;const{currentTime:s,paused:n,preload:a,readyState:l,playbackRate:o}=e.media;e.media.src=i.getAttribute("src"),("none"!==a||l)&&(e.once("loadedmetadata",(()=>{e.speed=o,e.currentTime=s,n||ke(e.play())})),e.media.load())}ve.call(e,e.media,"qualitychange",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(te(Le.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function $e(e,...t){return W(e)?e:e.toString().replace(/{(\d+)}/g,((e,i)=>t[i].toString()))}const _e=(e="",t="",i="")=>e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),i.toString()),Oe=(e="")=>e.toString().replace(/\w\S*/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()));function je(e=""){let t=e.toString();return t=function(e=""){let t=e.toString();return t=_e(t,"-"," "),t=_e(t,"_"," "),t=Oe(t),_e(t," ","")}(t),t.charAt(0).toLowerCase()+t.slice(1)}function De(e){const t=document.createElement("div");return t.appendChild(e),t.innerHTML}const qe={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},He={get(e="",t={}){if(W(e)||W(t))return"";let i=Q(t.i18n,e);if(W(i))return Object.keys(qe).includes(e)?qe[e]:"";const s={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(s).forEach((([e,t])=>{i=_e(i,e,t)})),i}};class Re{constructor(t){e(this,"get",(e=>{if(!Re.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(W(t))return null;const i=JSON.parse(t);return _(e)&&e.length?i[e]:i})),e(this,"set",(e=>{if(!Re.supported||!this.enabled)return;if(!L(e))return;let t=this.get();W(t)&&(t={}),X(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch(e){}})),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}static get supported(){try{if(!("localStorage"in window))return!1;const e="___test";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}}function Fe(e,t="text"){return new Promise(((i,s)=>{try{const s=new XMLHttpRequest;if(!("withCredentials"in s))return;s.addEventListener("load",(()=>{if("text"===t)try{i(JSON.parse(s.responseText))}catch(e){i(s.responseText)}else i(s.response)})),s.addEventListener("error",(()=>{throw new Error(s.status)})),s.open("GET",e,!0),s.responseType=t,s.send()}catch(e){s(e)}}))}function Ve(e,t){if(!_(e))return;const i=_(t);let s=!1;const n=()=>null!==document.getElementById(t),a=(e,t)=>{e.innerHTML=t,i&&n()||document.body.insertAdjacentElement("afterbegin",e)};if(!i||!n()){const n=Re.supported,l=document.createElement("div");if(l.setAttribute("hidden",""),i&&l.setAttribute("id",t),n){const e=window.localStorage.getItem(`cache-${t}`);if(s=null!==e,s){const t=JSON.parse(e);a(l,t.content)}}Fe(e).then((e=>{if(!W(e)){if(n)try{window.localStorage.setItem(`cache-${t}`,JSON.stringify({content:e}))}catch(e){}a(l,e)}})).catch((()=>{}))}}const Be=e=>Math.trunc(e/60/60%60,10);function Ue(e=0,t=!1,i=!1){if(!$(e))return Ue(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=Be(e);const a=(l=e,Math.trunc(l/60%60,10));var l;const o=(e=>Math.trunc(e%60,10))(e);return n=t||n>0?`${n}:`:"",`${i&&e>0?"-":""}${n}${s(a)}:${s(o)}`}const We={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||Y.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=he.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:ce.call(this,this.config.selectors.buttons.play),pause:he.call(this,this.config.selectors.buttons.pause),restart:he.call(this,this.config.selectors.buttons.restart),rewind:he.call(this,this.config.selectors.buttons.rewind),fastForward:he.call(this,this.config.selectors.buttons.fastForward),mute:he.call(this,this.config.selectors.buttons.mute),pip:he.call(this,this.config.selectors.buttons.pip),airplay:he.call(this,this.config.selectors.buttons.airplay),settings:he.call(this,this.config.selectors.buttons.settings),captions:he.call(this,this.config.selectors.buttons.captions),fullscreen:he.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=he.call(this,this.config.selectors.progress),this.elements.inputs={seek:he.call(this,this.config.selectors.inputs.seek),volume:he.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:he.call(this,this.config.selectors.display.buffer),currentTime:he.call(this,this.config.selectors.display.currentTime),duration:he.call(this,this.config.selectors.display.duration)},H(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i="http://www.w3.org/2000/svg",s=We.getIconUrl.call(this),n=`${s.cors?"":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,"svg");G(a,X(t,{"aria-hidden":"true",focusable:"false"}));const l=document.createElementNS(i,"use"),o=`${n}-${e}`;return"href"in l&&l.setAttributeNS("http://www.w3.org/1999/xlink","href",o),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",o),a.appendChild(l),a},createLabel(e,t={}){const i=He.get(e,this.config);return Z("span",{...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")},i)},createBadge(e){if(W(e))return null;const t=Z("span",{class:this.config.classNames.menu.value});return t.appendChild(Z("span",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=X({},t);let s=je(e);const n={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])})),"button"!==n.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((e=>e===this.config.classNames.control))||X(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case"play":n.toggle=!0,n.label="play",n.labelPressed="pause",n.icon="play",n.iconPressed="pause";break;case"mute":n.toggle=!0,n.label="mute",n.labelPressed="unmute",n.icon="volume",n.iconPressed="muted";break;case"captions":n.toggle=!0,n.label="enableCaptions",n.labelPressed="disableCaptions",n.icon="captions-off",n.iconPressed="captions-on";break;case"fullscreen":n.toggle=!0,n.label="enterFullscreen",n.labelPressed="exitFullscreen",n.icon="enter-fullscreen",n.iconPressed="exit-fullscreen";break;case"play-large":i.class+=` ${this.config.classNames.control}--overlaid`,s="play",n.label="play",n.icon="play";break;default:W(n.label)&&(n.label=s),W(n.icon)&&(n.icon=e)}const a=Z(n.element);return n.toggle?(a.appendChild(We.createIcon.call(this,n.iconPressed,{class:"icon--pressed"})),a.appendChild(We.createIcon.call(this,n.icon,{class:"icon--not-pressed"})),a.appendChild(We.createLabel.call(this,n.labelPressed,{class:"label--pressed"})),a.appendChild(We.createLabel.call(this,n.label,{class:"label--not-pressed"}))):(a.appendChild(We.createIcon.call(this,n.icon)),a.appendChild(We.createLabel.call(this,n.label))),X(i,ne(this.config.selectors.buttons[s],i)),G(a,i),"play"===s?(D(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=Z("input",X(ne(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":He.get(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=i,We.updateRangeFill.call(this,i),T.setup(i),i},createProgress(e,t){const i=Z("progress",X(ne(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){i.appendChild(Z("span",null,"0"));const t={played:"played",buffer:"buffered"}[e],s=t?He.get(t,this.config):"";i.innerText=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=ne(this.config.selectors.display[e],t),s=Z("div",X(i,{class:`${i.class?i.class:""} ${this.config.classNames.display.time} `.trim(),"aria-label":He.get(e,this.config)}),"00:00");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){fe.call(this,e,"keydown keyup",(i=>{if(!["Space","ArrowUp","ArrowDown","ArrowRight"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),"keydown"===i.type)return;const s=re(e,'[role="menuitemradio"]');if(!s&&["Space","ArrowRight"].includes(i.key))We.showMenuPanel.call(this,t,!0);else{let t;"Space"!==i.key&&("ArrowDown"===i.key||s&&"ArrowRight"===i.key?(t=e.nextElementSibling,H(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,H(t)||(t=e.parentNode.lastElementChild)),ue.call(this,t,!0))}}),!1),fe.call(this,e,"keyup",(e=>{"Return"===e.key&&We.focusFirstMenuItem.call(this,null,!0)}))},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const l=ne(this.config.selectors.inputs[i]),o=Z("button",X(l,{type:"button",role:"menuitemradio",class:`${this.config.classNames.control} ${l.class?l.class:""}`.trim(),"aria-checked":a,value:e})),r=Z("span");r.innerHTML=s,H(n)&&r.appendChild(n),o.appendChild(r),Object.defineProperty(o,"checked",{enumerable:!0,get:()=>"true"===o.getAttribute("aria-checked"),set(e){e&&Array.from(o.parentNode.children).filter((e=>
10807re(e,'[role="menuitemradio"]'))).forEach((e=>e.setAttribute("aria-checked","false"))),o.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(o,"click keyup",(t=>{if(!F(t)||"Space"===t.key){switch(t.preventDefault(),t.stopPropagation(),o.checked=!0,i){case"language":this.currentTrack=Number(e);break;case"quality":this.quality=e;break;case"speed":this.speed=parseFloat(e)}We.showMenuPanel.call(this,"home",F(t))}}),i,!1),We.bindMenuItemShortcuts.call(this,o,i),t.appendChild(o)},formatTime(e=0,t=!1){if(!$(e))return e;return Ue(e,Be(this.duration)>0,t)},updateTimeDisplay(e=null,t=0,i=!1){H(e)&&$(t)&&(e.innerText=We.formatTime(t,i))},updateVolume(){this.supported.ui&&(H(this.elements.inputs.volume)&&We.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),H(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){H(e)&&(e.value=t,We.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!R(e))return;let t=0;const i=(e,t)=>{const i=$(t)?t:0,s=H(e)?e:this.elements.display.buffer;if(H(s)){s.value=i;const e=s.getElementsByTagName("span")[0];H(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":s=this.currentTime,n=this.duration,t=0===s||0===n||Number.isNaN(s)||Number.isNaN(n)?0:(s/n*100).toFixed(2),"timeupdate"===e.type&&We.setRange.call(this,this.elements.inputs.seek,t);break;case"playing":case"progress":i(this.elements.display.buffer,100*this.buffered)}var s,n},updateRangeFill(e){const t=R(e)?e.target:e;if(H(t)&&"range"===t.getAttribute("type")){if(re(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);const e=We.formatTime(this.currentTime),i=We.formatTime(this.duration),s=He.get("seekLabel",this.config);t.setAttribute("aria-valuetext",s.replace("{currentTime}",e).replace("{duration}",i))}else if(re(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute("aria-valuenow",e),t.setAttribute("aria-valuetext",`${e.toFixed(1)}%`)}else t.setAttribute("aria-valuenow",t.value);Y.isWebkit&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){var t,i;if(!this.config.tooltips.seek||!H(this.elements.inputs.seek)||!H(this.elements.display.seekTooltip)||0===this.duration)return;const s=this.elements.display.seekTooltip,n=`${this.config.classNames.tooltip}--visible`,a=e=>le(s,n,e);if(this.touch)return void a(!1);let l=0;const o=this.elements.progress.getBoundingClientRect();if(R(e))l=100/o.width*(e.pageX-o.left);else{if(!oe(s,n))return;l=parseFloat(s.style.left,10)}l<0?l=0:l>100&&(l=100);const r=this.duration/100*l;s.innerText=We.formatTime(r);const c=null===(t=this.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(r)));c&&s.insertAdjacentHTML("afterbegin",`${c.label}<br>`),s.style.left=`${l}%`,R(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)},timeUpdate(e){const t=!H(this.elements.display.duration)&&this.config.invertTime;We.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||We.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return ae(this.elements.display.currentTime,!0),void ae(this.elements.progress,!0);H(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=H(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&We.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&We.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&We.setMarkers.call(this),We.updateSeekTooltip.call(this)},toggleMenuButton(e,t){ae(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if("captions"===e)n=this.currentTrack;else{if(n=W(i)?this[e]:i,W(n)&&(n=this.config[e].default),!W(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(H(a)||(a=s&&s.querySelector('[role="menu"]')),!H(a))return;this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`).innerHTML=We.getLabel.call(this,e,n);const l=a&&a.querySelector(`[value="${n}"]`);H(l)&&(l.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?He.get("normal",this.config):`${t}×`;case"quality":if($(t)){const e=He.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return Oe(t);case"captions":return Ye.getLabel.call(this);default:return null}},setQualityMenu(e){if(!H(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');D(e)&&(this.options.quality=Ce(e).filter((e=>this.config.quality.options.includes(e))));const s=!W(this.options.quality)&&this.options.quality.length>1;if(We.toggleMenuButton.call(this,t,s),ie(i),We.checkMenu.call(this),!s)return;const n=e=>{const t=He.get(`qualityBadge.${e}`,this.config);return t.length?We.createBadge.call(this,t):null};this.options.quality.sort(((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1}
vendor: 16,778 bytes, line 10807
10807)).forEach((e=>{We.createMenuItem.call(this,{value:e,list:i,type:t,title:We.getLabel.call(this,"quality",e),badge:n(e)})})),We.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!H(this.elements.settings.panels.captions))return;const e="captions",t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),i=Ye.getTracks.call(this),s=Boolean(i.length);if(We.toggleMenuButton.call(this,e,s),ie(t),We.checkMenu.call(this),!s)return;const n=i.map(((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:Ye.getLabel.call(this,e),badge:e.language&&We.createBadge.call(this,e.language.toUpperCase()),list:t,type:"language"})));n.unshift({value:-1,checked:!this.captions.toggled,title:He.get("disabled",this.config),list:t,type:"language"}),n.forEach(We.createMenuItem.bind(this)),We.updateSetting.call(this,e,t)},setSpeedMenu(){if(!H(this.elements.settings.panels.speed))return;const e="speed",t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((e=>e>=this.minimumSpeed&&e<=this.maximumSpeed));const i=!W(this.options.speed)&&this.options.speed.length>1;We.toggleMenuButton.call(this,e,i),ie(t),We.checkMenu.call(this),i&&(this.options.speed.forEach((i=>{We.createMenuItem.call(this,{value:i,list:t,type:e,title:We.getLabel.call(this,"speed",i)})})),We.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!W(e)&&Object.values(e).some((e=>!e.hidden));ae(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;H(i)||(i=Object.values(this.elements.settings.panels).find((e=>!e.hidden)));const s=i.querySelector('[role^="menuitem"]');ue.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!H(t)||!H(i))return;const{hidden:s}=t;let n=s;if(O(e))n=e;else if(F(e)&&"Escape"===e.key)n=!1;else if(R(e)){const s=j(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute("aria-expanded",n),ae(t,!n),le(this.elements.container,this.config.classNames.menu.open,n),n&&F(e)?We.focusFirstMenuItem.call(this,null,!0):n||s||ue.call(this,i,F(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return te(t),{width:i,height:s}},showMenuPanel(e="",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!H(i))return;const s=i.parentNode,n=Array.from(s.children).find((e=>!e.hidden));if(me.transitions&&!me.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=We.getMenuSize.call(this,i),t=e=>{e.target===s&&["width","height"].includes(e.propertyName)&&(s.style.width="",s.style.height="",be.call(this,s,z,t))};fe.call(this,s,z,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}ae(n,!0),ae(i,!1),We.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;H(e)&&e.setAttribute("href",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:l,setSpeedMenu:o,showMenuPanel:r}=We;this.elements.controls=null,D(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));const c=Z("div",ne(this.config.selectors.controls.wrapper));this.elements.controls=c;const h={class:"plyr__controls__item"};return Ce(D(this.config.controls)?this.config.controls:[]).forEach((l=>{if("restart"===l&&c.appendChild(i.call(this,"restart",h)),"rewind"===l&&c.appendChild(i.call(this,"rewind",h)),"play"===l&&c.appendChild(i.call(this,"play",h)),"fast-forward"===l&&c.appendChild(i.call(this,"fast-forward",h)),"progress"===l){const t=Z("div",{class:`${h.class} plyr__progress__container`}),i=Z("div",ne(this.config.selectors.progress));if(i.appendChild(n.call(this,"seek",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,"buffer")),this.config.tooltips.seek){const e=Z("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if("current-time"===l&&c.appendChild(a.call(this,"currentTime",h)),"duration"===l&&c.appendChild(a.call(this,"duration",h)),"mute"===l||"volume"===l){let{volume:t}=this.elements;if(H(t)&&c.contains(t)||(t=Z("div",X({},h,{class:`${h.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),"mute"===l&&t.appendChild(i.call(this,"mute")),"volume"===l&&!Y.isIos){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,"volume",X(i,{id:`plyr-volume-${e.id}`})))}}if("captions"===l&&c.appendChild(i.call(this,"captions",h)),"settings"===l&&!W(this.config.settings)){const s=Z("div",X({},h,{class:`${h.class} plyr__menu`.trim(),hidden:""}));s.appendChild(i.call(this,"settings",{"aria-haspopup":!0,"aria-controls":`plyr-settings-${e.id}`,"aria-expanded":!1}));const n=Z("div",{class:"plyr__menu__container",id:`plyr-settings-${e.id}`,hidden:""}),a=Z("div"),l=Z("div",{id:`plyr-settings-${e.id}-home`}),o=Z("div",{role:"menu"});l.appendChild(o),a.appendChild(l),this.elements.settings.panels.home=l,this.config.settings.forEach((i=>{const s=Z("button",X(ne(this.config.selectors.buttons.settings),{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:"menuitem","aria-haspopup":!0,hidden:""}));t.call(this,s,i),fe.call(this,s,"click",(()=>{r.call(this,i,!1)}));const n=Z("span",null,He.get(i,this.config)),l=Z("span",{class:this.config.classNames.menu.value});l.innerHTML=e[i],n.appendChild(l),s.appendChild(n),o.appendChild(s);const c=Z("div",{id:`plyr-settings-${e.id}-${i}`,hidden:""}),h=Z("button",{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});h.appendChild(Z("span",{"aria-hidden":!0},He.get(i,this.config))),h.appendChild(Z("span",{class:this.config.classNames.hidden},He.get("menuBack",this.config))),fe.call(this,c,"keydown",(e=>{"ArrowLeft"===e.key&&(e.preventDefault(),e.stopPropagation(),r.call(this,"home",!0))}),!1),fe.call(this,h,"click",(()=>{r.call(this,"home",!1)})),c.appendChild(h),c.appendChild(Z("div",{role:"menu"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c})),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if("pip"===l&&me.pip&&c.appendChild(i.call(this,"pip",h)),"airplay"===l&&me.airplay&&c.appendChild(i.call(this,"airplay",h)),"download"===l){const e=X({},h,{element:"a",href:this.download,target:"_blank"});this.isHTML5&&(e.download="");const{download:t}=this.config.urls;!U(t)&&this.isEmbed&&X(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,"download",e))}"fullscreen"===l&&c.appendChild(i.call(this,"fullscreen",h))})),this.isHTML5&&l.call(this,Le.getQualityOptions.call(this)),o.call(this),c},inject(){if(this.config.loadSprite){const e=We.getIconUrl.call(this);e.cors&&Ve(e.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;j(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),H(this.config.controls)||_(this.config.controls)?e=this.config.controls:(e=We.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:Ye.getLabel.call(this)}),i=!1);let s;i&&_(this.config.controls)&&(e=(e=>{let i=e;return Object.entries(t).forEach((([e,t])=>{i=_e(i,`{${e}}`,t)})),i})(e)),_(this.config.selectors.controls.container)&&(s=document.querySelector(this.config.selectors.controls.container)),H(s)||(s=this.elements.container);if(s[H(e)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",e),H(this.elements.controls)||We.findElements.call(this),!W(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;Object.defineProperty(e,"pressed",{enumerable:!0,get:()=>oe(e,t),set(i=!1){le(e,t,i)}})};Object.values(this.elements.buttons).filter(Boolean).forEach((t=>{D(t)||q(t)?Array.from(t).filter(Boolean).forEach(e):e(t)}))}if(Y.isEdge&&K(s),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=ce.call(this,i);Array.from(s).forEach((e=>{le(e,this.config.classNames.hidden,!1),le(e,this.config.classNames.tooltip,!0)}))}},setMediaMetadata(){try{"mediaSession"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch(e){}},setMarkers(){var e,t;if(!this.duration||this.elements.markers)return;const i=null===(e=this.config.markers)||void 0===e||null===(t=e.points)||void 0===t?void 0:t.filter((({time:e})=>e>0&&e<this.duration));if(null==i||!i.length)return;const s=document.createDocumentFragment(),n=document.createDocumentFragment();let a=null;const l=`${this.config.classNames.tooltip}--visible`,o=e=>le(a,l,e);i.forEach((e=>{const t=Z("span",{class:this.config.classNames.marker},""),i=e.time/this.duration*100+"%";a&&(t.addEventListener("mouseenter",(()=>{e.label||(a.style.left=i,a.innerHTML=e.label,o(!0))})),t.addEventListener("mouseleave",(()=>{o(!1)}))),t.addEventListener("click",(()=>{this.currentTime=e.time})),t.style.left=i,n.appendChild(t)})),s.appendChild(n),this.config.tooltips.seek||(a=Z("span",{class:this.config.classNames.tooltip},""),s.appendChild(a)),this.elements.markers={points:n,tip:a},this.elements.progress.appendChild(s)}};function ze(e,t=!0){let i=e;if(t){const e=document.createElement("a");e.href=i,i=e.href}try{return new URL(i)}catch(e){return null}}function Ke(e){const t=new URLSearchParams;return L(e)&&Object.entries(e).forEach((([e,i])=>{t.set(e,i)})),t}const Ye={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!me.textTracks)return void(D(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&We.setCaptionsMenu.call(this));var e,t;if(H(this.elements.captions)||(this.elements.captions=Z("div",ne(this.config.selectors.captions)),e=this.elements.captions,t=this.elements.wrapper,H(e)&&H(t)&&t.parentNode.insertBefore(e,t.nextSibling)),Y.isIE&&window.URL){const e=this.media.querySelectorAll("track");Array.from(e).forEach((e=>{const t=e.getAttribute("src"),i=ze(t);null!==i&&i.hostname!==window.location.href.hostname&&["http:","https:"].includes(i.protocol)&&Fe(t,"blob").then((t=>{e.setAttribute("src",window.URL.createObjectURL(t))})).catch((()=>{te(e)}))}))}const i=Ce((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((e=>e.split("-")[0])));let s=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();"auto"===s&&([s]=i);let n=this.storage.get("captions");if(O(n)||({active:n}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:n,language:s,languages:i}),this.isHTML5){const e=this.config.captions.update?"addtrack removetrack":"removetrack";fe.call(this,this.media.textTracks,e,Ye.update.bind(this))}setTimeout(Ye.update.bind(this),0)},update(){const e=Ye.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find((e=>e.language===i)));this.isHTML5&&this.isVideo&&e.filter((e=>!s.get(e))).forEach((e=>{this.debug.log("Track added",e),s.set(e,{default:"showing"===e.mode}),"showing"===e.mode&&(e.mode="hidden"),fe.call(this,e,"cuechange",(()=>Ye.updateCues.call(this)))})),(a&&this.language!==i||!e.includes(n))&&(Ye.setLanguage.call(this,i),Ye.toggle.call(this,t&&a)),this.elements&&le(this.elements.container,this.config.classNames.captions.enabled,!W(e)),D(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&We.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=I(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=Ye.getTracks.call(this),t=Ye.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void Ye.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),le(this.elements.container,s,n),this.captions.toggled=n,We.updateSetting.call(this,"captions"),ve.call(this,this.media,n?"captionsenabled":"captionsdisabled")}setTimeout((()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode="hidden")}))},set(e,t=!0){const i=Ye.getTracks.call(this);if(-1!==e)if($(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,We.updateSetting.call(this,"captions"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),ve.call(this,this.media,"languagechange")}Ye.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&Ye.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else Ye.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!_(e))return void this.debug.warn("Invalid language argument",e);const i=e.toLowerCase();this.captions.language=i;const s=Ye.getTracks.call(this),n=Ye.findTrack.call(this,[i]);Ye.set.call(this,s.indexOf(n),t)},getTracks(e=!1){return Array.from((this.media||{}).textTracks||[]).filter((t=>!this.isHTML5||e||this.captions.meta.has(t))).filter((e=>["captions","subtitles"].includes(e.kind)))},findTrack(e,t=!1){const i=Ye.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort(((e,t)=>s(t)-s(e)));let a;return e.every((e=>(a=n.find((t=>t.language===e)),!a))),a||(t?n[0]:void 0)},getCurrentTrack(){return Ye.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!V(t)&&me.textTracks&&this.captions.toggled&&(t=Ye.getCurrentTrack.call(this)),V(t)?W(t.label)?W(t.language)?He.get("enabled",this.config):e.language.toUpperCase():t.label:He.get("disabled",this.config)},updateCues(e){if(!this.supported.ui)return;if(!H(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!I(e)&&!Array.isArray(e))return void this.debug.warn("updateCues: Invalid input",e);let t=e;if(!t){const e=Ye.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map((e=>e.getCueAsHTML())).map(De)}const i=t.map((e=>e.trim())).join("\n");if(i!==this.elements.captions.innerHTML){ie(this.elements.captions);const e=Z("span",ne(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),ve.call(this,this.media,"cuechange")}}},Qe={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.7.2/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"S
10807D"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/oembed.json?url={0}"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",marker:"plyr__progress__marker",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id",hash:"data-plyr-embed-hash"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:"",artist:"",album:"",artwork:[]},markers:{enabled:!1,points:[]}},Xe="picture-in-picture",Je="inline",Ge={html5:"html5",youtube:"youtube",vimeo:"vimeo"},Ze="audio",et="video";const tt=()=>{};class it{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log("Debugging enabled")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):tt}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):tt}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):tt}}class st{constructor(t){e(this,"onChange",(()=>{if(!this.enabled)return;const e=this.player.elements.buttons.fullscreen;H(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;ve.call(this.player,t,this.active?"enterfullscreen":"exitfullscreen",!0)})),e(this,"toggleFallback",((e=!1)=>
vendor: 6,552 bytes, line 10807
10807{if(e?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",le(this.target,this.player.config.classNames.fullscreen.fallback,e),Y.isIos){let t=document.head.querySelector('meta[name="viewport"]');const i="viewport-fit=cover";t||(t=document.createElement("meta"),t.setAttribute("name","viewport"));const s=_(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(",").filter((e=>e.trim()!==i)).join(","))}this.onChange()})),e(this,"trapFocus",(e=>{if(Y.isIos||!this.active||"Tab"!==e.key)return;const t=document.activeElement,i=ce.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())})),e(this,"update",(()=>{if(this.enabled){let e;e=this.forceFallback?"Fallback (forced)":st.native?"Native":"Fallback",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log("Fullscreen not supported and fallback disabled");le(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)})),e(this,"enter",(()=>{this.enabled&&(Y.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!st.native||this.forceFallback?this.toggleFallback(!0):this.prefix?W(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))})),e(this,"exit",(()=>{if(this.enabled)if(Y.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),ke(this.player.play());else if(!st.native||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!W(this.prefix)){const e="moz"===this.prefix?"Cancel":"Exit";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)})),e(this,"toggle",(()=>{this.active?this.exit():this.enter()})),this.player=t,this.prefix=st.prefix,this.property=st.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){const{prototype:i}=Element;return(i.closest||function(){let e=this;do{if(re.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),fe.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":`${this.prefix}fullscreenchange`,(()=>{this.onChange()})),fe.call(this.player,this.player.elements.container,"dblclick",(e=>{H(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,"fullscreen")})),fe.call(this,this.player.elements.container,"keydown",(e=>this.trapFocus(e))),this.update()}static get native(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get usingNative(){return st.native&&!this.forceFallback}static get prefix(){if(j(document.exitFullscreen))return"";let e="";return["webkit","moz","ms"].some((t=>!(!j(document[`${t}ExitFullscreen`])&&!j(document[`${t}CancelFullScreen`]))&&(e=t,!0))),e}static get property(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}get enabled(){return(st.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}get active(){if(!this.enabled)return!1;if(!st.native||this.forceFallback)return oe(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return Y.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen||this.player.elements.container}}function nt(e,t=1){return new Promise(((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})}))}const at={addStyleHook(){le(this.elements.container,this.config.selectors.container.replace(".",""),!0),le(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void at.toggleNativeControls.call(this,!0);H(this.elements.controls)||(We.inject.call(this),this.listeners.controls()),at.toggleNativeControls.call(this),this.isHTML5&&Ye.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,We.updateVolume.call(this),We.timeUpdate.call(this),We.durationUpdate.call(this),at.checkPlaying.call(this),le(this.elements.container,this.config.classNames.pip.supported,me.pip&&this.isHTML5&&this.isVideo),le(this.elements.container,this.config.classNames.airplay.supported,me.airplay&&this.isHTML5),le(this.elements.container,this.config.classNames.isIos,Y.isIos),le(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((()=>{ve.call(this,this.media,"ready")}),0),at.setTitle.call(this),this.poster&&at.setPoster.call(this,this.poster,!1).catch((()=>{})),this.config.duration&&We.durationUpdate.call(this),this.config.mediaMetadata&&We.setMediaMetadata.call(this)},setTitle(){let e=He.get("play",this.config);if(_(this.config.title)&&!W(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach((t=>{t.setAttribute("aria-label",e)})),this.isEmbed){const e=he.call(this,"iframe");if(!H(e))return;const t=W(this.config.title)?"video":this.config.title,i=He.get("frameTitle",this.config);e.setAttribute("title",i.replace("{title}",t))}},togglePoster(e){le(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),this.elements.poster.removeAttribute("hidden"),Te.call(this).then((()=>nt(e))).catch((t=>{throw e===this.poster&&at.togglePoster.call(this,!1),t})).then((()=>
10807{if(e!==this.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:""}),at.togglePoster.call(this,!0),e))))},checkPlaying(e){le(this.elements.container,this.config.classNames.playing,this.playing),le(this.elements.container,this.config.classNames.paused,this.paused),le(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute("aria-label",He.get(this.playing?"pause":"play",this.config))})),R(e)&&"timeupdate"===e.type||at.toggleControls.call(this)},checkLoading(e){this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((()=>{le(this.elements.container,this.config.classNames.loading,this.loading),at.toggleControls.call(this)}),this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter((e=>!W(e)&&_(e)&&e.startsWith("--plyr"))).forEach((e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)})),W(this.media.style)&&this.media.removeAttribute("style")}};class lt{constructor(t){e(this,"firstTouch",(()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,le(t.container,e.config.classNames.isTouch,!0)})),e(this,"setTabFocus",(e=>{const{player:t}=this,{elements:i}=t,{key:s,type:n,timeStamp:a}=e;if(clearTimeout(this.focusTimer),"keydown"===n&&"Tab"!==s)return;"keydown"===n&&(this.lastKeyDown=a);const l=a-this.lastKeyDown<=20;("focus"!==n||l)&&((()=>{const e=t.config.classNames.tabFocus;le(ce.call(t,`.${e}`),e,!1)})(),"focusout"!==n&&(this.focusTimer=setTimeout((()=>{const e=document.activeElement;i.container.contains(e)&&le(document.activeElement,t.config.classNames.tabFocus,!0)}),10)))})),e(this,"global",((e=!0)=>{const{player:t}=this;t.config.keyboard.global&&ge.call(t,window,"keydown keyup",this.handleKey,e,!1),ge.call(t,document.body,"click",this.toggleMenu,e),ye.call(t,document.body,"touchstart",this.firstTouch),ge.call(t,document.body,"keydown focus blur focusout",this.setTabFocus,e,!1,!0)})),e(this,"container",(()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&fe.call(e,i.container,"keydown keyup",this.handleKey,!1),fe.call(e,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(t=>{const{controls:n}=i;n&&"enterfullscreen"===t.type&&(n.pressed=!1,n.hover=!1);let a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(at.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout((()=>at.toggleControls.call(e,!1)),a)}));const n=()=>
vendor: 17,519 bytes, line 10807
10807{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=Ne.call(e),l=Se(`aspect-ratio: ${n} / ${a}`);if(!s)return void(l?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[o,r]=[Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)],c=o/r>n/a;l?(t.style.width=c?"auto":"100%",t.style.height=c?"100%":"auto"):(t.style.maxWidth=c?r/a*n+"px":null,t.style.margin=c?"0 auto":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};fe.call(e,i.container,"enterfullscreen exitfullscreen",(t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&W(e.config.ratio))return;n();("enterfullscreen"===t.type?fe:be).call(e,window,"resize",a)}))})),e(this,"media",(()=>{const{player:e}=this,{elements:t}=e;if(fe.call(e,e.media,"timeupdate seeking seeked",(t=>We.timeUpdate.call(e,t))),fe.call(e,e.media,"durationchange loadeddata loadedmetadata",(t=>We.durationUpdate.call(e,t))),fe.call(e,e.media,"ended",(()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())})),fe.call(e,e.media,"progress playing seeking seeked",(t=>We.updateProgress.call(e,t))),fe.call(e,e.media,"volumechange",(t=>We.updateVolume.call(e,t))),fe.call(e,e.media,"playing play pause ended emptied timeupdate",(t=>at.checkPlaying.call(e,t))),fe.call(e,e.media,"waiting canplay seeked playing",(t=>at.checkLoading.call(e,t))),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=he.call(e,`.${e.config.classNames.video}`);if(!H(i))return;fe.call(e,t.container,"click",(s=>{([t.container,i].includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,"restart"),this.proxy(s,(()=>{ke(e.play())}),"play")):this.proxy(s,(()=>{ke(e.togglePlay())}),"play")))}))}e.supported.ui&&e.config.disableContextMenu&&fe.call(e,t.wrapper,"contextmenu",(e=>{e.preventDefault()}),!1),fe.call(e,e.media,"volumechange",(()=>{e.storage.set({volume:e.volume,muted:e.muted})})),fe.call(e,e.media,"ratechange",(()=>{We.updateSetting.call(e,"speed"),e.storage.set({speed:e.speed})})),fe.call(e,e.media,"qualitychange",(t=>{We.updateSetting.call(e,"quality",null,t.detail.quality)})),fe.call(e,e.media,"ready qualitychange",(()=>{We.setDownloadUrl.call(e)}));const i=e.config.events.concat(["keyup","keydown"]).join(" ");fe.call(e,e.media,i,(i=>{let{detail:s={}}=i;"error"===i.type&&(s=e.media.error),ve.call(e,t.container,i.type,!0,s)}))})),e(this,"proxy",((e,t,i)=>{const{player:s}=this,n=s.config.listeners[i];let a=!0;j(n)&&(a=n.call(s,e)),!1!==a&&j(t)&&t.call(s,e)})),e(this,"bind",((e,t,i,s,n=!0)=>{const{player:a}=this,l=a.config.listeners[s],o=j(l);fe.call(a,e,t,(e=>this.proxy(e,i,s)),n&&!o)})),e(this,"controls",(()=>{const{player:e}=this,{elements:t}=e,i=Y.isIE?"change":"input";if(t.buttons.play&&Array.from(t.buttons.play).forEach((t=>{this.bind(t,"click",(()=>{ke(e.togglePlay())}),"play")})),this.bind(t.buttons.restart,"click",e.restart,"restart"),this.bind(t.buttons.rewind,"click",(()=>{e.lastSeekTime=Date.now(),e.rewind()}),"rewind"),this.bind(t.buttons.fastForward,"click",(()=>{e.lastSeekTime=Date.now(),e.forward()}),"fastForward"),this.bind(t.buttons.mute,"click",(()=>{e.muted=!e.muted}),"mute"),this.bind(t.buttons.captions,"click",(()=>e.toggleCaptions())),this.bind(t.buttons.download,"click",(()=>{ve.call(e,e.media,"download")}),"download"),this.bind(t.buttons.fullscreen,"click",(()=>{e.fullscreen.toggle()}),"fullscreen"),this.bind(t.buttons.pip,"click",(()=>{e.pip="toggle"}),"pip"),this.bind(t.buttons.airplay,"click",e.airplay,"airplay"),this.bind(t.buttons.settings,"click",(t=>{t.stopPropagation(),t.preventDefault(),We.toggleMenu.call(e,t)}),null,!1),this.bind(t.buttons.settings,"keyup",(t=>{["Space","Enter"].includes(t.key)&&("Enter"!==t.key?(t.preventDefault(),t.stopPropagation(),We.toggleMenu.call(e,t)):We.focusFirstMenuItem.call(e,null,!0))}),null,!1),this.bind(t.settings.menu,"keydown",(t=>{"Escape"===t.key&&We.toggleMenu.call(e,t)})),this.bind(t.inputs.seek,"mousedown mousemove",(e=>{const i=t.progress.getBoundingClientRect(),s=100/i.width*(e.pageX-i.left);e.currentTarget.setAttribute("seek-value",s)})),this.bind(t.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(t=>{const i=t.currentTarget,s="play-on-seeked";if(F(t)&&!["ArrowLeft","ArrowRight"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=["mouseup","touchend","keyup"].includes(t.type);n&&a?(i.removeAttribute(s),ke(e.play())):!a&&e.playing&&(i.setAttribute(s,""),e.pause())})),Y.isIos){const t=ce.call(e,'input[type="range"]');Array.from(t).forEach((e=>this.bind(e,i,(e=>K(e.target)))))}this.bind(t.inputs.seek,i,(t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");W(s)&&(s=i.value),i.removeAttribute("seek-value"),e.currentTime=s/i.max*e.duration}),"seek"),this.bind(t.progress,"mouseenter mouseleave mousemove",(t=>We.updateSeekTooltip.call(e,t))),this.bind(t.progress,"mousemove touchmove",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)})),this.bind(t.progress,"mouseleave touchend click",(()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)})),this.bind(t.progress,"mousedown touchstart",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)})),this.bind(t.progress,"mouseup touchend",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)})),Y.isWebkit&&Array.from(ce.call(e,'input[type="range"]')).forEach((t=>{this.bind(t,"input",(t=>We.updateRangeFill.call(e,t.target)))})),e.config.toggleInvert&&!H(t.display.duration)&&this.bind(t.display.currentTime,"click",(()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,We.timeUpdate.call(e))})),this.bind(t.inputs.volume,i,(t=>{e.volume=t.target.value}),"volume"),this.bind(t.controls,"mouseenter mouseleave",(i=>{t.controls.hover=!e.touch&&"mouseenter"===i.type})),t.fullscreen&&Array.from(t.fullscreen.children).filter((e=>!e.contains(t.container))).forEach((i=>{this.bind(i,"mouseenter mouseleave",(i=>{t.controls&&(t.controls.hover=!e.touch&&"mouseenter"===i.type)}))})),this.bind(t.controls,"mousedown mouseup touchstart touchend touchcancel",(e=>{t.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(t.controls,"focusin",(()=>{const{config:i,timers:s}=e;le(t.controls,i.classNames.noTransition,!0),at.toggleControls.call(e,!0),setTimeout((()=>{le(t.controls,i.classNames.noTransition,!1)}),0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout((()=>at.toggleControls.call(e,!1)),n)})),this.bind(t.inputs.volume,"wheel",(t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map((e=>i?-e:e)),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:l}=e.media;(1===a&&l<1||-1===a&&l>0)&&t.preventDefault()}),"volume",!1)})),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:l,metaKey:o,shiftKey:r}=e,c="keydown"===n,h=c&&s===this.lastKey;if(a||l||o||r)return;if(!s)return;if(c){const n=document.activeElement;if(H(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&re(n,s))return;if("Space"===e.key&&re(n,'button, [role^="menuitem"]'))return}switch(["Space","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","0","1","2","3","4","5","6","7","8","9","c","f","k","l","m"].includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":h||(u=parseInt(s,10),t.currentTime=t.duration/10*u);break;case"Space":case"k":h||ke(t.togglePlay());break;case"ArrowUp":t.increaseVolume(.1);break;case"ArrowDown":t.decreaseVolume(.1);break;case"m":h||(t.muted=!t.muted);break;case"ArrowRight":t.forward();break;case"ArrowLeft":t.rewind();break;case"f":t.fullscreen.toggle();break;case"c":h||t.toggleCaptions();break;case"l":t.loop=!t.loop}"Escape"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null;var u}toggleMenu(e){We.toggleMenu.call(this.player,e)}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var ot=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){e.exports=function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,l,o=[],r=e.length,c=r;for(n=function(e,i){i.length&&o.push(e),--c||t(o)};r--;)a=e[r],(l=i[a])?n(a,l):(s[a]=s[a]||[]).push(n)}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)for(;n.length;)n[0](e,t),n.splice(0,1)}}function l(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function o(t,i,s,n){var a,l,r=document,c=s.async,h=(s.numRetries||0)+1,u=s.before||e,d=t.replace(/[\?|#].*$/,""),m=t.replace(/^(css|img)!/,"");n=n||0,/(^css!|\.css$)/.test(d)?((l=r.createElement("link")).rel="stylesheet",l.href=m,(a="hideFocus"in l)&&l.relList&&(a=0,l.rel="preload",l.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(d)?(l=r.createElement("img")).src=m:((l=r.createElement("script")).src=t,l.async=void 0===c||c),l.onload=l.onerror=l.onbeforeload=function(e){var r=e.type[0];if(a)try{l.sheet.cssText.length||(r="e")}catch(e){18!=e.code&&(r="e")}if("e"==r){if((n+=1)<h)return o(t,i,s,n)}else if("preload"==l.rel&&"style"==l.as)return l.rel="stylesheet";i(t,r,e.defaultPrevented)},!1!==u(t,l)&&r.head.appendChild(l)}function r(e,t,i){var s,n,a=(e=e.push?e:[e]).length,l=a,r=[];for(s=function(e,i,s){if("e"==i&&r.push(e),"b"==i){if(!s)return;r.push(e)}--a||t(r)},n=0;n<l;n++)o(e[n],s,i)}function c(e,i,s){var n,o;if(i&&i.trim&&(n=i),o=(n?s:i)||{},n){if(n in t)throw"LoadJS";t[n]=!0}function c(t,i){r(e,(function(e){l(o,e),t&&l({success:t,error:i},e),a(n,e)}),o)}if(o.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return n(e,(function(e){l(t,e)})),c},c.done=function(e){a(e,[])},c.reset=function(){t={},i={},s={}},c.isDefined=function(e){return e in t},c}()}));function rt(e){return new Promise(((t,i)=>{ot(e,{success:t,error:i})}))}function ct(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,ve.call(this,this.media,e?"play":"pause"))}const ht={setup(){const e=this;le(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,xe.call(e),L(window.Vimeo)?ht.ready.call(e):rt(e.config.urls.vimeo.sdk).then((()=>{ht.ready.call(e)})).catch((t=>{e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute("src"),l="";W(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),l=e.media.getAttribute(e.config.attributes.embed.hash)):l=function(e){const t=e.match(/^.*(vimeo.com\/|video\/)(\d+)(\?.*&*h=|\/)+([\d,a-f]+)/);return t&&5===t.length?t[4]:null}(a);const o=l?{h:l}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const r=Ke({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:"media",playsinline:!this.config.fullscreen.iosNative,...o,...n}),c=W(h=a)?null:$(Number(h))?h:h.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:h;var h;const u=Z("iframe"),d=$e(e.config.urls.vimeo.iframe,c,r);if(u.setAttribute("src",d),u.setAttribute("allowfullscreen",""),u.setAttribute("allow",["autoplay","fullscreen","picture-in-picture","encrypted-media","accelerometer","gyroscope"].join("; ")),W(s)||u.setAttribute("referrerPolicy",s),i||!t.customControls)u.setAttribute("data-poster",e.poster),e.media=se(u,e.media);else{const t=Z("div",{class:e.config.classNames.embedContainer,"data-poster":e.poster});t.appendChild(u),e.media=se(t,e.media)}t.customControls||Fe($e(e.config.urls.vimeo.api,d)).then((t=>{!W(t)&&t.thumbnail_url&&at.setPoster.call(e,t.thumbnail_url).catch((()=>{}))})),e.embed=new window.Vimeo.Player(u,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>(ct.call(e,!0),e.embed.play()),e.media.pause=()=>(ct.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:m}=e.media;Object.defineProperty(e.media,"currentTime",{get:()=>m,set(t){const{embed:i,media:s,paused:n,volume:a}=e,l=n&&!i.hasPlayed;s.seeking=!0,ve.call(e,s,"seeking"),Promise.resolve(l&&i.setVolume(0)).then((()=>i.setCurrentTime(t))).then((()=>l&&i.pause())).then((()=>l&&i.setVolume(a))).catch((()=>{}))}});let p=e.config.speed.selected;Object.defineProperty(e.media,"playbackRate",{get:()=>p,set(t){e.embed.setPlaybackRate(t).then((()=>{p=t,ve.call(e,e.media,"ratechange")})).catch((()=>{e.options.speed=[1]}))}});let{volume:g}=e.config;Object.defineProperty(e.media,"volume",{get:()=>g,set(t){e.embed.setVolume(t).then((()=>{g=t,ve.call(e,e.media,"volumechange")}))}});let{muted:f}=e.config;Object.defineProperty(e.media,"muted",{get:()=>f,set(t){const i=!!O(t)&&t;e.embed.setVolume(i?0:e.config.volume).then((()=>{f=i,ve.call(e,e.media,"volumechange")}))}});let b,{loop:y}=e.config;Object.defineProperty(e.media,"loop",{get:()=>y,set(t){const i=O(t)?t:e.config.loop.active;e.embed.setLoop(i).then((()=>{y=i}))}}),e.embed.getVideoUrl().then((t=>{b=t,We.setDownloadUrl.call(e)})).catch((e=>{this.debug.warn(e)})),Object.defineProperty(e.media,"currentSrc",{get:()=>b}),Object.defineProperty(e.media,"ended",{get:()=>e.currentTime===e.duration}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then((t=>{const[i,s]=t;e.embed.ratio=Ie(i,s),xe.call(this)})),e.embed.setAutopause(e.config.autopause).then((t=>{e.config.autopause=t})),e.embed.getVideoTitle().then((t=>{e.config.title=t,at.setTitle.call(this)})),e.embed.getCurrentTime().then((t=>{m=t,ve.call(e,e.media,"timeupdate")})),e.embed.getDuration().then((t=>{e.media.duration=t,ve.call(e,e.media,"durationchange")})),e.embed.getTextTracks().then((t=>{e.media.textTracks=t,Ye.setup.call(e)})),e.embed.on("cuechange",(({cues:t=[]})=>{const i=t.map((e=>function(e){const t=document.createDocumentFragment(),i=document.createElement("div");return t.appendChild(i),i.innerHTML=e,t.firstChild.innerText}(e.text)));Ye.updateCues.call(e,i)})),e.embed.on("loaded",(()=>{if(e.embed.getPaused().then((t=>{ct.call(e,!t),t||ve.call(e,e.media,"playing")})),H(e.embed.element)&&e.supported.ui){e.embed.element.setAttribute("tabindex",-1)}})),e.embed.on("bufferstart",(()=>{ve.call(e,e.media,"waiting")})),e.embed.on("bufferend",(()=>{ve.call(e,e.media,"playing")})),e.embed.on("play",(()=>{ct.call(e,!0),ve.call(e,e.media,"playing")})),e.embed.on("pause",(()=>{ct.call(e,!1)})),e.embed.on("timeupdate",(t=>{e.media.seeking=!1,m=t.seconds,ve.call(e,e.media,"timeupdate")})),e.embed.on("progress",(t=>{e.media.buffered=t.percent,ve.call(e,e.media,"progress"),1===parseInt(t.percent,10)&&ve.call(e,e.media,"canplaythrough"),e.embed.getDuration().then((t=>{t!==e.media.duration&&(e.media.duration=t,ve.call(e,e.media,"durationchange"))}))})),e.embed.on("seeked",(()=>{e.media.seeking=!1,ve.call(e,e.media,"seeked")})),e.embed.on("ended",(()=>{e.media.paused=!0,ve.call(e,e.media,"ended")})),e.embed.on("error",(t=>{e.media.error=t,ve.call(e,e.media,"error")})),t.customControls&&setTimeout((()=>at.build.call(e)),0)}};function ut(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,ve.call(this,this.media,e?"play":"pause"))}function dt(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}const mt={setup(){if(le(this.elements.wrapper,this.config.classNames.embed,!0),L(window.YT)&&j(window.YT.Player))mt.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{j(e)&&e(),mt.ready.call(this)},rt(this.config.urls.youtube.sdk).catch((e=>{this.debug.warn("YouTube API failed to load",e)}))}},getTitle(e){Fe($e(this.config.urls.youtube.api,e)).then((e=>{if(L(e)){const{title:t,height:i,width:s}=e;this.config.title=t,at.setTitle.call(this),this.embed.ratio=Ie(s,i)}xe.call(this)})).catch((()=>{xe.call(this)}))},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute("id");if(!W(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");W(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=W(a=s)?null:a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:a;var a;const l=Z("div",{id:`${e.provider}-${Math.floor(1e4*Math.random())}`,"data-poster":t.customControls?e.poster:void 0});if(e.media=se(l,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;nt(t("maxres"),121).catch((()=>nt(t("sd"),121))).catch((()=>nt(t("hq")))).then((t=>at.setPoster.call(e,t.src))).then((t=>{t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((()=>{}))}e.embed=new window.YT.Player(e.media,{videoId:n,host:dt(t),playerVars:X({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.fullscreen.iosNative?0:1,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:"The request contains an invali
10807d parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[i]||"An unknown error occured";e.media.error={code:i,message:s},ve.call(e,e.media,"error")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),ve.call(e,e.media,"ratechange")},onReady(i){if(j(e.media.play))return;const s=i.target;mt.getTitle.call(e,n),e.media.play=()=>{ut.call(e,!0),s.playVideo()},e.media.pause=()=>{ut.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:()=>Number(s.getCurrentTime()),set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,ve.call(e,e.media,"seeking"),s.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:()=>s.getPlaybackRate(),set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,"volume",{get:()=>a,set(t){a=t,s.setVolume(100*a),ve.call(e,e.media,"volumechange")}});let{muted:l}=e.config;Object.defineProperty(e.media,"muted",{get:()=>l,set(t){const i=O(t)?t:l;l=i,s[i?"mute":"unMute"](),s.setVolume(100*a),ve.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:()=>s.getVideoUrl()}),Object.defineProperty(e.media,"ended",{get:()=>e.currentTime===e.duration});const o=s.getAvailablePlaybackRates();e.options.speed=o.filter((t=>e.config.speed.options.includes(t))),e.supported.ui&&t.customControls&&e.media.setAttribute("tabindex",-1),ve.call(e,e.media,"timeupdate"),ve.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&ve.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),ve.call(e,e.media,"canplaythrough"))}),200),t.customControls&&setTimeout((()=>at.build.call(e)),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);switch(e.media.seeking&&[1,2].includes(i.data)&&(e.media.seeking=!1,ve.call(e,e.media,"seeked")),i.data){case-1:ve.call(e,e.media,"timeupdate"),e.media.buffered=s.getVideoLoadedFraction(),ve.call(e,e.media,"progress");break;case 0:ut.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):ve.call(e,e.media,"ended");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(ut.call(e,!0),ve.call(e,e.media,"playing"),e.timers.playing=setInterval((()=>{ve.call(e,e.media,"timeupdate")}),50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),ve.call(e,e.media,"durationchange")));break;case 2:e.muted||e.embed.unMute(),ut.call(e,!1);break;case 3:ve.call(e,e.media,"waiting")}ve.call(e,e.elements.container,"statechange",!1,{code:i.data})}}})}},pt={setup(){this.media?(le(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),le(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&le(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=Z("div",{class:this.config.classNames.video}),J(this.media,this.elements.wrapper),this.elements.poster=Z("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?Le.setup.call(this):this.isYouTube?mt.setup.call(this):this.isVimeo&&ht.setup.call(this)):this.debug.warn("No media element found!")}};class gt{constructor(t){e(this,"load",(()=>{this.enabled&&(L(window.google)&&L(window.google.ima)?this.ready():rt(this.player.config.urls.googleIMA.sdk).then((()=>{this.ready()})).catch((()=>{this.trigger("error",new Error("Google IMA SDK failed to load"))})))})),e(this,"ready",(()=>{var e;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((()=>{this.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()})),e(this,"setupIMA",(()=>{this.elements.container=Z("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(e=>this.onAdsManagerLoaded(e)),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e)),!1),this.requestAds()})),e(this,"requestAds",(()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}})),e(this,"pollCountdown",((e=!1)=>
vendor: 23,402 bytes, line 10807
10807{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval((()=>{const e=Ue(Math.max(this.manager.getRemainingTime(),0)),t=`${He.get("advertisement",this.player.config)} - ${e}`;this.elements.container.setAttribute("data-badge-text",t)}),100)})),e(this,"onAdsManagerLoaded",(e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e))),Object.keys(google.ima.AdEvent.Type).forEach((e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],(e=>this.onAdEvent(e)))})),this.trigger("loaded")})),e(this,"addCuePoints",(()=>{W(this.cuePoints)||this.cuePoints.forEach((e=>{if(0!==e&&-1!==e&&e<this.player.duration){const t=this.player.elements.progress;if(H(t)){const i=100/this.player.duration*e,s=Z("span",{class:this.player.config.classNames.cues});s.style.left=`${i.toString()}%`,t.appendChild(s)}}}))})),e(this,"onAdEvent",(e=>{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData();switch((e=>{ve.call(this.player,this.player.media,`ads${e.replace(/_/g,"").toLowerCase()}`)})(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`)}})),e(this,"onAdError",(e=>{this.cancel(),this.player.debug.warn("Ads error",e)})),e(this,"listeners",(()=>{const{container:e}=this.player.elements;let t;this.player.on("canplay",(()=>{this.addCuePoints()})),this.player.on("ended",(()=>{this.loader.contentComplete()})),this.player.on("timeupdate",(()=>{t=this.player.currentTime})),this.player.on("seeked",(()=>{const e=this.player.currentTime;W(this.cuePoints)||this.cuePoints.forEach(((i,s)=>{t<i&&i<e&&(this.manager.discardAdBreak(),this.cuePoints.splice(s,1))}))})),window.addEventListener("resize",(()=>{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)}))})),e(this,"play",(()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then((()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(e){this.onAdError(e)}})).catch((()=>{}))})),e(this,"resumeContent",(()=>{this.elements.container.style.zIndex="",this.playing=!1,ke(this.player.media.play())})),e(this,"pauseContent",(()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()})),e(this,"cancel",(()=>{this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()})),e(this,"loadAds",(()=>{this.managerPromise.then((()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise((e=>{this.on("loaded",e),this.player.debug.log(this.manager)})),this.initialized=!1,this.requestAds()})).catch((()=>{}))})),e(this,"trigger",((e,...t)=>{const i=this.events[e];D(i)&&i.forEach((e=>{j(e)&&e.apply(this,t)}))})),e(this,"on",((e,t)=>(D(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this))),e(this,"startSafetyTimer",((e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout((()=>{this.cancel(),this.clearSafetyTimer("startSafetyTimer()")}),e)})),e(this,"clearSafetyTimer",(e=>{I(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)})),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise(((e,t)=>{this.on("loaded",e),this.on("error",t)})),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!W(e.publisherId)||U(e.tagUrl))}get tagUrl(){const{config:e}=this;if(U(e.tagUrl))return e.tagUrl;return`https://go.aniview.com/api/adserver6/vast/?${Ke({AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId})}`}}function ft(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}const bt=e=>{const t=[];return e.split(/\r\n\r\n|\n\n|\r\r/).forEach((e=>{const i={};e.split(/\r\n|\n|\r/).forEach((e=>{if($(i.startTime)){if(!W(e.trim())&&W(i.text)){const t=e.trim().split("#xywh=");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(","))}}else{const t=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}})),i.text&&t.push(i)})),t},yt=(e,t)=>{const i={};return e>t.width/t.height?(i.width=t.width,i.height=1/e*t.width):(i.height=t.height,i.width=e*t.height),i};class vt{constructor(t){e(this,"load",(()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.loaded=!0)}))})),e(this,"getThumbnails",(()=>new Promise((e=>{const{src:t}=this.player.config.previewThumbnails;if(W(t))throw new Error("Missing previewThumbnails.src config attribute");const i=()=>{this.thumbnails.sort(((e,t)=>e.height-t.height)),this.player.debug.log("Preview thumbnails",this.thumbnails),e()};if(j(t))t((e=>{this.thumbnails=e,i()}));else{const e=(_(t)?[t]:t).map((e=>this.getThumbnail(e)));Promise.all(e).then(i)}})))),e(this,"getThumbnail",(e=>new Promise((t=>{Fe(e).then((i=>{const s={frames:bt(i),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||s.frames[0].text.startsWith("http://")||s.frames[0].text.startsWith("https://")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text}))})))),e(this,"startMove",(e=>{if(this.loaded&&R(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t,i;const s=this.player.elements.progress.getBoundingClientRect(),n=100/s.width*(e.pageX-s.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Ue(this.seekTime);const a=null===(t=this.player.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(this.seekTime)));a&&this.elements.thumb.time.insertAdjacentHTML("afterbegin",`${a.label}<br>`)}this.showImageAtCurrentTime()}})),e(this,"endMove",(()=>{this.toggleThumbContainer(!1,!0)})),e(this,"startScrubbing",(e=>{(I(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))})),e(this,"endScrubbing",(()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ye.call(this.player,this.player.media,"timeupdate",(()=>{this.mouseDown||this.toggleScrubbingContainer(!1)}))})),e(this,"listeners",(()=>{this.player.on("play",(()=>{this.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(()=>{this.toggleThumbContainer(!1)})),this.player.on("timeupdate",(()=>{this.lastTime=this.player.media.currentTime}))})),e(this,"render",(()=>{this.elements.thumb.container=Z("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=Z("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=Z("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=Z("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),H(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=Z("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)})),e(this,"destroy",(()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()})),e(this,"showImageAtCurrentTime",(()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex((e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime)),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)})),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))})),e(this,"loadImage",((e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,l=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=l,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${l}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}})),e(this,"showImage",((e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))})),e(this,"removeOldImages",(e=>{Array.from(this.currentImageContainer.children).forEach((t=>{if("img"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout((()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)}),i)}}))})),e(this,"preloadNearby",((e,t=!0)=>new Promise((i=>{setTimeout((()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach((e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}})),a||i()}}),300)})))),e(this,"getHigherQuality",((e,t,i,s)=>{if(e<this.thumbnails.length-1){let n=t.naturalHeight;this.usingSprites&&(n=i.h),n<this.thumbContainerHeight&&setTimeout((()=>{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))}),300)}})),e(this,"toggleThumbContainer",((e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,"toggleScrubbingContainer",((e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,"determineContainerAutoSizing",(()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)})),e(this,"setThumbContainerSizeAndPos",(()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()})),e(this,"setThumbContainerPos",(()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,l=ft(a,s,n);i.style.left=`${l}px`,i.style.setProperty("--preview-arrow-offset",a-l+"px")})),e(this,"setScrubbingContainerSize",(()=>{const{width:e,height:t}=yt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`})),e(this,"setImageSizeAndOffset",((e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+"px",e.style.width=e.naturalWidth*i+"px",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`})),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=yt(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}const wt={insertElements(e,t){_(t)?ee(e,this.media,{src:t}):D(t)&&t.forEach((t=>{ee(e,this.media,t)}))},change(e){Q(e,"sources.length")?(Le.cancelRequests.call(this),this.destroy.call(this,(()=>{this.options.quality=[],te(this.media),this.media=null,H(this.elements.container)&&this.elements.container.removeAttribute("class");const{sources:t,type:i}=e,[{provider:s=Ge.html5,src:n}]=t,a="html5"===s?i:"div",l="html5"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:me.check(i,s,this.config.playsinline),media:Z(a,l)}),this.elements.container.appendChild(this.media),O(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),W(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute("loop",""),this.config.muted&&this.media.setAttribute("muted",""),this.config.playsinline&&this.media.setAttribute("playsinline","")),at.addStyleHook.call(this),this.isHTML5&&wt.insertElements.call(this,"source",t),this.config.title=e.title,pt.setup.call(this),this.isHTML5&&Object.keys(e).includes("tracks")&&wt.insertElements.call(this,"track",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&at.build.call(this),this.isHTML5&&this.media.load(),W(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new vt(this))),this.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};class Tt{constructor(t,i){if(e(this,"play",(()=>j(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((()=>this.ads.play())).catch((()=>ke(this.media.play()))),this.media.play()):null)),e(this,"pause",(()=>this.playing&&j(this.media.pause)?this.media.pause():null)),e(this,"togglePlay",(e=>(O(e)?e:!this.playing)?this.play():this.pause())),e(this,"stop",(()=>{this.isHTML5?(this.pause(),this.restart()):j(this.media.stop)&&this.media.stop()})),e(this,"restart",(()=>{this.currentTime=0})),e(this,"rewind",(e=>{this.currentTime-=$(e)?e:this.config.seekTime})),e(this,"forward",(e=>{this.currentTime+=$(e)?e:this.config.seekTime})),e(this,"increaseVolume",(e=>{const t=this.media.muted?0:this.volume;this.volume=t+($(e)?e:0)})),e(this,"decreaseVolume",(e=>{this.increaseVolume(-e)})),e(this,"airplay",(()=>{me.airplay&&this.media.webkitShowPlaybackTargetPicker()})),e(this,"toggleControls",(e=>{if(this.supported.ui&&!this.isAudio){const t=oe(this.elements.container,this.config.classNames.hideControls),i=void 0===e?void 0:!e,s=le(this.elements.container,this.config.classNames.hideControls,i);if(s&&D(this.config.controls)&&this.config.controls.includes("settings")&&!W(this.config.settings)&&We.toggleMenu.call(this,!1),s!==t){const e=s?"controlshidden":"controlsshown";ve.call(this,this.media,e)}return!s}return!1})),e(this,"on",((e,t)=>{fe.call(this,this.elements.container,e,t)})),e(this,"once",((e,t)=>{ye.call(this,this.elements.container,e,t)})),e(this,"off",((e,t)=>{be(this.elements.container,e,t)})),e(this,"destroy",((e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow="",this.embed=null,t?(Object.keys(this.elements).length&&(te(this.elements.buttons.play),te(this.elements.captions),te(this.elements.controls),te(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),j(e)&&e()):(we.call(this),Le.cancelRequests.call(this),se(this.elements.original,this.elements.container),ve.call(this,this.elements.original,"destroyed",!0),j(e)&&e.call(this.elements.original),this.ready=!1,setTimeout((()=>{this.elements=null,this.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(at.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&j(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))})),e(this,"supports",(e=>me.mime.call(this,e))),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=me.touch,this.media=t,_(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||q(this.media)||D(this.media))&&(this.media=this.media[0]),this.config=X({},Qe,Tt.defaults,i||{},(()=>{try{return JSON.parse(this.media.getAttribute("data-plyr-config"))}catch(e){return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new it(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",me),I(this.media)||!H(this.media))return void this.debug.error("Setup failed: no suitable element passed");if(this.media.plyr)return void this.debug.warn("Target already setup");if(!this.config.enabled)return void this.debug.error("Setup failed: disabled by config");if(!me.check().api)return void this.debug.error("Setup failed: no support");const s=this.media.cloneNode(!0);s.autoplay=!1,this.elements.original=s;const n=this.media.tagName.toLowerCase();let a=null,l=null;switch(n){case"div":if(a=this.media.querySelector("iframe"),H(a)){if(l=ze(a.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?Ge.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?Ge.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className="",l.search.length){const e=["1","true"];e.includes(l.searchParams.get("autoplay"))&&(this.config.autoplay=!0),e.includes(l.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(l.searchParams.get("playsinline")),this.config.youtube.hl=l.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(W(this.provider)||!Object.values(Ge).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=et;break;case"video":case"audio":this.type=n,this.provider=Ge.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=me.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new lt(this),this.storage=new Re(this),this.media.plyr=this,H(this.elements.container)||(this.elements.container=Z("div",{tabindex:0}),J(this.media,this.elements.container)),at.migrateStyles.call(this),at.addStyleHook.call(this),pt.setup.call(this),this.config.debug&&fe.call(this,this.elements.container,this.config.events.join(" "),(e=>{this.debug.log(`event: ${e.type}`)})),this.fullscreen=new st(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&at.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new gt(this)),this.isHTML5&&this.config.auto
10807play&&this.once("canplay",(()=>ke(this.play()))),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new vt(this))):this.debug.error("Setup failed: no support")}get isHTML5(){return this.provider===Ge.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===Ge.youtube}get isVimeo(){return this.provider===Ge.vimeo}get isVideo(){return this.type===et}get isAudio(){return this.type===Ze}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=$(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return $(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=parseFloat(this.config.duration),t=(this.media||{}).duration,i=$(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;_(t)&&(t=Number(t)),$(t)||(t=this.storage.get("volume")),$(t)||({volume:t}=this.config),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!W(e)&&this.muted&&t>0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;O(t)||(t=this.storage.get("muted")),O(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;$(e)&&(t=e),$(t)||(t=this.storage.get("speed")),$(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=ft(t,i,s),this.config.speed.selected=t,setTimeout((()=>{this.media&&(this.media.playbackRate=t)}),0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!W(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find($),n=!0;if(!i.includes(s)){const e=Ae(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=O(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){wt.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return U(e)?e:this.source}set download(e){U(e)&&(this.config.urls.download=e,We.setDownloadUrl.call(this))}set poster(e){this.isVideo?at.setPoster.call(this,e,!1).catch((()=>{})):this.debug.warn("Poster can only be set for video")}get poster(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}get ratio(){if(!this.isVideo)return null;const e=Me(Ne.call(this));return D(e)?e.join(":"):e}set ratio(e){this.isVideo?_(e)&&Pe(e)?(this.config.ratio=Me(e),xe.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn("Aspect ratio can only be set for video")}set autoplay(e){this.config.autoplay=O(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){Ye.toggle.call(this,e,!1)}set currentTrack(e){Ye.set.call(this,e,!1),Ye.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){Ye.setLanguage.call(this,e,!1)}get language(){return(Ye.getCurrentTrack.call(this)||{}).language}set pip(e){if(!me.pip)return;const t=O(e)?e:!this.pip;j(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Xe:Je),j(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return me.pip?W(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Xe:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new vt(this))}
vendor: 2,400 bytes, lines 10807-10812
10807static supported(e,t,i){return me.check(e,t,i)}static loadSprite(e,t){return Ve(e,t)}static setup(e,t={}){let i=null;return _(e)?i=Array.from(document.querySelectorAll(e)):q(e)?i=Array.from(e):D(e)&&(i=e.filter(H)),W(i)?null:i.map((e=>new Tt(e,t)))}}var kt;return Tt.defaults=(kt=Qe,JSON.parse(JSON.stringify(kt))),Tt})); 10808//# sourceMappingURL=plyr.min.js.map 10809 10810/* PrismJS 1.24.1 10811https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+markup-templating+php+sass+scss */ 10812var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var c=/\blang(?:uage)?-([\w-]+)\b/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++n}),e.__id},clone:function t(e,r){var a,n;switch(r=r||{},M.util.type(e)){case"Object":if(n=M.util.objId(e),r[n])return r[n];for(var i in a={},r[n]=a,e)e.hasOwnProperty(i)&&(a[i]=t(e[i],r));return a;case"Array":return n=M.util.objId(e),r[n]?r[n]:(a=[],r[n]=a,e.forEach(function(e,n){a[n]=t(e,r)}),a);default:return e}},getLanguage:function(e){for(;e&&!c.test(e.className);)e=e.parentElement;return e?(e.className.match(c)||[,"none"])[1].toLowerCase():"none"},currentScript:function(){if("undefined"==typeof document)return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(e){var n=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(e.stack)||[])[1];if(n){var t=document.getElementsByTagName("script");for(var r in t)if(t[r].src==n)return t[r]}return null}},isActive:function(e,n,t){for(var r="no-"+n;e;){var a=e.classList;if(a.contains(n))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!t}},languages:{plain:e,plaintext:e,text:e,txt:e,extend:function(e,n){var t=M.util.clone(M.languages[e]);for(var r in n)t[r]=n[r];return t},insertBefore:function(t,e,n,r){var a=(r=r||M.languages)[t],i={};for(var l in a)if(a.hasOwnProperty(l)){if(l==e)for(var o in n)n.hasOwnProperty(o)&&(i[o]=n[o]);n.hasOwnProperty(l)||(i[l]=a[l])}var s=r[t];
10812return r[t]=i,M.languages.DFS(M.languages,function(e,n){n===s&&e!=t&&(this[e]=i)}),i},DFS:function e(n,t,r,a){a=a||{};var i=M.util.objId;for(var l in n)if(n.hasOwnProperty(l)){t.call(n,l,n[l],r||l);var o=n[l],s=M.util.type(o);"Object"!==s||a[i(o)]?"Array"!==s||a[i(o)]||(a[i(o)]=!0,e(o,t,l,a)):(a[i(o)]=!0,e(o,t,null,a))}}},plugins:{},highlightAll:function(e,n){M.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var r={callback:t,container:e,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};M.hooks.run("before-highlightall",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),M.hooks.run("before-all-elements-highlight",r);for(var a,i=0;a=r.elements[i++];)M.highlightElement(a,!0===n,r.callback)},highlightElement:function(e,n,t){var r=M.util.getLanguage(e),a=M.languages[r];e.className=e.className.replace(c,"").replace(/\s+/g," ")+" language-"+r;var i=e.parentElement;i&&"pre"===i.nodeName.toLowerCase()&&(i.className=i.className.replace(c,"").replace(/\s+/g," ")+" language-"+r);var l={element:e,language:r,grammar:a,code:e.textContent};function o(e){l.highlightedCode=e,M.hooks.run("before-insert",l),l.element.innerHTML=l.highlightedCode,M.hooks.run("after-highlight",l),M.hooks.run("complete",l),t&&t.call(l.element)}if(M.hooks.run("before-sanity-check",l),(i=l.element.parentElement)&&"pre"===i.nodeName.toLowerCase()&&!i.hasAttribute("tabindex")&&i.setAttribute("tabindex","0"),!l.code)return M.hooks.run("complete",l),void(t&&t.call(l.element));if(M.hooks.run("before-highlight",l),l.grammar)if(n&&u.Worker){var s=new Worker(M.filename);s.onmessage=function(e){o(e.data)},s.postMessage(JSON.stringify({language:l.language,code:l.code,immediateClose:!0}))}else o(M.highlight(l.code,l.grammar,l.language));else o(M.util.encode(l.code))},highlight:function(e,n,t){var r={code:e,grammar:n,language:t};return M.hooks.run("before-tokenize",r),r.tokens=M.tokenize(r.code,r.grammar),M.hooks.run("after-tokenize",r),W.stringify(M.util.encode(r.tokens),r.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var r in t)n[r]=t[r];delete n.rest}var a=new i;return I(a,a.head,e),function e(n,t,r,a,i,l){for(var o in r)if(r.hasOwnProperty(o)&&r[o]){var s=r[o];s=Array.isArray(s)?s:[s];for(var u=0;u<s.length;++u){if(l&&l.cause==o+","+u)return;var c=s[u],g=c.inside,f=!!c.lookbehind,h=!!c.greedy,d=c.alias;if(h&&!c.pattern.global){var p=c.pattern.toString().match(/[imsuy]*$/)[0];c.pattern=RegExp(c.pattern.source,p+"g")}for(var v=c.pattern||c,m=a.next,y=i;m!==t.tail&&!(l&&y>=l.reach);y+=m.value.length,m=m.next){var b=m.value;if(t.length>n.length)return;if(!(b instanceof W)){var k,x=1;if(h){if(!(k=z(v,y,n,f)))break;var w=k.index,A=k.index+k[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(P<A||"string"==typeof E.value);E=E.next)x++,P+=E.value.length;x--,b=n.slice(y,P),k.index-=y}else if(!(k=z(v,0,b,f)))continue;var w=k.index,S=k[0],O=b.slice(0,w),L=b.slice(w+S.length),N=y+b.length;l&&N>l.reach&&(l.reach=N);var j=m.prev;O&&(j=I(t,j,O),y+=O.length),q(t,j,x);var C=new W(o,g?M.tokenize(S,g):S,d,S);if(m=I(t,j,C),L&&I(t,m,L),1<x){var _={cause:o+","+u,reach:N};e(n,t,r,m.prev,y,_),l&&_.reach>l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a<t&&r!==e.tail;a++)r=r.next;(n.next=r).prev=n,e.length-=a}if(u.Prism=M,W.stringify=function n(e,t){if("string"==typeof e)return e;if(Array.isArray(e)){var r="";return e.forEach(function(e){r+=n(e,t)}),r}var a={type:e.type,content:n(e.content,t),tag:"span",classes:["token",e.type],attributes:{},language:t},i=e.alias;i&&(Array.isArray(i)?Array.prototype.push.apply(a.classes,i):a.classes.push(i)),M.hooks.run("wrap",a);var l="";for(var o in a.attributes)l+=" "+o+'="'+(a.attributes[o]||"").replace(/"/g,""")+'"';return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+l+">"+a.content+"</"+a.tag+">"},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var t=M.util.currentScript();function r(){M.manual||M.highlightAll()}if(t&&(M.filename=t.src,t.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var a=document.readyState;"loading"===a||"interactive"===a&&t&&t.defer?document.addEventListener("DOMContentLoaded",r):window.requestAnimationFrame?window.requestAnimationFrame(r):window.setTimeout(r,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); 10813Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata:/<!\[CDATA\[[\s\S]*?\]\]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>
10813\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\[CDATA\[|\]\]>$/i;var t={"included-cdata":{pattern:/<!\[CDATA\[[\s\S]*?\]\]>/i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[^])*?(?=</__>)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml; 10814!function(s){var e=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;s.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+e.source+"|(?:[^\\\\\r\n()\"']|\\\\[^])*)\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+e.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+e.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(Prism); 10815Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(?:true|false)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/}; 10816Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}
vendor: 4,488 bytes, lines 10816-10818
10816(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute("on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)","javascript")),Prism.languages.js=Prism.languages.javascript; 10817!function(h){function v(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(h.languages["markup-templating"]={},{buildPlaceholders:{value:function(a,r,e,o){if(a.language===r){var c=a.tokenStack=[];a.code=a.code.replace(e,function(e){if("function"==typeof o&&!o(e))return e;for(var n,t=c.length;-1!==a.code.indexOf(n=v(r,t));)++t;return c[t]=e,n}),a.grammar=h.languages.markup}}},tokenizePlaceholders:{value:function(p,k){if(p.language===k&&p.tokenStack){p.grammar=h.languages[k];var m=0,d=Object.keys(p.tokenStack);!function e(n){for(var t=0;t<n.length&&!(m>=d.length);t++){var a=n[t];if("string"==typeof a||a.content&&"string"==typeof a.content){var r=d[m],o=p.tokenStack[r],c="string"==typeof a?a:a.content,i=v(k,r),u=c.indexOf(i);if(-1<u){++m;var g=c.substring(0,u),l=new h.Token(k,h.tokenize(o,p.grammar),"language-"+k,o),s=c.substring(u+i.length),f=[];g&&f.push.apply(f,e([g])),f.push(l),s&&f.push.apply(f,e([s])),"string"==typeof a?n.splice.apply(n,[t,1].concat(f)):a.content=f}}else a.content&&e(a.content)}return n}(p.tokens)}}}})}(Prism); 10818!function(a){var e=/\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/,t=[{pattern:/\b(?:false|true)\b/i,alias:"boolean"},{pattern:/(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,greedy:!0,lookbehind:!0},{pattern:/(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,greedy:!0,lookbehind:!0},/\b(?:null)\b/i,/\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/],i=/\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i,n=/<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/,s=/[{}\[\](),:;]/;a.languages.php={delimiter:{pattern:/\?>$|^<\?(?:php(?=\s)|=)?/i,alias:"important"},comment:e,variable:/\$+(?:\w+\b|(?=\{))/i,package:{pattern:/(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,lookbehind:!0,inside:{punctuation:/\\/}},"class-name-definition":{pattern:/(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,lookbehind:!0,alias:"class-name"}
vendor: 4,398 bytes, line 10818
10818,"function-definition":{pattern:/(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,lookbehind:!0,alias:"function"},keyword:[{pattern:/(\(\s*)\b(?:bool|boolean|int|integer|float|string|object|array)\b(?=\s*\))/i,alias:"type-casting",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)\b(?:bool|int|float|string|object|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*[\w|]\|\s*)(?:null|false)\b(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|self|static|callable|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?[\w|]\|\s*)(?:null|false)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/\b(?:bool|int|float|string|object|void|array(?!\s*\()|mixed|iterable|(?:null|false)(?=\s*\|))\b/i,alias:"type-declaration",greedy:!0},{pattern:/(\|\s*)(?:null|false)\b/i,alias:"type-declaration",greedy:!0,lookbehind:!0},{pattern:/\b(?:parent|self|static)(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(\byield\s+)from\b/i,lookbehind:!0},/\bclass\b/i,{pattern:/((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|match|new|or|parent|print|private|protected|public|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i,lookbehind:!0}],"argument-name":{pattern:/([(,]\s+)\b[a-z_]\w*(?=\s*:(?!:))/i,lookbehind:!0},"class-name":[{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/(\|\s*)\b[a-z_]\w*(?!\\)\b/i,greedy:!0,lookbehind:!0},{pattern:/\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,greedy:!0},{pattern:/(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,alias:"class-name-fully-qualified",greedy:!0,inside:{punctuation:/\\/}},{pattern:/(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:"class-name-fully-qualified",greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*\$)/i,alias:"type-declaration",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-declaration"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/\b[a-z_]\w*(?=\s*::)/i,alias:"static-context",greedy:!0},{pattern:/(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,alias:["class-name-fully-qualified","static-context"],greedy:!0,inside:{punctuation:/\\/}},{pattern:/([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,alias:"type-hint",greedy:!0,lookbehind:!0},{pattern:/([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,alias:["class-name-fully-qualified","type-hint"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}},{pattern:/(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,alias:"return-type",greedy:!0,lookbehind:!0},{pattern:/(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,alias:["class-name-fully-qualified","return-type"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,function:{pattern:/(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,lookbehind:!0,inside:{punctuation:/\\/}},property:{pattern:/(->\s*)\w+/,lookbehind:!0},number:i,operator:n,punctuation:s};var l={pattern:/\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,lookbehind:!0,inside:a.languages.php},r=[{pattern:/<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,alias:"nowdoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},{pattern:/<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,alias:"heredoc-string",greedy:!0,inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:l}},{pattern:/`(?:\\[\s\S]|[^\\`])*`/,alias:"backtick-quoted-string",greedy:!0},{pattern:/'(?:\\[\s\S]|[^\\'])*'/,alias:"single-quoted-string",greedy:!0}
10818,{pattern:/"(?:\\[\s\S]|[^\\"])*"/,alias:"double-quoted-string",greedy:!0,inside:{interpolation:l}}];a.languages.insertBefore("php","variable",{string:r,attribute:{pattern:/#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,greedy:!0,inside:{"attribute-content":{pattern:/^(#\[)[\s\S]+(?=\]$)/,lookbehind:!0,inside:{comment:e,string:r,"attribute-class-name":[{pattern:/([^:]|^)\b[a-z_]\w*(?!\\)\b/i,alias:"class-name",greedy:!0,lookbehind:!0},{pattern:/([^:]|^)(?:\\?\b[a-z_]\w*)+/i,alias:["class-name","class-name-fully-qualified"],greedy:!0,lookbehind:!0,inside:{punctuation:/\\/}}],constant:t,number:i,operator:n,punctuation:s}},delimiter:{pattern:/^#\[|\]$/,alias:"punctuation"}}}}),a.hooks.add("before-tokenize",function(e){if(/<\?/.test(e.code)){a.languages["markup-templating"].buildPlaceholders(e,"php",/<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/gi)}}),a.hooks.add("after-tokenize",function(e){a.languages["markup-templating"].tokenizePlaceholders(e,"php")})}(Prism); 10819!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var r=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:r,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:r,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(Prism); 10820Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.languages.scss; 10821 10822// ProgressBar.js 1.0.1 10823// https://kimmobrunfeldt.github.io/progressbar.js 10824// License: MIT 10825!function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,b.ProgressBar=a()}}(function(){var a;return function b(a,c,d){function e(g,h){if(!c[g]){if(!a[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};a[g][0].call(k.exports,function(b){var c=a[g][1][b];return e(c?c:b)},k,k.exports,b,a,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(b,c,d){(function(){var b=this||Function("return this")(),e=function(){"use strict";function e(){}function f(a,b){var c;for(c in a)Object.hasOwnProperty.call(a,c)&&b(c)}function g(a,b){return f(b,function(c){a[c]=b[c]}),a}function h(a,b){f(b,function(c){"undefined"==typeof a[c]&&(a[c]=b[c])})}function i(a,b,c,d,e,f,g){var h,i,k,l=f>a?0:(a-f)/e;for(h in b)b.hasOwnProperty(h)&&(i=g[h],k="function"==typeof i?i:o[i],b[h]=j(c[h],d[h],k,l));return b}function j(a,b,c,d){return a+(b-a)*c(d)}function k(a,b){var c=n.prototype.filter,d=a._filterArgs;f(c,function(e){"undefined"!=typeof c[e][b]&&c[e][b].apply(a,d)})}function l(a,b,c,d,e,f,g,h,j,l,m){v=b+c+d,w=Math.min(m||u(),v),x=w>=v,y=d-(v-w),a.isPlaying()&&(x?(j(g,a._attachment,y),a.stop(!0)):(a._scheduleId=l(a._timeoutHandler,s),k(a,"beforeTween"),b+c>w?i(1,e,f,g,1,1,h):i(w,e,f,g,d,b+c,h),k(a,"afterTween"),j(e,a._attachment,y)))}function m(a,b){var c={},d=typeof b;return"string"===d||"function"===d?f(a,function(a){c[a]=b}):f(a,function(a){c[a]||(c[a]=b[a]||q)}),c}function n(a,b){this._currentState=a||{},this._configured=!1,this._scheduleFunction=p,"undefined"!=typeof b&&this.setConfig(b)}var o,p,q="linear",r=500,s=1e3/60,t=Date.now?Date.now:function(){return+new Date},u="undefined"!=typeof SHIFTY_DEBUG_NOW?SHIFTY_DEBUG_NOW:t;p="undefined"!=typeof window?window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||window.mozCancelRequestAnimationFrame&&window.mozRequestAnimationFrame||setTimeout:setTimeout;var v,w,x,y;return n.prototype.tween=function(a){return this._isTweening?this:(void 0===a&&this._configured||this.setConfig(a),this._timestamp=u(),this._start(this.get(),this._attachment),this.resume())},n.prototype.setConfig=function(a){a=a||{},this._configured=!0,this._attachment=a.attachment,this._pausedAtTime=null,this._scheduleId=null,this._delay=a.delay||0,this._start=a.start||e,this._step=a.step||e,this._finish=a.finish||e,this._duration=a.duration||r,this._currentState=g({},a.from)||this.get(),this._originalState=this.get(),this._targetState=g({},a.to)||this.get();var b=this;this._timeoutHandler=function(){l(b,b._timestamp,b._delay,b._duration,b._currentState,b._originalState,b._targetState,b._easing,b._step,b._scheduleFunction)};var c=this._currentState,d=this._targetState;return h(d,c),this._easing=m(c,a.easing||q),this._filterArgs=[c,this._originalState,d,this._easing],k(this,"tweenCreated"),this},n.prototype.get=function(){return g({},this._currentState)},n.prototype.set=function(a){this._currentState=a},n.prototype.pause=function(){return this._pausedAtTime=u(),this._isPaused=!0,this},n.prototype.resume=function(){return this._isPaused&&(this._timestamp+=u()-this._pausedAtTime),this._isPaused=!1,this._isTweening=!0,this._timeoutHandler(),this},n.prototype.seek=function(a){a=Math.max(a,0);var b=u();return this._timestamp+a===0?this:(this._timestamp=b-a,this.isPlaying()||(this._isTweening=!0,this._isPaused=!1,l(this,this._timestamp,this._delay,this._duration,this._currentState,this._originalState,this._targetState,this._easing,this._step,this._scheduleFunction,b),this.pause()),this)},n.prototype.stop=function(a){return this._isTweening=!1,this._isPaused=!1,this._timeoutHandler=e,(b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.oCancelAnimationFrame||b.msCancelAnimationFrame||b.mozCancelRequestAnimationFrame||b.clearTimeout)(this._scheduleId),a&&(k(this,"beforeTween"),i(1,this._currentState,this._originalState,this._targetState,1,0,this._easing),k(this,"afterTween"),k(this,"afterTweenEnd"),this._finish.call(this,this._currentState,this._attachment)),this},n.prototype.isPlaying=function(){return this._isTweening&&!this._isPaused},n.prototype.setScheduleFunction=function(a){this._scheduleFunction=a},n.prototype.dispose=function(){var a;for(a in this)this.hasOwnProperty(a)&&delete this[a]},n.prototype.filter={},n.prototype.formula={linear:function(a){return a}},o=n.prototype.formula,g(n,{now:u,each:f,tweenProps:i,tweenProp:j,applyFilter:k,shallowCopy:g,defaults:h,composeEasingObject:m}),"function"==typeof SHIFTY_DEBUG_NOW&&(b.timeoutHandler=l),"object"==typeof d?c.exports=n:"function"==typeof a&&a.amd?a(function(){return n}):"undefined"==typeof b.Tweenable&&(b.Tweenable=n),n}();!function(){e.shallowCopy(e.prototype.formula,{easeInQuad:function(a){return Math.pow(a,2)},easeOutQuad:function(a){return-(Math.pow(a-1,2)-1)},easeInOutQuad:function(a){return(a/=.5)<1?.5*Math.pow(a,2):-.5*((a-=2)*a-2)},easeInCubic:function(a){return Math.pow(a,3)},easeOutCubic:function(a){return Math.pow(a-1,3)+1},easeInOutCubic:function(a){return(a/=.5)<1?.5*Math.pow(a,3):.5*(Math.pow(a-2,3)+2)},easeInQuart:function(a){return Math.pow(a,4)},easeOutQuart:function(a){return-(Math.pow(a-1,4)-1)},easeInOutQuart:function(a){return(a/=.5)<1?.5*Math.pow(a,4):-.5*((a-=2)*Math.pow(a,3)-2)},easeInQuint:function(a){return Math.pow(a,5)},easeOutQuint:function(a){return Math.pow(a-1,5)+1},easeInOutQuint:function(a){return(a/=.5)<1?.5*Math.pow(a,5):.5*(Math.pow(a-2,5)+2)},easeInSine:function(a){return-Math.cos(a*(Math.PI/2))+1},easeOutSine:function(a){return Math.sin(a*(Math.PI/2))},easeInOutSine:function(a){return-.5*(Math.cos(Math.PI*a)-1)},easeInExpo:function(a){return 0===a?0:Math.pow(2,10*(a-1))},easeOutExpo:function(a){return 1===a?1:-Math.pow(2,-10*a)+1},easeInOutExpo:function(a){return 0===a?0:1===a?1:(a/=.5)<1?.5*Math.pow(2,10*(a-1)):.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return-(Math.sqrt(1-a*a)-1)},easeOutCirc:function(a){return Math.sqrt(1-Math.pow(a-1,2))},easeInOutCirc:function(a){return(a/=.5)<1?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeOutBounce:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},easeInBack:function(a){var b=1.70158;return a*a*((b+1)*a-b)},easeOutBack:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},easeInOutBack:function(a){var b=1.70158;return(a/=.5)<1?.5*(a*a*(((b*=1.525)+1)*a-b)):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},elastic:function(a){return-1*Math.pow(4,-8*a)*Math.sin((6*a-1)*(2*Math.PI)/2)+1},swingFromTo:function(a){var b=1.70158;return(a/=.5)<1?.5*(a*a*(((b*=1.525)+1)*a-b)):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)}
vendor: 4,147 bytes, line 10825
10825,swingFrom:function(a){var b=1.70158;return a*a*((b+1)*a-b)},swingTo:function(a){var b=1.70158;return(a-=1)*a*((b+1)*a+b)+1},bounce:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?7.5625*(a-=1.5/2.75)*a+.75:2.5/2.75>a?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375},bouncePast:function(a){return 1/2.75>a?7.5625*a*a:2/2.75>a?2-(7.5625*(a-=1.5/2.75)*a+.75):2.5/2.75>a?2-(7.5625*(a-=2.25/2.75)*a+.9375):2-(7.5625*(a-=2.625/2.75)*a+.984375)},easeFromTo:function(a){return(a/=.5)<1?.5*Math.pow(a,4):-.5*((a-=2)*Math.pow(a,3)-2)},easeFrom:function(a){return Math.pow(a,4)},easeTo:function(a){return Math.pow(a,.25)}})}(),function(){function a(a,b,c,d,e,f){function g(a){return((n*a+o)*a+p)*a}function h(a){return((q*a+r)*a+s)*a}function i(a){return(3*n*a+2*o)*a+p}function j(a){return 1/(200*a)}function k(a,b){return h(m(a,b))}function l(a){return a>=0?a:0-a}function m(a,b){var c,d,e,f,h,j;for(e=a,j=0;8>j;j++){if(f=g(e)-a,l(f)<b)return e;if(h=i(e),l(h)<1e-6)break;e-=f/h}if(c=0,d=1,e=a,c>e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),l(f-a)<b)return e;a>f?c=e:d=e,e=.5*(d-c)+c}return e}var n=0,o=0,p=0,q=0,r=0,s=0;return p=3*b,o=3*(d-b)-p,n=1-p-o,s=3*c,r=3*(e-c)-s,q=1-s-r,k(a,j(f))}function b(b,c,d,e){return function(f){return a(f,b,c,d,e,1)}}e.setBezierFunction=function(a,c,d,f,g){var h=b(c,d,f,g);return h.displayName=a,h.x1=c,h.y1=d,h.x2=f,h.y2=g,e.prototype.formula[a]=h},e.unsetBezierFunction=function(a){delete e.prototype.formula[a]}}(),function(){function a(a,b,c,d,f,g){return e.tweenProps(d,b,a,c,1,g,f)}var b=new e;b._filterArgs=[],e.interpolate=function(c,d,f,g,h){var i=e.shallowCopy({},c),j=h||0,k=e.composeEasingObject(c,g||"linear");b.set({});var l=b._filterArgs;l.length=0,l[0]=i,l[1]=c,l[2]=d,l[3]=k,e.applyFilter(b,"tweenCreated"),e.applyFilter(b,"beforeTween");var m=a(c,i,d,f,k,j);return e.applyFilter(b,"afterTween"),m}}(),function(a){function b(a,b){var c,d=[],e=a.length;for(c=0;e>c;c++)d.push("_"+b+"_"+c);return d}function c(a){var b=a.match(v);return b?(1===b.length||a[0].match(u))&&b.unshift(""):b=["",""],b.join(A)}function d(b){a.each(b,function(a){var c=b[a];"string"==typeof c&&c.match(z)&&(b[a]=e(c))})}function e(a){return i(z,a,f)}function f(a){var b=g(a);return"rgb("+b[0]+","+b[1]+","+b[2]+")"}function g(a){return a=a.replace(/#/,""),3===a.length&&(a=a.split(""),a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2]),B[0]=h(a.substr(0,2)),B[1]=h(a.substr(2,2)),B[2]=h(a.substr(4,2)),B}function h(a){return parseInt(a,16)}function i(a,b,c){var d=b.match(a),e=b.replace(a,A);if(d)for(var f,g=d.length,h=0;g>h;h++)f=d.shift(),e=e.replace(A,c(f));return e}function j(a){return i(x,a,k)}function k(a){for(var b=a.match(w),c=b.length,d=a.match(y)[0],e=0;c>e;e++)d+=parseInt(b[e],10)+",";return d=d.slice(0,-1)+")"}function l(d){var e={};return a.each(d,function(a){var f=d[a];if("string"==typeof f){var g=r(f);e[a]={formatString:c(f),chunkNames:b(g,a)}}}),e}function m(b,c){a.each(c,function(a){for(var d=b[a],e=r(d),f=e.length,g=0;f>g;g++)b[c[a].chunkNames[g]]=+e[g];delete b[a]})}function n(b,c){a.each(c,function(a){var d=b[a],e=o(b,c[a].chunkNames),f=p(e,c[a].chunkNames);d=q(c[a].formatString,f),b[a]=j(d)})}function o(a,b){for(var c,d={},e=b.length,f=0;e>f;f++)c=b[f],d[c]=a[c],delete a[c];return d}function p(a,b){C.length=0;for(var c=b.length,d=0;c>d;d++)C.push(a[b[d]]);return C}function q(a,b){for(var c=a,d=b.length,e=0;d>e;e++)c=c.replace(A,+b[e].toFixed(4));return c}function r(a){return a.match(w)}function s(b,c){a.each(c,function(a){var d,e=c[a],f=e.chunkNames,g=f.length,h=b[a];if("string"==typeof h){var i=h.split(" "),j=i[i.length-1];for(d=0;g>d;d++)b[f[d]]=i[d]||j}else for(d=0;g>d;d++)b[f[d]]=h;delete b[a]})}function t(b,c){a.each(c,function(a){var d=c[a],e=d.chunkNames,f=e.length,g=b[e[0]],h=typeof g;if("string"===h){for(var i="",j=0;f>j;j++)i+=" "+b[e[j]],delete b[e[j]];b[a]=i.substr(1)}else b[a]=g})}var u=/(\d|\-|\.)/,v=/([^\-0-9\.]+)/g,w=/[0-9.\-]+/g,x=new RegExp("rgb\\("+w.source+/,\s*/.source+w.source+/,\s*/.source+w.source+"\\)","g"),y=/^.*\(/,z=/#([0-9]|[a-f]){3,6}/gi,A="VAL",B=[],C=[];a.prototype.filter.token={tweenCreated:function(a,b,c,e){d(a),d(b),d(c),this._tokenData=l(a)}
vendor: 4,132 bytes, line 10825
10825,beforeTween:function(a,b,c,d){s(d,this._tokenData),m(a,this._tokenData),m(b,this._tokenData),m(c,this._tokenData)},afterTween:function(a,b,c,d){n(a,this._tokenData),n(b,this._tokenData),n(c,this._tokenData),t(d,this._tokenData)}}}(e)}).call(null)},{}],2:[function(a,b,c){var d=a("./shape"),e=a("./utils"),f=function(a,b){this._pathTemplate="M 50,50 m 0,-{radius} a {radius},{radius} 0 1 1 0,{2radius} a {radius},{radius} 0 1 1 0,-{2radius}",this.containerAspectRatio=1,d.apply(this,arguments)};f.prototype=new d,f.prototype.constructor=f,f.prototype._pathString=function(a){var b=a.strokeWidth;a.trailWidth&&a.trailWidth>a.strokeWidth&&(b=a.trailWidth);var c=50-b/2;return e.render(this._pathTemplate,{radius:c,"2radius":2*c})},f.prototype._trailString=function(a){return this._pathString(a)},b.exports=f},{"./shape":7,"./utils":8}],3:[function(a,b,c){var d=a("./shape"),e=a("./utils"),f=function(a,b){this._pathTemplate="M 0,{center} L 100,{center}",d.apply(this,arguments)};f.prototype=new d,f.prototype.constructor=f,f.prototype._initializeSvg=function(a,b){a.setAttribute("viewBox","0 0 100 "+b.strokeWidth),a.setAttribute("preserveAspectRatio","none")},f.prototype._pathString=function(a){return e.render(this._pathTemplate,{center:a.strokeWidth/2})},f.prototype._trailString=function(a){return this._pathString(a)},b.exports=f},{"./shape":7,"./utils":8}],4:[function(a,b,c){b.exports={Line:a("./line"),Circle:a("./circle"),SemiCircle:a("./semicircle"),Path:a("./path"),Shape:a("./shape"),utils:a("./utils")}},{"./circle":2,"./line":3,"./path":5,"./semicircle":6,"./shape":7,"./utils":8}],5:[function(a,b,c){var d=a("shifty"),e=a("./utils"),f={easeIn:"easeInCubic",easeOut:"easeOutCubic",easeInOut:"easeInOutCubic"},g=function h(a,b){if(!(this instanceof h))throw new Error("Constructor was called without new keyword");b=e.extend({duration:800,easing:"linear",from:{},to:{},step:function(){}},b);var c;c=e.isString(a)?document.querySelector(a):a,this.path=c,this._opts=b,this._tweenable=null;var d=this.path.getTotalLength();this.path.style.strokeDasharray=d+" "+d,this.set(0)};g.prototype.value=function(){var a=this._getComputedDashOffset(),b=this.path.getTotalLength(),c=1-a/b;return parseFloat(c.toFixed(6),10)},g.prototype.set=function(a){this.stop(),this.path.style.strokeDashoffset=this._progressToOffset(a);var b=this._opts.step;if(e.isFunction(b)){var c=this._easing(this._opts.easing),d=this._calculateTo(a,c),f=this._opts.shape||this;b(d,f,this._opts.attachment)}},g.prototype.stop=function(){this._stopTween(),this.path.style.strokeDashoffset=this._getComputedDashOffset()},g.prototype.animate=function(a,b,c){b=b||{},e.isFunction(b)&&(c=b,b={});var f=e.extend({},b),g=e.extend({},this._opts);b=e.extend(g,b);var h=this._easing(b.easing),i=this._resolveFromAndTo(a,h,f);this.stop(),this.path.getBoundingClientRect();var j=this._getComputedDashOffset(),k=this._progressToOffset(a),l=this;this._tweenable=new d,this._tweenable.tween({from:e.extend({offset:j},i.from),to:e.extend({offset:k},i.to),duration:b.duration,easing:h,step:function(a){l.path.style.strokeDashoffset=a.offset;var c=b.shape||l;b.step(a,c,b.attachment)},finish:function(a){e.isFunction(c)&&c()}})},g.prototype._getComputedDashOffset=function(){var a=window.getComputedStyle(this.path,null);return parseFloat(a.getPropertyValue("stroke-dashoffset"),10)},g.prototype._progressToOffset=function(a){var b=this.path.getTotalLength();return b-a*b},g.prototype._resolveFromAndTo=function(a,b,c){return c.from&&c.to?{from:c.from,to:c.to}:{from:this._calculateFrom(b),to:this._calculateTo(a,b)}},g.prototype._calculateFrom=function(a){return d.interpolate(this._opts.from,this._opts.to,this.value(),a)},g.prototype._calculateTo=function(a,b){return d.interpolate(this._opts.from,this._opts.to,a,b)},g.prototype._stopTween=function(){null!==this._tweenable&&(this._tweenable.stop(),this._tweenable=null)},g.prototype._easing=function(a){return f.hasOwnProperty(a)?f[a]:a},b.exports=g},{"./utils":8,shifty:1}],6:[function(a,b,c){var d=a("./shape"),e=a("./circle"),f=a("./utils"),g=function(a,b){this._pathTemplate="M 50,50 m -{radius},0 a {radius},{radius}
10825 0 1 1 {2radius},0",this.containerAspectRatio=2,d.apply(this,arguments)};g.prototype=new d,g.prototype.constructor=g,g.prototype._initializeSvg=function(a,b){a.setAttribute("viewBox","0 0 100 50")},g.prototype._initializeTextContainer=function(a,b,c){a.text.style&&(c.style.top="auto",c.style.bottom="0",a.text.alignToBottom?f.setStyle(c,"transform","translate(-50%, 0)"):f.setStyle(c,"transform","translate(-50%, 50%)"))},g.prototype._pathString=e.prototype._pathString,g.prototype._trailString=e.prototype._trailString,b.exports=g},{"./circle":2,"./shape":7,"./utils":8}],7:[function(a,b,c){var d=a("./path"),e=a("./utils"),f="Object is destroyed",g=function h(a,b){if(!(this instanceof h))throw new Error("Constructor was called without new keyword");if(0!==arguments.length){this._opts=e.extend({color:"#555",strokeWidth:1,trailColor:null,trailWidth:null,fill:null,text:{style:{color:null,position:"absolute",left:"50%",top:"50%",padding:0,margin:0,transform:{prefix:!0,value:"translate(-50%, -50%)"}},autoStyleContainer:!0,alignToBottom:!0,value:null,className:"progressbar-text"},svgStyle:{display:"block",width:"100%"},warnings:!1},b,!0),e.isObject(b)&&void 0!==b.svgStyle&&(this._opts.svgStyle=b.svgStyle),e.isObject(b)&&e.isObject(b.text)&&void 0!==b.text.style&&(this._opts.text.style=b.text.style);var c,f=this._createSvgView(this._opts);if(c=e.isString(a)?document.querySelector(a):a,!c)throw new Error("Container does not exist: "+a);this._container=c,this._container.appendChild(f.svg),this._opts.warnings&&this._warnContainerAspectRatio(this._container),this._opts.svgStyle&&e.setStyles(f.svg,this._opts.svgStyle),this.svg=f.svg,this.path=f.path,this.trail=f.trail,this.text=null;var g=e.extend({attachment:void 0,shape:this},this._opts);this._progressPath=new d(f.path,g),e.isObject(this._opts.text)&&null!==this._opts.text.value&&this.setText(this._opts.text.value)}};g.prototype.animate=function(a,b,c){if(null===this._progressPath)throw new Error(f);this._progressPath.animate(a,b,c)},g.prototype.stop=function(){if(null===this._progressPath)throw new Error(f);void 0!==this._progressPath&&this._progressPath.stop()},g.prototype.destroy=function(){if(null===this._progressPath)throw new Error(f);this.stop(),this.svg.parentNode.removeChild(this.svg),this.svg=null,this.path=null,this.trail=null,this._progressPath=null,null!==this.text&&(this.text.parentNode.removeChild(this.text),this.text=null)},g.prototype.set=function(a){if(null===this._progressPath)throw new Error(f);this._progressPath.set(a)},g.prototype.value=function(){if(null===this._progressPath)throw new Error(f);return void 0===this._progressPath?0:this._progressPath.value()},g.prototype.setText=function(a){if(null===this._progressPath)throw new Error(f);null===this.text&&(this.text=this._createTextContainer(this._opts,this._container),this._container.appendChild(this.text)),e.isObject(a)?(e.removeChildren(this.text),this.text.appendChild(a)):this.text.innerHTML=a},g.prototype._createSvgView=function(a){var b=document.createElementNS("http://www.w3.org/2000/svg","svg");this._initializeSvg(b,a);var c=null;(a.trailColor||a.trailWidth)&&(c=this._createTrail(a),b.appendChild(c));var d=this._createPath(a);return b.appendChild(d),{svg:b,path:d,trail:c}},g.prototype._initializeSvg=function(a,b){a.setAttribute("viewBox","0 0 100 100")},g.prototype._createPath=function(a){var b=this._pathString(a);return this._createPathElement(b,a)},g.prototype._createTrail=function(a){var b=this._trailString(a),c=e.extend({},a);return c.trailColor||(c.trailColor="#eee"),c.trailWidth||(c.trailWidth=c.strokeWidth),c.color=c.trailColor,c.strokeWidth=c.trailWidth,c.fill=null,this._createPathElement(b,c)},g.prototype._createPathElement=function(a,b){var c=document.createElementNS("http://www.w3.org/2000/svg","path");return c.setAttribute("d",a),c.setAttribute("stroke",b.color),c.setAttribute("stroke-width",b.strokeWidth),b.fill?c.setAttribute("fill",b.fill):c.setAttribute("fill-opacity","0"),c},g.prototype._createTextContainer=function(a,b){var c=document.createElement("div");c.className=a.text.className;var d=a.text.style;return d&&(a.text.autoStyleContainer&&(b.style.position="relative"),e.setStyles(c,d),d.color||(c.style.color=a.color)),this._initializeTextContainer(a,b,c),c},g.prototype._initializeTextContainer=function(a,b,c){},g.prototype._pathString=function(a){throw new Error("Override this function for each progress bar")},g.prototype._trailString=function(a){throw new Error("Override this function for each progress bar")}
10825,g.prototype._warnContainerAspectRatio=function(a){if(this.containerAspectRatio){var b=window.getComputedStyle(a,null),c=parseFloat(b.getPropertyValue("width"),10),d=parseFloat(b.getPropertyValue("height"),10);e.floatEquals(this.containerAspectRatio,c/d)||(console.warn("Incorrect aspect ratio of container","#"+a.id,"detected:",b.getPropertyValue("width")+"(width)","/",b.getPropertyValue("height")+"(height)","=",c/d),console.warn("Aspect ratio of should be",this.containerAspectRatio))}},b.exports=g},{"./path":5,"./utils":8}],8:[function(a,b,c){function d(a,b,c){a=a||{},b=b||{},c=c||!1;for(var e in b)if(b.hasOwnProperty(e)){var f=a[e],g=b[e];c&&l(f)&&l(g)?a[e]=d(f,g,c):a[e]=g}return a}function e(a,b){var c=a;for(var d in b)if(b.hasOwnProperty(d)){var e=b[d],f="\\{"+d+"\\}",g=new RegExp(f,"g");c=c.replace(g,e)}return c}function f(a,b,c){for(var d=a.style,e=0;e<p.length;++e){var f=p[e];d[f+h(b)]=c}d[b]=c}function g(a,b){m(b,function(b,c){null!==b&&void 0!==b&&(l(b)&&b.prefix===!0?f(a,c,b.value):a.style[c]=b)})}function h(a){return a.charAt(0).toUpperCase()+a.slice(1)}function i(a){return"string"==typeof a||a instanceof String}function j(a){return"function"==typeof a}function k(a){return"[object Array]"===Object.prototype.toString.call(a)}function l(a){if(k(a))return!1;var b=typeof a;return"object"===b&&!!a}function m(a,b){for(var c in a)if(a.hasOwnProperty(c)){var d=a[c];b(d,c)}}function n(a,b){return Math.abs(a-b)<q}function o(a){for(;a.firstChild;)a.removeChild(a.firstChild)}var p="Webkit Moz O ms".split(" "),q=.001;b.exports={extend:d,render:e,setStyle:f,setStyles:g,capitalize:h,isString:i,isFunction:j,isObject:l,forEachObject:m,floatEquals:n,removeChildren:o}},{}]},{},[4])(4)}); 10826/*! 10827 * RELLAX v1.12.1 10828 * https://github.com/dixonandmoe/rellax 10829 */ 10830(function(q,g){"function"===typeof define&&define.amd?define([],g):"object"===typeof module&&module.exports?module.exports=g():q.Rellax=g()})("undefined"!==typeof window?window:global,function(){var q=function(g,u){function C(){if(3===a.options.breakpoints.length&&Array.isArray(a.options.breakpoints)){var f=!0,c=!0,b;a.options.breakpoints.forEach(function(a){"number"!==typeof a&&(c=!1);null!==b&&a<b&&(f=!1);b=a});if(f&&c)return}a.options.breakpoints=[576,768,1201];console.warn("Rellax: You must pass an array of 3 numbers in ascending order to the breakpoints option. Defaults reverted")} 10831var a=Object.create(q.prototype),l=0,v=0,m=0,n=0,d=[],w=!0,A=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||function(a){return setTimeout(a,1E3/60)},p=null,x=!1;try{var k=Object.defineProperty({},"passive",{get:function(){x=!0}});window.addEventListener("testPassive",null,k);window.removeEventListener("testPassive",null,k)}catch(f){}var D=window.cancelAnimationFrame||window.mozCancelAnimationFrame|| 10832clearTimeout,E=window.transformProp||function(){var a=document.createElement("div");if(null===a.style.transform){var c=["Webkit","Moz","ms"],b;for(b in c)if(void 0!==a.style[c[b]+"Transform"])return c[b]+"Transform"}return"transform"}();a.options={speed:-2,verticalSpeed:null,horizontalSpeed:null,breakpoints:[576,768,1201],center:!1,wrapper:null,relativeToWrapper:!1,round:!0,vertical:!0,horizontal:!1,verticalScrollAxis:"y",horizontalScrollAxis:"x",callback:function(){}};u&&Object.keys(u).forEach(function(d){a.options[d]= 10833u[d]});u&&u.breakpoints&&C();g||(g=".rellax");k="string"===typeof g?document.querySelectorAll(g):[g];if(0<k.length){a.elems=k;if(a.options.wrapper&&!a.options.wrapper.nodeType)if(k=document.querySelector(a.options.wrapper))a.options.wrapper=k;else{console.warn("Rellax: The wrapper you're trying to use doesn't exist.");return}var F,B=function(){for(var f=0;f<d.length;f++)a.elems[f].style.cssText=d[f].style;d=[];v=window.innerHeight;n=window.innerWidth;f=a.options.breakpoints;F=n<f[0]?"xs":n>=f[0]&&n< 10834f[1]?"sm":n>=f[1]&&n<f[2]?"md":"lg";H();for(f=0;f<a.elems.length;f++){var c=void 0,b=a.elems[f],e=b.getAttribute("data-rellax-percentage"),y=b.getAttribute("data-rellax-speed"),t=b.getAttribute("data-rellax-xs-speed"),g=b.getAttribute("data-rellax-mobile-speed"),h=b.getAttribute("data-rellax-tablet-speed"),k=b.getAttribute("data-rellax-desktop-speed"),l=b.getAttribute("data-rellax-vert
vendor: 4,169 bytes, lines 10834-10842
10834ical-speed"),m=b.getAttribute("data-rellax-horizontal-speed"),p=b.getAttribute("data-rellax-vertical-scroll-axis"), 10835q=b.getAttribute("data-rellax-horizontal-scroll-axis"),u=b.getAttribute("data-rellax-zindex")||0,x=b.getAttribute("data-rellax-min"),A=b.getAttribute("data-rellax-max"),C=b.getAttribute("data-rellax-min-x"),D=b.getAttribute("data-rellax-max-x"),E=b.getAttribute("data-rellax-min-y"),L=b.getAttribute("data-rellax-max-y"),r=!0;t||g||h||k?c={xs:t,sm:g,md:h,lg:k}:r=!1;t=a.options.wrapper?a.options.wrapper.scrollTop:window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop;a.options.relativeToWrapper&& 10836(t=(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)-a.options.wrapper.offsetTop);var z=a.options.vertical?e||a.options.center?t:0:0,I=a.options.horizontal?e||a.options.center?a.options.wrapper?a.options.wrapper.scrollLeft:window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft:0:0;t=z+b.getBoundingClientRect().top;g=b.clientHeight||b.offsetHeight||b.scrollHeight;h=I+b.getBoundingClientRect().left;k=b.clientWidth||b.offsetWidth||b.scrollWidth; 10837z=e?e:(z-t+v)/(g+v);e=e?e:(I-h+n)/(k+n);a.options.center&&(z=e=.5);c=r&&null!==c[F]?Number(c[F]):y?y:a.options.speed;l=l?l:a.options.verticalSpeed;m=m?m:a.options.horizontalSpeed;p=p?p:a.options.verticalScrollAxis;q=q?q:a.options.horizontalScrollAxis;y=J(e,z,c,l,m);b=b.style.cssText;r="";if(e=/transform\s*:/i.exec(b))r=b.slice(e.index),r=(e=r.indexOf(";"))?" "+r.slice(11,e).replace(/\s/g,""):" "+r.slice(11).replace(/\s/g,"");d.push({baseX:y.x,baseY:y.y,top:t,left:h,height:g,width:k,speed:c,verticalSpeed:l, 10838horizontalSpeed:m,verticalScrollAxis:p,horizontalScrollAxis:q,style:b,transform:r,zindex:u,min:x,max:A,minX:C,maxX:D,minY:E,maxY:L})}K();w&&(window.addEventListener("resize",B),w=!1,G())},H=function(){var d=l,c=m;l=a.options.wrapper?a.options.wrapper.scrollTop:(document.documentElement||document.body.parentNode||document.body).scrollTop||window.pageYOffset;m=a.options.wrapper?a.options.wrapper.scrollLeft:(document.documentElement||document.body.parentNode||document.body).scrollLeft||window.pageXOffset; 10839a.options.relativeToWrapper&&(l=((document.documentElement||document.body.parentNode||document.body).scrollTop||window.pageYOffset)-a.options.wrapper.offsetTop);return d!=l&&a.options.vertical||c!=m&&a.options.horizontal?!0:!1},J=function(d,c,b,e,g){var f={};d=100*(g?g:b)*(1-d);c=100*(e?e:b)*(1-c);f.x=a.options.round?Math.round(d):Math.round(100*d)/100;f.y=a.options.round?Math.round(c):Math.round(100*c)/100;return f},h=function(){window.removeEventListener("resize",h);window.removeEventListener("orientationchange", 10840h);(a.options.wrapper?a.options.wrapper:window).removeEventListener("scroll",h);(a.options.wrapper?a.options.wrapper:document).removeEventListener("touchmove",h);p=A(G)},G=function(){H()&&!1===w?(K(),p=A(G)):(p=null,window.addEventListener("resize",h),window.addEventListener("orientationchange",h),(a.options.wrapper?a.options.wrapper:window).addEventListener("scroll",h,x?{passive:!0}:!1),(a.options.wrapper?a.options.wrapper:document).addEventListener("touchmove",h,x?{passive:!0}:!1))},K=function(){for(var f, 10841c=0;c<a.elems.length;c++){var b=d[c].verticalScrollAxis.toLowerCase(),e=d[c].horizontalScrollAxis.toLowerCase();f=-1!=b.indexOf("x")?l:0;b=-1!=b.indexOf("y")?l:0;var g=-1!=e.indexOf("x")?m:0;e=-1!=e.indexOf("y")?m:0;f=J((f+g-d[c].left+n)/(d[c].width+n),(b+e-d[c].top+v)/(d[c].height+v),d[c].speed,d[c].verticalSpeed,d[c].horizontalSpeed);e=f.y-d[c].baseY;b=f.x-d[c].baseX;null!==d[c].min&&(a.options.vertical&&!a.options.horizontal&&(e=e<=d[c].min?d[c].min:e),a.options.horizontal&&!a.options.vertical&& 10842(b=b<=d[c].min?d[c].min:b));null!=d[c].minY&&(e=e<=d[c].minY?d[c].minY:e);null!=d[c].minX&&(b=b<=d[c].minX?d[c].minX:b);null!==d[c].max&&(a.options.vertical&&!a.options.horizontal&&(e=e>=d[c].max?d[c].max:e),a.options.horizontal&&!a.options.vertical&&(b=b>=d[c].max?d[c].max:b));null!=d[c].maxY&&(e=e>=d[c].maxY?d[c].maxY:e);null!=d[c].maxX&&(b=b>=d[c].maxX?d[c].maxX:b);a.elems[c].style[E]="translate3d("+(a.options.horizontal?b:"0")+"px,"+(a.options.vertical?e:"
108420")+"px,"+d[c].zindex+"px) "+d[c].transform}a.options.callback(f)}; 10843a.destroy=function(){for(var f=0;f<a.elems.length;f++)a.elems[f].style.cssText=d[f].style;w||(window.removeEventListener("resize",B),w=!0);D(p);p=null};B();a.refresh=B;return a}console.warn("Rellax: The elements you're trying to select don't exist.")};return q}); 10844 10845/*! 10846 * replaceme.js - text rotating component in vanilla JavaScript 10847 * @version 1.1.0 10848 * @author Adrian Klimek 10849 * @link https://adrianklimek.github.io/replaceme/ 10850 * @copyright Addrian Klimek 2016 10851 * @license MIT 10852 */ 10853!function(a,b){"use strict";function c(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function d(){"function"==typeof b&&b.fn.extend({ReplaceMe:function(a){return this.each(function(){new e(this,a)})}})}function e(a,b){var d={animation:"animated fadeIn",speed:2e3,separator:",",hoverStop:!1,clickChange:!1,loopCount:"infinite",autoRun:!0,onInit:!1,onChange:!1,onComplete:!1};if("object"==typeof b?this.options=c(d,b):this.options=d,"undefined"==typeof a)throw new Error('ReplaceMe [constructor]: "element" parameter is required');if("object"==typeof a)this.element=a;else{if("string"!=typeof a)throw new Error('ReplaceMe [constructor]: wrong "element" parameter');this.element=document.querySelector(a)}this.init()}e.prototype.init=function(){"function"==typeof this.options.onInit&&this.options.onInit(),this.words=this.escapeHTML(this.element.innerHTML).split(this.options.separator),this.count=this.words.length,this.position=this.loopCount=0,this.running=!1,this.bindAll(),this.options.autoRun===!0&&this.start()},e.prototype.bindAll=function(){this.options.hoverStop===!0&&(this.element.addEventListener("mouseover",this.pause.bind(this)),this.element.addEventListener("mouseout",this.start.bind(this))),this.options.clickChange===!0&&this.element.addEventListener("click",this.change.bind(this))},e.prototype.changeAnimation=function(){this.change(),this.loop=setTimeout(this.changeAnimation.bind(this),this.options.speed)},e.prototype.start=function(){this.running!==!0&&(this.running=!0,this.changeWord(this.words[this.position]),this.position++),this.loop=setTimeout(this.changeAnimation.bind(this),this.options.speed)},e.prototype.change=function(){return this.position>this.count-1&&(this.position=0,this.loopCount++,this.loopCount>=this.options.loopCount)?void this.stop():(this.changeWord(this.words[this.position]),this.position++,void("function"==typeof this.options.onChange&&this.options.onChange()))},e.prototype.stop=function(){this.running=!1,this.position=this.loopCount=0,this.pause(),"function"==typeof this.options.onComplete&&this.options.onComplete()},e.prototype.pause=function(){clearTimeout(this.loop)},e.prototype.changeWord=function(a){this.element.innerHTML='<span class="'+this.options.animation+'" style="display:inline-block;">'+a+"</span>"},e.prototype.escapeHTML=function(a){var b=/<\/?\w+\s*[^>]*>/g;return b.test(a)===!0?a.replace(b,""):a},a.ReplaceMe=e,d()}(window,window.jQuery); 10854/*! 10855 * scrollCue.js v2.0.0 10856 * https://github.com/prjct-samwest/scrollCue 10857 */ 10858var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1; 10859$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,e){if(a==Array.prototype||a==Object.prototype)return a;a[b]=e.value;return a};$jscomp.getGlobal=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var e=a[b];if(e&&e.Math==Math)return e}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this); 10860$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(a,b){var e=$jscomp.propertyToPolyfillSymbol[b];if(null==e)return a[b];e=a[e];return void 0!==e?e:a[b]}; 10861$jscomp.polyfill=function(a,b,e,f){b&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(a,b,e,f):$jscomp.polyfillUnisolated(a,b,e,f))};$jscomp.polyfillUnisolated=function(a,b,e,f){e=$jscomp.global;a=a.split(".");for(f=0;f<a.length-1;f++){var h=a[f];h in e||(e[h]={});e=e[h]}a=a[a.length-1];f=e[a];b=b(f);b!=f&&null!=b&&$jscomp.defineProperty(e,a,{configurable:!0,writable:!0,value:b})}; 10862$jscomp.polyfillIsolated=function(a,b,e,f){var h=a.split(".");a=1===h.length;f=h[0];
vendor: 5,894 bytes, lines 10862-10875
10862f=!a&&f in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var k=0;k<h.length-1;k++){var l=h[k];l in f||(f[l]={});f=f[l]}h=h[h.length-1];e=$jscomp.IS_SYMBOL_NATIVE&&"es6"===e?f[h]:null;b=b(e);null!=b&&(a?$jscomp.defineProperty($jscomp.polyfills,h,{configurable:!0,writable:!0,value:b}):b!==e&&($jscomp.propertyToPolyfillSymbol[h]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(h):$jscomp.POLYFILL_PREFIX+h,h=$jscomp.propertyToPolyfillSymbol[h], 10863$jscomp.defineProperty(f,h,{configurable:!0,writable:!0,value:b})))};$jscomp.initSymbol=function(){}; 10864$jscomp.polyfill("Symbol",function(a){if(a)return a;var b=function(a,b){this.$jscomp$symbol$id_=a;$jscomp.defineProperty(this,"description",{configurable:!0,writable:!0,value:b})};b.prototype.toString=function(){return this.$jscomp$symbol$id_};var e=0,f=function(a){if(this instanceof f)throw new TypeError("Symbol is not a constructor");return new b("jscomp_symbol_"+(a||"")+"_"+e++,a)};return f},"es6","es3");$jscomp.initSymbolIterator=function(){}; 10865$jscomp.polyfill("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),e=0;e<b.length;e++){var f=$jscomp.global[b[e]];"function"===typeof f&&"function"!=typeof f.prototype[a]&&$jscomp.defineProperty(f.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.iteratorPrototype($jscomp.arrayIteratorImpl(this))}})}return a},"es6", 10866"es3");$jscomp.initSymbolAsyncIterator=function(){};$jscomp.iteratorPrototype=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,b){a instanceof String&&(a+="");var e=0,f={next:function(){if(e<a.length){var h=e++;return{value:b(h,a[h]),done:!1}}f.next=function(){return{done:!0,value:void 0}};return f.next()}};f[Symbol.iterator]=function(){return f};return f}; 10867$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3"); 10868var scrollCue=function(){var a={},b,e,f=0,h=!0,k=!0,l=!1,n=!1,m,p={duration:600,interval:-.7,percentage:.75,enable:!0,docSlider:!1,pageChangeReset:!1};a={setEvents:function(g){var c=function(){h&&(requestAnimationFrame(function(){h=!0;k&&(a.setQuery(),a.runQuery())}),h=!1)};k&&!g&&window.addEventListener("load",a.runQuery);window.addEventListener("scroll",c);if(l){g=docSlider.getElements().pages;for(var d=0;d<g.length;d++)g[d].addEventListener("scroll",function(a){var g=docSlider.getCurrentIndex()+ 10869"";a=a.target.getAttribute("data-ds-index");if(g!==a)return!1;docSlider._getWheelEnable()&&c()})}window.addEventListener("resize",function(){0<f&&clearTimeout(f);f=setTimeout(function(){k&&(a.searchElements(),a.setQuery(),a.runQuery())},200)})},setOptions:function(g,c){var d={};if("undefined"!==typeof g)return Object.keys(g).forEach(function(b){"[object Object]"===Object.prototype.toString.call(g[b])?d[b]=a.setOptions(g[b],c[b]):(d[b]=g[b],"undefined"!==typeof c&&"undefined"!==typeof c[b]&&(d[b]= 10870c[b]))}),d},searchElements:function(){b=[];var g=document.querySelectorAll("[data-cues]:not([data-disabled])");for(var c=0;c<g.length;c++){for(var d=g[c],e=0;e<d.children.length;e++){var f=d.children[e];a.setAttrPtoC(f,"data-cue",d,"data-cues","");a.setAttrPtoC(f,"data-duration",d,"data-duration",!1);a.setAttrPtoC(f,"data-interval",d,"data-interval",!1);a.setAttrPtoC(f,"data-sort",d,"data-sort",!1);a.setAttrPtoC(f,"data-addClass",d,"data-addClass",!1);a.setAttrPtoC(f,"data-group",d,"data-group",!1); 10871a.setAttrPtoC(f,"data-delay",d,"data-delay",!1)}d.setAttribute("data-disabled","true")}g=document.querySelectorAll('[data-cue]:not([data-show="true"])');for(c=0;c<g.length;c++)d=g[c],b.push({elm:d,cue:a.getAttr(d,"data-cue","fadeIn"),duration:Number(a.getAttr(d,"data-duration",m.duration)),interval:Number(a.getAttr(d,"data-interval",m.interval)),order:a.getOrderNumber(d),sort:a.getAttr(d,"data-sort",null),addClass:a.getAttr(d,"data-addClass",null),group:a.getAttr(d,"data-group",null),delay:Number(a.getAttr(d, 10872"data-delay",0))});if(l)for(g=docSlider.getElements().pages.length,c=0;c<g;c++)for(d=document.querySelectorAll('[data-ds-index="'+c+'"] [data-cue]:not([data-scpage])'),e=0;e<d.length;e++)d[e].setAttribute("data-scpage",c)},sortElements:function(){for(var a=arguments[0],c=[].slice.call(arguments).slice(1),d={$jscomp$loop$prop$i$4:0};d.$jscomp$loop$prop$i$4<c.length;d={$jscomp$loop$prop$i$4:d.$jscomp$loop$prop$i$4},d.$jscomp$loop$prop$i$4++)a.sort(function(a){return function(g,d){var b="undefined"=== 10873typeof c[a.$jscomp$loop$prop$i$4][1]?!0:c[a.$jscomp$loop$prop$i$4][1],e=c[a.$jscomp$loop$prop$i$4][0];return g[e]>d[e]?b?1:-1:g[e]<d[e]?b?-1:1:0}}(d))},randElements:function(a){for(var g=a.length-1;0<g;g--){var d=Math.floor(Math.random()*(g+1)),b=a[g];a[g]=a[d];a[d]=b}return a},setDurationValue:function(a,c,d){if("undefined"===typeof c)return a;c=c.duration;a=-1===(d+"").indexOf(".")?a+c+d:a+c+c*d;return 0>a?0:a},getOrderNumber:function(a){return a.hasAttribute("data-order")?(a=Number(a.getAttribute("data-order")), 108740<=a?a:Math.pow(2,53)-1+a):Math.pow(2,52)-1},setAttrPtoC:function(a,c,d,b,e){d.hasAttribute(b)?a.hasAttribute(c)||a.setAttribute(c,d.getAttribute(b)):!1!==e&&a.setAttribute(c,e)},getAttr:function(a,c,d){return a.hasAttribute(c)?a.getAttribute(c):d},getOffsetTop:function(a){return a.getBoundingClientRect().top+(window.pageYOffset||document.documentElement.scrollTop)},setClassNames:function(a,c){if(c){c=c.split(" ");for(var d=0;d<c.length;d++)a.classList.add(c[d])}},setQuery:function(){e={};for(var g= 108750;g<b.length;g++){var c=b[g],d=c.group?c.group:"$"+a.getOffsetTop(c.elm);if(!c.elm.hasAttribute("data-show")){if(l){var f=c.elm.getAttribute("data-scpage"),h=docSlider.getCurrentIndex()+"";if(f!==h&&null!==f)continue}"undefined"===typeof e[d]&&(e[d]=[]);
10875e[d].push(c)}}},runQuery:function(){for(var b=Object.keys(e),c={},d=0;d<b.length;c={$jscomp$loop$prop$elms$6:c.$jscomp$loop$prop$elms$6,$jscomp$loop$prop$interval$7:c.$jscomp$loop$prop$interval$7},d++)if(c.$jscomp$loop$prop$elms$6=e[b[d]],a.isElementIn(c.$jscomp$loop$prop$elms$6[0].elm)){"reverse"=== 10876c.$jscomp$loop$prop$elms$6[0].sort?c.$jscomp$loop$prop$elms$6.reverse():"random"===c.$jscomp$loop$prop$elms$6[0].sort&&a.randElements(c.$jscomp$loop$prop$elms$6);a.sortElements(c.$jscomp$loop$prop$elms$6,["order"]);for(var f=c.$jscomp$loop$prop$interval$7=0;f<c.$jscomp$loop$prop$elms$6.length;f++)(function(c){return function(b){c.$jscomp$loop$prop$elms$6[b].elm.setAttribute("data-show","true");a.setClassNames(c.$jscomp$loop$prop$elms$6[b].elm,c.$jscomp$loop$prop$elms$6[b].addClass);c.$jscomp$loop$prop$interval$7= 10877a.setDurationValue(c.$jscomp$loop$prop$interval$7,c.$jscomp$loop$prop$elms$6[b-1],c.$jscomp$loop$prop$elms$6[b].interval);c.$jscomp$loop$prop$elms$6[b].elm.style.animationName=c.$jscomp$loop$prop$elms$6[b].cue;c.$jscomp$loop$prop$elms$6[b].elm.style.animationDuration=c.$jscomp$loop$prop$elms$6[b].duration+"ms";c.$jscomp$loop$prop$elms$6[b].elm.style.animationTimingFunction="ease";c.$jscomp$loop$prop$elms$6[b].elm.style.animationDelay=c.$jscomp$loop$prop$interval$7+c.$jscomp$loop$prop$elms$6[b].delay+ 10878"ms";c.$jscomp$loop$prop$elms$6[b].elm.style.animationDirection="normal";c.$jscomp$loop$prop$elms$6[b].elm.style.animationFillMode="both"}})(c)(f);delete e[b[d]]}},isElementIn:function(b){var c=b.hasAttribute("data-scpage")?a.isScrollEndWithDocSlider:a.isScrollEnd;return window.pageYOffset>a.getOffsetTop(b)-window.innerHeight*m.percentage||c()},isScrollEnd:function(){var a=window.document.documentElement;return(window.document.body.scrollTop||a.scrollTop)>=a.scrollHeight-a.clientHeight},isScrollEndWithDocSlider:function(){var a= 10879docSlider.getCurrentPage();return a.scrollTop>=a.scrollHeight-a.clientHeight}};return{init:function(b){m=a.setOptions(p,b);k=m.enable;l=m.docSlider;n=m.pageChangeReset;l||(a.setEvents(),a.searchElements(),a.setQuery())},update:function(){k&&(a.searchElements(),a.setQuery(),a.runQuery())},enable:function(a){k="undefined"===typeof a?!k:a;scrollCue.update()},_hasDocSlider:function(){return l},_hasPageChangeReset:function(){return n},_initWithDocSlider:function(b){a.setEvents(b);a.searchElements();a.setQuery()}, 10880_updateWithDocSlider:function(){k&&(a.setQuery(),a.runQuery())},_searchElements:function(){a.searchElements()}}}(); 10881 10882/*! 10883 * Smooth Scroll behavior polyfill 10884 * https://iamdustan.github.io/smoothscroll 10885 */ 10886'use strict'; 10887 10888// polyfill 10889function polyfill() { 10890 // aliases 10891 var w = window; 10892 var d = document; 10893 10894 // return if scroll behavior is supported and polyfill is not forced 10895 if ( 10896 'scrollBehavior' in d.documentElement.style && 10897 w.__forceSmoothScrollPolyfill__ !== true 10898 ) { 10899 return; 10900 } 10901 10902 // globals 10903 var Element = w.HTMLElement || w.Element; 10904 var SCROLL_TIME = 468; 10905 10906 // object gathering original scroll methods 10907 var original = { 10908 scroll: w.scroll || w.scrollTo, 10909 scrollBy: w.scrollBy, 10910 elementScroll: Element.prototype.scroll || scrollElement, 10911 scrollIntoView: Element.prototype.scrollIntoView 10912 }; 10913 10914 // define timing method 10915 var now = 10916 w.performance && w.performance.now 10917 ? w.performance.now.bind(w.performance) 10918 : Date.now; 10919 10920 /** 10921 * indicates if a the current browser is made by Microsoft 10922 * @method isMicrosoftBrowser 10923 * @param {String} userAgent 10924 * @returns {Boolean} 10925 */ 10926 function isMicrosoftBrowser(userAgent) { 10927 var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/']; 10928 10929 return new RegExp(userAgentPatterns.join('|')).test(userAgent); 10930 } 10931 10932 /* 10933 * IE has rounding bug rounding down clientHeight and clientWidth and 10934 * rounding up scrollHeight and scrollWidth causing false positives 10935 * on hasScrollableSpace 10936 */ 10937 var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0; 10938 10939 /** 10940 * changes scroll position inside an element 10941 * @method scrollElement 10942 * @param {Number} x 10943 * @param {Number} y 10944 * @returns {undefined} 10945 */ 10946 function scrollElement(x, y) { 10947 this.scrollLeft = x; 10948 this.scrollTop = y; 10949 } 10950 10951 /** 10952 * returns result of applying ease math function to a number 10953 * @method ease 10954 * @param {Number} k 10955 * @returns {Number} 10956 */ 10957 function ease(k) { 10958 return 0.5 * (1 - Math.cos(Math.PI * k)); 10959 } 10960 10961 /** 10962 * indicates if a smooth behavior should be applied 10963 * @method shouldBailOut 10964 * @param {Number|Object} firstArg 10965 * @returns {Boolean} 10966 */ 10967 function shouldBailOut(firstArg) { 10968 if ( 10969 firstArg === null || 10970 typeof firstArg !== 'object' || 10971 firstArg.behavior === undefined || 10972 firstArg.behavior === 'auto' || 10973 firstArg.behavior === 'instant' 10974 ) { 10975 // first argument is not an object/null 10976 // or behavior is auto, instant or undefined 10977 return true; 10978 } 10979 10980 if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') { 10981 // first argument is an object and behavior is smooth 10982 return false;
vendor: 9,641 bytes, lines 10983-11321
10983 } 10984 10985 // throw error when behavior is not supported 10986 throw new TypeError( 10987 'behavior member of ScrollOptions ' + 10988 firstArg.behavior + 10989 ' is not a valid value for enumeration ScrollBehavior.' 10990 ); 10991 } 10992 10993 /** 10994 * indicates if an element has scrollable space in the provided axis 10995 * @method hasScrollableSpace 10996 * @param {Node} el 10997 * @param {String} axis 10998 * @returns {Boolean} 10999 */ 11000 function hasScrollableSpace(el, axis) { 11001 if (axis === 'Y') { 11002 return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight; 11003 } 11004 11005 if (axis === 'X') { 11006 return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth; 11007 } 11008 } 11009 11010 /** 11011 * indicates if an element has a scrollable overflow property in the axis 11012 * @method canOverflow 11013 * @param {Node} el 11014 * @param {String} axis 11015 * @returns {Boolean} 11016 */ 11017 function canOverflow(el, axis) { 11018 var overflowValue = w.getComputedStyle(el, null)['overflow' + axis]; 11019 11020 return overflowValue === 'auto' || overflowValue === 'scroll'; 11021 } 11022 11023 /** 11024 * indicates if an element can be scrolled in either axis 11025 * @method isScrollable 11026 * @param {Node} el 11027 * @param {String} axis 11028 * @returns {Boolean} 11029 */ 11030 function isScrollable(el) { 11031 var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y'); 11032 var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X'); 11033 11034 return isScrollableY || isScrollableX; 11035 } 11036 11037 /** 11038 * finds scrollable parent of an element 11039 * @method findScrollableParent 11040 * @param {Node} el 11041 * @returns {Node} el 11042 */ 11043 function findScrollableParent(el) { 11044 while (el !== d.body && isScrollable(el) === false) { 11045 el = el.parentNode || el.host; 11046 } 11047 11048 return el; 11049 } 11050 11051 /** 11052 * self invoked function that, given a context, steps through scrolling 11053 * @method step 11054 * @param {Object} context 11055 * @returns {undefined} 11056 */ 11057 function step(context) { 11058 var time = now(); 11059 var value; 11060 var currentX; 11061 var currentY; 11062 var elapsed = (time - context.startTime) / SCROLL_TIME; 11063 11064 // avoid elapsed times higher than one 11065 elapsed = elapsed > 1 ? 1 : elapsed; 11066 11067 // apply easing to elapsed time 11068 value = ease(elapsed); 11069 11070 currentX = context.startX + (context.x - context.startX) * value; 11071 currentY = context.startY + (context.y - context.startY) * value; 11072 11073 context.method.call(context.scrollable, currentX, currentY); 11074 11075 // scroll more if we have not reached our destination 11076 if (currentX !== context.x || currentY !== context.y) { 11077 w.requestAnimationFrame(step.bind(w, context)); 11078 } 11079 } 11080 11081 /** 11082 * scrolls window or element with a smooth behavior 11083 * @method smoothScroll 11084 * @param {Object|Node} el 11085 * @param {Number} x 11086 * @param {Number} y 11087 * @returns {undefined} 11088 */ 11089 function smoothScroll(el, x, y) { 11090 var scrollable; 11091 var startX; 11092 var startY; 11093 var method; 11094 var startTime = now(); 11095 11096 // define scroll context 11097 if (el === d.body) { 11098 scrollable = w; 11099 startX = w.scrollX || w.pageXOffset; 11100 startY = w.scrollY || w.pageYOffset; 11101 method = original.scroll; 11102 } else { 11103 scrollable = el; 11104 startX = el.scrollLeft; 11105 startY = el.scrollTop; 11106 method = scrollElement; 11107 } 11108 11109 // scroll looping over a frame 11110 step({ 11111 scrollable: scrollable, 11112 method: method, 11113 startTime: startTime, 11114 startX: startX, 11115 startY: startY, 11116 x: x, 11117 y: y 11118 }); 11119 } 11120 11121 // ORIGINAL METHODS OVERRIDES 11122 // w.scroll and w.scrollTo 11123 w.scroll = w.scrollTo = function() { 11124 // avoid action when no arguments are passed 11125 if (arguments[0] === undefined) { 11126 return; 11127 } 11128 11129 // avoid smooth behavior if not required 11130 if (shouldBailOut(arguments[0]) === true) { 11131 original.scroll.call( 11132 w, 11133 arguments[0].left !== undefined 11134 ? arguments[0].left 11135 : typeof arguments[0] !== 'object' 11136 ? arguments[0] 11137 : w.scrollX || w.pageXOffset, 11138 // use top prop, second argument if present or fallback to scrollY 11139 arguments[0].top !== undefined 11140 ? arguments[0].top 11141 : arguments[1] !== undefined 11142 ? arguments[1] 11143 : w.scrollY || w.pageYOffset 11144 ); 11145 11146 return; 11147 } 11148 11149 // LET THE SMOOTHNESS BEGIN! 11150 smoothScroll.call( 11151 w, 11152 d.body, 11153 arguments[0].left !== undefined 11154 ? ~~arguments[0].left 11155 : w.scrollX || w.pageXOffset, 11156 arguments[0].top !== undefined 11157 ? ~~arguments[0].top 11158 : w.scrollY || w.pageYOffset 11159 ); 11160 }; 11161 11162 // w.scrollBy 11163 w.scrollBy = function() { 11164 // avoid action when no arguments are passed 11165 if (arguments[0] === undefined) { 11166 return; 11167 } 11168 11169 // avoid smooth behavior if not required 11170 if (shouldBailOut(arguments[0])) { 11171 original.scrollBy.call( 11172 w, 11173 arguments[0].left !== undefined 11174 ? arguments[0].left 11175 : typeof arguments[0] !== 'object' ? arguments[0] : 0, 11176 arguments[0].top !== undefined 11177 ? arguments[0].top 11178 : arguments[1] !== undefined ? arguments[1] : 0 11179 ); 11180 11181 return; 11182 } 11183 11184 // LET THE SMOOTHNESS BEGIN! 11185 smoothScroll.call( 11186 w, 11187 d.body, 11188 ~~arguments[0].left + (w.scrollX || w.pageXOffset), 11189 ~~arguments[0].top + (w.scrollY || w.pageYOffset) 11190 ); 11191 }; 11192 11193 // Element.prototype.scroll and Element.prototype.scrollTo 11194 Element.prototype.scroll = Element.prototype.scrollTo = function() { 11195 // avoid action when no arguments are passed 11196 if (arguments[0] === undefined) { 11197 return; 11198 } 11199 11200 // avoid smooth behavior if not required 11201 if (shouldBailOut(arguments[0]) === true) { 11202 // if one number is passed, throw error to match Firefox implementation 11203 if (typeof arguments[0] === 'number' && arguments[1] === undefined) { 11204 throw new SyntaxError('Value could not be converted'); 11205 } 11206 11207 original.elementScroll.call( 11208 this, 11209 // use left prop, first number argument or fallback to scrollLeft 11210 arguments[0].left !== undefined 11211 ? ~~arguments[0].left 11212 : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft, 11213 // use top prop, second argument or fallback to scrollTop 11214 arguments[0].top !== undefined 11215 ? ~~arguments[0].top 11216 : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop 11217 ); 11218 11219 return; 11220 } 11221 11222 var left = arguments[0].left; 11223 var top = arguments[0].top; 11224 11225 // LET THE SMOOTHNESS BEGIN! 11226 smoothScroll.call( 11227 this, 11228 this, 11229 typeof left === 'undefined' ? this.scrollLeft : ~~left, 11230 typeof top === 'undefined' ? this.scrollTop : ~~top 11231 ); 11232 }; 11233 11234 // Element.prototype.scrollBy 11235 Element.prototype.scrollBy = function() { 11236 // avoid action when no arguments are passed 11237 if (arguments[0] === undefined) { 11238 return; 11239 } 11240 11241 // avoid smooth behavior if not required 11242 if (shouldBailOut(arguments[0]) === true) { 11243 original.elementScroll.call( 11244 this, 11245 arguments[0].left !== undefined 11246 ? ~~arguments[0].left + this.scrollLeft 11247 : ~~arguments[0] + this.scrollLeft, 11248 arguments[0].top !== undefined 11249 ? ~~arguments[0].top + this.scrollTop 11250 : ~~arguments[1] + this.scrollTop 11251 ); 11252 11253 return; 11254 } 11255 11256 this.scroll({ 11257 left: ~~arguments[0].left + this.scrollLeft, 11258 top: ~~arguments[0].top + this.scrollTop, 11259 behavior: arguments[0].behavior 11260 }); 11261 }; 11262 11263 // Element.prototype.scrollIntoView 11264 Element.prototype.scrollIntoView = function() { 11265 // avoid smooth behavior if not required 11266 if (shouldBailOut(arguments[0]) === true) { 11267 original.scrollIntoView.call( 11268 this, 11269 arguments[0] === undefined ? true : arguments[0] 11270 ); 11271 11272 return; 11273 } 11274 11275 // LET THE SMOOTHNESS BEGIN! 11276 var scrollableParent = findScrollableParent(this); 11277 var parentRects = scrollableParent.getBoundingClientRect(); 11278 var clientRects = this.getBoundingClientRect(); 11279 11280 if (scrollableParent !== d.body) { 11281 // reveal element inside parent 11282 smoothScroll.call( 11283 this, 11284 scrollableParent, 11285 scrollableParent.scrollLeft + clientRects.left - parentRects.left, 11286 scrollableParent.scrollTop + clientRects.top - parentRects.top 11287 ); 11288 11289 // reveal parent in viewport unless is fixed 11290 if (w.getComputedStyle(scrollableParent).position !== 'fixed') { 11291 w.scrollBy({ 11292 left: parentRects.left, 11293 top: parentRects.top, 11294 behavior: 'smooth' 11295 }); 11296 } 11297 } else { 11298 // reveal element in viewport 11299 w.scrollBy({ 11300 left: clientRects.left, 11301 top: clientRects.top, 11302 behavior: 'smooth' 11303 }); 11304 } 11305 }; 11306} 11307 11308if (typeof exports === 'object' && typeof module !== 'undefined') { 11309 // commonjs 11310 module.exports = { polyfill: polyfill }; 11311} else { 11312 // global 11313 polyfill(); 11314} 11315 11316/*! 11317 * SVGInject v1.2.3 11318 * https://github.com/iconfu/svg-inject 11319 */ 11320!function(o,l){var r,a,s="createElement",g="getElementsByTagName",b="length",E="style",d="title",y="undefined",k="setAttribute",w="getAttribute",x=null,A="__svgInject",C="--inject-",S=new RegExp(C+"\\d+","g"),I="LOAD_FAIL",t="SVG_NOT_SUPPORTED",L="SVG_INVALID",v=["src","alt","onload","onerror"],j=l[s]("a"),G=typeof SVGRect!=y,f={useCache:!0,copyAttributes:!0,makeIdsUnique:!0},N={clipPath:["clip-path"],"color-profile":x,cursor:x,filter:x,linearGradient:["fill","stroke"],marker:["marker", 11321"marker-end","marker-mid","marker-start"],mask:x,pattern:["fill","stroke"],radialGradient:["fill","stroke"]},u=1,c=2,O=1;function T(e){return(r=r||new XMLSerializer).serializeToString(e)}
11321function P(e,r){var t,n,i,o,a=C+O++,f=/url\("?#([a-zA-Z][\w:.-]*)"?\)/g,u=e.querySelectorAll("[id]"),c=r?[]:x,l={},s=[],d=!1;if(u[b]){for(i=0;i<u[b];i++)(n=u[i].localName)in N&&(l[n]=1);for(n in l)(N[n]||[n]).forEach(function(e){s.indexOf(e)<0&&s.push(e)});s[b]&&s.push(E);var v,p,m,h=e[g]("*"),y=e;for(i=-1;y!=x; 11322){if(y.localName==E)(m=(p=y.textContent)&&p.replace(f,function(e,r){return c&&(c[r]=1),"url(#"+r+a+")"}))!==p&&(y.textContent=m);else if(y.hasAttributes()){for(o=0;o<s[b];o++)v=s[o],(m=(p=y[w](v))&&p.replace(f,function(e,r){return c&&(c[r]=1),"url(#"+r+a+")"}))!==p&&y[k](v,m);["xlink:href","href"].forEach(function(e){var r=y[w](e);/^\s*#/.test(r)&&(r=r.trim(),y[k](e,r+a),c&&(c[r.substring(1)]=1))})}y=h[++i]}for(i=0;i<u[b];i++)t=u[i],c&&!c[t.id]||(t.id+=a,d=!0)}return d}function V(e,r,t,n){if(r){ 11323r[k]("data-inject-url",t);var i=e.parentNode;if(i){n.copyAttributes&&function c(e,r){for(var t,n,i,o=e.attributes,a=0;a<o[b];a++)if(n=(t=o[a]).name,-1==v.indexOf(n))if(i=t.value,n==d){var f,u=r.firstElementChild;u&&u.localName.toLowerCase()==d?f=u:(f=l[s+"NS"]("http://www.w3.org/2000/svg",d),r.insertBefore(f,u)),f.textContent=i}else r[k](n,i)}(e,r);var o=n.beforeInject,a=o&&o(e,r)||r;i.replaceChild(a,e),e[A]=u,m(e);var f=n.afterInject;f&&f(e,a)}}else D(e,n)}function p(){for(var e={},r=arguments, 11324t=0;t<r[b];t++){var n=r[t];for(var i in n)n.hasOwnProperty(i)&&(e[i]=n[i])}return e}function _(e,r){if(r){var t;try{t=function i(e){return(a=a||new DOMParser).parseFromString(e,"text/xml")}(e)}catch(o){return x}return t[g]("parsererror")[b]?x:t.documentElement}var n=l.createElement("div");return n.innerHTML=e,n.firstElementChild}function m(e){e.removeAttribute("onload")}function n(e){console.error("SVGInject: "+e)}function i(e,r,t){e[A]=c,t.onFail?t.onFail(e,r):n(r)}function D(e,r){m(e),i(e,L,r) 11325}function F(e,r){m(e),i(e,t,r)}function M(e,r){i(e,I,r)}function q(e){e.onload=x,e.onerror=x}function R(e){n("no img element")}var e=function z(e,r){var t=p(f,r),h={};function n(a,f){f=p(t,f);var e=function(r){var e=function(){var e=f.onAllFinish;e&&e(),r&&r()};if(a&&typeof a[b]!=y){var t=0,n=a[b];if(0==n)e();else for(var i=function(){++t==n&&e()},o=0;o<n;o++)u(a[o],f,i)}else u(a,f,e)};return typeof Promise==y?e():new Promise(e)}function u(u,c,e){if(u){var r=u[A];if(r)Array.isArray(r)?r.push(e 11326):e();else{if(q(u),!G)return F(u,c),void e();var t=c.beforeLoad,n=t&&t(u)||u[w]("src");if(!n)return""===n&&M(u,c),void e();var i=[];u[A]=i;var l=function(){e(),i.forEach(function(e){e()})},s=function f(e){return j.href=e,j.href}(n),d=c.useCache,v=c.makeIdsUnique,p=function(r){d&&(h[s].forEac
11326h(function(e){e(r)}),h[s]=r)};if(d){var o,a=function(e){if(e===I)M(u,c);else if(e===L)D(u,c);else{var r,t=e[0],n=e[1],i=e[2];v&&(t===x?(t=P(r=_(n,!1),!1),e[0]=t,e[2]=t&&T(r)):t&&(n=function o(e){ 11327return e.replace(S,C+O++)}(i))),r=r||_(n,!1),V(u,r,s,c)}l()};if(typeof(o=h[s])!=y)return void(o.isCallbackQueue?o.push(a):a(o));(o=[]).isCallbackQueue=!0,h[s]=o}!function m(e,r,t){if(e){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4==n.readyState){var e=n.status;200==e?r(n.responseXML,n.responseText.trim()):400<=e?t():0==e&&t()}},n.open("GET",e,!0),n.send()}}(s,function(e,r){var t=e instanceof Document?e.documentElement:_(r,!0),n=c.afterLoad;if(n){var i=n(t,r)||t;if(i){ 11328var o="string"==typeof i;r=o?i:T(t),t=o?_(i,!0):i}}if(t instanceof SVGElement){var a=x;if(v&&(a=P(t,!1)),d){var f=a&&T(t);p([a,r,f])}V(u,t,s,c)}else D(u,c),p(L);l()},function(){M(u,c),p(I),l()})}}else R()}return G&&function i(e){var r=l[g]("head")[0];if(r){var t=l[s](E);t.type="text/css",t.appendChild(l.createTextNode(e)),r.appendChild(t)}}('img[onload^="'+e+'("]{visibility:hidden;}'),n.setOptions=function(e){t=p(t,e)},n.create=z,n.err=function(e,r){e?e[A]!=c&&(q(e),G?(m(e),M(e,t)):F(e,t),r&&(m( 11329e),e.src=r)):R()},o[e]=n}("SVGInject");"object"==typeof module&&"object"==typeof module.exports&&(module.exports=e)}(window,document); 11330/** 11331 * Swiper 8.3.2 11332 * Most modern mobile touch slider and framework with hardware accelerated transitions 11333 * https://swiperjs.com 11334 * 11335 * Copyright 2014-2022 Vladimir Kharlampidi 11336 * 11337 * Released under the MIT License 11338 * 11339 * Released on: July 26, 2022 11340 */ 11341 11342!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}class n extends Array{constructor(e){"number"==typeof e?super(e):(super(...e||[]),function(e){const t=e.__proto__;Object.defineProperty(e,"__proto__",{get:()=>t,set(e){t.__proto__=e}})}(this))}}function l(e){void 0===e&&(e=[]);const t=[];return e.forEach((e=>{Array.isArray(e)?t.push(...l(e)):t.push(e)})),t}function o(e,t){return Array.prototype.filter.call(e,t)}function d(e,t){const s=r(),i=a();let l=[];if(!t&&e instanceof n)return e;if(!e)return new n(l);if("string"==typeof e){const s=e.trim();if(s.indexOf("<")>=0&&s.indexOf(">")>=0){let e="div";0===s.indexOf("<li")&&(e="ul"),0===s.indexOf("<tr")&&(e="tbody"),0!==s.indexOf("<td")&&0!==s.indexOf("<th")||(e="tr"),0===s.indexOf("<tbody")&&(e="table"),0===s.indexOf("<option")&&(e="select");const t=i.createElement(e);t.innerHTML=s;for(let e=0;e<t.childNodes.length;e+=1)l.push(t.childNodes[e])}else l=function(e,t){if("string"!=typeof e)return[e];const s=[],a=t.querySelectorAll(e);for(let e=0;e<a.length;e+=1)s.push(a[e]);return s}(e.trim(),t||i)}else if(e.nodeType||e===s||e===i)l.push(e);else if(Array.isArray(e)){if(e instanceof n)return e;l=e}return new n(function(e){const t=[];for(let s=0;s<e.length;
vendor: 19,578 bytes, line 11342
11342s+=1)-1===t.indexOf(e[s])&&t.push(e[s]);return t}(l))}d.fn=n.prototype;const c={addClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.add(...a)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return this.forEach((e=>{e.classList.remove(...a)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));return o(this,(e=>a.filter((t=>e.classList.contains(t))).length>0)).length>0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];const a=l(t.map((e=>e.split(" "))));this.forEach((e=>{a.forEach((t=>{e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&&"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(let s=0;s<this.length;s+=1)if(2===arguments.length)this[s].setAttribute(e,t);else for(const t in e)this[s][t]=e[t],this[s].setAttribute(t,e[t]);return this},removeAttr:function(e){for(let t=0;t<this.length;t+=1)this[t].removeAttribute(e);return this},transform:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transform=e;return this},transition:function(e){for(let t=0;t<this.length;t+=1)this[t].style.transitionDuration="string"!=typeof e?`${e}ms`:e;return this},on:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];let[a,i,r,n]=t;function l(e){const t=e.target;if(!t)return;const s=e.target.dom7EventData||[];if(s.indexOf(e)<0&&s.unshift(e),d(t).is(i))r.apply(t,s);else{const e=d(t).parents();for(let t=0;t<e.length;t+=1)d(e[t]).is(i)&&r.apply(e[t],s)}}function o(e){const t=e&&e.target&&e.target.dom7EventData||[];t.indexOf(e)<0&&t.unshift(e),r.apply(this,t)}"function"==typeof t[1]&&([a,r,n]=t,i=void 0),n||(n=!1);const c=a.split(" ");let p;for(let e=0;e<this.length;e+=1){const t=this[e];if(i)for(p=0;p<c.length;p+=1){const e=c[p];t.dom7LiveListeners||(t.dom7LiveListeners={}),t.dom7LiveListeners[e]||(t.dom7LiveListeners[e]=[]),t.dom7LiveListeners[e].push({listener:r,proxyListener:l}),t.addEventListener(e,l,n)}else for(p=0;p<c.length;p+=1){const e=c[p];t.dom7Listeners||(t.dom7Listeners={}),t.dom7Listeners[e]||(t.dom7Listeners[e]=[]),t.dom7Listeners[e].push({listener:r,proxyListener:o}),t.addEventListener(e,o,n)}}return this},off:function(){for(var e=arguments.length,t=new Array(e),s=0;s<e;s++)t[s]=arguments[s];let[a,i,r,n]=t;"function"==typeof t[1]&&([a,r,n]=t,i=void 0),n||(n=!1);const l=a.split(" ");for(let e=0;e<l.length;e+=1){const t=l[e];for(let e=0;e<this.length;e+=1){const s=this[e];let a;if(!i&&s.dom7Listeners?a=s.dom7Listeners[t]:i&&s.dom7LiveListeners&&(a=s.dom7LiveListeners[t]),a&&a.length)for(let e=a.length-1;e>=0;e-=1){const i=a[e];r&&i.listener===r||r&&i.listener&&i.listener.dom7proxy&&i.listener.dom7proxy===r?(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1)):r||(s.removeEventListener(t,i.proxyListener,n),a.splice(e,1))}}}return this},trigger:function(){const e=r();for(var t=arguments.length,s=new Array(t),a=0;a<t;a++)s[a]=arguments[a];const i=s[0].split(" "),n=s[1];for(let t=0;t<i.length;t+=1){const a=i[t];for(let t=0;t<this.length;t+=1){const i=this[t];if(e.CustomEvent){const t=new e.CustomEvent(a,{detail:n,bubbles:!0,cancelable:!0});i.dom7EventData=s.filter(((e,t)=>t>0)),i.dispatchEvent(t),i.dom7EventData=[],delete i.dom7EventData}}}return this},transitionEnd:function(e){const t=this;return e&&t.on("transitionend",(function s(a){a.target===this&&(e.call(this,a),t.off("transitionend",s))})),this},outerWidth:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetWidth+parseFloat(e.getPropertyValue("margin-right"))+parseFloat(e.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length>0){if(e){const e=this.styles();return this[0].offsetHeight+parseFloat(e.getPropertyValue("margin-top"))+parseFloat(e.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){const e=r();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length>0){const e=r(),t=a(),s=this[0],i=s.getBoundingClientRect(),n=t.body,l=s.clientTop||n.clientTop||0,o=s.clientLeft||n.clientLeft||0,d=s===e?e.scrollY:s.scrollTop,c=s===e?e.scrollX:s.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}return null},css:function(e,t){const s=r();let a;if(1===arguments.length){if("string"!=typeof e){for(a=0;a<this.length;a+=1)for(const t in e)this[a].style[t]=e[t];return this}if(this[0])return s.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&&"string"==typeof e){for(a=0;a<this.length;a+=1)this[a].style[e]=t;return this}return this},each:function(e){return e?(this.forEach(((t,s)=>{e.apply(t,[t,s])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(let t=0;t<this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(let t=0;t<this.length;t+=1)this[t].textContent=e;return this},is:function(e){const t=r(),s=a(),i=this[0];let l,o;if(!i||void 0===e)return!1;if("string"==typeof e){if(i.matches)return i.matches(e);if(i.webkitMatchesSelector)return i.webkitMatchesSelector(e);if(i.msMatchesSelector)return i.msMatchesSelector(e);for(l=d(e),o=0;o<l.length;o+=1)if(l[o]===i)return!0;return!1}if(e===s)return i===s;if(e===t)return i===t;if(e.nodeType||e instanceof n){for(l=e.nodeType?[e]:e,o=0;o<l.length;o+=1)if(l[o]===i)return!0;return!1}return!1},index:function(){let e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&&(e+=1);return e}},eq:function(e){if(void 0===e)return this;const t=this.length;if(e>t-1)return d([]);if(e<0){const s=t+e;return d(s<0?[]:[this[s]])}return d([this[e]])},append:function(){let e;const t=a();for(let s=0;s<arguments.length;s+=1){e=s<0||arguments.length<=s?void 0:arguments[s];for(let s=0;s<this.length;s+=1)if("string"==typeof e){const a=t.createElement("div");for(a.innerHTML=e;a.firstChild;)this[s].appendChild(a.firstChild)}else if(e instanceof n)for(let t=0;t<e.length;t+=1)this[s].appendChild(e[t]);else this[s].appendChild(e)}return this},prepend:function(e){const t=a();let s,i;for(s=0;s<this.length;s+=1)if("string"==typeof e){const a=t.createElement("div");for(a.innerHTML=e,i=a.childNodes.length-1;i>=0;i-=1)this[s].insertBefore(a.childNodes[i],this[s].childNodes[0])}else if(e instanceof n)for(i=0;i<e.length;i+=1)this[s].insertBefore(e[i],this[s].childNodes[0]);else this[s].insertBefore(e,this[s].childNodes[0]);return this},next:function(e){return this.length>0?e?this[0].nextElementSibling&&d(this[0].nextElementSibling).is(e)?d([this[0].nextElementSibling]):d([]):this[0].nextElementSibling?d([this[0].nextElementSibling]):d([]):d([])},nextAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.nextElementSibling;){const a=s.nextElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},prev:function(e){if(this.length>0){const t=this[0];return e?t.previousElementSibling&&d(t.previousElementSibling).is(e)?d([t.previousElementSibling]):d([]):t.previousElementSibling?d([t.previousElementSibling]):d([])}return d([])},prevAll:function(e){const t=[];let s=this[0];if(!s)return d([]);for(;s.previousElementSibling;){const a=s.previousElementSibling;e?d(a).is(e)&&t.push(a):t.push(a),s=a}return d(t)},parent:function(e){const t=[];for(let s=0;s<this.length;s+=1)null!==this[s].parentNode&&(e?d(this[s].parentNode).is(e)&&t.push(this[s].parentNode):t.push(this[s].parentNode));return d(t)},parents:function(e){const t=[];for(let s=0;s<this.length;s+=1){let a=this[s].parentNode;for(;a;)e?d(a).is(e)&&t.push(a):t.push(a),a=a.parentNode}return d(t)},closest:function(e){let t=this;return void 0===e?d([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){const t=[];for(let s=0;s<this.length;s+=1){const a=this[s].querySelectorAll(e);for(let e=0;e<a.length;e+=1)t.push(a[e])}return d(t)},children:function(e){const t=[];for(let s=0;s<this.length;s+=1){const a=this[s].children;for(let s=0;s<a.length;s+=1)e&&!d(a[s]).is(e)||t.push(a[s])}return d(t)},filter:function(e){return d(o(this,e))},remove:function(){for(let e=0;e<this.length;e+=1)this[e].parentNode&&this[e].parentNode.removeChild(this[e]);return this}};function p(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function u(){return Date.now()}function h(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function m(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function f(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function g(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const a=s<0||arguments.length<=s?void 0:arguments[s];if(null!=a&&!f(a)){const s=Object.keys(Object(a)).filter((e=>t.indexOf(e)<0));for(let t=0,i=s.length;t<i;t+=1){const i=s[t],r=Object.getOwnPropertyDescriptor(a,i);void 0!==r&&r.enumerable&&(m(e[i])&&m(a[i])?a[i].__swiper__?e[i]=a[i]:g(e[i],a[i]):!m(e[i])&&m(a[i])?(e[i]={},a[i].__swiper__?e[i]=a[i]:g(e[i],a[i])):e[i]=a[i])}}}return e}function v(e,t,s){e.style.setProperty(t,s)}function w(e){let{swiper:t,targetPosition:s,side:a}=e;const i=r(),n=-t.translate;let l,o=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",i.cancelAnimationFrame(t.cssModeFrameID);const c=s>n?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}let b,x,y;function E(){return b||(b=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch),passiveListener:function(){let t=!1;try{const s=Object.defineProperty({},"passive",{get(){t=!0}});e.addEventListener("testPassiveListener",null,s)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),b}function C(e){return void 0===e&&(e={}),x||(x=function(e){let{userAgent:t}=void 0===e?{}:e;const s=E(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),m="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!m&&(l.os="android",l.android=!0),(p||h||u)&&(l.os="ios",l.ios=!0),l}(e)),x}function T(){return y||(y=function(){const e=r();return{isSafari:function(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}(),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),y}Object.keys(c).forEach((e=>{Object.defineProperty(d.fn,e,{value:c[e],writable:!0})}));var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n<s;n++)r[n]=arguments[n];t.apply(a,r)}return i.__emitterProxy=t,a.on(e,i,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const a=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[a](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];"string"==typeof r[0]||Array.isArray(r[0])?(t=r[0],s=r.slice(1,r.length),a=e):(t=r[0].events,s=r[0].data,a=r[0].context||e),s.unshift(a);return(Array.isArray(t)?t:t.split(" ")).forEach((t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};var S={updateSize:function(){const e=this;let t,s;const a=e.$el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a[0].clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a[0].clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(a.css("padding-left")||0,10)-parseInt(a.css("padding-right")||0,10),s=s-parseInt(a.css("padding-top")||0,10)-parseInt(a.css("padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{$wrapperEl:i,size:r,rtlTranslate:n,wrongRTL:l}=e,o=e.virtual&&a.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=i.children(`.${e.params.slideClass}`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=a.slidesOffsetBefore;"function"==typeof f&&(f=a.slidesOffsetBefore.call(e));let g=a.slidesOffsetAfter;"function"==typeof g&&(g=a.slidesOffsetAfter.call(e));const w=e.snapGrid.length,b=e.slidesGrid.length;let x=a.spaceBetween,y=-f,E=0,C=0;if(void 0===r)return;"string"==typeof x&&x.indexOf("%")>=0&&(x=parseFloat(x.replace("%",""))/100*r),e.virtualSize=-x,n?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),a.centeredSlides&&a.cssMode&&(v(e.wrapperEl,"--swiper-centered-offset-before",""),v(e.wrapperEl,"--swiper-centered-offset-after",""));const T=a.grid&&a.grid.rows>1&&e.grid;let $;T&&e.grid.initSlides(p);const S="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i<p;i+=1){$=0;const n=c.eq(i);if(T&&e.grid.updateSlide(i,n,p,t),"none"!==n.css("display")){if("auto"===a.slidesPerView){S&&(c[i].style[t("width")]="");const r=getComputedStyle(n[0]),l=n[0].style.transform,o=n[0].style.webkitTransform;if(l&&(n[0].style.transform="none"),o&&(n[0].style.webkitTransform="none"),a.roundLengths)$=e.isHorizontal()?n.outerWidth(!0):n.outerHeight(!0);else{const e=s(r,"width"),t=s(r,"padding-left"),a=s(r,"padding-right"),i=s(r,"margin-left"),l=s(r,"margin-right"),o=r.getPropertyValue("box-sizing");if(o&&"border-box"===o)$=e+i+l;else{const{clientWidth:s,offsetWidth:r}=n[0];$=e+t+a+i+l+(r-s)}}l&&(n[0].style.transform=l),o&&(n[0].style.webkitTransform=o),a.roundLengths&&($=Math.floor($))}else $=(r-(a.slidesPerView-1)*x)/a.slidesPerView,a.roundLengths&&($=Math.floor($)),c[i]&&(c[i].style[t("width")]=`${$}px`);c[i]&&(c[i].swiperSlideSize=$),m.push($),a.centeredSlides?(y=y+$/2+E/2+x,0===E&&0!==i&&(y=y-r/2-x),0===i&&(y=y-r/2-x),Math.abs(y)<.001&&(y=0),a.roundLengths&&(y=Math.floor(y)),C%a.slidesPerGroup==0&&u.push(y),h.push(y)):(a.roundLengths&&(y=Math.floor(y)),(C-Math.min(e.params.slidesPerGroupSkip,C))%e.params.slidesPerGroup==0&&u.push(y),h.push(y),y=y+$+x),e.virtualSize+=$+x,E=$,C+=1}}if(e.virtualSize=Math.max(e.virtualSize,r)+g,n&&l&&("slide"===a.effect||"coverflow"===a.effect)&&i.css({width:`${e.virtualSize+a.spaceBetween}px`}),a.setWrapperSize&&i.css({[t("width")]:`${e.virtualSize+a.spaceBetween}px`}),T&&e.grid.updateWrapperSize($,u,t),!a.centeredSlides){const t=[];for(let s=0;s<u.length;s+=1){let i=u[s];a.roundLengths&&(i=Math.floor(i)),u[s]<=e.virtualSize-r&&t.push(i)}u=t,Math.floor(e.virtualSize-r)-Math.floor(u[u.length-1])>1&&u.push(e.virtualSize-r)}if(0===u.length&&(u=[0]),0!==a.spaceBetween){const s=e.isHorizontal()&&n?"marginLeft":t("marginRight");c.filter(((e,t)=>!a.cssMode||t!==c.length-1)).css({[s]:`${x}px`})}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween;const t=e-r;u=u.map((e=>e<0?-f:e>t?t+g:e))}if(a.centerInsufficientSlides){let e=0;if(m.forEach((t=>{e+=t+(a.spaceBetween?a.spaceBetween:0)})),e-=a.spaceBetween,e<r){const t=(r-e)/2;u.forEach(((e,s)=>{u[s]=e-t})),h.forEach(((e,s)=>{h[s]=e+t}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){v(e.wrapperEl,"--swiper-centered-offset-before",-u[0]+"px"),v(e.wrapperEl,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==w&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==b&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(o||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.$el.hasClass(t);p<=a.maxBackfaceHiddenSlides?s||e.$el.addClass(t):s&&e.$el.removeClass(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides.filter((t=>parseInt(t.getAttribute("data-swiper-slide-index"),10)===e))[0]:t.slides.eq(e)[0];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||d([]))
vendor: 10,393 bytes, line 11342
11342.each((e=>{s.push(e)}));else for(i=0;i<Math.ceil(t.params.slidesPerView);i+=1){const e=t.activeIndex+i;if(e>t.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;i<s.length;i+=1)if(void 0!==s[i]){const e=s[i].offsetHeight;r=e>r?e:r}(r||0===r)&&t.$wrapperEl.css("height",`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides;for(let s=0;s<t.length;s+=1)t[s].swiperSlideOffset=e.isHorizontal()?t[s].offsetLeft:t[s].offsetTop},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:a,rtlTranslate:i,snapGrid:r}=t;if(0===a.length)return;void 0===a[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;i&&(n=e),a.removeClass(s.slideVisibleClass),t.visibleSlidesIndexes=[],t.visibleSlides=[];for(let e=0;e<a.length;e+=1){const l=a[e];let o=l.swiperSlideOffset;s.cssMode&&s.centeredSlides&&(o-=a[0].swiperSlideOffset);const d=(n+(s.centeredSlides?t.minTranslate():0)-o)/(l.swiperSlideSize+s.spaceBetween),c=(n-r[0]+(s.centeredSlides?t.minTranslate():0)-o)/(l.swiperSlideSize+s.spaceBetween),p=-(n-o),u=p+t.slidesSizesGrid[e];(p>=0&&p<t.size-1||u>1&&u<=t.size||p<=0&&u>=t.size)&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e),a.eq(e).addClass(s.slideVisibleClass)),l.progress=i?-d:d,l.originalProgress=i?-c:c}t.visibleSlides=d(t.visibleSlides)},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n}=t;const l=r,o=n;0===a?(i=0,r=!0,n=!0):(i=(e-t.minTranslate())/a,r=i<=0,n=i>=1),Object.assign(t,{progress:i,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!l&&t.emit("reachBeginning toEdge"),n&&!o&&t.emit("reachEnd toEdge"),(l&&!r||o&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,$wrapperEl:a,activeIndex:i,realIndex:r}=e,n=e.virtual&&s.virtual.enabled;let l;t.removeClass(`${s.slideActiveClass} ${s.slideNextClass} ${s.slidePrevClass} ${s.slideDuplicateActiveClass} ${s.slideDuplicateNextClass} ${s.slideDuplicatePrevClass}`),l=n?e.$wrapperEl.find(`.${s.slideClass}[data-swiper-slide-index="${i}"]`):t.eq(i),l.addClass(s.slideActiveClass),s.loop&&(l.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${r}"]`).addClass(s.slideDuplicateActiveClass));let o=l.nextAll(`.${s.slideClass}`).eq(0).addClass(s.slideNextClass);s.loop&&0===o.length&&(o=t.eq(0),o.addClass(s.slideNextClass));let d=l.prevAll(`.${s.slideClass}`).eq(0).addClass(s.slidePrevClass);s.loop&&0===d.length&&(d=t.eq(-1),d.addClass(s.slidePrevClass)),s.loop&&(o.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${o.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicateNextClass),d.hasClass(s.slideDuplicateClass)?a.children(`.${s.slideClass}:not(.${s.slideDuplicateClass})[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass):a.children(`.${s.slideClass}.${s.slideDuplicateClass}[data-swiper-slide-index="${d.attr("data-swiper-slide-index")}"]`).addClass(s.slideDuplicatePrevClass)),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{slidesGrid:a,snapGrid:i,params:r,activeIndex:n,realIndex:l,snapIndex:o}=t;let d,c=e;if(void 0===c){for(let e=0;e<a.length;e+=1)void 0!==a[e+1]?s>=a[e]&&s<a[e+1]-(a[e+1]-a[e])/2?c=e:s>=a[e]&&s<a[e+1]&&(c=e+1):s>=a[e]&&(c=e);r.normalizeSlideIndex&&(c<0||void 0===c)&&(c=0)}if(i.indexOf(s)>=0)d=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,c);d=e+Math.floor((c-e)/r.slidesPerGroup)}if(d>=i.length&&(d=i.length-1),c===n)return void(d!==o&&(t.snapIndex=d,t.emit("snapIndexChange")));const p=parseInt(t.slides.eq(c).attr("data-swiper-slide-index")||c,10);Object.assign(t,{snapIndex:d,realIndex:p,previousIndex:n,activeIndex:c}),t.emit("activeIndexChange"),t.emit("snapIndexChange"),l!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=d(e).closest(`.${s.slideClass}`)[0];let i,r=!1;if(a)for(let e=0;e<t.slides.length;e+=1)if(t.slides[e]===a){r=!0,i=e;break}if(!a||!r)return t.clickedSlide=void 0,void(t.clickedIndex=void 0);t.clickedSlide=a,t.virtual&&t.params.virtual.enabled?t.clickedIndex=parseInt(d(a).attr("data-swiper-slide-index"),10):t.clickedIndex=i,s.slideToClickedSlide&&void 0!==t.clickedIndex&&t.clickedIndex!==t.activeIndex&&t.slideToClickedSlide()}};var M={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:s,translate:a,$wrapperEl:i}=this;if(t.virtualTranslate)return s?-a:a;if(t.cssMode)return a;let r=h(i[0],e);return s&&(r=-r),r||0},setTranslate:function(e,t){const s=this,{rtlTranslate:a,params:i,$wrapperEl:r,wrapperEl:n,progress:l}=s;let o,d=0,c=0;s.isHorizontal()?d=a?-e:e:c=e,i.roundLengths&&(d=Math.floor(d),c=Math.floor(c)),i.cssMode?n[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-d:-c:i.virtualTranslate||r.transform(`translate3d(${d}px, ${c}px, 0px)`),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?d:c;const p=s.maxTranslate()-s.minTranslate();o=0===p?0:(e-s.minTranslate())/p,o!==l&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,s,a,i){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),void 0===a&&(a=!0);const r=this,{params:n,wrapperEl:l}=r;if(r.animating&&n.preventInteractionOnTransition)return!1;const o=r.minTranslate(),d=r.maxTranslate();let c;if(c=a&&e>o?o:a&&e<d?d:e,r.updateProgress(c),n.cssMode){const e=r.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,s&&r.emit("transitionEnd"))}),r.$wrapperEl[0].addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onTranslateToWrapperTransitionEnd))),!0}};function P(e){let{swiper:t,runCallbacks:s,direction:a,step:i}=e;const{activeIndex:r,previousIndex:n}=t;let l=a;if(l||(l=r>n?"next":r<n?"prev":"reset"),t.emit(`transition${i}`),s&&r!==n){if("reset"===l)return void t.emit(`slideResetTransition${i}`);t.emit(`slideChangeTransition${i}`),"next"===l?t.emit(`slideNextTransition${i}`):t.emit(`slidePrevTransition${i}`)}}var k={slideTo:function(e,t,s,a,i){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"number"!=typeof e&&"string"!=typeof e)throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof e}] given.`);if("string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const r=this;let n=e;n<0&&(n=0);const{params:l,snapGrid:o,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:u,wrapperEl:h,enabled:m}=r;if(r.animating&&l.preventInteractionOnTransition||!m&&!a&&!i)return!1;const f=Math.min(r.params.slidesPerGroupSkip,n);let g=f+Math.floor((n-f)/r.params.slidesPerGroup);g>=o.length&&(g=o.length-1),(p||l.initialSlide||0)===(c||0)&&s&&r.emit("beforeSlideChangeStart");const v=-o[g];if(r.updateProgress(v),l.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*v),s=Math.floor(100*d[e]),a=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<a-(a-s)/2?n=e:t>=s&&t<a&&(n=e+1):t>=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&v<r.translate&&v<r.minTranslate())return!1;if(!r.allowSlidePrev&&v>r.translate&&v>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(b=n>p?"next":n<p?"prev":"reset",u&&-v===r.translate||!u&&v===r.translate)return r.updateActiveIndex(n),l.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==l.effect&&r.setTranslate(v),"reset"!==b&&(r.transitionStart(s,b),r.transitionEnd(s,b)),!1;if(l.cssMode){const e=r.isHorizontal(),s=u?v:-v;if(0===t){const t=r.virtual&&r.params.virtual.enabled;t&&(r.wrapperEl.style.scrollSnapType="none",r._immediateVirtual=!0),h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._swiperImmediateVirtual=!1}))}else{if(!r.support.smoothScroll)return w({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(v),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.$wrapperEl[0].removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].removeEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.$wrapperEl[0].addEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.$wrapperEl[0].addEventListener("webkitTransitionEnd",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){
vendor: 5,480 bytes, line 11342
11342if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){const t=parseInt(e,10);if(!isFinite(t))throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${e}] given.`);e=t}const i=this;let r=e;return i.params.loop&&(r+=i.loopedSlides),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{animating:i,enabled:r,params:n}=a;if(!r)return a;let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex<n.slidesPerGroupSkip?1:l;if(n.loop){if(i&&n.loopPreventsSlide)return!1;a.loopFix(),a._clientLeft=a.$wrapperEl[0].clientLeft}return n.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,animating:r,snapGrid:n,slidesGrid:l,rtlTranslate:o,enabled:d}=a;if(!d)return a;if(i.loop){if(r&&i.loopPreventsSlide)return!1;a.loopFix(),a._clientLeft=a.$wrapperEl[0].clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const p=c(o?a.translate:-a.translate),u=n.map((e=>c(e)));let h=n[u.indexOf(p)-1];if(void 0===h&&i.cssMode){let e;n.forEach(((t,s)=>{p>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=l.indexOf(h),m<0&&(m=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(m=m-a.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(m,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,$wrapperEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;if(t.loop){if(e.animating)return;i=parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10),t.centeredSlides?r<e.loopedSlides-a/2||r>e.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=s.children(`.${t.slideClass}[data-swiper-slide-index="${i}"]:not(.${t.slideDuplicateClass})`).eq(0).index(),p((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var z={loopCreate:function(){const e=this,t=a(),{params:s,$wrapperEl:i}=e,r=i.children().length>0?d(i.children()[0].parentNode):i;r.children(`.${s.slideClass}.${s.slideDuplicateClass}`).remove();let n=r.children(`.${s.slideClass}`);if(s.loopFillGroupWithBlank){const e=s.slidesPerGroup-n.length%s.slidesPerGroup;if(e!==s.slidesPerGroup){for(let a=0;a<e;a+=1){const e=d(t.createElement("div")).addClass(`${s.slideClass} ${s.slideBlankClass}`);r.append(e)}n=r.children(`.${s.slideClass}`)}}"auto"!==s.slidesPerView||s.loopedSlides||(s.loopedSlides=n.length),e.loopedSlides=Math.ceil(parseFloat(s.loopedSlides||s.slidesPerView,10)),e.loopedSlides+=s.loopAdditionalSlides,e.loopedSlides>n.length&&e.params.loopedSlidesLimit&&(e.loopedSlides=n.length);const l=[],o=[];n.each(((e,t)=>{d(e).attr("data-swiper-slide-index",t)}));for(let t=0;t<e.loopedSlides;t+=1){const e=t-Math.floor(t/n.length)*n.length;o.push(n.eq(e)[0]),l.unshift(n.eq(n.length-e-1)[0])}for(let e=0;e<o.length;e+=1)r.append(d(o[e].cloneNode(!0)).addClass(s.slideDuplicateClass));for(let e=l.length-1;e>=0;e-=1)r.prepend(d(l[e].cloneNode(!0)).addClass(s.slideDuplicateClass))},loopFix:function(){const e=this;e.emit("beforeLoopFix");const{activeIndex:t,slides:s,loopedSlides:a,allowSlidePrev:i,allowSlideNext:r,snapGrid:n,rtlTranslate:l}=e;let o;e.allowSlidePrev=!0,e.allowSlideNext=!0;const d=-n[t]-e.getTranslate();if(t<a){o=s.length-3*a+t,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}else if(t>=s.length-a){o=-s.length+t+a,o+=a;e.slideTo(o,0,!1,!0)&&0!==d&&e.setTranslate((l?-e.translate:e.translate)-d)}e.allowSlidePrev=i,e.allowSlideNext=r,e.emit("loopFix")},loopDestroy:function(){const{$wrapperEl:e,params:t,slides:s}=this;e.children(`.${t.slideClass}.${t.slideDuplicateClass},.${t.slideClass}.${t.slideBlankClass}`).remove(),s.removeAttr("data-swiper-slide-index")}};function L(e){const t=this,s=a(),i=r(),n=t.touchEventsData,{params:l,touches:o,enabled:c}=t;if(!c)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let h=d(p.target);if("wrapper"===l.touchEventsTarget&&!h.closest(t.wrapperEl).length)return;if(n.isTouchEvent="touchstart"===p.type,!n.isTouchEvent&&"which"in p&&3===p.which)return;if(!n.isTouchEvent&&"button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;
vendor: 4,890 bytes, line 11342
11342!!l.noSwipingClass&&""!==l.noSwipingClass&&p.target&&p.target.shadowRoot&&e.path&&e.path[0]&&(h=d(e.path[0]));const m=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!p.target||!p.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(m,h[0]):h.closest(m)[0]))return void(t.allowClick=!0);if(l.swipeHandler&&!h.closest(l.swipeHandler)[0])return;o.currentX="touchstart"===p.type?p.targetTouches[0].pageX:p.pageX,o.currentY="touchstart"===p.type?p.targetTouches[0].pageY:p.pageY;const g=o.currentX,v=o.currentY,w=l.edgeSwipeDetection||l.iOSEdgeSwipeDetection,b=l.edgeSwipeThreshold||l.iOSEdgeSwipeThreshold;if(w&&(g<=b||g>=i.innerWidth-b)){if("prevent"!==w)return;e.preventDefault()}if(Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),o.startX=g,o.startY=v,n.touchStartTime=u(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1),"touchstart"!==p.type){let e=!0;h.is(n.focusableElements)&&(e=!1,"SELECT"===h[0].nodeName&&(n.isTouched=!1)),s.activeElement&&d(s.activeElement).is(n.focusableElements)&&s.activeElement!==h[0]&&s.activeElement.blur();const a=e&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!a||h[0].isContentEditable||p.preventDefault()}t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function O(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:o}=s;if(!o)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));if(i.isTouchEvent&&"touchmove"!==c.type)return;const p="touchmove"===c.type&&c.targetTouches&&(c.targetTouches[0]||c.changedTouches[0]),h="touchmove"===c.type?p.pageX:c.pageX,m="touchmove"===c.type?p.pageY:c.pageY;if(c.preventedByNestedSwiper)return n.startX=h,void(n.startY=m);if(!s.allowTouchMove)return d(c.target).is(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:h,startY:m,currentX:h,currentY:m}),i.touchStartTime=u()));if(i.isTouchEvent&&r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(m<n.startY&&s.translate<=s.maxTranslate()||m>n.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(h<n.startX&&s.translate<=s.maxTranslate()||h>n.startX&&s.translate>=s.minTranslate())return;if(i.isTouchEvent&&t.activeElement&&c.target===t.activeElement&&d(c.target).is(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=h,n.currentY=m;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)<s.params.threshold)return;if(void 0===i.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?i.isScrolling=!1:f*f+g*g>=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation(),i.isMoved||(r.loop&&!r.cssMode&&s.loopFix(),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating&&s.$wrapperEl.trigger("webkitTransitionEnd transitionend"),i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)),s.emit("sliderMove",c),i.isMoved=!0;let v=s.isHorizontal()?f:g;n.diff=v,v*=r.touchRatio,l&&(v=-v),s.swipeDirection=v>0?"prev":"next",i.currentTranslate=v+i.startTranslate;let w=!0,b=r.resistanceRatio;if(r.touchReleaseOnEdges&&(b=0),v>0&&i.currentTranslate>s.minTranslate()?(w=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**b)):v<0&&i.currentTranslate<s.maxTranslate()&&(w=!1,r.resistance&&(i.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-i.startTranslate-v)**b)),w&&(c.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!s.allowSlidePrev&&"prev"===s.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);
vendor: 17,582 bytes, line 11342
11342if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function I(e){const t=this,s=t.touchEventsData,{params:a,touches:i,rtlTranslate:r,slidesGrid:n,enabled:l}=t;if(!l)return;let o=e;if(o.originalEvent&&(o=o.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",o),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&a.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);a.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const d=u(),c=d-s.touchStartTime;if(t.allowClick){const e=o.path||o.composedPath&&o.composedPath();t.updateClickedSlide(e&&e[0]||o.target),t.emit("tap click",o),c<300&&d-s.lastClickTime<300&&t.emit("doubleTap doubleClick",o)}if(s.lastClickTime=u(),p((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===i.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=a.followFinger?r?t.translate:-t.translate:-s.currentTranslate,a.cssMode)return;if(t.params.freeMode&&a.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let m=0,f=t.slidesSizesGrid[0];for(let e=0;e<n.length;e+=e<a.slidesPerGroupSkip?1:a.slidesPerGroup){const t=e<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;void 0!==n[e+t]?h>=n[e]&&h<n[e+t]&&(m=e,f=n[e+t]-n[e]):h>=n[e]&&(m=e,f=n[n.length-1]-n[n.length-2])}let g=null,v=null;a.rewind&&(t.isBeginning?v=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(g=0));const w=(h-n[m])/f,b=m<a.slidesPerGroupSkip-1?1:a.slidesPerGroup;if(c>a.longSwipesMs){if(!a.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=a.longSwipesRatio?t.slideTo(a.rewind&&t.isEnd?g:m+b):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-a.longSwipesRatio?t.slideTo(m+b):null!==v&&w<0&&Math.abs(w)>a.longSwipesRatio?t.slideTo(v):t.slideTo(m))}else{if(!a.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(o.target===t.navigation.nextEl||o.target===t.navigation.prevEl)?o.target===t.navigation.nextEl?t.slideTo(m+b):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==g?g:m+b),"prev"===t.swipeDirection&&t.slideTo(null!==v?v:m))}}function A(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView>1)&&e.isEnd&&!e.isBeginning&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.run(),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function D(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function G(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}let N=!1;function B(){}const H=(e,t)=>{const s=a(),{params:i,touchEvents:r,el:n,wrapperEl:l,device:o,support:d}=e,c=!!i.nested,p="on"===t?"addEventListener":"removeEventListener",u=t;if(d.touch){const t=!("touchstart"!==r.start||!d.passiveListener||!i.passiveListeners)&&{passive:!0,capture:!1};n[p](r.start,e.onTouchStart,t),n[p](r.move,e.onTouchMove,d.passiveListener?{passive:!1,capture:c}:c),n[p](r.end,e.onTouchEnd,t),r.cancel&&n[p](r.cancel,e.onTouchEnd,t)}else n[p](r.start,e.onTouchStart,!1),s[p](r.move,e.onTouchMove,c),s[p](r.end,e.onTouchEnd,!1);(i.preventClicks||i.preventClicksPropagation)&&n[p]("click",e.onClick,!0),i.cssMode&&l[p]("scroll",e.onScroll),i.updateOnWindowResize?e[u](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",A,!0):e[u]("observerUpdate",A,!0)};var X={attachEvents:function(){const e=this,t=a(),{params:s,support:i}=e;e.onTouchStart=L.bind(e),e.onTouchMove=O.bind(e),e.onTouchEnd=I.bind(e),s.cssMode&&(e.onScroll=G.bind(e)),e.onClick=D.bind(e),i.touch&&!N&&(t.addEventListener("touchstart",B),N=!0),H(e,"on")},detachEvents:function(){H(this,"off")}};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var R={addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,$el:i,device:r,support:n}=e,l=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"pointer-events":!n.touch},{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...l),i.addClass([...t].join(" ")),e.emitContainerClasses()},removeClasses:function(){const{$el:e,classNames:t}=this;e.removeClass(t.join(" ")),this.emitContainerClasses()}};var W={init:!0,direction:"horizontal",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopedSlidesLimit:!0,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function j(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),g(t,s)):g(t,s)):g(t,s)}}const q={eventsEmitter:$,update:S,translate:M,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||s.$wrapperEl.transition(e),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),P({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),P({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:k,loop:z,grabCursor:{setGrabCursor:function(e){const t=this;if(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;s.style.cursor="move",s.style.cursor=e?"grabbing":"grab"},unsetGrabCursor:function(){const e=this;e.support.touch||e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="")}},events:X,breakpoints:{setBreakpoint:function(){const e=this,{activeIndex:t,initialized:s,loopedSlides:a=0,params:i,$el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const l=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!l||e.currentBreakpoint===l)return;const o=(l in n?n[l]:void 0)||e.originalParams,d=Y(e,i),c=Y(e,o),p=i.enabled;d&&!c?(r.removeClass(`${i.containerModifierClass}grid ${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!d&&c&&(r.addClass(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.addClass(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=i[t]&&i[t].enabled,a=o[t]&&o[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const u=o.direction&&o.direction!==i.direction,h=i.loop&&(o.slidesPerView!==i.slidesPerView||u);u&&s&&e.changeDirection(),g(e.params,o);const m=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&&!m?e.disable():!p&&m&&e.enable(),e.currentBreakpoint=l,e.emit("_beforeBreakpoint",o),h&&s&&(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-a+e.loopedSlides,0,!1)),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e<l.length;e+=1){const{point:r,value:n}=l[e];"window"===t?i.matchMedia(`(min-width: ${n}px)`).matches&&(a=r):n<=s.clientWidth&&(a=r)}return a||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:a}=s;if(a){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*a;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:R,images:{loadImage:function(e,t,s,a,i,n){const l=r();let o;function c(){n&&n()}d(e).parent("picture")[0]||e.complete&&i?c():t?(o=new l.Image,o.onload=c,o.onerror=c,a&&(o.sizes=a),s&&(o.srcset=s),t&&(o.src=t)):c()},preloadImages:function(){const e=this;function t(){null!=e&&e&&!e.destroyed&&(void 0!==e.imagesLoaded&&(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&&(e.params.updateOnImagesReady&&e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(let s=0;s<e.imagesToLoad.length;s+=1){const a=e.imagesToLoad[s];e.loadImage(a,a.currentSrc||a.getAttribute("src"),a.srcset||a.getAttribute("srcset"),a.sizes||a.getAttribute("sizes"),!0,t)}}}},_={};class V{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),i=0;i<s;i++)a[i]=arguments[i];if(1===a.length&&a[0].constructor&&"Object"===Object.prototype.toString.call(a[0]).slice(8,-1)?t=a[0]:[e,t]=a,t||(t={}),t=g({},t),e&&!t.el&&(t.el=e),t.el&&d(t.el).length>1){const e=[];return d(t.el).each((s=>{const a=g({},t,{el:s});e.push(new V(a))})),e}const r=this;r.__swiper__=!0,r.support=E(),r.device=C({userAgent:t.userAgent}),r.browser=T(),r.eventsListeners={},r.eventsAnyListeners=[],r.modules=[...r.__modules__],t.modules&&Array.isArray(t.modules)&&r.modules.push(...t.modules);const n={};r.modules.forEach((e=>{e({swiper:r,extendParams:j(t,n),on:r.on.bind(r),once:r.once.bind(r),off:r.off.bind(r),emit:r.emit.bind(r)})}));const l=g({},W,n);return r.params=g({},l,_,t),r.originalParams=g({},r.params),r.passedParams=g({},t),r.params&&r.params.on&&Object.keys(r.params.on).forEach((e=>{r.on(e,r.params.on[e])})),r.params&&r.params.onAny&&r.onAny(r.params.onAny),r.$=d,Object.assign(r,{enabled:r.params.enabled,el:e,classNames:[],slides:d(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===r.params.direction,isVertical:()=>"vertical"===r.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:r.params.allowSlideNext,allowSlidePrev:r.params.allowSlidePrev,touchEvents:function(){const e=["touchstart","touchmove","touchend","touchcancel"],t=["pointerdown","pointermove","pointerup"];return r.touchEventsTouch={start:e[0],move:e[1],end:e[2],cancel:e[3]},r.touchEventsDesktop={start:t[0],move:t[1],end:t[2]},r.support.touch||!r.params.simulateTouch?r.touchEventsTouch:r.touchEventsDesktop}(),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:r.params.focusableElements,lastClickTime:u(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:r.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),r.emit("_swiper"),r.params.init&&r.init(),r}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.each((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;s<a.length;s+=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e<a.length;e+=1){(t?i[e]+r[e]-i[l]<n:i[e]-i[l]<n)&&(o+=1)}else for(let e=l-1;e>=0;e-=1){i[l]-i[e]<n&&(o+=1)}return o}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function a(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let i;s.breakpoints&&e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode&&e.params.freeMode.enabled?(a(),e.params.autoHeight&&e.updateAutoHeight()):(i=("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),i||a()),s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.$el.removeClass(`${s.params.containerModifierClass}${a}`).addClass(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.each((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.$el.addClass(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.$el.removeClass(`${t.params.containerModifierClass}
11342rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;const s=d(e||t.params.el);if(!(e=s[0]))return!1;e.swiper=t;const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(e&&e.shadowRoot&&e.shadowRoot.querySelector){const t=d(e.shadowRoot.querySelector(i()));return t.children=e=>s.children(e),t}return s.children?s.children(i()):d(s).children(i())})();if(0===r.length&&t.params.createElements){const e=a().createElement("div");r=d(e),e.className=t.params.wrapperClass,s.append(e),s.children(`.${t.params.slideClass}`).each((e=>{r.append(e)}))}return Object.assign(t,{$el:s,el:e,$wrapperEl:r,wrapperEl:r[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===s.css("direction")),wrongRTL:"-webkit-box"===r.css("display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,$el:i,$wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttr("style"),r.removeAttr("style"),n&&n.length&&n.removeClass([a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.$el[0].swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){g(_,e)}static get extendedDefaults(){return _}static get defaults(){return W}static installModule(e){V.prototype.__modules__||(V.prototype.__modules__=[]);const t=V.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>V.installModule(e))),V):(V.installModule(e),V)}}function F(e,t,s,i){const r=a();
vendor: 19,085 bytes, line 11342
11342return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let n=e.$el.children(`.${i[a]}`)[0];n||(n=r.createElement("div"),n.className=i[a],e.$el.append(n)),s[a]=n,t[a]=n}})),s}function U(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}`}function K(e){const t=this,{$wrapperEl:s,params:a}=t;if(a.loop&&t.loopDestroy(),"object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.append(e[t]);else s.append(e);a.loop&&t.loopCreate(),a.observer||t.update()}function Z(e){const t=this,{params:s,$wrapperEl:a,activeIndex:i}=t;s.loop&&t.loopDestroy();let r=i+1;if("object"==typeof e&&"length"in e){for(let t=0;t<e.length;t+=1)e[t]&&a.prepend(e[t]);r=i+e.length}else a.prepend(e);s.loop&&t.loopCreate(),s.observer||t.update(),t.slideTo(r,0,!1)}function Q(e,t){const s=this,{$wrapperEl:a,params:i,activeIndex:r}=s;let n=r;i.loop&&(n-=s.loopedSlides,s.loopDestroy(),s.slides=a.children(`.${i.slideClass}`));const l=s.slides.length;if(e<=0)return void s.prependSlide(t);if(e>=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides.eq(t);e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;e<t.length;e+=1)t[e]&&a.append(t[e]);o=n>e?n+t.length:n}else a.append(t);for(let e=0;e<d.length;e+=1)a.append(d[e]);i.loop&&s.loopCreate(),i.observer||s.update(),i.loop?s.slideTo(o+s.loopedSlides,0,!1):s.slideTo(o,0,!1)}function J(e){const t=this,{params:s,$wrapperEl:a,activeIndex:i}=t;let r=i;s.loop&&(r-=t.loopedSlides,t.loopDestroy(),t.slides=a.children(`.${s.slideClass}`));let n,l=r;if("object"==typeof e&&"length"in e){for(let s=0;s<e.length;s+=1)n=e[s],t.slides[n]&&t.slides.eq(n).remove(),n<l&&(l-=1);l=Math.max(l,0)}else n=e,t.slides[n]&&t.slides.eq(n).remove(),n<l&&(l-=1),l=Math.max(l,0);s.loop&&t.loopCreate(),s.observer||t.update(),s.loop?t.slideTo(l+t.loopedSlides,0,!1):t.slideTo(l,0,!1)}function ee(){const e=this,t=[];for(let s=0;s<e.slides.length;s+=1)t.push(s);e.removeSlide(t)}function te(e){const{effect:t,swiper:s,on:a,setTranslate:i,setTransition:r,overwriteParams:n,perspective:l,recreateShadows:o,getEffectParams:d}=e;let c;a("beforeInit",(()=>{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.each((e=>{s.$(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").remove()})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function se(e,t){return e.transformEl?t.find(e.transformEl).css({"backface-visibility":"hidden","-webkit-backface-visibility":"hidden"}):t}function ae(e){let{swiper:t,duration:s,transformEl:a,allSlides:i}=e;const{slides:r,activeIndex:n,$wrapperEl:l}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a?r.find(a):r:a?r.eq(n).find(a):r.eq(n),e.transitionEnd((()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=["webkitTransitionEnd","transitionend"];for(let t=0;t<e.length;t+=1)l.trigger(e[t])}))}}function ie(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=e.transformEl?t.find(e.transformEl):t;let r=i.children(`.${a}`);return r.length||(r=d(`<div class="swiper-slide-shadow${s?`-${s}`:""}"></div>`),i.append(r)),r}Object.keys(q).forEach((e=>{Object.keys(q[e]).forEach((t=>{V.prototype[t]=q[e][t]}))})),V.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,t){void 0===t&&(t={});const s=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(1===e.length)return void i("observerUpdate",e[0]);const t=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}));s.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),n.push(s)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=t.$el.parents();for(let t=0;t<e.length;t+=1)o(e[t])}o(t.$el[0],{childList:t.params.observeSlideChildren}),o(t.$wrapperEl[0],{attributes:!1})}})),a("destroy",(()=>{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const re=[function(e){let t,{swiper:s,extendParams:a,on:i,emit:r}=e;function n(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];const i=a.renderSlide?d(a.renderSlide.call(s,e,t)):d(`<div class="${s.params.slideClass}" data-swiper-slide-index="${t}">${e}</div>`);return i.attr("data-swiper-slide-index")||i.attr("data-swiper-slide-index",t),a.cache&&(s.virtual.cache[t]=i),i}function l(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:d,to:c,slides:p,slidesGrid:u,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const m=s.activeIndex||0;let f,g,v;f=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(g=Math.floor(t/2)+a+o,v=Math.floor(t/2)+a+l):(g=t+(a-1)+o,v=a+l);const w=Math.max((m||0)-v,0),b=Math.min((m||0)+g,p.length-1),x=(s.slidesGrid[w]||0)-(s.slidesGrid[0]||0);function y(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),s.lazy&&s.params.lazy.enabled&&s.lazy.load(),r("virtualUpdate")}if(Object.assign(s.virtual,{from:w,to:b,offset:x,slidesGrid:s.slidesGrid}),d===w&&c===b&&!e)return s.slidesGrid!==u&&x!==h&&s.slides.css(f,`${x}px`),s.updateProgress(),void r("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:w,to:b,slides:function(){const e=[];for(let t=w;t<=b;t+=1)e.push(p[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?y():r("virtualUpdate"));const E=[],C=[];if(e)s.$wrapperEl.find(`.${s.params.slideClass}`).remove();else for(let e=d;e<=c;e+=1)(e<w||e>b)&&s.$wrapperEl.find(`.${s.params.slideClass}[data-swiper-slide-index="${e}"]`).remove();for(let t=0;t<p.length;t+=1)t>=w&&t<=b&&(void 0===c||e?C.push(t):(t>c&&C.push(t),t<d&&E.push(t)));C.forEach((e=>{s.$wrapperEl.append(n(p[e],e))})),E.sort(((e,t)=>t-e)).forEach((e=>{s.$wrapperEl.prepend(n(p[e],e))})),s.$wrapperEl.children(".swiper-slide").css(f,`${x}px`),y()}a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}}),s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]},i("beforeInit",(()=>{s.params.virtual.enabled&&(s.virtual.slides=s.params.virtual.slides,s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||l())})),i("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{l()}),100)):l())})),i("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&v(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.push(e[t]);else s.virtual.slides.push(e);l(!0)},prependSlide:function(e){const t=s.activeIndex;let a=t+1,i=1;if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.unshift(e[t]);a=t+e.length,i=e.length}else s.virtual.slides.unshift(e);if(s.params.virtual.cache){const e=s.virtual.cache,t={};Object.keys(e).forEach((s=>{const a=e[s],r=a.attr("data-swiper-slide-index");r&&a.attr("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}l(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]<t&&(t-=1),t=Math.max(t,0);else s.virtual.slides.splice(e,1),s.params.virtual.cache&&delete s.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);l(!0),s.slideTo(t,0)},removeAllSlides:function(){s.virtual.slides=[],s.params.virtual.cache&&(s.virtual.cache={}),l(!0),s.slideTo(0,0)},update:l})},function(e){let{swiper:t,extendParams:s,on:i,emit:n}=e;const l=a(),o=r();function c(e){if(!t.enabled)return;const{rtlTranslate:s}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const i=a.keyCode||a.charCode,r=t.params.keyboard.pageUpDown,d=r&&33===i,c=r&&34===i,p=37===i,u=39===i,h=38===i,m=40===i;if(!t.allowSlideNext&&(t.isHorizontal()&&u||t.isVertical()&&m||c))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&p||t.isVertical()&&h||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||c||p||u||h||m)){let e=!1;if(t.$el.parents(`.${t.params.slideClass}`).length>0&&0===t.$el.parents(`.${t.params.slideActiveClass}`).length)return;const a=t.$el,i=a[0].clientWidth,r=a[0].clientHeight,n=o.innerWidth,l=o.innerHeight,d=t.$el.offset();s&&(d.left-=t.$el[0].scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t<c.length;t+=1){const s=c[t];if(s[0]>=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||h||m)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||m)&&t.slideNext(),(d||h)&&t.slidePrev()),n("keyPress",i)}}function p(){t.keyboard.enabled||(d(l).on("keydown",c),t.keyboard.enabled=!0)}function u(){t.keyboard.enabled&&(d(l).off("keydown",c),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&p()})),i("destroy",(()=>{t.keyboard.enabled&&u()})),Object.assign(t.keyboard,{enable:p,disable:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let l;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null}}),t.mousewheel={enabled:!1};let o,c=u();const h=[];function m(){t.enabled&&(t.mouseEntered=!0)}function f(){t.enabled&&(t.mouseEntered=!1)}function g(e){return!(t.params.mousewheel.thresholdDelta&&e.delta<t.params.mousewheel.thresholdDelta)&&(!(t.params.mousewheel.thresholdTime&&u()-c<t.params.mousewheel.thresholdTime)&&(e.delta>=6&&u()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function v(e){let s=e,a=!0;if(!t.enabled)return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.$el;if("container"!==t.params.mousewheel.eventsTarget&&(n=d(t.params.mousewheel.eventsTarget)),!t.mouseEntered&&!n[0].contains(s.target)&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let c=0;const m=t.rtlTranslate?-1:1,f=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(f.pixelX)>Math.abs(f.pixelY)))return!0;c=-f.pixelX*m}else{if(!(Math.abs(f.pixelY)>Math.abs(f.pixelX)))return!0;c=-f.pixelY}else c=Math.abs(f.pixelX)>Math.abs(f.pixelY)?-f.pixelX*m:-f.pixelY;if(0===c)return!0;r.invert&&(c=-c);let v=t.getTranslate()+c*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:u(),delta:Math.abs(c),direction:Math.sign(c)},a=o&&e.time<o.time+500&&e.delta<=o.delta&&e.direction===o.direction;if(!a){o=void 0,t.params.loop&&t.loopFix();let n=t.getTranslate()+c*r.sensitivity;const d=t.isBeginning,u=t.isEnd;if(n>=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!d&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.freeMode.sticky){clearTimeout(l),l=void 0,h.length>=15&&h.shift();const s=h.length?h[h.length-1]:void 0,a=h[0];if(h.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))h.splice(0);else if(h.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=c>0?.8:.2;o=e,h.splice(0),l=p((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}l||(l=p((()=>{o=e,h.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),n===t.minTranslate()||n===t.maxTranslate())return!0}}else{const s={time:u(),delta:Math.abs(c),direction:Math.sign(c),raw:e};h.length>=2&&h.shift();const a=h.length?h[h.length-1]:void 0;if(h.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&g(s):g(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function w(e){let s=t.$el;"container"!==t.params.mousewheel.eventsTarget&&(s=d(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",f),s[e]("wheel",v)}function b(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",v),!0):!t.mousewheel.enabled&&(w("on"),t.mousewheel.enabled=!0,!0)}function x(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,v),!0):!!t.mousewheel.enabled&&(w("off"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&x(),t.params.mousewheel.enabled&&b()})),a("destroy",(()=>{t.params.cssMode&&b(),t.mousewheel.enabled&&x()})),Object.assign(t.mousewheel,{enable:b,disable:x})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&(s=d(e),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.$el.find(e).length&&(s=t.$el.find(e))),s}function n(e,s){const a=t.params.navigation;e&&e.length>0&&(e[s?"addClass":"removeClass"](a.disabledClass),e[0]&&"BUTTON"===e[0].tagName&&(e[0].disabled=s),t.params.watchOverflow&&t.enabled&&e[t.isLocked?"addClass":"removeClass"](a.lockClass))}function l(){if(t.params.loop)return;const{$nextEl:e,$prevEl:s}=t.navigation;n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=F(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;const s=r(e.nextEl),a=r(e.prevEl);s&&s.length>0&&s.on("click",c),a&&a.length>0&&a.on("click",o),Object.assign(t.navigation,{$nextEl:s,nextEl:s&&s[0],$prevEl:a,prevEl:a&&a[0]}),t.enabled||(s&&s.addClass(e.lockClass),a&&a.addClass(e.lockClass))}function u(){const{$nextEl:e,$prevEl:s}=t.navigation;e&&e.length&&(e.off("click",c),e.removeClass(t.params.navigation.disabledClass)),s&&s.length&&(s.off("click",o),s.removeClass(t.params.navigation.disabledClass))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,$nextEl:null,prevEl:null,$prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?h():(p(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{const{$nextEl:e,$prevEl:s}=t.navigation;e&&e[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass),s&&s[t.enabled?"removeClass":"addClass"](t.params.navigation.lockClass)})),a("click",((e,s)=>{const{$nextEl:a,$prevEl:r}=t.navigation,n=s.target;if(t.params.navigation.hideOnClick&&!d(n).is(r)&&!d(n).is(a)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a?e=a.hasClass(t.params.navigation.hiddenClass):r&&(e=r.hasClass(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),a&&a.toggleClass(t.params.navigation.hiddenClass),r&&r.toggleClass(t.params.navigation.hiddenClass)}}));const h=()=>{t.$el.addClass(t.params.navigation.navigationDisabledClass),u()};Object.assign(t.navigation,{enable:()=>{t.$el.removeClass(t.params.navigation.navigationDisabledClass),p(),l()},disable:h,update:l,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}
11342-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,$el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||!t.pagination.$el||0===t.pagination.$el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e[s]().addClass(`${a}-${s}`)[s]().addClass(`${a}-${s}-${s}`)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;const a=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,r=t.pagination.$el;let p;const u=t.params.loop?Math.ceil((a-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(p=Math.ceil((t.activeIndex-t.loopedSlides)/t.params.slidesPerGroup),p>a-1-2*t.loopedSlides&&(p-=a-2*t.loopedSlides),p>u-1&&(p-=u),p<0&&"bullets"!==t.params.paginationType&&(p=u+p)):p=void 0!==t.snapIndex?t.snapIndex:t.activeIndex||0,"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let i,o,u;if(s.dynamicBullets&&(n=a.eq(0)[t.isHorizontal()?"outerWidth":"outerHeight"](!0),r.css(t.isHorizontal()?"width":"height",n*(s.dynamicMainBullets+4)+"px"),s.dynamicMainBullets>1&&void 0!==t.previousIndex&&(l+=p-(t.previousIndex-t.loopedSlides||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),i=Math.max(p-l,0),o=i+(Math.min(a.length,s.dynamicMainBullets)-1),u=(o+i)/2),a.removeClass(["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`)).join(" ")),r.length>1)a.each((e=>{const t=d(e),a=t.index();a===p&&t.addClass(s.bulletActiveClass),s.dynamicBullets&&(a>=i&&a<=o&&t.addClass(`${s.bulletActiveClass}-main`),a===i&&c(t,"prev"),a===o&&c(t,"next"))}));else{const e=a.eq(p),r=e.index();if(e.addClass(s.bulletActiveClass),s.dynamicBullets){const e=a.eq(i),n=a.eq(o);for(let e=i;e<=o;e+=1)a.eq(e).addClass(`${s.bulletActiveClass}-main`);if(t.params.loop)if(r>=a.length){for(let e=s.dynamicMainBullets;e>=0;e-=1)a.eq(a.length-e).addClass(`${s.bulletActiveClass}-main`);a.eq(a.length-s.dynamicMainBullets-1).addClass(`${s.bulletActiveClass}-prev`)}else c(e,"prev"),c(n,"next");else c(e,"prev"),c(n,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.css(t.isHorizontal()?l:"top",`${r}px`)}}if("fraction"===s.type&&(r.find(U(s.currentClass)).text(s.formatFractionCurrent(p+1)),r.find(U(s.totalClass)).text(s.formatFractionTotal(u))),"progressbar"===s.type){let e;e=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const a=(p+1)/u;let i=1,n=1;"horizontal"===e?i=a:n=a,r.find(U(s.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${i}) scaleY(${n})`).transition(t.params.speed)}"custom"===s.type&&s.renderCustom?(r.html(s.renderCustom(t,p+1,u)),i("paginationRender",r[0])):i("paginationUpdate",r[0]),t.params.watchOverflow&&t.enabled&&r[t.isLocked?"addClass":"removeClass"](s.lockClass)}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,a=t.pagination.$el;let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil((s-2*t.loopedSlides)/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&!t.params.loop&&i>s&&(i=s);for(let s=0;s<i;s+=1)e.renderBullet?r+=e.renderBullet.call(t,s,e.bulletClass):r+=`<${e.bulletElement} class="${e.bulletClass}"></${e.bulletElement}>`;a.html(r),t.pagination.bullets=a.find(U(e.bulletClass))}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`,a.html(r)),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`,a.html(r)),"custom"!==e.type&&i("paginationRender",t.pagination.$el[0])}function h(){t.params.pagination=F(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s=d(e.el);0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&s.length>1&&(s=t.$el.find(e.el),s.length>1&&(s=s.filter((e=>d(e).parents(".swiper")[0]===t.el)))),"bullets"===e.type&&e.clickable&&s.addClass(e.clickableClass),s.addClass(e.modifierClass+e.type),s.addClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.addClass(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.addClass(e.progressbarOppositeClass),e.clickable&&s.on("click",U(e.bulletClass),(function(e){e.preventDefault();let s=d(this).index()*t.params.slidesPerGroup;t.params.loop&&(s+=t.loopedSlides),t.slideTo(s)})),Object.assign(t.pagination,{$el:s,el:s[0]}),t.enabled||s.addClass(e.lockClass))}function m(){const e=t.params.pagination;if(o())return;const s=t.pagination.$el;s.removeClass(e.hiddenClass),s.removeClass(e.modifierClass+e.type),s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.pagination.bullets&&t.pagination.bullets.removeClass&&t.pagination.bullets.removeClass(e.bulletActiveClass),e.clickable&&s.off("click",U(e.bulletClass))}a("init",(()=>{!1===t.params.pagination.enabled?f():(h(),u(),p())})),a("activeIndexChange",(()=>{(t.params.loop||void 0===t.snapIndex)&&p()})),a("snapIndexChange",(()=>{t.params.loop||p()})),a("slidesLengthChange",(()=>{t.params.loop&&(u(),p())})),a("snapGridLengthChange",(()=>{t.params.loop||(u(),p())})),a("destroy",(()=>{m()}
vendor: 10,059 bytes, line 11342
11342)),a("enable disable",(()=>{const{$el:e}=t.pagination;e&&e[t.enabled?"removeClass":"addClass"](t.params.pagination.lockClass)})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,{$el:r}=t.pagination;if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!d(a).hasClass(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r.hasClass(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.toggleClass(t.params.pagination.hiddenClass)}}));const f=()=>{t.$el.addClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.addClass(t.params.pagination.paginationDisabledClass),m()};Object.assign(t.pagination,{enable:()=>{t.$el.removeClass(t.params.pagination.paginationDisabledClass),t.pagination.$el&&t.pagination.$el.removeClass(t.params.pagination.paginationDisabledClass),h(),u(),p()},disable:f,render:u,update:p,init:h,destroy:m})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=a();let l,o,c,u,h=!1,m=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s,progress:a}=t,{$dragEl:i,$el:r}=e,n=t.params.scrollbar;let l=o,d=(c-o)*a;s?(d=-d,d>0?(l=o-d,d=0):-d+o>c&&(l=c+d)):d<0?(l=o+d,d=0):d+o>c&&(l=c-d),t.isHorizontal()?(i.transform(`translate3d(${d}px, 0, 0)`),i[0].style.width=`${l}px`):(i.transform(`translate3d(0px, ${d}px, 0)`),i[0].style.height=`${l}px`),n.hide&&(clearTimeout(m),r[0].style.opacity=1,m=setTimeout((()=>{r[0].style.opacity=0,r.transition(400)}),1e3))}function v(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{$dragEl:s,$el:a}=e;s[0].style.width="",s[0].style.height="",c=t.isHorizontal()?a[0].offsetWidth:a[0].offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),o="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s[0].style.width=`${o}px`:s[0].style.height=`${o}px`,a[0].style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a[0].style.opacity=0),t.params.watchOverflow&&t.enabled&&e.$el[t.isLocked?"addClass":"removeClass"](t.params.scrollbar.lockClass)}function w(e){return t.isHorizontal()?"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientX:e.clientX:"touchstart"===e.type||"touchmove"===e.type?e.targetTouches[0].clientY:e.clientY}function b(e){const{scrollbar:s,rtlTranslate:a}=t,{$el:i}=s;let r;r=(w(e)-i.offset()[t.isHorizontal()?"left":"top"]-(null!==l?l:o/2))/(c-o),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n,$dragEl:o}=a;h=!0,l=e.target===o[0]||e.target===o?w(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.transition(100),o.transition(100),b(e),clearTimeout(f),n.transition(0),s.hide&&n.css("opacity",1),t.params.cssMode&&t.$wrapperEl.css("scroll-snap-type","none"),r("scrollbarDragStart",e)}function y(e){const{scrollbar:s,$wrapperEl:a}=t,{$el:i,$dragEl:n}=s;h&&(e.preventDefault?e.preventDefault():e.returnValue=!1,b(e),a.transition(0),i.transition(0),n.transition(0),r("scrollbarDragMove",e))}function E(e){const s=t.params.scrollbar,{scrollbar:a,$wrapperEl:i}=t,{$el:n}=a;h&&(h=!1,t.params.cssMode&&(t.$wrapperEl.css("scroll-snap-type",""),i.transition("")),s.hide&&(clearTimeout(f),f=p((()=>{n.css("opacity",0),n.transition(400)}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,touchEventsTouch:a,touchEventsDesktop:i,params:r,support:l}=t,o=s.$el;if(!o)return;const d=o[0],c=!(!l.passiveListener||!r.passiveListeners)&&{passive:!1,capture:!1},p=!(!l.passiveListener||!r.passiveListeners)&&{passive:!0,capture:!1};if(!d)return;const u="on"===e?"addEventListener":"removeEventListener";l.touch?(d[u](a.start,x,c),d[u](a.move,y,c),d[u](a.end,E,p)):(d[u](i.start,x,c),n[u](i.move,y,c),n[u](i.end,E,p))}function T(){const{scrollbar:e,$el:s}=t;t.params.scrollbar=F(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i=d(a.el);t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.find(a.el).length&&(i=s.find(a.el)),i.addClass(t.isHorizontal()?a.horizontalClass:a.verticalClass);let r=i.find(`.${t.params.scrollbar.dragClass}`);0===r.length&&(r=d(`<div class="${t.params.scrollbar.dragClass}"></div>`),i.append(r)),Object.assign(e,{$el:i,el:i[0],$dragEl:r,dragEl:r[0]}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)}function $(){const e=t.params.scrollbar,s=t.scrollbar.$el;s&&s.removeClass(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null,$el:null,$dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?S():(T(),v(),g())})),i("update resize observerUpdate lock unlock",(()=>{v()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&t.scrollbar.$dragEl.transition(e)}(s)})),i("enable disable",(()=>{const{$el:e}=t.scrollbar;e&&e[t.enabled?"removeClass":"addClass"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{$()}));const S=()=>{t.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.addClass(t.params.scrollbar.scrollbarDisabledClass),$()};Object.assign(t.scrollbar,{enable:()=>{t.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.$el&&t.scrollbar.$el.removeClass(t.params.scrollbar.scrollbarDisabledClass),T(),v(),g()},disable:S,updateSize:v,setTranslate:g,init:T,destroy:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=d(e),r=a?-1:1,n=i.attr("data-swiper-parallax")||"0";let l=i.attr("data-swiper-parallax-x"),o=i.attr("data-swiper-parallax-y");const c=i.attr("data-swiper-parallax-scale"),p=i.attr("data-swiper-parallax-opacity");if(l||o?(l=l||"0",o=o||"0"):t.isHorizontal()?(l=n,o="0"):(o=n,l="0"),l=l.indexOf("%")>=0?parseInt(l,10)*s*r+"%":l*s*r+"px",o=o.indexOf("%")>=0?parseInt(o,10)*s+"%":o*s+"px",null!=p){const e=p-(p-1)*(1-Math.abs(s));i[0].style.opacity=e}if(null==c)i.transform(`translate3d(${l}, ${o}, 0px)`);else{const e=c-(c-1)*(1-Math.abs(s));i.transform(`translate3d(${l}, ${o}, 0px) scale(${e})`)}},r=()=>{const{$el:e,slides:s,progress:a,snapGrid:r}=t;e.children("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,a)})),s.each(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),d(e).find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{$el:s}=t;s.find("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").each((t=>{const s=d(t);let a=parseInt(s.attr("data-swiper-parallax-duration"),10)||e;0===e&&(a=0),s.transition(a)}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c,p=1,u=!1;const m={$slideEl:void 0,slideWidth:void 0,slideHeight:void 0,$imageEl:void 0,$imageWrapEl:void 0,maxRatio:3},f={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v=1;function w(e){if(e.targetTouches.length<2)return 1;const t=e.targetTouches[0].pageX,s=e.targetTouches[0].pageY,a=e.targetTouches[1].pageX,i=e.targetTouches[1].pageY;return Math.sqrt((a-t)**2+(i-s)**2)}function b(e){const s=t.support,a=t.params.zoom;if(o=!1,c=!1,!s.gestures){if("touchstart"!==e.type||"touchstart"===e.type&&e.targetTouches.length<2)return;o=!0,m.scaleStart=w(e)}m.$slideEl&&m.$slideEl.length||(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`),0===m.$slideEl.length&&(m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`),m.maxRatio=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,0!==m.$imageWrapEl.length)?(m.$imageEl&&m.$imageEl.transition(0),u=!0):m.$imageEl=void 0}function x(e){const s=t.support,a=t.params.zoom,i=t.zoom;if(!s.gestures){if("touchmove"!==e.type||"touchmove"===e.type&&e.targetTouches.length<2)return;c=!0,m.scaleMove=w(e)}m.$imageEl&&0!==m.$imageEl.length?(s.gestures?i.scale=e.scale*p:i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scale<a.minRatio&&(i.scale=a.minRatio+1-(a.minRatio-i.scale+1)**.5),m.$imageEl.transform(`translate3d(0,
113420,0) scale(${i.scale})`)):"gesturechange"===e.type&&b(e)}function y(e){const s=t.device,a=t.support,i=t.params.zoom,r=t.zoom;if(!a.gestures){if(!o||!c)return;if("touchend"!==e.type||"touchend"===e.type&&e.changedTouches.length<2&&!s.android)return;o=!1,c=!1}m.$imageEl&&0!==m.$imageEl.length&&(r.scale=Math.max(Math.min(r.scale,m.maxRatio),i.minRatio),m.$imageEl.transition(t.params.speed).transform(`translate3d(0,0,0) scale(${r.scale})`),p=r.scale,u=!1,1===r.scale&&(m.$slideEl=void 0))}function E(e){const s=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(t.allowClick=!1,!f.isTouched||!m.$slideEl)return;f.isMoved||(f.width=m.$imageEl[0].offsetWidth,f.height=m.$imageEl[0].offsetHeight,f.startX=h(m.$imageWrapEl[0],"x")||0,f.startY=h(m.$imageWrapEl[0],"y")||0,m.slideWidth=m.$slideEl[0].offsetWidth,m.slideHeight=m.$slideEl[0].offsetHeight,m.$imageWrapEl.transition(0));const a=f.width*s.scale,i=f.height*s.scale;if(!(a<m.slideWidth&&i<m.slideHeight)){if(f.minX=Math.min(m.slideWidth/2-a/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-i/2,0),f.maxY=-f.minY,f.touchesCurrent.x="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesCurrent.y="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,!f.isMoved&&!u){if(t.isHorizontal()&&(Math.floor(f.minX)===Math.floor(f.startX)&&f.touchesCurrent.x<f.touchesStart.x||Math.floor(f.maxX)===Math.floor(f.startX)&&f.touchesCurrent.x>f.touchesStart.x))return void(f.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(f.minY)===Math.floor(f.startY)&&f.touchesCurrent.y<f.touchesStart.y||Math.floor(f.maxY)===Math.floor(f.startY)&&f.touchesCurrent.y>f.touchesStart.y))return void(f.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),f.isMoved=!0,f.currentX=f.touchesCurrent.x-f.touchesStart.x+f.startX,f.currentY=f.touchesCurrent.y-f.touchesStart.y+f.startY,f.currentX<f.minX&&(f.currentX=f.minX+1-(f.minX-f.currentX+1)**.8),f.currentX>f.maxX&&(f.currentX=f.maxX-1+(f.currentX-f.maxX+1)**.8),f.currentY<f.minY&&(f.currentY=f.minY+1-(f.minY-f.currentY+1)**.8),f.currentY>f.maxY&&(f.currentY=f.maxY-1+(f.currentY-f.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=f.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=f.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(f.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(f.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(f.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(f.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=f.touchesCurrent.x,g.prevPositionY=f.touchesCurrent.y,g.prevTime=Date.now(),m.$imageWrapEl.transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}}function C(){const e=t.zoom;m.$slideEl&&t.previousIndex!==t.activeIndex&&(m.$imageEl&&m.$imageEl.transform("translate3d(0,0,0) scale(1)"),m.$imageWrapEl&&m.$imageWrapEl.transform("translate3d(0,0,0)"),e.scale=1,p=1,m.$slideEl=void 0,m.$imageEl=void 0,m.$imageWrapEl=void 0)}function T(e){const s=t.zoom,a=t.params.zoom;if(m.$slideEl||(e&&e.target&&(m.$slideEl=d(e.target).closest(`.${t.params.slideClass}`)),m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex)),m.$imageEl=m.$slideEl.find(`.${a.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${a.containerClass}`)),!m.$imageEl||0===m.$imageEl.length||!m.$imageWrapEl||0===m.$imageWrapEl.length)return;let i,r,l,o,c,u,h,g,v,w,b,x,y,E,C,T,$,S;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.$slideEl.addClass(`${a.zoomedSlideClass}`),void 0===f.touchesStart.x&&e?(i="touchend"===e.type?e.changedTouches[0].pageX:e.pageX,r="touchend"===e.type?e.changedTouches[0].pageY:e.pageY):(i=f.touchesStart.x,r=f.touchesStart.y),s.scale=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,p=m.$imageWrapEl.attr("data-swiper-zoom")||a.maxRatio,e?($=m.$slideEl[0].offsetWidth,S=m.$slideEl[0].offsetHeight,l=m.$slideEl.offset().left+n.scrollX,o=m.$slideEl.offset().top+n.scrollY,c=l+$/2-i,u=o+S/2-r,v=m.$imageEl[0].offsetWidth,w=m.$imageEl[0].offsetHeight,b=v*s.scale,x=w*s.scale,y=Math.min($/2-b/2,0),E=Math.min(S/2-x/2,0),C=-y,T=-E,h=c*s.scale,g=u*s.scale,h<y&&(h=y),h>C&&(h=C),g<E&&(g=E),g>T&&(g=T)):(h=0,g=0),m.$imageWrapEl.transition(300).transform(`translate3d(${h}px, ${g}
11342px,0)`),m.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${s.scale})`)}function $(){const e=t.zoom,s=t.params.zoom;m.$slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.$slideEl=t.$wrapperEl.children(`.${t.params.slideActiveClass}`):m.$slideEl=t.slides.eq(t.activeIndex),m.$imageEl=m.$slideEl.find(`.${s.containerClass}`).eq(0).find("picture, img, svg, canvas, .swiper-zoom-target").eq(0),m.$imageWrapEl=m.$imageEl.parent(`.${s.containerClass}`)),m.$imageEl&&0!==m.$imageEl.length&&m.$imageWrapEl&&0!==m.$imageWrapEl.length&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.$imageWrapEl.transition(300).transform("translate3d(0,0,0)"),m.$imageEl.transition(300).transform("translate3d(0,0,0) scale(1)"),m.$slideEl.removeClass(`${s.zoomedSlideClass}`),m.$slideEl=void 0)}function S(e){const s=t.zoom;s.scale&&1!==s.scale?$():T(e)}function M(){const e=t.support;return{passiveListener:!("touchstart"!==t.touchEvents.start||!e.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1},activeListenerWithCapture:!e.passiveListener||{passive:!1,capture:!0}}}function P(){return`.${t.params.slideClass}`}function k(e){const{passiveListener:s}=M(),a=P();t.$wrapperEl[e]("gesturestart",a,b,s),t.$wrapperEl[e]("gesturechange",a,x,s),t.$wrapperEl[e]("gestureend",a,y,s)}function z(){l||(l=!0,k("on"))}function L(){l&&(l=!1,k("off"))}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const s=t.support,{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.on(t.touchEvents.start,z,a),t.$wrapperEl.on(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.on(t.touchEvents.start,r,b,a),t.$wrapperEl.on(t.touchEvents.move,r,x,i),t.$wrapperEl.on(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.on(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.on(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}function I(){const e=t.zoom;if(!e.enabled)return;const s=t.support;e.enabled=!1;const{passiveListener:a,activeListenerWithCapture:i}=M(),r=P();s.gestures?(t.$wrapperEl.off(t.touchEvents.start,z,a),t.$wrapperEl.off(t.touchEvents.end,L,a)):"touchstart"===t.touchEvents.start&&(t.$wrapperEl.off(t.touchEvents.start,r,b,a),t.$wrapperEl.off(t.touchEvents.move,r,x,i),t.$wrapperEl.off(t.touchEvents.end,r,y,a),t.touchEvents.cancel&&t.$wrapperEl.off(t.touchEvents.cancel,r,y,a)),t.$wrapperEl.off(t.touchEvents.move,`.${t.params.zoom.containerClass}`,E,i)}Object.defineProperty(t.zoom,"scale",{get:()=>v,set(e){if(v!==e){const t=m.$imageEl?m.$imageEl[0]:void 0,s=m.$slideEl?m.$slideEl[0]:void 0;i("zoomChange",e,t,s)}v=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;m.$imageEl&&0!==m.$imageEl.length&&(f.isTouched||(s.android&&e.cancelable&&e.preventDefault(),f.isTouched=!0,f.touchesStart.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,f.touchesStart.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY))}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.$imageEl||0===m.$imageEl.length)return;if(!f.isTouched||!f.isMoved)return f.isTouched=!1,void(f.isMoved=!1);f.isTouched=!1,f.isMoved=!1;let s=300,a=300;const i=g.x*s,r=f.currentX+i,n=g.y*a,l=f.currentY+n;0!==g.x&&(s=Math.abs((r-f.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-f.currentY)/g.y));const o=Math.max(s,a);f.currentX=r,f.currentY=l;const d=f.width*e.scale,c=f.height*e.scale;f.minX=Math.min(m.slideWidth/2-d/2,0),f.maxX=-f.minX,f.minY=Math.min(m.slideHeight/2-c/2,0),f.maxY=-f.minY,f.currentX=Math.max(Math.min(f.currentX,f.maxX),f.minX),f.currentY=Math.max(Math.min(f.currentY,f.maxY),f.minY),m.$imageWrapEl.transition(o).transform(`translate3d(${f.currentX}px, ${f.currentY}px,0)`)}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&S(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:O,disable:I,in:T,out:$,toggle:S})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({lazy:{checkInView:!1,enabled:!1,loadPrevNext:!1,loadPrevNextAmount:1,loadOnTransitionStart:!1,scrollingElement:"",elementClass:"swiper-lazy",loadingClass:"swiper-lazy-loading",loadedClass:"swiper-lazy-loaded",preloaderClass:"swiper-lazy-preloader"}}),t.lazy={};let n=!1,l=!1;function o(e,s){void 0===s&&(s=!0);const a=t.params.lazy;if(void 0===e)return;if(0===t.slides.length)return;const r=t.virtual&&t.params.virtual.enabled?t.$wrapperEl.children(`.${t.params.slideClass}[data-swiper-slide-index="${e}"]`):t.slides.eq(e),n=r.find(`.${a.elementClass}:not(.${a.loadedClass}):not(.${a.loadingClass})`);!r.hasClass(a.elementClass)||r.hasClass(a.loadedClass)||r.hasClass(a.loadingClass)||n.push(r[0]),0!==n.length&&n.each((e=>{const n=d(e);n.addClass(a.loadingClass);const l=n.attr("data-background"),c=n.attr("data-src"),p=n.attr("data-srcset"),u=n.attr("data-sizes"),h=n.parent("picture");t.loadImage(n[0],c||l,p,u,!1,(()=>
vendor: 32,363 bytes, line 11342
11342{if(null!=t&&t&&(!t||t.params)&&!t.destroyed){if(l?(n.css("background-image",`url("${l}")`),n.removeAttr("data-background")):(p&&(n.attr("srcset",p),n.removeAttr("data-srcset")),u&&(n.attr("sizes",u),n.removeAttr("data-sizes")),h.length&&h.children("source").each((e=>{const t=d(e);t.attr("data-srcset")&&(t.attr("srcset",t.attr("data-srcset")),t.removeAttr("data-srcset"))})),c&&(n.attr("src",c),n.removeAttr("data-src"))),n.addClass(a.loadedClass).removeClass(a.loadingClass),r.find(`.${a.preloaderClass}`).remove(),t.params.loop&&s){const e=r.attr("data-swiper-slide-index");if(r.hasClass(t.params.slideDuplicateClass)){o(t.$wrapperEl.children(`[data-swiper-slide-index="${e}"]:not(.${t.params.slideDuplicateClass})`).index(),!1)}else{o(t.$wrapperEl.children(`.${t.params.slideDuplicateClass}[data-swiper-slide-index="${e}"]`).index(),!1)}}i("lazyImageReady",r[0],n[0]),t.params.autoHeight&&t.updateAutoHeight()}})),i("lazyImageLoad",r[0],n[0])}))}function c(){const{$wrapperEl:e,params:s,slides:a,activeIndex:i}=t,r=t.virtual&&s.virtual.enabled,n=s.lazy;let c=s.slidesPerView;function p(t){if(r){if(e.children(`.${s.slideClass}[data-swiper-slide-index="${t}"]`).length)return!0}else if(a[t])return!0;return!1}function u(e){return r?d(e).attr("data-swiper-slide-index"):d(e).index()}if("auto"===c&&(c=0),l||(l=!0),t.params.watchSlidesProgress)e.children(`.${s.slideVisibleClass}`).each((e=>{o(r?d(e).attr("data-swiper-slide-index"):d(e).index())}));else if(c>1)for(let e=i;e<i+c;e+=1)p(e)&&o(e);else o(i);if(n.loadPrevNext)if(c>1||n.loadPrevNextAmount&&n.loadPrevNextAmount>1){const e=n.loadPrevNextAmount,t=Math.ceil(c),s=Math.min(i+t+Math.max(e,t),a.length),r=Math.max(i-Math.max(t,e),0);for(let e=i+t;e<s;e+=1)p(e)&&o(e);for(let e=r;e<i;e+=1)p(e)&&o(e)}else{const t=e.children(`.${s.slideNextClass}`);t.length>0&&o(u(t));const a=e.children(`.${s.slidePrevClass}`);a.length>0&&o(u(a))}}function p(){const e=r();if(!t||t.destroyed)return;const s=t.params.lazy.scrollingElement?d(t.params.lazy.scrollingElement):d(e),a=s[0]===e,i=a?e.innerWidth:s[0].offsetWidth,l=a?e.innerHeight:s[0].offsetHeight,o=t.$el.offset(),{rtlTranslate:u}=t;let h=!1;u&&(o.left-=t.$el[0].scrollLeft);const m=[[o.left,o.top],[o.left+t.width,o.top],[o.left,o.top+t.height],[o.left+t.width,o.top+t.height]];for(let e=0;e<m.length;e+=1){const t=m[e];if(t[0]>=0&&t[0]<=i&&t[1]>=0&&t[1]<=l){if(0===t[0]&&0===t[1])continue;h=!0}}const f=!("touchstart"!==t.touchEvents.start||!t.support.passiveListener||!t.params.passiveListeners)&&{passive:!0,capture:!1};h?(c(),s.off("scroll",p,f)):n||(n=!0,s.on("scroll",p,f))}a("beforeInit",(()=>{t.params.lazy.enabled&&t.params.preloadImages&&(t.params.preloadImages=!1)})),a("init",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("scroll",(()=>{t.params.freeMode&&t.params.freeMode.enabled&&!t.params.freeMode.sticky&&c()})),a("scrollbarDragMove resize _freeModeNoMomentumRelease",(()=>{t.params.lazy.enabled&&(t.params.lazy.checkInView?p():c())})),a("transitionStart",(()=>{t.params.lazy.enabled&&(t.params.lazy.loadOnTransitionStart||!t.params.lazy.loadOnTransitionStart&&!l)&&(t.params.lazy.checkInView?p():c())})),a("transitionEnd",(()=>{t.params.lazy.enabled&&!t.params.lazy.loadOnTransitionStart&&(t.params.lazy.checkInView?p():c())})),a("slideChange",(()=>{const{lazy:e,cssMode:s,watchSlidesProgress:a,touchReleaseOnEdges:i,resistanceRatio:r}=t.params;e.enabled&&(s||a&&(i||0===r))&&c()})),a("destroy",(()=>{t.$el&&t.$el.find(`.${t.params.lazy.loadingClass}`).removeClass(t.params.lazy.loadingClass)})),Object.assign(t.lazy,{load:c,loadInSlide:o})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline||(t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid))}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e<a.length;e+=1)a[e]!==s&&a[e]instanceof l&&o(a[e]);else a instanceof l&&s!==a&&o(a)},setTransition:function(e,s){const a=t.constructor,i=t.controller.control;let r;function n(s){s.setTransition(e,t),0!==e&&(s.transitionStart(),s.params.autoHeight&&p((()=>{s.updateAutoHeight()})),s.$wrapperEl.transitionEnd((()=>{i&&(s.params.loop&&"slide"===t.params.controller.by&&s.loopFix(),s.transitionEnd())})))}if(Array.isArray(i))for(r=0;r<i.length;r+=1)i[r]!==s&&i[r]instanceof a&&n(i[r]);else i instanceof a&&s!==i&&n(i)}})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}});let i=null;function r(e){const t=i;0!==t.length&&(t.html(""),t.html(e))}function n(e){e.attr("tabIndex","0")}function l(e){e.attr("tabIndex","-1")}function o(e,t){e.attr("role",t)}function c(e,t){e.attr("aria-roledescription",t)}function p(e,t){e.attr("aria-label",t)}function u(e){e.attr("aria-disabled",!0)}function h(e){e.attr("aria-disabled",!1)}function m(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=d(e.target);t.navigation&&t.navigation.$nextEl&&a.is(t.navigation.$nextEl)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.$prevEl&&a.is(t.navigation.$prevEl)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.is(U(t.params.pagination.bulletClass))&&a[0].click()}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function g(){return f()&&t.params.pagination.clickable}const v=(e,t,s)=>{n(e),"BUTTON"!==e[0].tagName&&(o(e,"button"),e.on("keydown",m)),p(e,s),function(e,t){e.attr("aria-controls",t)}(e,t)},w=e=>{const s=e.target.closest(`.${t.params.slideClass}`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},b=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(d(t.slides),e.itemRoleDescriptionMessage),e.slideRole&&o(d(t.slides),e.slideRole);const s=t.params.loop?t.slides.filter((e=>!e.classList.contains(t.params.slideDuplicateClass))).length:t.slides.length;e.slideLabelMessage&&t.slides.each(((a,i)=>{const r=d(a),n=t.params.loop?parseInt(r.attr("data-swiper-slide-index"),10):i;p(r,e.slideLabelMessage.replace(/\{\{index\}\}/,n+1).replace(/\{\{slidesLength\}\}/,s))}))},x=()=>{const e=t.params.a11y;t.$el.append(i);const s=t.$el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.$wrapperEl,r=e.id||a.attr("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const l=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var o;let d,u;o=r,a.attr("id",o),function(e,t){e.attr("aria-live",t)}(a,l),b(),t.navigation&&t.navigation.$nextEl&&(d=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(u=t.navigation.$prevEl),d&&d.length&&v(d,r,e.nextSlideMessage),u&&u.length&&v(u,r,e.prevSlideMessage),g()&&t.pagination.$el.on("keydown",U(t.params.pagination.bulletClass),m),t.$el.on("focus",w,!0)};a("beforeInit",(()=>{i=d(`<span class="${t.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`)})),a("afterInit",(()=>{t.params.a11y.enabled&&x()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&b()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{$nextEl:e,$prevEl:s}=t.navigation;s&&s.length>0&&(t.isBeginning?(u(s),l(s)):(h(s),n(s))),e&&e.length>0&&(t.isEnd?(u(e),l(e)):(h(e),n(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.each((s=>{const a=d(s);t.params.pagination.clickable&&(n(a),t.params.pagination.renderBullet||(o(a,"button"),p(a,e.paginationBulletMessage.replace(/\{\{index\}\}/,a.index()+1)))),a.is(`.${t.params.pagination.bulletActiveClass}`)?a.attr("aria-current","true"):a.removeAttr("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){let e,s;i&&i.length>0&&i.remove(),t.navigation&&t.navigation.$nextEl&&(e=t.navigation.$nextEl),t.navigation&&t.navigation.$prevEl&&(s=t.navigation.$prevEl),e&&e.off("keydown",m),s&&s.off("keydown",m),g()&&t.pagination.$el.off("keydown",U(t.params.pagination.bulletClass),m),t.$el.off("focus",w,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides.eq(s);let d=l(o.attr("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e}/${d}`}else n.pathname.includes(e)||(d=`${e}/${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i<r;i+=1){const r=t.slides.eq(i);if(l(r.attr("data-history"))===s&&!r.hasClass(t.params.slideDuplicateClass)){const s=r.index();t.slideTo(s,e,a)}}else t.slideTo(0,e,a)},p=()=>{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),(n.key||n.value)&&(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p))}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),c=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1}});const p=()=>{i("hashChange");const e=o.location.hash.replace("#","");if(e!==t.slides.eq(t.activeIndex).attr("data-hash")){const s=t.$wrapperEl.children(`.${t.params.slideClass}[data-hash="${e}"]`).index();if(void 0===s)return;t.slideTo(s)}},u=()=>{if(l&&t.params.hashNavigation.enabled)if(t.params.hashNavigation.replaceState&&c.history&&c.history.replaceState)c.history.replaceState(null,null,`#${t.slides.eq(t.activeIndex).attr("data-hash")}`||""),i("hashSet");else{const e=t.slides.eq(t.activeIndex),s=e.attr("data-hash")||e.attr("data-history");o.location.hash=s||"",i("hashSet")}};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0;for(let a=0,i=t.slides.length;a<i;a+=1){const i=t.slides.eq(a);if((i.attr("data-hash")||i.attr("data-history"))===e&&!i.hasClass(t.params.slideDuplicateClass)){const e=i.index();t.slideTo(e,s,t.params.runCallbacksOnInit,!0)}}}t.params.hashNavigation.watchState&&d(c).on("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d(c).off("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&u()})),n("slideChange",(()=>{l&&t.params.cssMode&&u()}))},function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;function l(){if(!s.size)return s.autoplay.running=!1,void(s.autoplay.paused=!1);const e=s.slides.eq(s.activeIndex);let a=s.params.autoplay.delay;e.attr("data-swiper-autoplay")&&(a=e.attr("data-swiper-autoplay")||s.params.autoplay.delay),clearTimeout(t),t=p((()=>{let e;s.params.autoplay.reverseDirection?s.params.loop?(s.loopFix(),e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.isBeginning?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(s.slides.length-1,s.params.speed,!0,!0),n("autoplay")):(e=s.slidePrev(s.params.speed,!0,!0),n("autoplay")):s.params.loop?(s.loopFix(),e=s.slideNext(s.params.speed,!0,!0),n("autoplay")):s.isEnd?s.params.autoplay.stopOnLastSlide?d():(e=s.slideTo(0,s.params.speed,!0,!0),n("autoplay")):(e=s.slideNext(s.params.speed,!0,!0),n("autoplay")),(s.params.cssMode&&s.autoplay.running||!1===e)&&l()}),a)}function o(){return void 0===t&&(!s.autoplay.running&&(s.autoplay.running=!0,n("autoplayStart"),l(),!0))}function d(){return!!s.autoplay.running&&(void 0!==t&&(t&&(clearTimeout(t),t=void 0),s.autoplay.running=!1,n("autoplayStop"),!0))}function c(e){s.autoplay.running&&(s.autoplay.paused||(t&&clearTimeout(t),s.autoplay.paused=!0,0!==e&&s.params.autoplay.waitForTransition?["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].addEventListener(e,h)})):(s.autoplay.paused=!1,l())))}function u(){const e=a();"hidden"===e.visibilityState&&s.autoplay.running&&c(),"visible"===e.visibilityState&&s.autoplay.paused&&(l(),s.autoplay.paused=!1)}function h(e){s&&!s.destroyed&&s.$wrapperEl&&e.target===s.$wrapperEl[0]&&(["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)})),s.autoplay.paused=!1,s.autoplay.running?l():d())}function m(){s.params.autoplay.disableOnInteraction?d():(n("autoplayPause"),c()),["transitionend","webkitTransitionEnd"].forEach((e=>{s.$wrapperEl[0].removeEventListener(e,h)}))}function f(){s.params.autoplay.disableOnInteraction||(s.autoplay.paused=!1,n("autoplayResume"),l())}s.autoplay={running:!1,paused:!1},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}}),r("init",(()=>{if(s.params.autoplay.enabled){o();a().addEventListener("visibilitychange",u),s.params.autoplay.pauseOnMouseEnter&&(s.$el.on("mouseenter",m),s.$el.on("mouseleave",f))}})),r("beforeTransitionStart",((e,t,a)=>{s.autoplay.running&&(a||!s.params.autoplay.disableOnInteraction?s.autoplay.pause(t):d())})),r("sliderFirstMove",(()=>{s.autoplay.running&&(s.params.autoplay.disableOnInteraction?d():c())})),r("touchEnd",(()=>{s.params.cssMode&&s.autoplay.paused&&!s.params.autoplay.disableOnInteraction&&l()})),r("destroy",(()=>{s.$el.off("mouseenter",m),s.$el.off("mouseleave",f),s.autoplay.running&&d();a().removeEventListener("visibilitychange",u)})),Object.assign(s.autoplay,{pause:c,run:l,start:o,stop:d})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let i=!1,r=!1;function n(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&d(a).hasClass(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;if(i=e.params.loop?parseInt(d(e.clickedSlide).attr("data-swiper-slide-index"),10):s,t.params.loop){let e=t.activeIndex;t.slides.eq(e).hasClass(t.params.slideDuplicateClass)&&(t.loopFix(),t._clientLeft=t.$wrapperEl[0].clientLeft,e=t.activeIndex);const s=t.slides.eq(e).prevAll(`[data-swiper-slide-index="${i}"]`).eq(0).index(),a=t.slides.eq(e).nextAll(`[data-swiper-slide-index="${i}"]`).eq(0).index();i=void 0===s?a:void 0===a?s:a-e<e-s?a:s}t.slideTo(i)}function l(){const{thumbs:e}=t.params;if(i)return!1;i=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1});else if(m(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),r=!0}return t.thumbs.swiper.$el.addClass(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",n),!0}function o(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.removeClass(r),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e<i;e+=1)s.$wrapperEl.children(`[data-swiper-slide-index="${t.realIndex+e}"]`).addClass(r);else for(let e=0;e<i;e+=1)s.slides.eq(t.realIndex+e).addClass(r);const n=t.params.thumbs.autoScrollOffset,l=n&&!s.params.loop;if(t.realIndex!==s.realIndex||l){let i,r,o=s.activeIndex;if(s.params.loop){s.slides.eq(o).hasClass(s.params.slideDuplicateClass)&&(s.loopFix(),s._clientLeft=s.$wrapperEl[0].clientLeft,o=s.activeIndex);const e=s.slides.eq(o).prevAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index(),a=s.slides.eq(o).nextAll(`[data-swiper-slide-index="${t.realIndex}"]`).eq(0).index();i=void 0===e?a:void 0===a?e:a-o==o-e?s.params.slidesPerGroup>1?a:o:a-o<o-e?a:e,r=t.activeIndex>t.previousIndex?"next":"prev"}else i=t.realIndex,r=i>t.previousIndex?"next":"prev";l&&(i+="next"===r?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(i)<0&&(s.params.centeredSlides?i=i>o?i-Math.floor(a/2)+1:i+Math.floor(a/2)-1:i>o&&s.params.slidesPerGroup,s.slideTo(i,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;e&&e.swiper&&(l(),o(!0))})),a("slideChange update resize observerUpdate",(()=>{o()})),a("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&r&&e.destroy()})),Object.assign(t.thumbs,{init:l,update:o})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:u()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,$wrapperEl:n,rtlTranslate:l,snapGrid:o,touchEventsData:d}=t,c=u()-d.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length<o.length?t.slideTo(o.length-1):t.slideTo(t.slides.length-1);else{if(r.freeMode.momentum){if(d.velocities.length>1){const e=d.velocities.pop(),s=d.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)<r.freeMode.minimumVelocity&&(t.velocity=0),(i>150||u()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,d.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let p,h=!1;const m=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(c<t.maxTranslate())r.freeMode.momentumBounce?(c+t.maxTranslate()<-m&&(c=t.maxTranslate()-m),p=t.maxTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.maxTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(c>t.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>m&&(c=t.minTranslate()+m),p=t.minTranslate(),h=!0,d.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t<o.length;t+=1)if(o[t]>-c){e=t;break}c=Math.abs(o[e]-c)<Math.abs(o[e-1]-c)||"next"===t.swipeDirection?o[e]:o[e-1],c=-c}if(f&&i("transitionEnd",(()=>{t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s<a?r.speed:s<2*a?1.5*r.speed:2.5*r.speed}}else if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode.momentumBounce&&h?(t.updateProgress(p),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&d.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(p),n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,n.transitionEnd((()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}}),i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,n,l)=>{const{slidesPerGroup:o,spaceBetween:d}=i.params,{rows:c,fill:p}=i.params.grid;let u,h,m;if("row"===p&&o>1){const s=Math.floor(e/(o*c)),a=e-c*o*s,i=0===s?o:Math.min(Math.ceil((n-s*c*o)/c),o);m=Math.floor(a/i),h=a-m*i+s*o,u=h+m*t/c,r.css({"-webkit-order":u,order:u})}else"column"===p?(h=Math.floor(e/c),m=e-h*c,(h>a||h===a&&m===c-1)&&(m+=1,m>=c&&(m=0,h+=1))):(m=Math.floor(e/s),h=e-m*s);r.css(l("margin-top"),0!==m?d&&`${d}px`:"")},updateWrapperSize:(e,s,a)=>{const{spaceBetween:r,centeredSlides:n,roundLengths:l}=i.params,{rows:o}=i.params.grid;if(i.virtualSize=(e+r)*t,i.virtualSize=Math.ceil(i.virtualSize/o)-r,i.$wrapperEl.css({[a("width")]:`${i.virtualSize+r}px`}),n){s.splice(0,s.length);const e=[];for(let t=0;t<s.length;t+=1){let a=s[t];l&&(a=Math.floor(a)),s[t]<i.virtualSize+s[0]&&e.push(a)}s.push(...e)}}}},function(e){let{swiper:t}=e;Object.assign(t,{appendSlide:K.bind(t),prependSlide:Z.bind(t),addSlide:Q.bind(t),removeSlide:J.bind(t),removeAllSlides:ee.bind(t)})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1,transformEl:null}}),te({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a<e.length;a+=1){const e=t.slides.eq(a);let i=-e[0].swiperSlideOffset;t.params.virtualTranslate||(i-=t.translate);let r=0;t.isHorizontal()||(r=i,i=0);const n=t.params.fadeEffect.crossFade?Math.max(1-Math.abs(e[0].progress),0):1+Math.min(Math.max(e[0].progress,-1),0);se(s,e).css({opacity:n}).transform(`translate3d(${i}px, ${r}px, 0px)`)}},setTransition:e=>{const{transformEl:s}=t.params.fadeEffect;(s?t.slides.find(s):t.slides).transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),i=s?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===a.length&&(a=d(`<div class="swiper-slide-shadow-${s?"left":"top"}"></div>`),e.append(a)),0===i.length&&(i=d(`<div class="swiper-slide-shadow-${s?"right":"bottom"}"></div>`),e.append(i)),a.length&&(a[0].style.opacity=Math.max(-t,0)),i.length&&(i[0].style.opacity=Math.max(t,0))};te({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{$el:e,$wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:c}=t,p=t.params.cubeEffect,u=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let m,f=0;p.shadow&&(u?(m=s.find(".swiper-cube-shadow"),0===m.length&&(m=d('<div class="swiper-cube-shadow"></div>'),s.append(m)),m.css({height:`${r}px`})):(m=e.find(".swiper-cube-shadow"),0===m.length&&(m=d('<div class="swiper-cube-shadow"></div>'),e.append(m))));for(let e=0;e<a.length;e+=1){const t=a.eq(e);let s=e;h&&(s=parseInt(t.attr("data-swiper-slide-index"),10));let r=90*s,n=Math.floor(r/360);l&&(r=-r,n=Math.floor(-r/360));const d=Math.max(Math.min(t[0].progress,1),-1);let c=0,m=0,g=0;s%4==0?(c=4*-n*o,g=0):(s-1)%4==0?(c=0,g=4*-n*o):(s-2)%4==0?(c=o+4*n*o,g=o):(s-3)%4==0&&(c=-o,g=3*o+4*o*n),l&&(c=-c),u||(m=c,c=0);const v=`rotateX(${u?0:-r}deg) rotateY(${u?r:0}deg) translate3d(${c}px, ${m}px, ${g}px)`;d<=1&&d>-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.transform(v),p.slideShadows&&i(t,d,u)}if(s.css({"-webkit-transform-origin":`50% 50% -${o/2}px`,"transform-origin":`50% 50% -${o/2}px`}),p.shadow)if(u)m.transform(`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${p.shadowScale})`);else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;m.transform(`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`)}const g=c.isSafari||c.isWebView?-o/2:0;s.transform(`translate3d(0px,0,${g}px) rotateX(${t.isHorizontal()?0:f}deg) rotateY(${t.isHorizontal()?-f:0}deg)`),s[0].style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{$el:s,slides:a}=t;a.transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),t.params.cubeEffect.shadow&&!t.isHorizontal()&&s.find(".swiper-cube-shadow").transition(e)},recreateShadows:()=>{const e=t.isHorizontal();t.slides.each((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(d(t),s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0,transformEl:null}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.find(".swiper-slide-shadow-left"):e.find(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.find(".swiper-slide-shadow-right"):e.find(".swiper-slide-shadow-bottom");0===i.length&&(i=ie(a,e,t.isHorizontal()?"left":"top")),0===r.length&&(r=ie(a,e,t.isHorizontal()?"right":"bottom")),i.length&&(i[0].style.opacity=Math.max(-s,0)),r.length&&(r[0].style.opacity=Math.max(s,0))};te({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r<e.length;r+=1){const n=e.eq(r);let l=n[0].progress;t.params.flipEffect.limitRotation&&(l=Math.max(Math.min(n[0].progress,1),-1));const o=n[0].swiperSlideOffset;let d=-180*l,c=0,p=t.params.cssMode?-o-t.translate:-o,u=0;t.isHorizontal()?s&&(d=-d):(u=p,p=0,c=-d,d=0),n[0].style.zIndex=-Math.abs(Math.round(l))+e.length,a.slideShadows&&i(n,l,a);const h=`translate3d(${p}px, ${u}px, 0px) rotateX(${c}deg) rotateY(${d}deg)`;se(a,n).transform(h)}},setTransition:e=>{const{transformEl:s}=t.params.flipEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e),ae({swiper:t,duration:e,transformEl:s})},recreateShadows:()=>{const e=t.params.flipEffect;t.slides.each((s=>{const a=d(s);let r=a[0].progress;t.params.flipEffect.limitRotation&&(r=Math.max(Math.min(s.progress,1),-1)),i(a,r,e)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0,transformEl:null}}),te({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e<t;e+=1){const t=a.eq(e),s=i[e],l=(o-t[0].swiperSlideOffset-s/2)/s,p="function"==typeof r.modifier?r.modifier(l):l*r.modifier;let u=n?d*p:0,h=n?0:d*p,m=-c*Math.abs(p),f=r.stretch;"string"==typeof f&&-1!==f.indexOf("%")&&(f=parseFloat(r.stretch)/100*s);let g=n?0:f*p,v=n?f*p:0,w=1-(1-r.scale)*Math.abs(p);Math.abs(v)<.001&&(v=0),Math.abs(g)<.001&&(g=0),Math.abs(m)<.001&&(m=0),Math.abs(u)<.001&&(u=0),Math.abs(h)<.001&&(h=0),Math.abs(w)<.001&&(w=0);const b=`translate3d(${v}px,${g}px,${m}px) rotateX(${h}deg) rotateY(${u}deg) scale(${w})`;if(se(r,t).transform(b),t[0].style.zIndex=1-Math.abs(Math.round(p)),r.slideShadows){let e=n?t.find(".swiper-slide-shadow-left"):t.find(".swiper-slide-shadow-top"),s=n?t.find(".swiper-slide-shadow-right"):t.find(".swiper-slide-shadow-bottom");0===e.length&&(e=ie(r,t,n?"left":"top")),0===s.length&&(s=ie(r,t,n?"right":"bottom")),e.length&&(e[0].style.opacity=p>0?p:0),s.length&&(s[0].style.opacity=-p>0?-p:0)}}},setTransition:e=>{const{transformEl:s}=t.params.coverflowEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").transition(e)},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{transformEl:null,limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;te({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,$wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.transform(`translateX(calc(50% - ${e}px))`)}for(let s=0;s<e.length;s+=1){const a=e.eq(s),o=a[0].progress,d=Math.min(Math.max(a[0].progress,-r.limitProgress),r.limitProgress);let c=d;l||(c=Math.min(Math.max(a[0].originalProgress,-r.limitProgress),r.limitProgress));const p=a[0].swiperSlideOffset,u=[t.params.cssMode?-p-t.translate:-p,0,0],h=[0,0,0];let m=!1;t.isHorizontal()||(u[1]=u[0],u[0]=0);
11342let f={translate:[0,0,0],rotate:[0,0,0],scale:1,opacity:1};d<0?(f=r.next,m=!0):d>0&&(f=r.prev,m=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),h.forEach(((e,t)=>{h[t]=f.rotate[t]*Math.abs(d*n)})),a[0].style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${h[0]}deg) rotateY(${h[1]}deg) rotateZ(${h[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,x=`translate3d(${g}) ${v} ${w}`;if(m&&f.shadow||!m){let e=a.children(".swiper-slide-shadow");if(0===e.length&&f.shadow&&(e=ie(r,a)),e.length){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e[0].style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const y=se(r,a);y.transform(x).css({opacity:b}),f.origin&&y.css("transform-origin",f.origin)}},setTransition:e=>{const{transformEl:s}=t.params.creativeEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,transformEl:null,rotate:!0}}),te({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l<e.length;l+=1){const o=e.eq(l),d=o[0].progress,c=Math.min(Math.max(d,-4),4);let p=o[0].swiperSlideOffset;t.params.centeredSlides&&!t.params.cssMode&&t.$wrapperEl.transform(`translateX(${t.minTranslate()}px)`),t.params.centeredSlides&&t.params.cssMode&&(p-=e[0].swiperSlideOffset);let u=t.params.cssMode?-p-t.translate:-p,h=0;const m=-100*Math.abs(c);let f=1,g=-2*c,v=8-.75*Math.abs(c);const w=t.virtual&&t.params.virtual.enabled?t.virtual.from+l:l,b=(w===s||w===s-1)&&c>0&&c<1&&(r||t.params.cssMode)&&n<i,x=(w===s||w===s+1)&&c<0&&c>-1&&(r||t.params.cssMode)&&n>i;if(b||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,h=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=h;h=u,u=e}const y=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),E=`\n translate3d(${u}, ${h}, ${m}px)\n rotateZ(${a.rotate?g:0}deg)\n scale(${y})\n `;if(a.slideShadows){let e=o.find(".swiper-slide-shadow");0===e.length&&(e=ie(a,o)),e.length&&(e[0].style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o[0].style.zIndex=-Math.abs(Math.round(d))+e.length;se(a,o).transform(E)}},setTransition:e=>{const{transformEl:s}=t.params.cardsEffect;(s?t.slides.find(s):t.slides).transition(e).find(".swiper-slide-shadow").transition(e),ae({swiper:t,duration:e,transformEl:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return V.use(re),V})); 11343/*! 11344 * Typer.js v0.1.0 11345 * https://unpkg.com/[email protected]/typer.js 11346 */ 11347var Typer = function(element) { 11348 this.element = element; 11349 var delim = element.dataset.delim || ","; 11350 var words = element.dataset.words || "override these,sample typing"; 11351 this.words = words.split(delim).filter((v) => v); // non empty words 11352 this.delayVariance = parseInt(element.dataset.delayVariance) || 0; 11353 this.delay = parseInt(element.dataset.delay) || 200; 11354 this.loop = element.dataset.loop || "true"; 11355 if (this.loop === "false" ) { this.loop = 1 } 11356 this.deleteDelay = element.dataset.deletedelay || element.dataset.deleteDelay || 800; 11357 11358 this.progress = { word: 0, char: 0, building: true, looped: 0 }; 11359 this.typing = true; 11360 11361 var colors = element.dataset.colors || "black"; 11362 this.colors = colors.split(","); 11363 this.element.style.color = this.colors[0]; 11364 this.colorIndex = 0; 11365 11366 this.doTyping(); 11367}; 11368 11369Typer.prototype.start = function() { 11370 if (!this.typing) { 11371 this.typing = true; 11372 this.doTyping(); 11373 } 11374}; 11375Typer.prototype.stop = function() { 11376 this.typing = false; 11377}; 11378Typer.prototype.doTyping = function() { 11379 var e = this.element; 11380 var p = this.progress; 11381 var w = p.word; 11382 var c = p.char; 11383 var currentDisplay = [...this.words[w]].slice(0, c).join(""); 11384 var atWordEnd; 11385 var timeoutDelay = ((2 * Math.random() - 1) * this.delayVariance) + this.delay; 11386 if (this.cursor) { 11387 this.cursor.element.style.opacity = "1"; 11388 this.cursor.on = true; 11389 clearInterval(this.cursor.interval); 11390 this.cursor.interval = setInterval(() => this.cursor.updateBlinkState(), 400); 11391 } 11392 11393 e.innerHTML = currentDisplay; 11394 11395 if (p.building) { 11396 atWordEnd = p.char === this.words[w].length; 11397 if (atWordEnd) { 11398 p.building = false;
11399 } else { 11400 p.char += 1; 11401 } 11402 } else { 11403 if (p.char === 0) { 11404 p.building = true; 11405 p.word = (p.word + 1) % this.words.length; 11406 this.colorIndex = (this.colorIndex + 1) % this.colors.length; 11407 this.element.style.color = this.colors[this.colorIndex]; 11408 } else { 11409 p.char -= 1; 11410 } 11411 } 11412 11413 if (p.word === this.words.length - 1) { 11414 p.looped += 1; 11415 } 11416 11417 if (!p.building && this.loop <= p.looped){ 11418 this.typing = false; 11419 } 11420 11421 setTimeout(() => { 11422 if (this.typing) { this.doTyping() }; 11423 }, atWordEnd ? this.deleteDelay : timeoutDelay); 11424}; 11425 11426var Cursor = function(element) { 11427 this.element = element; 11428 this.cursorDisplay = element.dataset.cursordisplay || element.dataset.cursorDisplay || "|"; 11429 element.innerHTML = this.cursorDisplay; 11430 this.on = true; 11431 element.style.transition = "all 0.1s"; 11432 this.interval = setInterval(() => this.updateBlinkState(), 400); 11433} 11434Cursor.prototype.updateBlinkState = function() { 11435 if (this.on) { 11436 this.element.style.opacity = "0"; 11437 this.on = false; 11438 } else { 11439 this.element.style.opacity = "1"; 11440 this.on = true; 11441 } 11442} 11443 11444function TyperSetup() { 11445 var typers = {}; 11446 for (let e of document.getElementsByClassName("typer")) { 11447 typers[e.id] = new Typer(e); 11448 } 11449 for (let e of document.getElementsByClassName("typer-stop")) { 11450 let owner = typers[e.dataset.owner]; 11451 e.onclick = () => owner.stop(); 11452 } 11453 for (let e of document.getElementsByClassName("typer-start")) { 11454 let owner = typers[e.dataset.owner]; 11455 e.onclick = () => owner.start(); 11456 } 11457 for (let e of document.getElementsByClassName("cursor")) { 11458 let t = new Cursor(e); 11459 t.owner = typers[e.dataset.owner]; 11460 //t.owner.cursor = t; 11461 } 11462} 11463 11464TyperSetup();
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.