vendor: 3,595 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4/******/ 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7/******/ 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) { 10/******/ return installedModules[moduleId].exports; 11/******/ } 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ i: moduleId, 15/******/ l: false, 16/******/ exports: {} 17/******/ }; 18/******/ 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21/******/ 22/******/ // Flag the module as loaded 23/******/ module.l = true; 24/******/ 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28/******/ 29/******/ 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32/******/ 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35/******/ 36/******/ // define getter function for harmony exports 37/******/ __webpack_require__.d = function(exports, name, getter) { 38/******/ if(!__webpack_require__.o(exports, name)) { 39/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 40/******/ } 41/******/ }; 42/******/ 43/******/ // define __esModule on exports 44/******/ __webpack_require__.r = function(exports) { 45/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 46/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 47/******/ } 48/******/ Object.defineProperty(exports, '__esModule', { value: true }); 49/******/ }; 50/******/ 51/******/ // create a fake namespace object 52/******/ // mode & 1: value is a module id, require it 53/******/ // mode & 2: merge all properties of value into the ns 54/******/ // mode & 4: return value when already ns object 55/******/ // mode & 8|1: behave like require 56/******/ __webpack_require__.t = function(value, mode) { 57/******/ if(mode & 1) value = __webpack_require__(value); 58/******/ if(mode & 8) return value; 59/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 60/******/ var ns = Object.create(null); 61/******/ __webpack_require__.r(ns); 62/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 63/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 64/******/ return ns; 65/******/ }; 66/******/ 67/******/ // getDefaultExport function for compatibility with non-harmony modules 68/******/ __webpack_require__.n = function(module) { 69/******/ var getter = module && module.__esModule ? 70/******/ function getDefault() { return module['default']; } : 71/******/ function getModuleExports() { return module; }; 72/******/ __webpack_require__.d(getter, 'a', getter); 73/******/ return getter; 74/******/ }; 75/******/ 76/******/ // Object.prototype.hasOwnProperty.call 77/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 78/******/ 79/******/ // __webpack_public_path__ 80/******/ __webpack_require__.p = "/"; 81/******/ 82/******/ 83/******/ // Load entry module and return exports 84/******/ return __webpack_require__(__webpack_require__.s = 0); 85/******/ }) 86/************************************************************************/ 87/******/ ({ 88
89/***/ "./assets/js/components/Events.js": 90/*!****************************************!*\ 91 !*** ./assets/js/components/Events.js ***! 92 \****************************************/ 93/*! exports provided: default */ 94/***/ (function(module, __webpack_exports__, __webpack_require__) { 95 96"use strict"; 97__webpack_require__.r(__webpack_exports__); 98function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 99function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 100function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 101function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 102function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 103function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 104var Events = /*#__PURE__*/function () { 105 function Events() { 106 _classCallCheck(this, Events); 107 this.$ = {}; 108 if (document.querySelector('.events')) { 109 this.initDOM(); 110 this.initParams(); 111 if (this.$.eventsItems) this.initEvents(); 112 } 113 } 114 _createClass(Events, [{ 115 key: "initDOM", 116 value: function initDOM() { 117 this.$.events = document.querySelector('.events'); 118 this.$.eventContainer = this.$.events.querySelector('.events__container'); 119 this.$.eventContent = this.$.events.querySelector('.events__content'); 120 this.$.eventImage = this.$.events.querySelector('.events__image-actual'); 121 this.$.eventImageNew = this.$.events.querySelector('.events__image-new'); 122 this.$.eventsItems = this.$.events.querySelectorAll('.events__item'); 123 this.$.eventsNumbers = this.$.events.querySelectorAll('.events__navigation-item'); 124 } 125 }, { 126 key: "initParams", 127 value: function initParams() { 128 this.actualEvent = 1; 129 this.numberEvents = this.$.eventsItems.length; 130 } 131 }, { 132 key: "changeSlide", 133 value: function changeSlide() { 134 var _this = this; 135 this.$.eventContainer.dataset.color = this.$.events.querySelector(".events__item:nth-child(".concat(this.actualEvent + 1, ")")).dataset.color; 136 this.$.eventImageNew.classList.remove('events__image-new--active'); 137 this.$.events.querySelector('.events__navigation-progress-fill--active').classList.remove('events__navigation-progress-fill--active'); 138 this.$.eventContent.style.transition = 'opacity 0.5s ease-in-out'; 139 this.$.eventContent.style.opacity = 0.5; 140 setTimeout(function () { 141 _this.$.eventContent.innerHTML = _this.$.events.querySelector(".events__item:nth-child(".concat(_this.actualEvent + 1, ") .content")).innerHTML; 142 _this.$.eventContent.style.transition = 'opacity 0.2s ease-in-out'; 143 _this.$.eventContent.style.opacity = 1; 144 }, 500); 145 this.$.events.querySelector(".events__navigation-item:nth-child(".concat(this.actualEvent + 1, ") .events__navigation-progress-fill")).classList.add('events__navigation-progress-fill--active'); 146 this.$.eventImageNew.innerHTML = this.$.events.querySelector(".events__item:nth-child(".concat(this.actualEvent + 1, ") .image")).innerHTML; 147 setTimeout(function () { 148 _this.$.eventImageNew.classList.add('events__image-new--active'); 149 }, 100); 150 if (this.actualEvent === this.numberEvents - 1) { 151 setTimeout(function () { 152 _this.$.eventImage.innerHTML = _this.$.events.querySelector(".events__item:nth-child(".concat(_this.actualEvent + 1, ") .image")).innerHTML; 153 _this.actualEvent = 0; 154 }, 1100); 155 } else { 156 setTimeout(function () { 157 _this.$.eventImage.innerHTML = _this.$.events.querySelector(".events__item:nth-child(".concat(_this.actualEvent + 1, ") .image")).innerHTML; 158 _this.actualEvent += 1; 159 }, 1100); 160 } 161 } 162 }, { 163 key: "initEvents", 164 value: function initEvents() { 165 var _this2 = this; 166 this.$.events.querySelector('.events__navigation-progress-fill').classList.add('events__navigation-progress-fill--active');
167 this.$.eventsNumbers.forEach(function (number, index) { 168 number.addEventListener('click', function () { 169 clearInterval(_this2.interval); 170 _this2.actualEvent = index; 171 _this2.$.eventImageNew.classList.remove('events__image-new--active'); 172 _this2.$.events.querySelector('.events__navigation-progress-fill--active').classList.remove('events__navigation-progress-fill--active'); 173 _this2.$.eventContent.innerHTML = _this2.$.events.querySelector(".events__item:nth-child(".concat(_this2.actualEvent + 1, ") .content")).innerHTML; 174 _this2.$.events.querySelector(".events__navigation-item:nth-child(".concat(_this2.actualEvent + 1, ") .events__navigation-progress-fill")).classList.add('events__navigation-progress-fill--active'); 175 _this2.$.eventImageNew.innerHTML = _this2.$.events.querySelector(".events__item:nth-child(".concat(_this2.actualEvent + 1, ") .image")).innerHTML; 176 setTimeout(function () { 177 _this2.$.eventImageNew.classList.add('events__image-new--active'); 178 _this2.changeSlide(); 179 _this2.interval = setInterval(function () { 180 _this2.changeSlide(); 181 }, 5000); 182 }, 100); 183 setTimeout(function () { 184 _this2.$.eventImage.innerHTML = _this2.$.events.querySelector(".events__item:nth-child(".concat(_this2.actualEvent + 1, ") .image")).innerHTML; 185 }, 1100); 186 }); 187 }); 188 this.interval = setInterval(function () { 189 _this2.changeSlide(); 190 }, 5000); 191 } 192 }]); 193 return Events; 194}(); 195/* harmony default export */ __webpack_exports__["default"] = (new Events()); 196 197/***/ }), 198
199/***/ "./assets/js/components/EventsList.js": 200/*!********************************************!*\ 201 !*** ./assets/js/components/EventsList.js ***! 202 \********************************************/ 203/*! exports provided: default */ 204/***/ (function(module, __webpack_exports__, __webpack_require__) { 205 206"use strict"; 207__webpack_require__.r(__webpack_exports__); 208/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js"); 209function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 210function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 211function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 212function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 213function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 214function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 215 216var EventsList = /*#__PURE__*/function () { 217 function EventsList() { 218 _classCallCheck(this, EventsList); 219 this.$ = {}; 220 this.initDOM(); 221 if (this.$.eventsPage) this.initEvents(); 222 } 223 _createClass(EventsList, [{ 224 key: "initDOM", 225 value: function initDOM() { 226 this.$.eventsPage = document.querySelector('.events-page'); 227 if (this.$.eventsPage) this.$.lists = this.$.eventsPage.querySelectorAll('.list'); 228 } 229 }, { 230 key: "initEvents", 231 value: function initEvents() { 232 this.$.lists.forEach(function (list) { 233 var carousel = list.querySelector('.swiper'); 234 new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](carousel, { 235 modules: [swiper__WEBPACK_IMPORTED_MODULE_0__["Navigation"], swiper__WEBPACK_IMPORTED_MODULE_0__["Pagination"]], 236 loop: false, 237 spaceBetween: 40, 238 slidesPerView: 1, 239 pagination: { 240 el: '.carousel__pagination', 241 type: 'bullets', 242 clickable: true, 243 bulletClass: 'carousel__pagination-bullet', 244 bulletActiveClass: 'carousel__pagination-bullet--active' 245 }, 246 navigation: { 247 nextEl: '.carousel__navigation--right', 248 prevEl: '.carousel__navigation--left' 249 }, 250 breakpoints: { 251 1280: { 252 slidesPerView: 3.2 253 }, 254 1920: { 255 slidesPerView: 4.2 256 } 257 } 258 }); 259 }); 260 } 261 }]); 262 return EventsList; 263}(); 264/* harmony default export */ __webpack_exports__["default"] = (new EventsList()); 265 266/***/ }), 267
268/***/ "./assets/js/components/Footer.js": 269/*!****************************************!*\ 270 !*** ./assets/js/components/Footer.js ***! 271 \****************************************/ 272/*! exports provided: default */ 273/***/ (function(module, __webpack_exports__, __webpack_require__) { 274 275"use strict"; 276__webpack_require__.r(__webpack_exports__); 277/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); 278/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 279function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 280function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 281function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 282function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 283function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 284function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 285 286var Footer = /*#__PURE__*/function () { 287 function Footer() { 288 _classCallCheck(this, Footer); 289 this.$ = {}; 290 this.$.footer = document.querySelector('.footer'); 291 if (this.$.footer) { 292 this.$.citations = this.$.footer.querySelectorAll('.footer__citations-content .citation'); 293 if (this.$.citations) { 294 this.initDOM(); 295 this.initParams(); 296 this.citations(); 297 } 298 } 299 this.initNewsletterModal(); 300 } 301 _createClass(Footer, [{ 302 key: "initDOM", 303 value: function initDOM() { 304 this.$.citationTitleBefore = this.$.footer.querySelector('.footer__citation-title .before p'); 305 this.$.citationTitleActual = this.$.footer.querySelector('.footer__citation-title .actual p'); 306 this.$.citationAuthorBefore = this.$.footer.querySelector('.footer__citation-author .before'); 307 this.$.citationAuthorActual = this.$.footer.querySelector('.footer__citation-author .actual'); 308 this.$.citation = document.querySelector('.footer__citation'); 309 } 310 }, { 311 key: "initParams", 312 value: function initParams() { 313 this.actualCitation = 0; 314 this.numberCitations = this.$.citations.length; 315 } 316 }, { 317 key: "citations", 318 value: function citations() { 319 var _this = this; 320 setInterval(function () { 321 if (_this.actualCitation === _this.numberCitations - 1) { 322 _this.$.citationTitleBefore.innerHTML = _this.$.citations[0].querySelector('.title').innerHTML; 323 _this.$.citationTitleActual.innerHTML = _this.$.citations[_this.numberCitations - 1].querySelector('.title').innerHTML; 324 _this.$.citationAuthorBefore.innerHTML = _this.$.citations[0].querySelector('.author').innerHTML; 325 _this.$.citationAuthorActual.innerHTML = _this.$.citations[_this.numberCitations - 1].querySelector('.author').innerHTML; 326 _this.$.citation.classList.add('footer__citation--active'); 327 setTimeout(function () { 328 _this.$.citationTitleBefore.innerHTML = _this.$.citations[0].querySelector('.title').innerHTML; 329 _this.$.citationTitleActual.innerHTML = _this.$.citations[0].querySelector('.title').innerHTML; 330 _this.$.citationAuthorBefore.innerHTML = _this.$.citations[0].querySelector('.author').innerHTML; 331 _this.$.citationAuthorActual.innerHTML = _this.$.citations[0].querySelector('.author').innerHTML; 332 _this.$.citation.classList.remove('footer__citation--active'); 333 _this.actualCitation = 0; 334 }, 300); 335 } else { 336 _this.$.citationTitleBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.title').innerHTML; 337 _this.$.citationTitleActual.innerHTML = _this.$.citations[_this.actualCitation].querySelector('.title').innerHTML; 338 _this.$.citationAuthorBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.author').innerHTML; 339 _this.$.citationAuthorActual.innerHTML = _this.$.citations[_this.actualCitation].querySelector('.author').innerHTML; 340 _this.$.citation.classList.add('footer__citation--active'); 341 setTimeout(function () { 342 _this.$.citationTitleBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.title').innerHTML; 343 _this.$.citationTitleActual.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.title').innerHTML; 344 _this.$.citationAuthorBefore.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.author').innerHTML; 345 _this.$.citationAuthorActual.innerHTML = _this.$.citations[_this.actualCitation + 1].querySelector('.author').innerHTML; 346 _this.$.citation.classList.remove('footer__citation--active'); 347 _this.actualCitation += 1; 348 }, 300); 349 } 350 }, 3000); 351 } 352 }, { 353 key: "initNewsletterModal", 354 value: function initNewsletterModal() { 355 var label = document.querySelector('.newsletter-modal .gfield_label'); 356 var input = document.querySelector('.newsletter-modal .ginput_container input'); 357 var inputHidden = document.querySelector('.newsletter-modal .ginput_container input[type=hidden]'); 358 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('load', function () { 359 if (document.querySelector('.newsletter-modal--open')) { 360 jquery__WEBPACK_IMPORTED_MODULE_0___default()('#modalNewsletter').modal('show'); 361 } 362 }); 363 if (label && input) { 364 label.innerText = "Email*"; 365 label.setAttribute('for', 'newsletter-modal-email'); 366 input.setAttribute('id', 'newsletter-modal-email'); 367 } 368 if (inputHidden) { 369 inputHidden.setAttribute('value', 1); 370 } 371 } 372 }]); 373 return Footer; 374}(); 375/* harmony default export */ __webpack_exports__["default"] = (new Footer()); 376 377/***/ }), 378
379/***/ "./assets/js/components/Header.js": 380/*!****************************************!*\ 381 !*** ./assets/js/components/Header.js ***! 382 \****************************************/ 383/*! exports provided: default */ 384/***/ (function(module, __webpack_exports__, __webpack_require__) { 385 386"use strict"; 387__webpack_require__.r(__webpack_exports__); 388function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 389function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 390function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 391function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 392function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 393function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 394var Header = /*#__PURE__*/function () { 395 function Header() { 396 _classCallCheck(this, Header); 397 this.$ = {}; 398 if (document.querySelector('.header')) { 399 this.initDocument(); 400 this.navigation(); 401 this.search(); 402 } 403 } 404 _createClass(Header, [{ 405 key: "initDocument", 406 value: function initDocument() { 407 this.$.header = document.querySelector('.header'); 408 this.$.navigation = this.$.header.querySelector('.header__nav'); 409 this.$.navigationItems = this.$.navigation.querySelectorAll('a'); 410 this.$.search = this.$.header.querySelector('.header__search'); 411 this.$.searchInput = this.$.header.querySelector('input'); 412 this.$.searchButton = this.$.search.querySelector('.header__search-button'); 413 this.$.burger = this.$.header.querySelector('.header__burger'); 414 this.$.close = this.$.header.querySelector('.header__nav-close'); 415 } 416 }, { 417 key: "navigation", 418 value: function navigation() { 419 var _this = this; 420 if (window.matchMedia('(max-width: 1279px)').matches) { 421 this.$.burger.addEventListener('click', function () { 422 _this.$.navigation.classList.add('header__nav--open'); 423 _this.$.header.classList.add('header--open'); 424 document.body.style.overflow = 'hidden'; 425 }); 426 this.$.close.addEventListener('click', function () { 427 _this.$.navigation.classList.remove('header__nav--open'); 428 _this.$.header.classList.remove('header--open'); 429 document.body.style.overflow = 'auto'; 430 }); 431 } 432 } 433 }, { 434 key: "search", 435 value: function search() { 436 var _this2 = this; 437 this.$.searchButton.addEventListener('click', function (event) { 438 if (!_this2.$.search.classList.contains('header__search--open')) { 439 event.preventDefault(); 440 _this2.$.search.classList.add('header__search--open'); 441 _this2.$.searchButton.setAttribute('type', 'submit'); 442 _this2.$.searchInput.focus(); 443 } 444 }); 445 document.addEventListener('click', function (event) { 446 if (!_this2.$.search.contains(event.target) && !_this2.$.searchInput.value) { 447 _this2.$.search.classList.remove('header__search--open'); 448 _this2.$.searchButton.setAttribute('type', 'button'); 449 } 450 }); 451 } 452 }]); 453 return Header; 454}(); 455/* harmony default export */ __webpack_exports__["default"] = (new Header()); 456 457/***/ }), 458
459/***/ "./assets/js/components/NewsletterCategories.js": 460/*!******************************************************!*\ 461 !*** ./assets/js/components/NewsletterCategories.js ***! 462 \******************************************************/ 463/*! exports provided: default */ 464/***/ (function(module, __webpack_exports__, __webpack_require__) { 465 466"use strict"; 467__webpack_require__.r(__webpack_exports__); 468function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 469function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 470function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 471function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 472function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 473function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 474var NewsletterCategories = /*#__PURE__*/function () { 475 function NewsletterCategories() { 476 _classCallCheck(this, NewsletterCategories); 477 this.$ = {}; 478 this.initDOM(); 479 if (this.$.links) this.setLinks(); 480 } 481 _createClass(NewsletterCategories, [{ 482 key: "initDOM", 483 value: function initDOM() { 484 this.$.nc = document.querySelector('.newsletter-categories'); 485 if (this.$.nc) this.$.links = this.$.nc.querySelectorAll('.newsletter-categories__link'); 486 } 487 }, { 488 key: "setLinks", 489 value: function setLinks() { 490 this.$.links.forEach(function (item) { 491 var link = item.querySelector('a'); 492 link.addEventListener('mouseover', function () { 493 link.classList.remove('mouseout'); 494 link.classList.add('mouseover'); 495 }); 496 link.addEventListener('mouseout', function () { 497 link.classList.add('mouseout'); 498 link.classList.remove('mouseover'); 499 }); 500 }); 501 } 502 }]); 503 return NewsletterCategories; 504}(); 505/* harmony default export */ __webpack_exports__["default"] = (new NewsletterCategories()); 506 507/***/ }), 508
509/***/ "./assets/js/components/Partners.js": 510/*!******************************************!*\ 511 !*** ./assets/js/components/Partners.js ***! 512 \******************************************/ 513/*! exports provided: default */ 514/***/ (function(module, __webpack_exports__, __webpack_require__) { 515 516"use strict"; 517__webpack_require__.r(__webpack_exports__); 518/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js"); 519function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 520function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 521function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 522function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 523function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 524function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 525 526var Partners = /*#__PURE__*/function () { 527 function Partners() { 528 _classCallCheck(this, Partners); 529 this.$ = {}; 530 this.initDOM(); 531 if (this.$.partners) this.initPartners(); 532 } 533 _createClass(Partners, [{ 534 key: "initDOM", 535 value: function initDOM() { 536 this.$.partners = document.querySelector('.partners'); 537 } 538 }, { 539 key: "initPartners", 540 value: function initPartners() { 541 new swiper__WEBPACK_IMPORTED_MODULE_0__["default"]('.partners .swiper', { 542 modules: [swiper__WEBPACK_IMPORTED_MODULE_0__["Navigation"], swiper__WEBPACK_IMPORTED_MODULE_0__["Pagination"]], 543 loop: true, 544 slidesPerView: 2, 545 pagination: { 546 el: '.partners__pagination', 547 type: 'bullets', 548 clickable: true, 549 bulletClass: 'partners__pagination-bullet', 550 bulletActiveClass: 'partners__pagination-bullet--active' 551 }, 552 navigation: { 553 nextEl: '.partners__navigation--right', 554 prevEl: '.partners__navigation--left' 555 }, 556 breakpoints: { 557 834: { 558 slidesPerView: 4, 559 slidesPerGroup: 2 560 }, 561 1280: { 562 slidesPerView: 6, 563 slidesPerGroup: 3 564 } 565 } 566 }); 567 } 568 }]); 569 return Partners; 570}(); 571/* harmony default export */ __webpack_exports__["default"] = (new Partners()); 572 573/***/ }), 574
575/***/ "./assets/js/components/ResourcesList.js": 576/*!***********************************************!*\ 577 !*** ./assets/js/components/ResourcesList.js ***! 578 \***********************************************/ 579/*! exports provided: default */ 580/***/ (function(module, __webpack_exports__, __webpack_require__) { 581 582"use strict"; 583__webpack_require__.r(__webpack_exports__); 584/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.esm.js"); 585function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } 586function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 587function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } 588function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 589function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } 590function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } 591 592var Resources = /*#__PURE__*/function () { 593 function Resources() { 594 _classCallCheck(this, Resources); 595 this.$ = {}; 596 this.initDOM(); 597 if (this.$.resourcesCategories) this.initResources(); 598 } 599 _createClass(Resources, [{ 600 key: "initDOM", 601 value: function initDOM() { 602 this.$.resourcesCategories = document.querySelectorAll('.resources .list__category'); 603 } 604 }, { 605 key: "initResources", 606 value: function initResources() { 607 this.$.resourcesCategories.forEach(function (category) { 608 var carousel = category.querySelector('.swiper'); 609 new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](carousel, { 610 modules: [swiper__WEBPACK_IMPORTED_MODULE_0__["Navigation"], swiper__WEBPACK_IMPORTED_MODULE_0__["Pagination"]], 611 loop: false, 612 spaceBetween: 40, 613 slidesPerView: 1.2, 614 pagination: { 615 el: '.carousel__pagination', 616 type: 'bullets', 617 clickable: true, 618 bulletClass: 'carousel__pagination-bullet', 619 bulletActiveClass: 'carousel__pagination-bullet--active' 620 }, 621 navigation: { 622 nextEl: '.carousel__navigation--right', 623 prevEl: '.carousel__navigation--left' 624 }, 625 breakpoints: { 626 1280: { 627 slidesPerView: 3.2 628 }, 629 1920: { 630 slidesPerView: 4.2 631 } 632 } 633 }); 634 }); 635 } 636 }]); 637 return Resources; 638}(); 639/* harmony default export */ __webpack_exports__["default"] = (new Resources()); 640 641/***/ }), 642
643/***/ "./assets/js/theme.js": 644/*!****************************!*\ 645 !*** ./assets/js/theme.js ***! 646 \****************************/ 647/*! no exports provided */ 648/***/ (function(module, __webpack_exports__, __webpack_require__) { 649 650"use strict"; 651__webpack_require__.r(__webpack_exports__); 652/* harmony import */ var bootstrap_dist_js_bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap/dist/js/bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js"); 653/* harmony import */ var bootstrap_dist_js_bootstrap__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(bootstrap_dist_js_bootstrap__WEBPACK_IMPORTED_MODULE_0__); 654/* harmony import */ var _components_Header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/Header */ "./assets/js/components/Header.js"); 655/* harmony import */ var _components_Footer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Footer */ "./assets/js/components/Footer.js"); 656/* harmony import */ var _components_NewsletterCategories__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/NewsletterCategories */ "./assets/js/components/NewsletterCategories.js"); 657/* harmony import */ var _components_Events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/Events */ "./assets/js/components/Events.js"); 658/* harmony import */ var _components_Partners__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/Partners */ "./assets/js/components/Partners.js"); 659/* harmony import */ var _components_ResourcesList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/ResourcesList */ "./assets/js/components/ResourcesList.js"); 660/* harmony import */ var _components_EventsList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/EventsList */ "./assets/js/components/EventsList.js"); 661/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! axios */ "./node_modules/axios/index.js"); 662/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); 663/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_9__); 664 665 666 667 668 669 670 671 672 673 674document.documentElement.style.setProperty('--scrollbar-width', "".concat(window.innerWidth - document.documentElement.clientWidth, "px")); 675var postLikes = document.querySelectorAll('.like-post'); 676if (postLikes) { 677 postLikes.forEach(function (postLike) { 678 postLike.addEventListener('click', function (e) { 679 var postId = postLike.dataset.post_id; 680 var url = postLike.dataset.url; 681 var formData = new FormData(); 682 formData.append('action', 'save_like'); 683 formData.append('postId', postId); 684 axios__WEBPACK_IMPORTED_MODULE_8__["default"].post(url, formData).then(function (_ref) { 685 var data = _ref.data; 686 data = data.data; 687 if (data.success) { 688 if (data.action == 'create') { 689 postLike.classList.add('active'); 690 } 691 if (data.action == 'delete') { 692 postLike.classList.remove('active'); 693 if (document.querySelector('.likes')) { 694 postLike.parentElement.parentElement.parentElement.remove(); 695 } 696 } 697 } 698 }); 699 }); 700 }); 701} 702var eventShare = document.querySelector('.event .content__shares'); 703if (eventShare) { 704 var top = eventShare.getBoundingClientRect().top + window.scrollY; 705 var left = eventShare.getBoundingClientRect().left; 706 eventShare.style.left = "".concat(left, "px"); 707 window.addEventListener('scroll', function () { 708 if (window.pageYOffset > top - 60) { 709 eventShare.classList.add('content__shares--fixed'); 710 } else { 711 eventShare.classList.remove('content__shares--fixed'); 712 } 713 }); 714} 715var likesFilters = document.querySelector('.account .likes__filters'); 716if (likesFilters) { 717 likesFilters.addEventListener('change', function () { 718 if (likesFilters.value == 'all') { 719 window.location.href = "".concat(window.location.protocol, "//").concat(window.location.host).concat(window.location.pathname); 720 } else { 721 window.location.href = "".concat(window.location.protocol, "//").concat(window.location.host).concat(window.location.pathname, "?type=").concat(likesFilters.value); 722 } 723 }); 724} 725var placeCommunity = document.querySelector('.home .community .place'); 726if (placeCommunity) { 727 placeCommunity.addEventListener('mouseover', function () { 728 placeCommunity.classList.add('mouseover'); 729 placeCommunity.classList.remove('mouseout'); 730 }); 731 placeCommunity.addEventListener('mouseout', function () { 732 placeCommunity.classList.remove('mouseover'); 733 placeCommunity.classList.add('mouseout'); 734 }); 735} 736var billsCommunity = document.querySelector('.home .community .bills'); 737if (billsCommunity) { 738 billsCommunity.addEventListener('mouseover', function () { 739 billsCommunity.classList.add('mouseover'); 740 billsCommunity.classList.remove('mouseout'); 741 }); 742 billsCommunity.addEventListener('mouseout', function () { 743 billsCommunity.classList.remove('mouseover'); 744 billsCommunity.classList.add('mouseout'); 745 }); 746} 747var trajectoireCommunity = document.querySelector('.home .community .trajectoire'); 748if (trajectoireCommunity) { 749 trajectoireCommunity.addEventListener('mouseover', function () { 750 trajectoireCommunity.classList.add('mouseover'); 751 trajectoireCommunity.classList.remove('mouseout'); 752 }); 753 trajectoireCommunity.addEventListener('mouseout', function () { 754 trajectoireCommunity.classList.remove('mouseover'); 755 trajectoireCommunity.classList.add('mouseout'); 756 }); 757} 758var loginButtons = document.querySelectorAll('.login-modal .content__switch-item'); 759if (loginButtons) { 760 loginButtons.forEach(function (button) { 761 button.addEventListener('click', function () { 762 if (button.dataset.open === 'login') { 763 document.querySelector('.login-modal__register').style.display = 'none'; 764 document.querySelector('.login-modal__login').style.display = 'block'; 765 } else { 766 document.querySelector('.login-modal__login').style.display = 'none'; 767 document.querySelector('.login-modal__register').style.display = 'block'; 768 } 769 }); 770 }); 771} 772jquery__WEBPACK_IMPORTED_MODULE_9___default()(window).on('load', function () {
773 if (document.querySelector('#errorModal')) jquery__WEBPACK_IMPORTED_MODULE_9___default()('#errorModal').modal('show'); 774}); 775var reviewsProduct = document.querySelectorAll('.product .reviews__item'); 776var viewMore = document.querySelector('.product .reviews__more'); 777if (reviewsProduct && viewMore) { 778 var numberReviews = reviewsProduct.length; 779 var numberVisible = 4; 780 viewMore.addEventListener('click', function () { 781 numberVisible += 4; 782 reviewsProduct.forEach(function (review, index) { 783 if (index < numberVisible) review.classList.add('reviews__item--visible'); 784 }); 785 if (numberVisible >= numberReviews) viewMore.remove(); 786 }); 787} 788window.addEventListener('load', function () { 789 setTimeout(function () { 790 var checkout = document.querySelector('.checkout-page'); 791 if (checkout) { 792 var addressHeight = document.querySelector('.address'); 793 var cartHeight = document.querySelector('.cart'); 794 var promo = document.querySelector('.promotion'); 795 if (addressHeight && cartHeight && promo) { 796 addressHeight = addressHeight.offsetHeight; 797 cartHeight = cartHeight.offsetHeight; 798 promo.style.transform = "translateY(-".concat(addressHeight - cartHeight, "px)"); 799 } 800 } 801 }, 1000); 802}); 803var setPassword = function setPassword(password) { 804 var indicator = document.createElement('div'); 805 indicator.innerHTML = "<div class=\"d-flex mt-5\">\n <div class=\"indicator indicator--number\">\n <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>
805\n <span>chiffre</span>\n </div>\n <div class=\"ml-5 indicator indicator--special\">\n <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n <span>caract\xE8re sp\xE9cial</span>\n </div>\n <div class=\"ml-5 indicator indicator--chars\">\n <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n <span>8 caract\xE8res</span>\n </div>\n <div class=\"ml-5 indicator indicator--lower\">\n <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n <span>minuscule</span>\n </div>\n <div class=\"ml-5 indicator indicator--upper\">\n <svg class=\"icon icon--small\"><use href=\"/wp-content/themes/vives/dist/images/sprite.svg#check\"/></svg>\n <span>majuscule</span>\n </div>\n</div>"; 806 password.parentElement.parentElement.appendChild(indicator); 807 password.addEventListener('input', function () { 808 // check contain number 809 if (!/[0-9]/.test(password.value)) { 810 document.querySelector('.indicator--number').classList.remove('indicator--active'); 811 } else { 812 document.querySelector('.indicator--number').classList.add('indicator--active'); 813 } 814 815 // check contain special char 816 if (!/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]+/.test(password.value)) { 817 document.querySelector('.indicator--special').classList.remove('indicator--active'); 818 } else { 819 document.querySelector('.indicator--special').classList.add('indicator--active'); 820 } 821 822 // check contain minimum 8 characters 823 if (password.value.length < 8) { 824 document.querySelector('.indicator--chars').classList.remove('indicator--active'); 825 } else { 826 document.querySelector('.indicator--chars').classList.add('indicator--active'); 827 } 828 829 // check contain lower 830 if (!/[a-z]/.test(password.value)) { 831 document.querySelector('.indicator--lower').classList.remove('indicator--active'); 832 } else { 833 document.querySelector('.indicator--lower').classList.add('indicator--active'); 834 } 835 836 // check contain upper 837 if (!/[A-Z]/.test(password.value)) { 838 document.querySelector('.indicator--upper').classList.remove('indicator--active'); 839 } else { 840 document.querySelector('.indicator--upper').classList.add('indicator--active'); 841 } 842 }); 843}; 844var password = document.querySelector('.inscription main input[type="password"]'); 845if (password && !password.closest('.login-password')) { 846 setPassword(password); 847} 848var passwordModal = document.querySelector('.login-modal input[type="password"]'); 849if (passwordModal) { 850 setPassword(passwordModal); 851} 852var accountEdit = document.querySelector('.woocommerce-edit-account'); 853if (accountEdit) { 854 var message = document.querySelector('.woocommerce-message'); 855 var error = document.querySelector('.woocommerce-error'); 856 if (message) { 857 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").prependTo(".woocommerce-EditAccountForm"); 858 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").css('display', 'block'); 859 } 860 if (error) { 861 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").prependTo(".woocommerce-EditAccountForm"); 862 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").css('display', 'block'); 863 } 864} 865var accountAdress = document.querySelector('.woocommerce-edit-address'); 866if (accountAdress) { 867 var _message = document.querySelector('.woocommerce-message'); 868 var _error = document.querySelector('.woocommerce-error'); 869 if (_message) { 870 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").prependTo(".woocommerce-a
870ddress-fields"); 871 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").css('display', 'block'); 872 } 873 if (_error) { 874 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").prependTo(".woocommerce-address-fields"); 875 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").css('display', 'block'); 876 } 877} 878var accountForgot = document.querySelector('.woocommerce-lost-password'); 879if (accountForgot) { 880 var _message2 = document.querySelector('.woocommerce-message'); 881 var _error2 = document.querySelector('.woocommerce-error'); 882 if (_message2) { 883 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").prependTo(".account.forgot .card"); 884 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-message").css('display', 'block'); 885 } 886 if (_error2) { 887 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").prependTo(".account.forgot .card"); 888 jquery__WEBPACK_IMPORTED_MODULE_9___default()(".woocommerce-error").css('display', 'block'); 889 } 890} 891 892// Suite àl'installation du plugin "Gravity Forms: Multiple Form Instances Add On" les ID ne correspondent plus 893// Il faut donc les changer 894if (jquery__WEBPACK_IMPORTED_MODULE_9___default()('.gform_show_password').length > 0) { 895 jquery__WEBPACK_IMPORTED_MODULE_9___default()('.gform_show_password').each(function () { 896 var sNewId = jquery__WEBPACK_IMPORTED_MODULE_9___default()(this).prev('input[type="password"]').attr('id'); 897 jquery__WEBPACK_IMPORTED_MODULE_9___default()(this).attr('onclick', 'javascript:gformToggleShowPassword("' + sNewId + '");'); 898 }); 899} 900jquery__WEBPACK_IMPORTED_MODULE_9___default()(window).on('load', function () { 901 if (jquery__WEBPACK_IMPORTED_MODULE_9___default()('.content.js-modal').length > 0) { 902 var modalId = jquery__WEBPACK_IMPORTED_MODULE_9___default()('.content.js-modal').attr('data-modal-id'); 903 if (modalId != "") { 904 jquery__WEBPACK_IMPORTED_MODULE_9___default()(modalId).modal('show'); 905 } 906 } 907 var shareElement = jquery__WEBPACK_IMPORTED_MODULE_9___default()('.share'); 908 if (shareElement.length > 0) { 909 var modalIsOpen = jquery__WEBPACK_IMPORTED_MODULE_9___default()('.share').attr('data-modal-is-open'); 910 if (modalIsOpen === '1') { 911 jquery__WEBPACK_IMPORTED_MODULE_9___default()('#share').modal('show'); 912 } 913 } 914}); 915 916/***/ }), 917
918/***/ "./assets/scss/style.scss": 919/*!********************************!*\ 920 !*** ./assets/scss/style.scss ***! 921 \********************************/ 922/*! no static exports found */ 923/***/ (function(module, exports) { 924 925// removed by extract-text-webpack-plugin 926 927/***/ }), 928
vendor: 3,097 bytes, lines 929-983
929/***/ "./node_modules/axios/index.js": 930/*!*************************************!*\ 931 !*** ./node_modules/axios/index.js ***! 932 \*************************************/ 933/*! exports provided: default, Axios, AxiosError, CanceledError, isCancel, CancelToken, VERSION, all, Cancel, isAxiosError, spread, toFormData, AxiosHeaders, HttpStatusCode, formToJSON, mergeConfig */ 934/***/ (function(module, __webpack_exports__, __webpack_require__) { 935 936"use strict"; 937__webpack_require__.r(__webpack_exports__); 938/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Axios", function() { return Axios; }); 939/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AxiosError", function() { return AxiosError; }); 940/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CanceledError", function() { return CanceledError; }); 941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isCancel", function() { return isCancel; }); 942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CancelToken", function() { return CancelToken; }); 943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; }); 944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "all", function() { return all; }); 945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Cancel", function() { return Cancel; }); 946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAxiosError", function() { return isAxiosError; }); 947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "spread", function() { return spread; }); 948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toFormData", function() { return toFormData; }); 949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AxiosHeaders", function() { return AxiosHeaders; }); 950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HttpStatusCode", function() { return HttpStatusCode; }); 951/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formToJSON", function() { return formToJSON; }); 952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeConfig", function() { return mergeConfig; }); 953/* harmony import */ var _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/axios.js */ "./node_modules/axios/lib/axios.js"); 954/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 955 956 957 958// This module is intended to unwrap Axios default export as named. 959// Keep top-level export same with static properties 960// so that it can keep same with es module or cjs 961const { 962 Axios, 963 AxiosError, 964 CanceledError, 965 isCancel, 966 CancelToken, 967 VERSION, 968 all, 969 Cancel, 970 isAxiosError, 971 spread, 972 toFormData, 973 AxiosHeaders, 974 HttpStatusCode, 975 formToJSON, 976 mergeConfig 977} = _lib_axios_js__WEBPACK_IMPORTED_MODULE_0__["default"]; 978 979 980 981 982/***/ }), 983
vendor: 2,698 bytes, lines 984-1059
984/***/ "./node_modules/axios/lib/adapters/adapters.js": 985/*!*****************************************************!*\ 986 !*** ./node_modules/axios/lib/adapters/adapters.js ***! 987 \*****************************************************/ 988/*! exports provided: default */ 989/***/ (function(module, __webpack_exports__, __webpack_require__) { 990 991"use strict"; 992__webpack_require__.r(__webpack_exports__); 993/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 994/* harmony import */ var _http_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./http.js */ "./node_modules/axios/lib/helpers/null.js"); 995/* harmony import */ var _xhr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./xhr.js */ "./node_modules/axios/lib/adapters/xhr.js"); 996/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 997 998 999 1000 1001 1002const knownAdapters = { 1003 http: _http_js__WEBPACK_IMPORTED_MODULE_1__["default"], 1004 xhr: _xhr_js__WEBPACK_IMPORTED_MODULE_2__["default"] 1005} 1006 1007_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(knownAdapters, (fn, value) => { 1008 if(fn) { 1009 try { 1010 Object.defineProperty(fn, 'name', {value}); 1011 } catch (e) { 1012 // eslint-disable-next-line no-empty 1013 } 1014 Object.defineProperty(fn, 'adapterName', {value}); 1015 } 1016}); 1017 1018/* harmony default export */ __webpack_exports__["default"] = ({ 1019 getAdapter: (adapters) => { 1020 adapters = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(adapters) ? adapters : [adapters]; 1021 1022 const {length} = adapters; 1023 let nameOrAdapter; 1024 let adapter; 1025 1026 for (let i = 0; i < length; i++) { 1027 nameOrAdapter = adapters[i]; 1028 if((adapter = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) { 1029 break; 1030 } 1031 } 1032 1033 if (!adapter) { 1034 if (adapter === false) { 1035 throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_3__["default"]( 1036 `Adapter ${nameOrAdapter} is not supported by the environment`, 1037 'ERR_NOT_SUPPORT' 1038 ); 1039 } 1040 1041 throw new Error( 1042 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(knownAdapters, nameOrAdapter) ? 1043 `Adapter '${nameOrAdapter}' is not available in the build` : 1044 `Unknown adapter '${nameOrAdapter}'` 1045 ); 1046 } 1047 1048 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(adapter)) { 1049 throw new TypeError('adapter is not a function'); 1050 } 1051 1052 return adapter; 1053 }, 1054 adapters: knownAdapters 1055}); 1056 1057 1058/***/ }), 1059
vendor: 11,731 bytes, lines 1060-1334
1060/***/ "./node_modules/axios/lib/adapters/xhr.js": 1061/*!************************************************!*\ 1062 !*** ./node_modules/axios/lib/adapters/xhr.js ***! 1063 \************************************************/ 1064/*! exports provided: default */ 1065/***/ (function(module, __webpack_exports__, __webpack_require__) { 1066 1067"use strict"; 1068__webpack_require__.r(__webpack_exports__); 1069/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 1070/* harmony import */ var _core_settle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./../core/settle.js */ "./node_modules/axios/lib/core/settle.js"); 1071/* harmony import */ var _helpers_cookies_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./../helpers/cookies.js */ "./node_modules/axios/lib/helpers/cookies.js"); 1072/* harmony import */ var _helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./../helpers/buildURL.js */ "./node_modules/axios/lib/helpers/buildURL.js"); 1073/* harmony import */ var _core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/buildFullPath.js */ "./node_modules/axios/lib/core/buildFullPath.js"); 1074/* harmony import */ var _helpers_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./../helpers/isURLSameOrigin.js */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js"); 1075/* harmony import */ var _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../defaults/transitional.js */ "./node_modules/axios/lib/defaults/transitional.js"); 1076/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 1077/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../cancel/CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js"); 1078/* harmony import */ var _helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../helpers/parseProtocol.js */ "./node_modules/axios/lib/helpers/parseProtocol.js"); 1079/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js"); 1080/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js"); 1081/* harmony import */ var _helpers_speedometer_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../helpers/speedometer.js */ "./node_modules/axios/lib/helpers/speedometer.js"); 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098function progressEventReducer(listener, isDownloadStream) { 1099 let bytesNotified = 0; 1100 const _speedometer = Object(_helpers_speedometer_js__WEBPACK_IMPORTED_MODULE_12__["default"])(50, 250); 1101 1102 return e => { 1103 const loaded = e.loaded; 1104 const total = e.lengthComputable ? e.total : undefined; 1105 const progressBytes = loaded - bytesNotified; 1106 const rate = _speedometer(progressBytes); 1107 const inRange = loaded <= total; 1108 1109 bytesNotified = loaded; 1110 1111 const data = { 1112 loaded, 1113 total, 1114 progress: total ? (loaded / total) : undefined, 1115 bytes: progressBytes, 1116 rate: rate ? rate : undefined, 1117 estimated: rate && total && inRange ? (total - loaded) / rate : undefined, 1118 event: e 1119 }; 1120 1121 data[isDownloadStream ? 'download' : 'upload'] = true; 1122 1123 listener(data); 1124 }; 1125} 1126 1127const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; 1128 1129/* harmony default export */ __webpack_exports__["default"] = (isXHRAdapterSupported && function (config) { 1130 return new Promise(function dispatchXhrRequest(resolve, reject) { 1131 let requestData = config.data; 1132 const requestHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_11__["default"].from(config.headers).normalize(); 1133 const responseType = config.responseType; 1134 let onCanceled; 1135 function done() { 1136 if (config.cancelToken) { 1137 config.cancelToken.unsubscribe(onCanceled); 1138 } 1139 1140 if (config.signal) { 1141 config.signal.removeEventListener('abort', onCanceled); 1142 } 1143 } 1144 1145 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(requestData) && (_platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].isStandardBrowserEnv || _platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].isStandardBrowserWebWorkerEnv)) { 1146 requestHeaders.setContentType(false); // Let the browser set it 1147 } 1148 1149 let request = new XMLHttpRequest(); 1150 1151 // HTTP basic authentication 1152 if (config.auth) { 1153 const username = config.auth.username || ''; 1154 const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; 1155 requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); 1156 } 1157 1158 const fullPath = Object(_core_buildFullPath_js__WEBPACK_IMPORTED_MODULE_4__["default"])(config.baseURL, config.url); 1159 1160 request.open(config.method.toUpperCase(), Object(_helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_3__["default"])(fullPath, config.params, config.paramsSerializer), true); 1161 1162 // Set the request timeout in MS 1163 request.timeout = config.timeout; 1164 1165 function onloadend() { 1166 if (!request) { 1167 return; 1168 } 1169 // Prepare the response 1170 const responseHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_11__["default"].from( 1171 'getAllResponseHeaders' in request && request.getAllResponseHeaders() 1172 ); 1173 const responseData = !responseType || responseType === 'text' || responseType === 'json' ? 1174 request.responseText : request.response; 1175 const response = { 1176 data: responseData, 1177 status: request.status, 1178 statusText: request.statusText, 1179 headers: responseHeaders, 1180 config, 1181 request 1182 }; 1183 1184 Object(_core_settle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function _resolve(value) { 1185 resolve(value); 1186 done(); 1187 }, function _reject(err) { 1188 reject(err); 1189 done(); 1190 }, response); 1191 1192 // Clean up request 1193 request = null; 1194 } 1195 1196 if ('onloadend' in request) { 1197 // Use onloadend if available 1198 request.onloadend = onloadend; 1199 } else { 1200 // Listen for ready state to emulate onloadend 1201 request.onreadystatechange = function handleLoad() { 1202 if (!request || request.readyState !== 4) { 1203 return; 1204 } 1205 1206 // The request errored out and we didn't get a response, this will be 1207 // handled by onerror instead 1208 // With one exception: request that using file: protocol, most browsers 1209 // will return status as 0 even though it's a successful request 1210 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { 1211 return; 1212 } 1213 // readystate handler is calling before onerror or ontimeout handlers, 1214 // so we should call onloadend on the next 'tick' 1215 setTimeout(onloadend); 1216 }; 1217 } 1218 1219 // Handle browser request cancellation (as opposed to a manual cancellation) 1220 request.onabort = function handleAbort() { 1221 if (!request) { 1222 return; 1223 } 1224 1225 reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]('Request aborted', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ECONNABORTED, config, request)); 1226 1227 // Clean up request 1228 request = null; 1229 }; 1230 1231 // Handle low level network errors 1232 request.onerror = function handleError() { 1233 // Real errors are hidden from us by the browser 1234 // onerror should only fire if it's a network error 1235 reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]('Network Error', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ERR_NETWORK, config, request)); 1236 1237 // Clean up request 1238 request = null; 1239 }; 1240 1241 // Handle timeout 1242 request.ontimeout = function handleTimeout() { 1243 let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; 1244 const transitional = config.transitional || _defaults_transitional_js__WEBPACK_IMPORTED_MODULE_6__["default"]; 1245 if (config.timeoutErrorMessage) { 1246 timeoutErrorMessage = config.timeoutErrorMessage; 1247 } 1248 reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]( 1249 timeoutErrorMessage, 1250 transitional.clarifyTimeoutError ? _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ETIMEDOUT : _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ECONNABORTED, 1251 config, 1252 request)); 1253 1254 // Clean up request 1255 request = null; 1256 }; 1257 1258 // Add xsrf header 1259 // This is only done if running in a standard browser environment. 1260 // Specifically not if we're in a web worker, or react-native. 1261 if (_platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].isStandardBrowserEnv) { 1262 // Add xsrf header 1263 const xsrfValue = (config.withCredentials || Object(_helpers_isURLSameOrigin_js__WEBPACK_IMPORTED_MODULE_5__["default"])(fullPath)) 1264 && config.xsrfCookieName && _helpers_cookies_js__WEBPACK_IMPORTED_MODULE_2__["default"].read(config.xsrfCookieName); 1265 1266 if (xsrfValue) { 1267 requestHeaders.set(config.xsrfHeaderName, xsrfValue); 1268 } 1269 } 1270 1271 // Remove Content-Type if data is undefined 1272 requestData === undefined && requestHeaders.setContentType(null); 1273 1274 // Add headers to the request 1275 if ('setRequestHeader' in request) { 1276 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { 1277 request.setRequestHeader(key, val); 1278 }); 1279 } 1280 1281 // Add withCredentials to request if needed 1282 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(config.withCredentials)) { 1283 request.withCredentials = !!config.withCredentials; 1284 } 1285 1286 // Add responseType to request if needed 1287 if (responseType && responseType !== 'json') { 1288 request.responseType = config.responseType; 1289 } 1290 1291 // Handle progress if needed 1292 if (typeof config.onDownloadProgress === 'function') { 1293 request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); 1294 } 1295 1296 // Not all browsers support upload events 1297 if (typeof config.onUploadProgress === 'function' && request.upload) { 1298 request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); 1299 } 1300 1301 if (config.cancelToken || config.signal) { 1302 // Handle cancellation 1303 // eslint-disable-next-line func-names 1304 onCanceled = cancel => { 1305 if (!request) { 1306 return; 1307 } 1308 reject(!cancel || cancel.type ? new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_8__["default"](null, config, request) : cancel); 1309 request.abort(); 1310 request = null; 1311 }; 1312 1313 config.cancelToken && config.cancelToken.subscribe(onCanceled); 1314 if (config.signal) { 1315 config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); 1316 } 1317 } 1318 1319 const protocol = Object(_helpers_parseProtocol_js__WEBPACK_IMPORTED_MODULE_9__["default"])(fullPath); 1320 1321 if (protocol && _platform_index_js__WEBPACK_IMPORTED_MODULE_10__["default"].protocols.indexOf(protocol) === -1) { 1322 reject(new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"]('Unsupported protocol ' + protocol + ':', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_7__["default"].ERR_BAD_REQUEST, config)); 1323 return; 1324 } 1325 1326 1327 // Send the request 1328 request.send(requestData || null); 1329 }); 1330}); 1331 1332 1333/***/ }), 1334
vendor: 6,010 bytes, lines 1335-1449
1335/***/ "./node_modules/axios/lib/axios.js": 1336/*!*****************************************!*\ 1337 !*** ./node_modules/axios/lib/axios.js ***! 1338 \*****************************************/ 1339/*! exports provided: default */ 1340/***/ (function(module, __webpack_exports__, __webpack_require__) { 1341 1342"use strict"; 1343__webpack_require__.r(__webpack_exports__); 1344/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ "./node_modules/axios/lib/utils.js"); 1345/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/bind.js */ "./node_modules/axios/lib/helpers/bind.js"); 1346/* harmony import */ var _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./core/Axios.js */ "./node_modules/axios/lib/core/Axios.js"); 1347/* harmony import */ var _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./core/mergeConfig.js */ "./node_modules/axios/lib/core/mergeConfig.js"); 1348/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaults/index.js */ "./node_modules/axios/lib/defaults/index.js"); 1349/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers/formDataToJSON.js */ "./node_modules/axios/lib/helpers/formDataToJSON.js"); 1350/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cancel/CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js"); 1351/* harmony import */ var _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./cancel/CancelToken.js */ "./node_modules/axios/lib/cancel/CancelToken.js"); 1352/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./cancel/isCancel.js */ "./node_modules/axios/lib/cancel/isCancel.js"); 1353/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./env/data.js */ "./node_modules/axios/lib/env/data.js"); 1354/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./helpers/toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js"); 1355/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 1356/* harmony import */ var _helpers_spread_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./helpers/spread.js */ "./node_modules/axios/lib/helpers/spread.js"); 1357/* harmony import */ var _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./helpers/isAxiosError.js */ "./node_modules/axios/lib/helpers/isAxiosError.js"); 1358/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js"); 1359/* harmony import */ var _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./helpers/HttpStatusCode.js */ "./node_modules/axios/lib/helpers/HttpStatusCode.js"); 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379/** 1380 * Create an instance of Axios 1381 * 1382 * @param {Object} defaultConfig The default config for the instance 1383 * 1384 * @returns {Axios} A new instance of Axios 1385 */ 1386function createInstance(defaultConfig) { 1387 const context = new _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"](defaultConfig); 1388 const instance = Object(_helpers_bind_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"].prototype.request, context); 1389 1390 // Copy axios.prototype to instance 1391 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].extend(instance, _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"].prototype, context, {allOwnKeys: true}); 1392 1393 // Copy context to instance 1394 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].extend(instance, context, null, {allOwnKeys: true}); 1395 1396 // Factory for creating new instances 1397 instance.create = function create(instanceConfig) { 1398 return createInstance(Object(_core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__["default"])(defaultConfig, instanceConfig)); 1399 }; 1400 1401 return instance; 1402} 1403 1404// Create the default instance to be exported 1405const axios = createInstance(_defaults_index_js__WEBPACK_IMPORTED_MODULE_4__["default"]); 1406 1407// Expose Axios class to allow class inheritance 1408axios.Axios = _core_Axios_js__WEBPACK_IMPORTED_MODULE_2__["default"]; 1409 1410// Expose Cancel & CancelToken 1411axios.CanceledError = _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_6__["default"]; 1412axios.CancelToken = _cancel_CancelToken_js__WEBPACK_IMPORTED_MODULE_7__["default"]; 1413axios.isCancel = _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_8__["default"]; 1414axios.VERSION = _env_data_js__WEBPACK_IMPORTED_MODULE_9__["VERSION"]; 1415axios.toFormData = _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_10__["default"]; 1416 1417// Expose AxiosError class 1418axios.AxiosError = _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_11__["default"]; 1419 1420// alias for CanceledError for backward compatibility 1421axios.Cancel = axios.CanceledError; 1422 1423// Expose all/spread 1424axios.all = function all(promises) { 1425 return Promise.all(promises); 1426}; 1427 1428axios.spread = _helpers_spread_js__WEBPACK_IMPORTED_MODULE_12__["default"]; 1429 1430// Expose isAxiosError 1431axios.isAxiosError = _helpers_isAxiosError_js__WEBPACK_IMPORTED_MODULE_13__["default"]; 1432 1433// Expose mergeConfig 1434axios.mergeConfig = _core_mergeConfig_js__WEBPACK_IMPORTED_MODULE_3__["default"]; 1435 1436axios.AxiosHeaders = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_14__["default"]; 1437 1438axios.formToJSON = thing => Object(_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isHTMLForm(thing) ? new FormData(thing) : thing); 1439 1440axios.HttpStatusCode = _helpers_HttpStatusCode_js__WEBPACK_IMPORTED_MODULE_15__["default"]; 1441 1442axios.default = axios; 1443 1444// this module should only have a default export 1445/* harmony default export */ __webpack_exports__["default"] = (axios); 1446 1447 1448/***/ }), 1449
vendor: 3,139 bytes, lines 1450-1584
1450/***/ "./node_modules/axios/lib/cancel/CancelToken.js": 1451/*!******************************************************!*\ 1452 !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! 1453 \******************************************************/ 1454/*! exports provided: default */ 1455/***/ (function(module, __webpack_exports__, __webpack_require__) { 1456 1457"use strict"; 1458__webpack_require__.r(__webpack_exports__); 1459/* harmony import */ var _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js"); 1460 1461 1462 1463 1464/** 1465 * A `CancelToken` is an object that can be used to request cancellation of an operation. 1466 * 1467 * @param {Function} executor The executor function. 1468 * 1469 * @returns {CancelToken} 1470 */ 1471class CancelToken { 1472 constructor(executor) { 1473 if (typeof executor !== 'function') { 1474 throw new TypeError('executor must be a function.'); 1475 } 1476 1477 let resolvePromise; 1478 1479 this.promise = new Promise(function promiseExecutor(resolve) { 1480 resolvePromise = resolve; 1481 }); 1482 1483 const token = this; 1484 1485 // eslint-disable-next-line func-names 1486 this.promise.then(cancel => { 1487 if (!token._listeners) return; 1488 1489 let i = token._listeners.length; 1490 1491 while (i-- > 0) { 1492 token._listeners[i](cancel); 1493 } 1494 token._listeners = null; 1495 }); 1496 1497 // eslint-disable-next-line func-names 1498 this.promise.then = onfulfilled => { 1499 let _resolve; 1500 // eslint-disable-next-line func-names 1501 const promise = new Promise(resolve => { 1502 token.subscribe(resolve); 1503 _resolve = resolve; 1504 }).then(onfulfilled); 1505 1506 promise.cancel = function reject() { 1507 token.unsubscribe(_resolve); 1508 }; 1509 1510 return promise; 1511 }; 1512 1513 executor(function cancel(message, config, request) { 1514 if (token.reason) { 1515 // Cancellation has already been requested 1516 return; 1517 } 1518 1519 token.reason = new _CanceledError_js__WEBPACK_IMPORTED_MODULE_0__["default"](message, config, request); 1520 resolvePromise(token.reason); 1521 }); 1522 } 1523 1524 /** 1525 * Throws a `CanceledError` if cancellation has been requested. 1526 */ 1527 throwIfRequested() { 1528 if (this.reason) { 1529 throw this.reason; 1530 } 1531 } 1532 1533 /** 1534 * Subscribe to the cancel signal 1535 */ 1536 1537 subscribe(listener) { 1538 if (this.reason) { 1539 listener(this.reason); 1540 return; 1541 } 1542 1543 if (this._listeners) { 1544 this._listeners.push(listener); 1545 } else { 1546 this._listeners = [listener]; 1547 } 1548 } 1549 1550 /** 1551 * Unsubscribe from the cancel signal 1552 */ 1553 1554 unsubscribe(listener) { 1555 if (!this._listeners) { 1556 return; 1557 } 1558 const index = this._listeners.indexOf(listener); 1559 if (index !== -1) { 1560 this._listeners.splice(index, 1); 1561 } 1562 } 1563 1564 /** 1565 * Returns an object that contains a new `CancelToken` and a function that, when called, 1566 * cancels the `CancelToken`. 1567 */ 1568 static source() { 1569 let cancel; 1570 const token = new CancelToken(function executor(c) { 1571 cancel = c; 1572 }); 1573 return { 1574 token, 1575 cancel 1576 }; 1577 } 1578} 1579 1580/* harmony default export */ __webpack_exports__["default"] = (CancelToken); 1581 1582 1583/***/ }), 1584
vendor: 1,577 bytes, lines 1585-1624
1585/***/ "./node_modules/axios/lib/cancel/CanceledError.js": 1586/*!********************************************************!*\ 1587 !*** ./node_modules/axios/lib/cancel/CanceledError.js ***! 1588 \********************************************************/ 1589/*! exports provided: default */ 1590/***/ (function(module, __webpack_exports__, __webpack_require__) { 1591 1592"use strict"; 1593__webpack_require__.r(__webpack_exports__); 1594/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 1595/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 1596 1597 1598 1599 1600 1601/** 1602 * A `CanceledError` is an object that is thrown when an operation is canceled. 1603 * 1604 * @param {string=} message The message. 1605 * @param {Object=} config The config. 1606 * @param {Object=} request The request. 1607 * 1608 * @returns {CanceledError} The created error. 1609 */ 1610function CanceledError(message, config, request) { 1611 // eslint-disable-next-line no-eq-null,eqeqeq 1612 _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].call(this, message == null ? 'canceled' : message, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_CANCELED, config, request); 1613 this.name = 'CanceledError'; 1614} 1615 1616_utils_js__WEBPACK_IMPORTED_MODULE_1__["default"].inherits(CanceledError, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"], { 1617 __CANCEL__: true 1618}); 1619 1620/* harmony default export */ __webpack_exports__["default"] = (CanceledError); 1621 1622 1623/***/ }), 1624
vendor: 586 bytes, lines 1625-1643
1625/***/ "./node_modules/axios/lib/cancel/isCancel.js": 1626/*!***************************************************!*\ 1627 !*** ./node_modules/axios/lib/cancel/isCancel.js ***! 1628 \***************************************************/ 1629/*! exports provided: default */ 1630/***/ (function(module, __webpack_exports__, __webpack_require__) { 1631 1632"use strict"; 1633__webpack_require__.r(__webpack_exports__); 1634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isCancel; }); 1635 1636 1637function isCancel(value) { 1638 return !!(value && value.__CANCEL__); 1639} 1640 1641 1642/***/ }), 1643
vendor: 7,737 bytes, lines 1644-1861
1644/***/ "./node_modules/axios/lib/core/Axios.js": 1645/*!**********************************************!*\ 1646 !*** ./node_modules/axios/lib/core/Axios.js ***! 1647 \**********************************************/ 1648/*! exports provided: default */ 1649/***/ (function(module, __webpack_exports__, __webpack_require__) { 1650 1651"use strict"; 1652__webpack_require__.r(__webpack_exports__); 1653/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 1654/* harmony import */ var _helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/buildURL.js */ "./node_modules/axios/lib/helpers/buildURL.js"); 1655/* harmony import */ var _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./InterceptorManager.js */ "./node_modules/axios/lib/core/InterceptorManager.js"); 1656/* harmony import */ var _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dispatchRequest.js */ "./node_modules/axios/lib/core/dispatchRequest.js"); 1657/* harmony import */ var _mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mergeConfig.js */ "./node_modules/axios/lib/core/mergeConfig.js"); 1658/* harmony import */ var _buildFullPath_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./buildFullPath.js */ "./node_modules/axios/lib/core/buildFullPath.js"); 1659/* harmony import */ var _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/validator.js */ "./node_modules/axios/lib/helpers/validator.js"); 1660/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js"); 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672const validators = _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__["default"].validators; 1673 1674/** 1675 * Create a new instance of Axios 1676 * 1677 * @param {Object} instanceConfig The default config for the instance 1678 * 1679 * @return {Axios} A new instance of Axios 1680 */ 1681class Axios { 1682 constructor(instanceConfig) { 1683 this.defaults = instanceConfig; 1684 this.interceptors = { 1685 request: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_2__["default"](), 1686 response: new _InterceptorManager_js__WEBPACK_IMPORTED_MODULE_2__["default"]() 1687 }; 1688 } 1689 1690 /** 1691 * Dispatch a request 1692 * 1693 * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) 1694 * @param {?Object} config 1695 * 1696 * @returns {Promise} The Promise to be fulfilled 1697 */ 1698 request(configOrUrl, config) { 1699 /*eslint no-param-reassign:0*/ 1700 // Allow for axios('example/url'[, config]) a la fetch API 1701 if (typeof configOrUrl === 'string') { 1702 config = config || {}; 1703 config.url = configOrUrl; 1704 } else { 1705 config = configOrUrl || {}; 1706 } 1707 1708 config = Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(this.defaults, config); 1709 1710 const {transitional, paramsSerializer, headers} = config; 1711 1712 if (transitional !== undefined) { 1713 _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__["default"].assertOptions(transitional, { 1714 silentJSONParsing: validators.transitional(validators.boolean), 1715 forcedJSONParsing: validators.transitional(validators.boolean), 1716 clarifyTimeoutError: validators.transitional(validators.boolean) 1717 }, false); 1718 } 1719 1720 if (paramsSerializer !== undefined) { 1721 _helpers_validator_js__WEBPACK_IMPORTED_MODULE_6__["default"].assertOptions(paramsSerializer, { 1722 encode: validators.function, 1723 serialize: validators.function 1724 }, true); 1725 } 1726 1727 // Set config.method 1728 config.method = (config.method || this.defaults.method || 'get').toLowerCase(); 1729 1730 let contextHeaders; 1731 1732 // Flatten headers 1733 contextHeaders = headers && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge( 1734 headers.common, 1735 headers[config.method] 1736 ); 1737 1738 contextHeaders && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach( 1739 ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], 1740 (method) => { 1741 delete headers[method]; 1742 } 1743 ); 1744 1745 config.headers = _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_7__["default"].concat(contextHeaders, headers); 1746 1747 // filter out skipped interceptors 1748 const requestInterceptorChain = []; 1749 let synchronousRequestInterceptors = true; 1750 this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { 1751 if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { 1752 return; 1753 } 1754 1755 synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; 1756 1757 requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); 1758 }); 1759 1760 const responseInterceptorChain = []; 1761 this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { 1762 responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); 1763 }); 1764 1765 let promise; 1766 let i = 0; 1767 let len; 1768 1769 if (!synchronousRequestInterceptors) { 1770 const chain = [_dispatchRequest_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(this), undefined]; 1771 chain.unshift.apply(chain, requestInterceptorChain); 1772 chain.push.apply(chain, responseInterceptorChain); 1773 len = chain.length; 1774 1775 promise = Promise.resolve(config); 1776 1777 while (i < len) { 1778 promise = promise.then(chain[i++], chain[i++]); 1779 } 1780 1781 return promise; 1782 } 1783 1784 len = requestInterceptorChain.length; 1785 1786 let newConfig = config; 1787 1788 i = 0; 1789 1790 while (i < len) { 1791 const onFulfilled = requestInterceptorChain[i++]; 1792 const onRejected = requestInterceptorChain[i++]; 1793 try { 1794 newConfig = onFulfilled(newConfig); 1795 } catch (error) { 1796 onRejected.call(this, error); 1797 break; 1798 } 1799 } 1800 1801 try { 1802 promise = _dispatchRequest_js__WEBPACK_IMPORTED_MODULE_3__["default"].call(this, newConfig); 1803 } catch (error) { 1804 return Promise.reject(error); 1805 } 1806 1807 i = 0; 1808 len = responseInterceptorChain.length; 1809 1810 while (i < len) { 1811 promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); 1812 } 1813 1814 return promise; 1815 } 1816 1817 getUri(config) { 1818 config = Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(this.defaults, config); 1819 const fullPath = Object(_buildFullPath_js__WEBPACK_IMPORTED_MODULE_5__["default"])(config.baseURL, config.url); 1820 return Object(_helpers_buildURL_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fullPath, config.params, config.paramsSerializer); 1821 } 1822} 1823 1824// Provide aliases for supported request methods 1825_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { 1826 /*eslint func-names:0*/ 1827 Axios.prototype[method] = function(url, config) { 1828 return this.request(Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(config || {}, { 1829 method, 1830 url, 1831 data: (config || {}).data 1832 })); 1833 }; 1834}); 1835 1836_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 1837 /*eslint func-names:0*/ 1838 1839 function generateHTTPMethod(isForm) { 1840 return function httpMethod(url, data, config) { 1841 return this.request(Object(_mergeConfig_js__WEBPACK_IMPORTED_MODULE_4__["default"])(config || {}, { 1842 method, 1843 headers: isForm ? { 1844 'Content-Type': 'multipart/form-data' 1845 } : {}, 1846 url, 1847 data 1848 })); 1849 }; 1850 } 1851 1852 Axios.prototype[method] = generateHTTPMethod(); 1853 1854 Axios.prototype[method + 'Form'] = generateHTTPMethod(true); 1855}); 1856 1857/* harmony default export */ __webpack_exports__["default"] = (Axios); 1858 1859 1860/***/ }), 1861
vendor: 3,207 bytes, lines 1862-1975
1862/***/ "./node_modules/axios/lib/core/AxiosError.js": 1863/*!***************************************************!*\ 1864 !*** ./node_modules/axios/lib/core/AxiosError.js ***! 1865 \***************************************************/ 1866/*! exports provided: default */ 1867/***/ (function(module, __webpack_exports__, __webpack_require__) { 1868 1869"use strict"; 1870__webpack_require__.r(__webpack_exports__); 1871/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 1872 1873 1874 1875 1876/** 1877 * Create an Error with the specified message, config, error code, request and response. 1878 * 1879 * @param {string} message The error message. 1880 * @param {string} [code] The error code (for example, 'ECONNABORTED'). 1881 * @param {Object} [config] The config. 1882 * @param {Object} [request] The request. 1883 * @param {Object} [response] The response. 1884 * 1885 * @returns {Error} The created error. 1886 */ 1887function AxiosError(message, code, config, request, response) { 1888 Error.call(this); 1889 1890 if (Error.captureStackTrace) { 1891 Error.captureStackTrace(this, this.constructor); 1892 } else { 1893 this.stack = (new Error()).stack; 1894 } 1895 1896 this.message = message; 1897 this.name = 'AxiosError'; 1898 code && (this.code = code); 1899 config && (this.config = config); 1900 request && (this.request = request); 1901 response && (this.response = response); 1902} 1903 1904_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].inherits(AxiosError, Error, { 1905 toJSON: function toJSON() { 1906 return { 1907 // Standard 1908 message: this.message, 1909 name: this.name, 1910 // Microsoft 1911 description: this.description, 1912 number: this.number, 1913 // Mozilla 1914 fileName: this.fileName, 1915 lineNumber: this.lineNumber, 1916 columnNumber: this.columnNumber, 1917 stack: this.stack, 1918 // Axios 1919 config: _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toJSONObject(this.config), 1920 code: this.code, 1921 status: this.response && this.response.status ? this.response.status : null 1922 }; 1923 } 1924}); 1925 1926const prototype = AxiosError.prototype; 1927const descriptors = {}; 1928 1929[ 1930 'ERR_BAD_OPTION_VALUE', 1931 'ERR_BAD_OPTION', 1932 'ECONNABORTED', 1933 'ETIMEDOUT', 1934 'ERR_NETWORK', 1935 'ERR_FR_TOO_MANY_REDIRECTS', 1936 'ERR_DEPRECATED', 1937 'ERR_BAD_RESPONSE', 1938 'ERR_BAD_REQUEST', 1939 'ERR_CANCELED', 1940 'ERR_NOT_SUPPORT', 1941 'ERR_INVALID_URL' 1942// eslint-disable-next-line func-names 1943].forEach(code => { 1944 descriptors[code] = {value: code}; 1945}); 1946 1947Object.defineProperties(AxiosError, descriptors); 1948Object.defineProperty(prototype, 'isAxiosError', {value: true}); 1949 1950// eslint-disable-next-line func-names 1951AxiosError.from = (error, code, config, request, response, customProps) => { 1952 const axiosError = Object.create(prototype); 1953 1954 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toFlatObject(error, axiosError, function filter(obj) { 1955 return obj !== Error.prototype; 1956 }, prop => { 1957 return prop !== 'isAxiosError'; 1958 }); 1959 1960 AxiosError.call(axiosError, error.message, code, config, request, response); 1961 1962 axiosError.cause = error; 1963 1964 axiosError.name = error.name; 1965 1966 customProps && Object.assign(axiosError, customProps); 1967 1968 return axiosError; 1969}; 1970 1971/* harmony default export */ __webpack_exports__["default"] = (AxiosError); 1972 1973 1974/***/ }), 1975
vendor: 8,055 bytes, lines 1976-2264
1976/***/ "./node_modules/axios/lib/core/AxiosHeaders.js": 1977/*!*****************************************************!*\ 1978 !*** ./node_modules/axios/lib/core/AxiosHeaders.js ***! 1979 \*****************************************************/ 1980/*! exports provided: default */ 1981/***/ (function(module, __webpack_exports__, __webpack_require__) { 1982 1983"use strict"; 1984__webpack_require__.r(__webpack_exports__); 1985/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 1986/* harmony import */ var _helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/parseHeaders.js */ "./node_modules/axios/lib/helpers/parseHeaders.js"); 1987 1988 1989 1990 1991 1992const $internals = Symbol('internals'); 1993 1994function normalizeHeader(header) { 1995 return header && String(header).trim().toLowerCase(); 1996} 1997 1998function normalizeValue(value) { 1999 if (value === false || value == null) { 2000 return value; 2001 } 2002 2003 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) ? value.map(normalizeValue) : String(value); 2004} 2005 2006function parseTokens(str) { 2007 const tokens = Object.create(null); 2008 const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; 2009 let match; 2010 2011 while ((match = tokensRE.exec(str))) { 2012 tokens[match[1]] = match[2]; 2013 } 2014 2015 return tokens; 2016} 2017 2018function isValidHeaderName(str) { 2019 return /^[-_a-zA-Z]+$/.test(str.trim()); 2020} 2021 2022function matchHeaderValue(context, value, header, filter) { 2023 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(filter)) { 2024 return filter.call(this, value, header); 2025 } 2026 2027 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(value)) return; 2028 2029 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(filter)) { 2030 return value.indexOf(filter) !== -1; 2031 } 2032 2033 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isRegExp(filter)) { 2034 return filter.test(value); 2035 } 2036} 2037 2038function formatHeader(header) { 2039 return header.trim() 2040 .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { 2041 return char.toUpperCase() + str; 2042 }); 2043} 2044 2045function buildAccessors(obj, header) { 2046 const accessorName = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toCamelCase(' ' + header); 2047 2048 ['get', 'set', 'has'].forEach(methodName => { 2049 Object.defineProperty(obj, methodName + accessorName, { 2050 value: function(arg1, arg2, arg3) { 2051 return this[methodName].call(this, header, arg1, arg2, arg3); 2052 }, 2053 configurable: true 2054 }); 2055 }); 2056} 2057 2058class AxiosHeaders { 2059 constructor(headers) { 2060 headers && this.set(headers); 2061 } 2062 2063 set(header, valueOrRewrite, rewrite) { 2064 const self = this; 2065 2066 function setHeader(_value, _header, _rewrite) { 2067 const lHeader = normalizeHeader(_header); 2068 2069 if (!lHeader) { 2070 throw new Error('header name must be a non-empty string'); 2071 } 2072 2073 const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(self, lHeader); 2074 2075 if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { 2076 self[key || _header] = normalizeValue(_value); 2077 } 2078 } 2079 2080 const setHeaders = (headers, _rewrite) => 2081 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); 2082 2083 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(header) || header instanceof this.constructor) { 2084 setHeaders(header, valueOrRewrite) 2085 } else if(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { 2086 setHeaders(Object(_helpers_parseHeaders_js__WEBPACK_IMPORTED_MODULE_1__["default"])(header), valueOrRewrite); 2087 } else { 2088 header != null && setHeader(valueOrRewrite, header, rewrite); 2089 } 2090 2091 return this; 2092 } 2093 2094 get(header, parser) { 2095 header = normalizeHeader(header); 2096 2097 if (header) { 2098 const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(this, header); 2099 2100 if (key) { 2101 const value = this[key]; 2102 2103 if (!parser) { 2104 return value; 2105 } 2106 2107 if (parser === true) { 2108 return parseTokens(value); 2109 } 2110 2111 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(parser)) { 2112 return parser.call(this, value, key); 2113 } 2114 2115 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isRegExp(parser)) { 2116 return parser.exec(value); 2117 } 2118 2119 throw new TypeError('parser must be boolean|regexp|function'); 2120 } 2121 } 2122 } 2123 2124 has(header, matcher) { 2125 header = normalizeHeader(header); 2126 2127 if (header) { 2128 const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(this, header); 2129 2130 return !!(key && (!matcher || matchHeaderValue(this, this[key], key, matcher))); 2131 } 2132 2133 return false; 2134 } 2135 2136 delete(header, matcher) { 2137 const self = this; 2138 let deleted = false; 2139 2140 function deleteHeader(_header) { 2141 _header = normalizeHeader(_header); 2142 2143 if (_header) { 2144 const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(self, _header); 2145 2146 if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { 2147 delete self[key]; 2148 2149 deleted = true; 2150 } 2151 } 2152 } 2153 2154 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(header)) { 2155 header.forEach(deleteHeader); 2156 } else { 2157 deleteHeader(header); 2158 } 2159 2160 return deleted; 2161 } 2162 2163 clear() { 2164 return Object.keys(this).forEach(this.delete.bind(this)); 2165 } 2166 2167 normalize(format) { 2168 const self = this; 2169 const headers = {}; 2170 2171 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(this, (value, header) => { 2172 const key = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].findKey(headers, header); 2173 2174 if (key) { 2175 self[key] = normalizeValue(value); 2176 delete self[header]; 2177 return; 2178 } 2179 2180 const normalized = format ? formatHeader(header) : String(header).trim(); 2181 2182 if (normalized !== header) { 2183 delete self[header]; 2184 } 2185 2186 self[normalized] = normalizeValue(value); 2187 2188 headers[normalized] = true; 2189 }); 2190 2191 return this; 2192 } 2193 2194 concat(...targets) { 2195 return this.constructor.concat(this, ...targets); 2196 } 2197 2198 toJSON(asStrings) { 2199 const obj = Object.create(null); 2200 2201 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(this, (value, header) => { 2202 value != null && value !== false && (obj[header] = asStrings && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) ? value.join(', ') : value); 2203 }); 2204 2205 return obj; 2206 } 2207 2208 [Symbol.iterator]() { 2209 return Object.entries(this.toJSON())[Symbol.iterator](); 2210 } 2211 2212 toString() { 2213 return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); 2214 } 2215 2216 get [Symbol.toStringTag]() { 2217 return 'AxiosHeaders'; 2218 } 2219 2220 static from(thing) { 2221 return thing instanceof this ? thing : new this(thing); 2222 } 2223 2224 static concat(first, ...targets) { 2225 const computed = new this(first); 2226 2227 targets.forEach((target) => computed.set(target)); 2228 2229 return computed; 2230 } 2231 2232 static accessor(header) { 2233 const internals = this[$internals] = (this[$internals] = { 2234 accessors: {} 2235 }); 2236 2237 const accessors = internals.accessors; 2238 const prototype = this.prototype; 2239 2240 function defineAccessor(_header) { 2241 const lHeader = normalizeHeader(_header); 2242 2243 if (!accessors[lHeader]) { 2244 buildAccessors(prototype, _header); 2245 accessors[lHeader] = true; 2246 } 2247 } 2248 2249 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); 2250 2251 return this; 2252 } 2253} 2254 2255AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent']); 2256 2257_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].freezeMethods(AxiosHeaders.prototype); 2258_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].freezeMethods(AxiosHeaders); 2259 2260/* harmony default export */ __webpack_exports__["default"] = (AxiosHeaders); 2261 2262 2263/***/ }), 2264
vendor: 2,188 bytes, lines 2265-2349
2265/***/ "./node_modules/axios/lib/core/InterceptorManager.js": 2266/*!***********************************************************!*\ 2267 !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! 2268 \***********************************************************/ 2269/*! exports provided: default */ 2270/***/ (function(module, __webpack_exports__, __webpack_require__) { 2271 2272"use strict"; 2273__webpack_require__.r(__webpack_exports__); 2274/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 2275 2276 2277 2278 2279class InterceptorManager { 2280 constructor() { 2281 this.handlers = []; 2282 } 2283 2284 /** 2285 * Add a new interceptor to the stack 2286 * 2287 * @param {Function} fulfilled The function to handle `then` for a `Promise` 2288 * @param {Function} rejected The function to handle `reject` for a `Promise` 2289 * 2290 * @return {Number} An ID used to remove interceptor later 2291 */ 2292 use(fulfilled, rejected, options) { 2293 this.handlers.push({ 2294 fulfilled, 2295 rejected, 2296 synchronous: options ? options.synchronous : false, 2297 runWhen: options ? options.runWhen : null 2298 }); 2299 return this.handlers.length - 1; 2300 } 2301 2302 /** 2303 * Remove an interceptor from the stack 2304 * 2305 * @param {Number} id The ID that was returned by `use` 2306 * 2307 * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise 2308 */ 2309 eject(id) { 2310 if (this.handlers[id]) { 2311 this.handlers[id] = null; 2312 } 2313 } 2314 2315 /** 2316 * Clear all interceptors from the stack 2317 * 2318 * @returns {void} 2319 */ 2320 clear() { 2321 if (this.handlers) { 2322 this.handlers = []; 2323 } 2324 } 2325 2326 /** 2327 * Iterate over all the registered interceptors 2328 * 2329 * This method is particularly useful for skipping over any 2330 * interceptors that may have become `null` calling `eject`. 2331 * 2332 * @param {Function} fn The function to call for each interceptor 2333 * 2334 * @returns {void} 2335 */ 2336 forEach(fn) { 2337 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(this.handlers, function forEachHandler(h) { 2338 if (h !== null) { 2339 fn(h); 2340 } 2341 }); 2342 } 2343} 2344 2345/* harmony default export */ __webpack_exports__["default"] = (InterceptorManager); 2346 2347 2348/***/ }), 2349
vendor: 1,587 bytes, lines 2350-2386
2350/***/ "./node_modules/axios/lib/core/buildFullPath.js": 2351/*!******************************************************!*\ 2352 !*** ./node_modules/axios/lib/core/buildFullPath.js ***! 2353 \******************************************************/ 2354/*! exports provided: default */ 2355/***/ (function(module, __webpack_exports__, __webpack_require__) { 2356 2357"use strict"; 2358__webpack_require__.r(__webpack_exports__); 2359/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return buildFullPath; }); 2360/* harmony import */ var _helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../helpers/isAbsoluteURL.js */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js"); 2361/* harmony import */ var _helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/combineURLs.js */ "./node_modules/axios/lib/helpers/combineURLs.js"); 2362 2363 2364 2365 2366 2367/** 2368 * Creates a new URL by combining the baseURL with the requestedURL, 2369 * only when the requestedURL is not already an absolute URL. 2370 * If the requestURL is absolute, this function returns the requestedURL untouched. 2371 * 2372 * @param {string} baseURL The base URL 2373 * @param {string} requestedURL Absolute or relative URL to combine 2374 * 2375 * @returns {string} The combined full path 2376 */ 2377function buildFullPath(baseURL, requestedURL) { 2378 if (baseURL && !Object(_helpers_isAbsoluteURL_js__WEBPACK_IMPORTED_MODULE_0__["default"])(requestedURL)) { 2379 return Object(_helpers_combineURLs_js__WEBPACK_IMPORTED_MODULE_1__["default"])(baseURL, requestedURL); 2380 } 2381 return requestedURL; 2382} 2383 2384 2385/***/ }), 2386
vendor: 3,964 bytes, lines 2387-2487
2387/***/ "./node_modules/axios/lib/core/dispatchRequest.js": 2388/*!********************************************************!*\ 2389 !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! 2390 \********************************************************/ 2391/*! exports provided: default */ 2392/***/ (function(module, __webpack_exports__, __webpack_require__) { 2393 2394"use strict"; 2395__webpack_require__.r(__webpack_exports__); 2396/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dispatchRequest; }); 2397/* harmony import */ var _transformData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transformData.js */ "./node_modules/axios/lib/core/transformData.js"); 2398/* harmony import */ var _cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../cancel/isCancel.js */ "./node_modules/axios/lib/cancel/isCancel.js"); 2399/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../defaults/index.js */ "./node_modules/axios/lib/defaults/index.js"); 2400/* harmony import */ var _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../cancel/CanceledError.js */ "./node_modules/axios/lib/cancel/CanceledError.js"); 2401/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js"); 2402/* harmony import */ var _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../adapters/adapters.js */ "./node_modules/axios/lib/adapters/adapters.js"); 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412/** 2413 * Throws a `CanceledError` if cancellation has been requested. 2414 * 2415 * @param {Object} config The config that is to be used for the request 2416 * 2417 * @returns {void} 2418 */ 2419function throwIfCancellationRequested(config) { 2420 if (config.cancelToken) { 2421 config.cancelToken.throwIfRequested(); 2422 } 2423 2424 if (config.signal && config.signal.aborted) { 2425 throw new _cancel_CanceledError_js__WEBPACK_IMPORTED_MODULE_3__["default"](null, config); 2426 } 2427} 2428 2429/** 2430 * Dispatch a request to the server using the configured adapter. 2431 * 2432 * @param {object} config The config that is to be used for the request 2433 * 2434 * @returns {Promise} The Promise to be fulfilled 2435 */ 2436function dispatchRequest(config) { 2437 throwIfCancellationRequested(config); 2438 2439 config.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(config.headers); 2440 2441 // Transform request data 2442 config.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call( 2443 config, 2444 config.transformRequest 2445 ); 2446 2447 if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { 2448 config.headers.setContentType('application/x-www-form-urlencoded', false); 2449 } 2450 2451 const adapter = _adapters_adapters_js__WEBPACK_IMPORTED_MODULE_5__["default"].getAdapter(config.adapter || _defaults_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].adapter); 2452 2453 return adapter(config).then(function onAdapterResolution(response) { 2454 throwIfCancellationRequested(config); 2455 2456 // Transform response data 2457 response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call( 2458 config, 2459 config.transformResponse, 2460 response 2461 ); 2462 2463 response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(response.headers); 2464 2465 return response; 2466 }, function onAdapterRejection(reason) { 2467 if (!Object(_cancel_isCancel_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reason)) { 2468 throwIfCancellationRequested(config); 2469 2470 // Transform response data 2471 if (reason && reason.response) { 2472 reason.response.data = _transformData_js__WEBPACK_IMPORTED_MODULE_0__["default"].call( 2473 config, 2474 config.transformResponse, 2475 reason.response 2476 ); 2477 reason.response.headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_4__["default"].from(reason.response.headers); 2478 } 2479 } 2480 2481 return Promise.reject(reason); 2482 }); 2483} 2484 2485 2486/***/ }), 2487
vendor: 4,686 bytes, lines 2488-2608
2488/***/ "./node_modules/axios/lib/core/mergeConfig.js": 2489/*!****************************************************!*\ 2490 !*** ./node_modules/axios/lib/core/mergeConfig.js ***! 2491 \****************************************************/ 2492/*! exports provided: default */ 2493/***/ (function(module, __webpack_exports__, __webpack_require__) { 2494 2495"use strict"; 2496__webpack_require__.r(__webpack_exports__); 2497/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return mergeConfig; }); 2498/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 2499/* harmony import */ var _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js"); 2500 2501 2502 2503 2504 2505const headersToObject = (thing) => thing instanceof _AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_1__["default"] ? thing.toJSON() : thing; 2506 2507/** 2508 * Config-specific merge-function which creates a new config-object 2509 * by merging two configuration objects together. 2510 * 2511 * @param {Object} config1 2512 * @param {Object} config2 2513 * 2514 * @returns {Object} New object resulting from merging config2 to config1 2515 */ 2516function mergeConfig(config1, config2) { 2517 // eslint-disable-next-line no-param-reassign 2518 config2 = config2 || {}; 2519 const config = {}; 2520 2521 function getMergedValue(target, source, caseless) { 2522 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(target) && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(source)) { 2523 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge.call({caseless}, target, source); 2524 } else if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(source)) { 2525 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge({}, source); 2526 } else if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(source)) { 2527 return source.slice(); 2528 } 2529 return source; 2530 } 2531 2532 // eslint-disable-next-line consistent-return 2533 function mergeDeepProperties(a, b, caseless) { 2534 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(b)) { 2535 return getMergedValue(a, b, caseless); 2536 } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(a)) { 2537 return getMergedValue(undefined, a, caseless); 2538 } 2539 } 2540 2541 // eslint-disable-next-line consistent-return 2542 function valueFromConfig2(a, b) { 2543 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(b)) { 2544 return getMergedValue(undefined, b); 2545 } 2546 } 2547 2548 // eslint-disable-next-line consistent-return 2549 function defaultToConfig2(a, b) { 2550 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(b)) { 2551 return getMergedValue(undefined, b); 2552 } else if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(a)) { 2553 return getMergedValue(undefined, a); 2554 } 2555 } 2556 2557 // eslint-disable-next-line consistent-return 2558 function mergeDirectKeys(a, b, prop) { 2559 if (prop in config2) { 2560 return getMergedValue(a, b); 2561 } else if (prop in config1) { 2562 return getMergedValue(undefined, a); 2563 } 2564 } 2565 2566 const mergeMap = { 2567 url: valueFromConfig2, 2568 method: valueFromConfig2, 2569 data: valueFromConfig2, 2570 baseURL: defaultToConfig2, 2571 transformRequest: defaultToConfig2, 2572 transformResponse: defaultToConfig2, 2573 paramsSerializer: defaultToConfig2, 2574 timeout: defaultToConfig2, 2575 timeoutMessage: defaultToConfig2, 2576 withCredentials: defaultToConfig2, 2577 adapter: defaultToConfig2, 2578 responseType: defaultToConfig2, 2579 xsrfCookieName: defaultToConfig2, 2580 xsrfHeaderName: defaultToConfig2, 2581 onUploadProgress: defaultToConfig2, 2582 onDownloadProgress: defaultToConfig2, 2583 decompress: defaultToConfig2, 2584 maxContentLength: defaultToConfig2, 2585 maxBodyLength: defaultToConfig2, 2586 beforeRedirect: defaultToConfig2, 2587 transport: defaultToConfig2, 2588 httpAgent: defaultToConfig2, 2589 httpsAgent: defaultToConfig2, 2590 cancelToken: defaultToConfig2, 2591 socketPath: defaultToConfig2, 2592 responseEncoding: defaultToConfig2, 2593 validateStatus: mergeDirectKeys, 2594 headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) 2595 }; 2596 2597 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) { 2598 const merge = mergeMap[prop] || mergeDeepProperties; 2599 const configValue = merge(config1[prop], config2[prop], prop); 2600 (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); 2601 }); 2602 2603 return config; 2604} 2605 2606 2607/***/ }), 2608
vendor: 1,558 bytes, lines 2609-2650
2609/***/ "./node_modules/axios/lib/core/settle.js": 2610/*!***********************************************!*\ 2611 !*** ./node_modules/axios/lib/core/settle.js ***! 2612 \***********************************************/ 2613/*! exports provided: default */ 2614/***/ (function(module, __webpack_exports__, __webpack_require__) { 2615 2616"use strict"; 2617__webpack_require__.r(__webpack_exports__); 2618/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return settle; }); 2619/* harmony import */ var _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 2620 2621 2622 2623 2624/** 2625 * Resolve or reject a Promise based on response status. 2626 * 2627 * @param {Function} resolve A function that resolves the promise. 2628 * @param {Function} reject A function that rejects the promise. 2629 * @param {object} response The response. 2630 * 2631 * @returns {object} The response. 2632 */ 2633function settle(resolve, reject, response) { 2634 const validateStatus = response.config.validateStatus; 2635 if (!response.status || !validateStatus || validateStatus(response.status)) { 2636 resolve(response); 2637 } else { 2638 reject(new _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"]( 2639 'Request failed with status code ' + response.status, 2640 [_AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_REQUEST, _AxiosError_js__WEBPACK_IMPORTED_MODULE_0__["default"].ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], 2641 response.config, 2642 response.request, 2643 response 2644 )); 2645 } 2646} 2647 2648 2649/***/ }), 2650
vendor: 1,790 bytes, lines 2651-2695
2651/***/ "./node_modules/axios/lib/core/transformData.js": 2652/*!******************************************************!*\ 2653 !*** ./node_modules/axios/lib/core/transformData.js ***! 2654 \******************************************************/ 2655/*! exports provided: default */ 2656/***/ (function(module, __webpack_exports__, __webpack_require__) { 2657 2658"use strict"; 2659__webpack_require__.r(__webpack_exports__); 2660/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transformData; }); 2661/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 2662/* harmony import */ var _defaults_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../defaults/index.js */ "./node_modules/axios/lib/defaults/index.js"); 2663/* harmony import */ var _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/AxiosHeaders.js */ "./node_modules/axios/lib/core/AxiosHeaders.js"); 2664 2665 2666 2667 2668 2669 2670/** 2671 * Transform the data for a request or a response 2672 * 2673 * @param {Array|Function} fns A single function or Array of functions 2674 * @param {?Object} response The response object 2675 * 2676 * @returns {*} The resulting transformed data 2677 */ 2678function transformData(fns, response) { 2679 const config = this || _defaults_index_js__WEBPACK_IMPORTED_MODULE_1__["default"]; 2680 const context = response || config; 2681 const headers = _core_AxiosHeaders_js__WEBPACK_IMPORTED_MODULE_2__["default"].from(context.headers); 2682 let data = context.data; 2683 2684 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(fns, function transform(fn) { 2685 data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); 2686 }); 2687 2688 headers.normalize(); 2689 2690 return data; 2691} 2692 2693 2694/***/ }), 2695
vendor: 7,061 bytes, lines 2696-2881
2696/***/ "./node_modules/axios/lib/defaults/index.js": 2697/*!**************************************************!*\ 2698 !*** ./node_modules/axios/lib/defaults/index.js ***! 2699 \**************************************************/ 2700/*! exports provided: default */ 2701/***/ (function(module, __webpack_exports__, __webpack_require__) { 2702 2703"use strict"; 2704__webpack_require__.r(__webpack_exports__); 2705/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 2706/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 2707/* harmony import */ var _transitional_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitional.js */ "./node_modules/axios/lib/defaults/transitional.js"); 2708/* harmony import */ var _helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../helpers/toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js"); 2709/* harmony import */ var _helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../helpers/toURLEncodedForm.js */ "./node_modules/axios/lib/helpers/toURLEncodedForm.js"); 2710/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js"); 2711/* harmony import */ var _helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../helpers/formDataToJSON.js */ "./node_modules/axios/lib/helpers/formDataToJSON.js"); 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722const DEFAULT_CONTENT_TYPE = { 2723 'Content-Type': undefined 2724}; 2725 2726/** 2727 * It takes a string, tries to parse it, and if it fails, it returns the stringified version 2728 * of the input 2729 * 2730 * @param {any} rawValue - The value to be stringified. 2731 * @param {Function} parser - A function that parses a string into a JavaScript object. 2732 * @param {Function} encoder - A function that takes a value and returns a string. 2733 * 2734 * @returns {string} A stringified version of the rawValue. 2735 */ 2736function stringifySafely(rawValue, parser, encoder) { 2737 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(rawValue)) { 2738 try { 2739 (parser || JSON.parse)(rawValue); 2740 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].trim(rawValue); 2741 } catch (e) { 2742 if (e.name !== 'SyntaxError') { 2743 throw e; 2744 } 2745 } 2746 } 2747 2748 return (encoder || JSON.stringify)(rawValue); 2749} 2750 2751const defaults = { 2752 2753 transitional: _transitional_js__WEBPACK_IMPORTED_MODULE_2__["default"], 2754 2755 adapter: ['xhr', 'http'], 2756 2757 transformRequest: [function transformRequest(data, headers) { 2758 const contentType = headers.getContentType() || ''; 2759 const hasJSONContentType = contentType.indexOf('application/json') > -1; 2760 const isObjectPayload = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(data); 2761 2762 if (isObjectPayload && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isHTMLForm(data)) { 2763 data = new FormData(data); 2764 } 2765 2766 const isFormData = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(data); 2767 2768 if (isFormData) { 2769 if (!hasJSONContentType) { 2770 return data; 2771 } 2772 return hasJSONContentType ? JSON.stringify(Object(_helpers_formDataToJSON_js__WEBPACK_IMPORTED_MODULE_6__["default"])(data)) : data; 2773 } 2774 2775 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBuffer(data) || 2776 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBuffer(data) || 2777 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isStream(data) || 2778 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFile(data) || 2779 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBlob(data) 2780 ) { 2781 return data; 2782 } 2783 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBufferView(data)) { 2784 return data.buffer; 2785 } 2786 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isURLSearchParams(data)) { 2787 headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); 2788 return data.toString(); 2789 } 2790 2791 let isFileList; 2792 2793 if (isObjectPayload) { 2794 if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { 2795 return Object(_helpers_toURLEncodedForm_js__WEBPACK_IMPORTED_MODULE_4__["default"])(data, this.formSerializer).toString(); 2796 } 2797 2798 if ((isFileList = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { 2799 const _FormData = this.env && this.env.FormData; 2800 2801 return Object(_helpers_toFormData_js__WEBPACK_IMPORTED_MODULE_3__["default"])( 2802 isFileList ? {'files[]': data} : data, 2803 _FormData && new _FormData(), 2804 this.formSerializer 2805 ); 2806 } 2807 } 2808 2809 if (isObjectPayload || hasJSONContentType ) { 2810 headers.setContentType('application/json', false); 2811 return stringifySafely(data); 2812 } 2813 2814 return data; 2815 }], 2816 2817 transformResponse: [function transformResponse(data) { 2818 const transitional = this.transitional || defaults.transitional; 2819 const forcedJSONParsing = transitional && transitional.forcedJSONParsing; 2820 const JSONRequested = this.responseType === 'json'; 2821 2822 if (data && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { 2823 const silentJSONParsing = transitional && transitional.silentJSONParsing; 2824 const strictJSONParsing = !silentJSONParsing && JSONRequested; 2825 2826 try { 2827 return JSON.parse(data); 2828 } catch (e) { 2829 if (strictJSONParsing) { 2830 if (e.name === 'SyntaxError') { 2831 throw _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].from(e, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_RESPONSE, this, null, this.response); 2832 } 2833 throw e; 2834 } 2835 } 2836 } 2837 2838 return data; 2839 }], 2840 2841 /** 2842 * A timeout in milliseconds to abort a request. If set to 0 (default) a 2843 * timeout is not created. 2844 */ 2845 timeout: 0, 2846 2847 xsrfCookieName: 'XSRF-TOKEN', 2848 xsrfHeaderName: 'X-XSRF-TOKEN', 2849 2850 maxContentLength: -1, 2851 maxBodyLength: -1, 2852 2853 env: { 2854 FormData: _platform_index_js__WEBPACK_IMPORTED_MODULE_5__["default"].classes.FormData, 2855 Blob: _platform_index_js__WEBPACK_IMPORTED_MODULE_5__["default"].classes.Blob 2856 }, 2857 2858 validateStatus: function validateStatus(status) { 2859 return status >= 200 && status < 300; 2860 }, 2861 2862 headers: { 2863 common: { 2864 'Accept': 'application/json, text/plain, */*' 2865 } 2866 } 2867}; 2868 2869_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { 2870 defaults.headers[method] = {}; 2871}); 2872 2873_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { 2874 defaults.headers[method] = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].merge(DEFAULT_CONTENT_TYPE); 2875}); 2876 2877/* harmony default export */ __webpack_exports__["default"] = (defaults); 2878 2879 2880/***/ }), 2881
vendor: 574 bytes, lines 2882-2901
2882/***/ "./node_modules/axios/lib/defaults/transitional.js": 2883/*!*********************************************************!*\ 2884 !*** ./node_modules/axios/lib/defaults/transitional.js ***! 2885 \*********************************************************/ 2886/*! exports provided: default */ 2887/***/ (function(module, __webpack_exports__, __webpack_require__) { 2888 2889"use strict"; 2890__webpack_require__.r(__webpack_exports__); 2891 2892 2893/* harmony default export */ __webpack_exports__["default"] = ({ 2894 silentJSONParsing: true, 2895 forcedJSONParsing: true, 2896 clarifyTimeoutError: false 2897}); 2898 2899 2900/***/ }), 2901
vendor: 828 bytes, lines 2902-2918
2902/***/ "./node_modules/axios/lib/env/classes/FormData.js": 2903/*!********************************************************!*\ 2904 !*** ./node_modules/axios/lib/env/classes/FormData.js ***! 2905 \********************************************************/ 2906/*! exports provided: default */ 2907/***/ (function(module, __webpack_exports__, __webpack_require__) { 2908 2909"use strict"; 2910__webpack_require__.r(__webpack_exports__); 2911/* harmony import */ var form_data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! form-data */ "./node_modules/form-data/lib/browser.js"); 2912/* harmony import */ var form_data__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(form_data__WEBPACK_IMPORTED_MODULE_0__); 2913 2914/* harmony default export */ __webpack_exports__["default"] = (form_data__WEBPACK_IMPORTED_MODULE_0___default.a); 2915 2916 2917/***/ }), 2918
vendor: 510 bytes, lines 2919-2932
2919/***/ "./node_modules/axios/lib/env/data.js": 2920/*!********************************************!*\ 2921 !*** ./node_modules/axios/lib/env/data.js ***! 2922 \********************************************/ 2923/*! exports provided: VERSION */ 2924/***/ (function(module, __webpack_exports__, __webpack_require__) { 2925 2926"use strict"; 2927__webpack_require__.r(__webpack_exports__); 2928/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VERSION", function() { return VERSION; }); 2929const VERSION = "1.2.4"; 2930 2931/***/ }), 2932
vendor: 2,099 bytes, lines 2933-3004
2933/***/ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js": 2934/*!****************************************************************!*\ 2935 !*** ./node_modules/axios/lib/helpers/AxiosURLSearchParams.js ***! 2936 \****************************************************************/ 2937/*! exports provided: default */ 2938/***/ (function(module, __webpack_exports__, __webpack_require__) { 2939 2940"use strict"; 2941__webpack_require__.r(__webpack_exports__); 2942/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js"); 2943 2944 2945 2946 2947/** 2948 * It encodes a string by replacing all characters that are not in the unreserved set with 2949 * their percent-encoded equivalents 2950 * 2951 * @param {string} str - The string to encode. 2952 * 2953 * @returns {string} The encoded string. 2954 */ 2955function encode(str) { 2956 const charMap = { 2957 '!': '%21', 2958 "'": '%27', 2959 '(': '%28', 2960 ')': '%29', 2961 '~': '%7E', 2962 '%20': '+', 2963 '%00': '\x00' 2964 }; 2965 return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { 2966 return charMap[match]; 2967 }); 2968} 2969 2970/** 2971 * It takes a params object and converts it to a FormData object 2972 * 2973 * @param {Object<string, any>} params - The parameters to be converted to a FormData object. 2974 * @param {Object<string, any>} options - The options object passed to the Axios constructor. 2975 * 2976 * @returns {void} 2977 */ 2978function AxiosURLSearchParams(params, options) { 2979 this._pairs = []; 2980 2981 params && Object(_toFormData_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, this, options); 2982} 2983 2984const prototype = AxiosURLSearchParams.prototype; 2985 2986prototype.append = function append(name, value) { 2987 this._pairs.push([name, value]); 2988}; 2989 2990prototype.toString = function toString(encoder) { 2991 const _encode = encoder ? function(value) { 2992 return encoder.call(this, value, encode); 2993 } : encode; 2994 2995 return this._pairs.map(function each(pair) { 2996 return _encode(pair[0]) + '=' + _encode(pair[1]); 2997 }, '').join('&'); 2998}; 2999 3000/* harmony default export */ __webpack_exports__["default"] = (AxiosURLSearchParams); 3001 3002 3003/***/ }), 3004
vendor: 2,073 bytes, lines 3005-3088
3005/***/ "./node_modules/axios/lib/helpers/HttpStatusCode.js": 3006/*!**********************************************************!*\ 3007 !*** ./node_modules/axios/lib/helpers/HttpStatusCode.js ***! 3008 \**********************************************************/ 3009/*! exports provided: default */ 3010/***/ (function(module, __webpack_exports__, __webpack_require__) { 3011 3012"use strict"; 3013__webpack_require__.r(__webpack_exports__); 3014const HttpStatusCode = { 3015 Continue: 100, 3016 SwitchingProtocols: 101, 3017 Processing: 102, 3018 EarlyHints: 103, 3019 Ok: 200, 3020 Created: 201, 3021 Accepted: 202, 3022 NonAuthoritativeInformation: 203, 3023 NoContent: 204, 3024 ResetContent: 205, 3025 PartialContent: 206, 3026 MultiStatus: 207, 3027 AlreadyReported: 208, 3028 ImUsed: 226, 3029 MultipleChoices: 300, 3030 MovedPermanently: 301, 3031 Found: 302, 3032 SeeOther: 303, 3033 NotModified: 304, 3034 UseProxy: 305, 3035 Unused: 306, 3036 TemporaryRedirect: 307, 3037 PermanentRedirect: 308, 3038 BadRequest: 400, 3039 Unauthorized: 401, 3040 PaymentRequired: 402, 3041 Forbidden: 403, 3042 NotFound: 404, 3043 MethodNotAllowed: 405, 3044 NotAcceptable: 406, 3045 ProxyAuthenticationRequired: 407, 3046 RequestTimeout: 408, 3047 Conflict: 409, 3048 Gone: 410, 3049 LengthRequired: 411, 3050 PreconditionFailed: 412, 3051 PayloadTooLarge: 413, 3052 UriTooLong: 414, 3053 UnsupportedMediaType: 415, 3054 RangeNotSatisfiable: 416, 3055 ExpectationFailed: 417, 3056 ImATeapot: 418, 3057 MisdirectedRequest: 421, 3058 UnprocessableEntity: 422, 3059 Locked: 423, 3060 FailedDependency: 424, 3061 TooEarly: 425, 3062 UpgradeRequired: 426, 3063 PreconditionRequired: 428, 3064 TooManyRequests: 429, 3065 RequestHeaderFieldsTooLarge: 431, 3066 UnavailableForLegalReasons: 451, 3067 InternalServerError: 500, 3068 NotImplemented: 501, 3069 BadGateway: 502, 3070 ServiceUnavailable: 503, 3071 GatewayTimeout: 504, 3072 HttpVersionNotSupported: 505, 3073 VariantAlsoNegotiates: 506, 3074 InsufficientStorage: 507, 3075 LoopDetected: 508, 3076 NotExtended: 510, 3077 NetworkAuthenticationRequired: 511, 3078}; 3079 3080Object.entries(HttpStatusCode).forEach(([key, value]) => { 3081 HttpStatusCode[value] = key; 3082}); 3083 3084/* harmony default export */ __webpack_exports__["default"] = (HttpStatusCode); 3085 3086 3087/***/ }), 3088
vendor: 605 bytes, lines 3089-3109
3089/***/ "./node_modules/axios/lib/helpers/bind.js": 3090/*!************************************************!*\ 3091 !*** ./node_modules/axios/lib/helpers/bind.js ***! 3092 \************************************************/ 3093/*! exports provided: default */ 3094/***/ (function(module, __webpack_exports__, __webpack_require__) { 3095 3096"use strict"; 3097__webpack_require__.r(__webpack_exports__); 3098/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bind; }); 3099 3100 3101function bind(fn, thisArg) { 3102 return function wrap() { 3103 return fn.apply(thisArg, arguments); 3104 }; 3105} 3106 3107 3108/***/ }), 3109
vendor: 2,399 bytes, lines 3110-3188
3110/***/ "./node_modules/axios/lib/helpers/buildURL.js": 3111/*!****************************************************!*\ 3112 !*** ./node_modules/axios/lib/helpers/buildURL.js ***! 3113 \****************************************************/ 3114/*! exports provided: default */ 3115/***/ (function(module, __webpack_exports__, __webpack_require__) { 3116 3117"use strict"; 3118__webpack_require__.r(__webpack_exports__); 3119/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return buildURL; }); 3120/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 3121/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/AxiosURLSearchParams.js */ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js"); 3122 3123 3124 3125 3126 3127/** 3128 * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their 3129 * URI encoded counterparts 3130 * 3131 * @param {string} val The value to be encoded. 3132 * 3133 * @returns {string} The encoded value. 3134 */ 3135function encode(val) { 3136 return encodeURIComponent(val). 3137 replace(/%3A/gi, ':'). 3138 replace(/%24/g, '$'). 3139 replace(/%2C/gi, ','). 3140 replace(/%20/g, '+'). 3141 replace(/%5B/gi, '['). 3142 replace(/%5D/gi, ']'); 3143} 3144 3145/** 3146 * Build a URL by appending params to the end 3147 * 3148 * @param {string} url The base of the url (e.g., http://www.google.com) 3149 * @param {object} [params] The params to be appended 3150 * @param {?object} options 3151 * 3152 * @returns {string} The formatted url 3153 */ 3154function buildURL(url, params, options) { 3155 /*eslint no-param-reassign:0*/ 3156 if (!params) { 3157 return url; 3158 } 3159 3160 const _encode = options && options.encode || encode; 3161 3162 const serializeFn = options && options.serialize; 3163 3164 let serializedParams; 3165 3166 if (serializeFn) { 3167 serializedParams = serializeFn(params, options); 3168 } else { 3169 serializedParams = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isURLSearchParams(params) ? 3170 params.toString() : 3171 new _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_1__["default"](params, options).toString(_encode); 3172 } 3173 3174 if (serializedParams) { 3175 const hashmarkIndex = url.indexOf("#"); 3176 3177 if (hashmarkIndex !== -1) { 3178 url = url.slice(0, hashmarkIndex); 3179 } 3180 url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; 3181 } 3182 3183 return url; 3184} 3185 3186 3187/***/ }), 3188
vendor: 886 bytes, lines 3189-3217
3189/***/ "./node_modules/axios/lib/helpers/combineURLs.js": 3190/*!*******************************************************!*\ 3191 !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! 3192 \*******************************************************/ 3193/*! exports provided: default */ 3194/***/ (function(module, __webpack_exports__, __webpack_require__) { 3195 3196"use strict"; 3197__webpack_require__.r(__webpack_exports__); 3198/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineURLs; }); 3199 3200 3201/** 3202 * Creates a new URL by combining the specified URLs 3203 * 3204 * @param {string} baseURL The base URL 3205 * @param {string} relativeURL The relative URL 3206 * 3207 * @returns {string} The combined URL 3208 */ 3209function combineURLs(baseURL, relativeURL) { 3210 return relativeURL 3211 ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') 3212 : baseURL; 3213} 3214 3215 3216/***/ }), 3217
vendor: 2,254 bytes, lines 3218-3284
3218/***/ "./node_modules/axios/lib/helpers/cookies.js": 3219/*!***************************************************!*\ 3220 !*** ./node_modules/axios/lib/helpers/cookies.js ***! 3221 \***************************************************/ 3222/*! exports provided: default */ 3223/***/ (function(module, __webpack_exports__, __webpack_require__) { 3224 3225"use strict"; 3226__webpack_require__.r(__webpack_exports__); 3227/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 3228/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js"); 3229 3230 3231 3232 3233 3234/* harmony default export */ __webpack_exports__["default"] = (_platform_index_js__WEBPACK_IMPORTED_MODULE_1__["default"].isStandardBrowserEnv ? 3235 3236// Standard browser envs support document.cookie 3237 (function standardBrowserEnv() { 3238 return { 3239 write: function write(name, value, expires, path, domain, secure) { 3240 const cookie = []; 3241 cookie.push(name + '=' + encodeURIComponent(value)); 3242 3243 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isNumber(expires)) { 3244 cookie.push('expires=' + new Date(expires).toGMTString()); 3245 } 3246 3247 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(path)) { 3248 cookie.push('path=' + path); 3249 } 3250 3251 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(domain)) { 3252 cookie.push('domain=' + domain); 3253 } 3254 3255 if (secure === true) { 3256 cookie.push('secure'); 3257 } 3258 3259 document.cookie = cookie.join('; '); 3260 }, 3261 3262 read: function read(name) { 3263 const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); 3264 return (match ? decodeURIComponent(match[3]) : null); 3265 }, 3266 3267 remove: function remove(name) { 3268 this.write(name, '', Date.now() - 86400000); 3269 } 3270 }; 3271 })() : 3272 3273// Non standard browser env (web workers, react-native) lack needed support. 3274 (function nonStandardBrowserEnv() { 3275 return { 3276 write: function write() {}, 3277 read: function read() { return null; }, 3278 remove: function remove() {} 3279 }; 3280 })()); 3281 3282 3283/***/ }), 3284
vendor: 3,042 bytes, lines 3285-3390
3285/***/ "./node_modules/axios/lib/helpers/formDataToJSON.js": 3286/*!**********************************************************!*\ 3287 !*** ./node_modules/axios/lib/helpers/formDataToJSON.js ***! 3288 \**********************************************************/ 3289/*! exports provided: default */ 3290/***/ (function(module, __webpack_exports__, __webpack_require__) { 3291 3292"use strict"; 3293__webpack_require__.r(__webpack_exports__); 3294/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 3295 3296 3297 3298 3299/** 3300 * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] 3301 * 3302 * @param {string} name - The name of the property to get. 3303 * 3304 * @returns An array of strings. 3305 */ 3306function parsePropPath(name) { 3307 // foo[x][y][z] 3308 // foo.x.y.z 3309 // foo-x-y-z 3310 // foo x y z 3311 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].matchAll(/\w+|\[(\w*)]/g, name).map(match => { 3312 return match[0] === '[]' ? '' : match[1] || match[0]; 3313 }); 3314} 3315 3316/** 3317 * Convert an array to an object. 3318 * 3319 * @param {Array<any>} arr - The array to convert to an object. 3320 * 3321 * @returns An object with the same keys and values as the array. 3322 */ 3323function arrayToObject(arr) { 3324 const obj = {}; 3325 const keys = Object.keys(arr); 3326 let i; 3327 const len = keys.length; 3328 let key; 3329 for (i = 0; i < len; i++) { 3330 key = keys[i]; 3331 obj[key] = arr[key]; 3332 } 3333 return obj; 3334} 3335 3336/** 3337 * It takes a FormData object and returns a JavaScript object 3338 * 3339 * @param {string} formData The FormData object to convert to JSON. 3340 * 3341 * @returns {Object<string, any> | null} The converted object. 3342 */ 3343function formDataToJSON(formData) { 3344 function buildPath(path, value, target, index) { 3345 let name = path[index++]; 3346 const isNumericKey = Number.isFinite(+name); 3347 const isLast = index >= path.length; 3348 name = !name && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(target) ? target.length : name; 3349 3350 if (isLast) { 3351 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].hasOwnProp(target, name)) { 3352 target[name] = [target[name], value]; 3353 } else { 3354 target[name] = value; 3355 } 3356 3357 return !isNumericKey; 3358 } 3359 3360 if (!target[name] || !_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(target[name])) { 3361 target[name] = []; 3362 } 3363 3364 const result = buildPath(path, value, target[name], index); 3365 3366 if (result && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(target[name])) { 3367 target[name] = arrayToObject(target[name]); 3368 } 3369 3370 return !isNumericKey; 3371 } 3372 3373 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFormData(formData) && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(formData.entries)) { 3374 const obj = {}; 3375 3376 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEachEntry(formData, (name, value) => { 3377 buildPath(parsePropPath(name), value, obj, 0); 3378 }); 3379 3380 return obj; 3381 } 3382 3383 return null; 3384} 3385 3386/* harmony default export */ __webpack_exports__["default"] = (formDataToJSON); 3387 3388 3389/***/ }), 3390
vendor: 1,077 bytes, lines 3391-3419
3391/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": 3392/*!*********************************************************!*\ 3393 !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! 3394 \*********************************************************/ 3395/*! exports provided: default */ 3396/***/ (function(module, __webpack_exports__, __webpack_require__) { 3397 3398"use strict"; 3399__webpack_require__.r(__webpack_exports__); 3400/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isAbsoluteURL; }); 3401 3402 3403/** 3404 * Determines whether the specified URL is absolute 3405 * 3406 * @param {string} url The URL to test 3407 * 3408 * @returns {boolean} True if the specified URL is absolute, otherwise false 3409 */ 3410function isAbsoluteURL(url) { 3411 // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). 3412 // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed 3413 // by any combination of letters, digits, plus, period, or hyphen. 3414 return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); 3415} 3416 3417 3418/***/ }), 3419
vendor: 1,039 bytes, lines 3420-3448
3420/***/ "./node_modules/axios/lib/helpers/isAxiosError.js": 3421/*!********************************************************!*\ 3422 !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***! 3423 \********************************************************/ 3424/*! exports provided: default */ 3425/***/ (function(module, __webpack_exports__, __webpack_require__) { 3426 3427"use strict"; 3428__webpack_require__.r(__webpack_exports__); 3429/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return isAxiosError; }); 3430/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 3431 3432 3433 3434 3435/** 3436 * Determines whether the payload is an error thrown by Axios 3437 * 3438 * @param {*} payload The value to test 3439 * 3440 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false 3441 */ 3442function isAxiosError(payload) { 3443 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(payload) && (payload.isAxiosError === true); 3444} 3445 3446 3447/***/ }), 3448
vendor: 3,062 bytes, lines 3449-3530
3449/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": 3450/*!***********************************************************!*\ 3451 !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! 3452 \***********************************************************/ 3453/*! exports provided: default */ 3454/***/ (function(module, __webpack_exports__, __webpack_require__) { 3455 3456"use strict"; 3457__webpack_require__.r(__webpack_exports__); 3458/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 3459/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js"); 3460 3461 3462 3463 3464 3465/* harmony default export */ __webpack_exports__["default"] = (_platform_index_js__WEBPACK_IMPORTED_MODULE_1__["default"].isStandardBrowserEnv ? 3466 3467// Standard browser envs have full support of the APIs needed to test 3468// whether the request URL is of the same origin as current location. 3469 (function standardBrowserEnv() { 3470 const msie = /(msie|trident)/i.test(navigator.userAgent); 3471 const urlParsingNode = document.createElement('a'); 3472 let originURL; 3473 3474 /** 3475 * Parse a URL to discover it's components 3476 * 3477 * @param {String} url The URL to be parsed 3478 * @returns {Object} 3479 */ 3480 function resolveURL(url) { 3481 let href = url; 3482 3483 if (msie) { 3484 // IE needs attribute set twice to normalize properties 3485 urlParsingNode.setAttribute('href', href); 3486 href = urlParsingNode.href; 3487 } 3488 3489 urlParsingNode.setAttribute('href', href); 3490 3491 // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils 3492 return { 3493 href: urlParsingNode.href, 3494 protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', 3495 host: urlParsingNode.host, 3496 search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', 3497 hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', 3498 hostname: urlParsingNode.hostname, 3499 port: urlParsingNode.port, 3500 pathname: (urlParsingNode.pathname.charAt(0) === '/') ? 3501 urlParsingNode.pathname : 3502 '/' + urlParsingNode.pathname 3503 }; 3504 } 3505 3506 originURL = resolveURL(window.location.href); 3507 3508 /** 3509 * Determine if a URL shares the same origin as the current location 3510 * 3511 * @param {String} requestURL The URL to test 3512 * @returns {boolean} True if URL shares the same origin, otherwise false 3513 */ 3514 return function isURLSameOrigin(requestURL) { 3515 const parsed = (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(requestURL)) ? resolveURL(requestURL) : requestURL; 3516 return (parsed.protocol === originURL.protocol && 3517 parsed.host === originURL.host); 3518 }; 3519 })() : 3520 3521 // Non standard browser envs (web workers, react-native) lack needed support. 3522 (function nonStandardBrowserEnv() { 3523 return function isURLSameOrigin() { 3524 return true; 3525 }; 3526 })()); 3527 3528 3529/***/ }), 3530
vendor: 489 bytes, lines 3531-3545
3531/***/ "./node_modules/axios/lib/helpers/null.js": 3532/*!************************************************!*\ 3533 !*** ./node_modules/axios/lib/helpers/null.js ***! 3534 \************************************************/ 3535/*! exports provided: default */ 3536/***/ (function(module, __webpack_exports__, __webpack_require__) { 3537 3538"use strict"; 3539__webpack_require__.r(__webpack_exports__); 3540// eslint-disable-next-line strict 3541/* harmony default export */ __webpack_exports__["default"] = (null); 3542 3543 3544/***/ }), 3545
vendor: 1,989 bytes, lines 3546-3614
3546/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": 3547/*!********************************************************!*\ 3548 !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! 3549 \********************************************************/ 3550/*! exports provided: default */ 3551/***/ (function(module, __webpack_exports__, __webpack_require__) { 3552 3553"use strict"; 3554__webpack_require__.r(__webpack_exports__); 3555/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../utils.js */ "./node_modules/axios/lib/utils.js"); 3556 3557 3558 3559 3560// RawAxiosHeaders whose duplicates are ignored by node 3561// c.f. https://nodejs.org/api/http.html#http_message_headers 3562const ignoreDuplicateOf = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toObjectSet([ 3563 'age', 'authorization', 'content-length', 'content-type', 'etag', 3564 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 3565 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 3566 'referer', 'retry-after', 'user-agent' 3567]); 3568 3569/** 3570 * Parse headers into an object 3571 * 3572 * ``` 3573 * Date: Wed, 27 Aug 2014 08:58:49 GMT 3574 * Content-Type: application/json 3575 * Connection: keep-alive 3576 * Transfer-Encoding: chunked 3577 * ``` 3578 * 3579 * @param {String} rawHeaders Headers needing to be parsed 3580 * 3581 * @returns {Object} Headers parsed into an object 3582 */ 3583/* harmony default export */ __webpack_exports__["default"] = (rawHeaders => { 3584 const parsed = {}; 3585 let key; 3586 let val; 3587 let i; 3588 3589 rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { 3590 i = line.indexOf(':'); 3591 key = line.substring(0, i).trim().toLowerCase(); 3592 val = line.substring(i + 1).trim(); 3593 3594 if (!key || (parsed[key] && ignoreDuplicateOf[key])) { 3595 return; 3596 } 3597 3598 if (key === 'set-cookie') { 3599 if (parsed[key]) { 3600 parsed[key].push(val); 3601 } else { 3602 parsed[key] = [val]; 3603 } 3604 } else { 3605 parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; 3606 } 3607 }); 3608 3609 return parsed; 3610}); 3611 3612 3613/***/ }), 3614
vendor: 667 bytes, lines 3615-3634
3615/***/ "./node_modules/axios/lib/helpers/parseProtocol.js": 3616/*!*********************************************************!*\ 3617 !*** ./node_modules/axios/lib/helpers/parseProtocol.js ***! 3618 \*********************************************************/ 3619/*! exports provided: default */ 3620/***/ (function(module, __webpack_exports__, __webpack_require__) { 3621 3622"use strict"; 3623__webpack_require__.r(__webpack_exports__); 3624/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return parseProtocol; }); 3625 3626 3627function parseProtocol(url) { 3628 const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); 3629 return match && match[1] || ''; 3630} 3631 3632 3633/***/ }), 3634
vendor: 1,540 bytes, lines 3635-3702
3635/***/ "./node_modules/axios/lib/helpers/speedometer.js": 3636/*!*******************************************************!*\ 3637 !*** ./node_modules/axios/lib/helpers/speedometer.js ***! 3638 \*******************************************************/ 3639/*! exports provided: default */ 3640/***/ (function(module, __webpack_exports__, __webpack_require__) { 3641 3642"use strict"; 3643__webpack_require__.r(__webpack_exports__); 3644 3645 3646/** 3647 * Calculate data maxRate 3648 * @param {Number} [samplesCount= 10] 3649 * @param {Number} [min= 1000] 3650 * @returns {Function} 3651 */ 3652function speedometer(samplesCount, min) { 3653 samplesCount = samplesCount || 10; 3654 const bytes = new Array(samplesCount); 3655 const timestamps = new Array(samplesCount); 3656 let head = 0; 3657 let tail = 0; 3658 let firstSampleTS; 3659 3660 min = min !== undefined ? min : 1000; 3661 3662 return function push(chunkLength) { 3663 const now = Date.now(); 3664 3665 const startedAt = timestamps[tail]; 3666 3667 if (!firstSampleTS) { 3668 firstSampleTS = now; 3669 } 3670 3671 bytes[head] = chunkLength; 3672 timestamps[head] = now; 3673 3674 let i = tail; 3675 let bytesCount = 0; 3676 3677 while (i !== head) { 3678 bytesCount += bytes[i++]; 3679 i = i % samplesCount; 3680 } 3681 3682 head = (head + 1) % samplesCount; 3683 3684 if (head === tail) { 3685 tail = (tail + 1) % samplesCount; 3686 } 3687 3688 if (now - firstSampleTS < min) { 3689 return; 3690 } 3691 3692 const passed = startedAt && now - startedAt; 3693 3694 return passed ? Math.round(bytesCount * 1000 / passed) : undefined; 3695 }; 3696} 3697 3698/* harmony default export */ __webpack_exports__["default"] = (speedometer); 3699 3700 3701/***/ }), 3702
vendor: 1,045 bytes, lines 3703-3744
3703/***/ "./node_modules/axios/lib/helpers/spread.js": 3704/*!**************************************************!*\ 3705 !*** ./node_modules/axios/lib/helpers/spread.js ***! 3706 \**************************************************/ 3707/*! exports provided: default */ 3708/***/ (function(module, __webpack_exports__, __webpack_require__) { 3709 3710"use strict"; 3711__webpack_require__.r(__webpack_exports__); 3712/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return spread; }); 3713 3714 3715/** 3716 * Syntactic sugar for invoking a function and expanding an array for arguments. 3717 * 3718 * Common use case would be to use `Function.prototype.apply`. 3719 * 3720 * ```js 3721 * function f(x, y, z) {} 3722 * var args = [1, 2, 3]; 3723 * f.apply(null, args); 3724 * ``` 3725 * 3726 * With `spread` this example can be re-written. 3727 * 3728 * ```js 3729 * spread(function(x, y, z) {})([1, 2, 3]); 3730 * ``` 3731 * 3732 * @param {Function} callback 3733 * 3734 * @returns {Function} 3735 */ 3736function spread(callback) { 3737 return function wrap(arr) { 3738 return callback.apply(null, arr); 3739 }; 3740} 3741 3742 3743/***/ }), 3744
vendor: 8,483 bytes, lines 3745-3990
3745/***/ "./node_modules/axios/lib/helpers/toFormData.js": 3746/*!******************************************************!*\ 3747 !*** ./node_modules/axios/lib/helpers/toFormData.js ***! 3748 \******************************************************/ 3749/*! exports provided: default */ 3750/***/ (function(module, __webpack_exports__, __webpack_require__) { 3751 3752"use strict"; 3753__webpack_require__.r(__webpack_exports__); 3754/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 3755/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 3756/* harmony import */ var _env_classes_FormData_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../env/classes/FormData.js */ "./node_modules/axios/lib/env/classes/FormData.js"); 3757 3758 3759 3760 3761 3762 3763/** 3764 * Determines if the given thing is a array or js object. 3765 * 3766 * @param {string} thing - The object or array to be visited. 3767 * 3768 * @returns {boolean} 3769 */ 3770function isVisitable(thing) { 3771 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isPlainObject(thing) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(thing); 3772} 3773 3774/** 3775 * It removes the brackets from the end of a string 3776 * 3777 * @param {string} key - The key of the parameter. 3778 * 3779 * @returns {string} the key without the brackets. 3780 */ 3781function removeBrackets(key) { 3782 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].endsWith(key, '[]') ? key.slice(0, -2) : key; 3783} 3784 3785/** 3786 * It takes a path, a key, and a boolean, and returns a string 3787 * 3788 * @param {string} path - The path to the current key. 3789 * @param {string} key - The key of the current object being iterated over. 3790 * @param {string} dots - If true, the key will be rendered with dots instead of brackets. 3791 * 3792 * @returns {string} The path to the current key. 3793 */ 3794function renderKey(path, key, dots) { 3795 if (!path) return key; 3796 return path.concat(key).map(function each(token, i) { 3797 // eslint-disable-next-line no-param-reassign 3798 token = removeBrackets(token); 3799 return !dots && i ? '[' + token + ']' : token; 3800 }).join(dots ? '.' : ''); 3801} 3802 3803/** 3804 * If the array is an array and none of its elements are visitable, then it's a flat array. 3805 * 3806 * @param {Array<any>} arr - The array to check 3807 * 3808 * @returns {boolean} 3809 */ 3810function isFlatArray(arr) { 3811 return _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(arr) && !arr.some(isVisitable); 3812} 3813 3814const predicates = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toFlatObject(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"], {}, null, function filter(prop) { 3815 return /^is[A-Z]/.test(prop); 3816}); 3817 3818/** 3819 * If the thing is a FormData object, return true, otherwise return false. 3820 * 3821 * @param {unknown} thing - The thing to check. 3822 * 3823 * @returns {boolean} 3824 */ 3825function isSpecCompliant(thing) { 3826 return thing && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]; 3827} 3828 3829/** 3830 * Convert a data object to FormData 3831 * 3832 * @param {Object} obj 3833 * @param {?Object} [formData] 3834 * @param {?Object} [options] 3835 * @param {Function} [options.visitor] 3836 * @param {Boolean} [options.metaTokens = true] 3837 * @param {Boolean} [options.dots = false] 3838 * @param {?Boolean} [options.indexes = false] 3839 * 3840 * @returns {Object} 3841 **/ 3842 3843/** 3844 * It converts an object into a FormData object 3845 * 3846 * @param {Object<any, any>} obj - The object to convert to form data. 3847 * @param {string} formData - The FormData object to append to. 3848 * @param {Object<string, any>} options 3849 * 3850 * @returns 3851 */ 3852function toFormData(obj, formData, options) { 3853 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(obj)) { 3854 throw new TypeError('target must be an object'); 3855 } 3856 3857 // eslint-disable-next-line no-param-reassign 3858 formData = formData || new (_env_classes_FormData_js__WEBPACK_IMPORTED_MODULE_2__["default"] || FormData)(); 3859 3860 // eslint-disable-next-line no-param-reassign 3861 options = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toFlatObject(options, { 3862 metaTokens: true, 3863 dots: false, 3864 indexes: false 3865 }, false, function defined(option, source) { 3866 // eslint-disable-next-line no-eq-null,eqeqeq 3867 return !_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(source[option]); 3868 }); 3869 3870 const metaTokens = options.metaTokens; 3871 // eslint-disable-next-line no-use-before-define 3872 const visitor = options.visitor || defaultVisitor; 3873 const dots = options.dots; 3874 const indexes = options.indexes; 3875 const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; 3876 const useBlob = _Blob && isSpecCompliant(formData); 3877 3878 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFunction(visitor)) { 3879 throw new TypeError('visitor must be a function'); 3880 } 3881 3882 function convertValue(value) { 3883 if (value === null) return ''; 3884 3885 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isDate(value)) { 3886 return value.toISOString(); 3887 } 3888 3889 if (!useBlob && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBlob(value)) { 3890 throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('Blob is not supported. Use a Buffer instead.'); 3891 } 3892 3893 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArrayBuffer(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isTypedArray(value)) { 3894 return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); 3895 } 3896 3897 return value; 3898 } 3899 3900 /** 3901 * Default visitor. 3902 * 3903 * @param {*} value 3904 * @param {String|Number} key 3905 * @param {Array<String|Number>} path 3906 * @this {FormData} 3907 * 3908 * @returns {boolean} return true to visit the each prop of the value recursively 3909 */ 3910 function defaultVisitor(value, key, path) { 3911 let arr = value; 3912 3913 if (value && !path && typeof value === 'object') { 3914 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].endsWith(key, '{}')) { 3915 // eslint-disable-next-line no-param-reassign 3916 key = metaTokens ? key : key.slice(0, -2); 3917 // eslint-disable-next-line no-param-reassign 3918 value = JSON.stringify(value); 3919 } else if ( 3920 (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isArray(value) && isFlatArray(value)) || 3921 (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isFileList(value) || _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].endsWith(key, '[]') && (arr = _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].toArray(value)) 3922 )) { 3923 // eslint-disable-next-line no-param-reassign 3924 key = removeBrackets(key); 3925 3926 arr.forEach(function each(el, index) { 3927 !(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(el) || el === null) && formData.append( 3928 // eslint-disable-next-line no-nested-ternary 3929 indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), 3930 convertValue(el) 3931 ); 3932 }); 3933 return false; 3934 } 3935 } 3936 3937 if (isVisitable(value)) { 3938 return true; 3939 } 3940 3941 formData.append(renderKey(path, key, dots), convertValue(value)); 3942 3943 return false; 3944 } 3945 3946 const stack = []; 3947 3948 const exposedHelpers = Object.assign(predicates, { 3949 defaultVisitor, 3950 convertValue, 3951 isVisitable 3952 }); 3953 3954 function build(value, path) { 3955 if (_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(value)) return; 3956 3957 if (stack.indexOf(value) !== -1) { 3958 throw Error('Circular reference detected in ' + path.join('.')); 3959 } 3960 3961 stack.push(value); 3962 3963 _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].forEach(value, function each(el, key) { 3964 const result = !(_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isUndefined(el) || el === null) && visitor.call( 3965 formData, el, _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isString(key) ? key.trim() : key, path, exposedHelpers 3966 ); 3967 3968 if (result === true) { 3969 build(el, path ? path.concat(key) : [key]); 3970 } 3971 }); 3972 3973 stack.pop(); 3974 } 3975 3976 if (!_utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isObject(obj)) { 3977 throw new TypeError('data must be an object'); 3978 } 3979 3980 build(obj); 3981 3982 return formData; 3983} 3984 3985/* harmony default export */ __webpack_exports__["default"] = (toFormData); 3986 3987/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) 3988 3989/***/ }), 3990
vendor: 1,636 bytes, lines 3991-4025
3991/***/ "./node_modules/axios/lib/helpers/toURLEncodedForm.js": 3992/*!************************************************************!*\ 3993 !*** ./node_modules/axios/lib/helpers/toURLEncodedForm.js ***! 3994 \************************************************************/ 3995/*! exports provided: default */ 3996/***/ (function(module, __webpack_exports__, __webpack_require__) { 3997 3998"use strict"; 3999__webpack_require__.r(__webpack_exports__); 4000/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return toURLEncodedForm; }); 4001/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ "./node_modules/axios/lib/utils.js"); 4002/* harmony import */ var _toFormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./toFormData.js */ "./node_modules/axios/lib/helpers/toFormData.js"); 4003/* harmony import */ var _platform_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../platform/index.js */ "./node_modules/axios/lib/platform/index.js"); 4004 4005 4006 4007 4008 4009 4010function toURLEncodedForm(data, options) { 4011 return Object(_toFormData_js__WEBPACK_IMPORTED_MODULE_1__["default"])(data, new _platform_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].classes.URLSearchParams(), Object.assign({ 4012 visitor: function(value, key, path, helpers) { 4013 if (_platform_index_js__WEBPACK_IMPORTED_MODULE_2__["default"].isNode && _utils_js__WEBPACK_IMPORTED_MODULE_0__["default"].isBuffer(value)) { 4014 this.append(key, value.toString('base64')); 4015 return false; 4016 } 4017 4018 return helpers.defaultVisitor.apply(this, arguments); 4019 } 4020 }, options)); 4021} 4022 4023 4024/***/ }), 4025
vendor: 3,673 bytes, lines 4026-4131
4026/***/ "./node_modules/axios/lib/helpers/validator.js": 4027/*!*****************************************************!*\ 4028 !*** ./node_modules/axios/lib/helpers/validator.js ***! 4029 \*****************************************************/ 4030/*! exports provided: default */ 4031/***/ (function(module, __webpack_exports__, __webpack_require__) { 4032 4033"use strict"; 4034__webpack_require__.r(__webpack_exports__); 4035/* harmony import */ var _env_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../env/data.js */ "./node_modules/axios/lib/env/data.js"); 4036/* harmony import */ var _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/AxiosError.js */ "./node_modules/axios/lib/core/AxiosError.js"); 4037 4038 4039 4040 4041 4042const validators = {}; 4043 4044// eslint-disable-next-line func-names 4045['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { 4046 validators[type] = function validator(thing) { 4047 return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; 4048 }; 4049}); 4050 4051const deprecatedWarnings = {}; 4052 4053/** 4054 * Transitional option validator 4055 * 4056 * @param {function|boolean?} validator - set to false if the transitional option has been removed 4057 * @param {string?} version - deprecated version / removed since version 4058 * @param {string?} message - some message with additional info 4059 * 4060 * @returns {function} 4061 */ 4062validators.transitional = function transitional(validator, version, message) { 4063 function formatMessage(opt, desc) { 4064 return '[Axios v' + _env_data_js__WEBPACK_IMPORTED_MODULE_0__["VERSION"] + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); 4065 } 4066 4067 // eslint-disable-next-line func-names 4068 return (value, opt, opts) => { 4069 if (validator === false) { 4070 throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]( 4071 formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), 4072 _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_DEPRECATED 4073 ); 4074 } 4075 4076 if (version && !deprecatedWarnings[opt]) { 4077 deprecatedWarnings[opt] = true; 4078 // eslint-disable-next-line no-console 4079 console.warn( 4080 formatMessage( 4081 opt, 4082 ' has been deprecated since v' + version + ' and will be removed in the near future' 4083 ) 4084 ); 4085 } 4086 4087 return validator ? validator(value, opt, opts) : true; 4088 }; 4089}; 4090 4091/** 4092 * Assert object's properties type 4093 * 4094 * @param {object} options 4095 * @param {object} schema 4096 * @param {boolean?} allowUnknown 4097 * 4098 * @returns {object} 4099 */ 4100 4101function assertOptions(options, schema, allowUnknown) { 4102 if (typeof options !== 'object') { 4103 throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('options must be an object', _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_OPTION_VALUE); 4104 } 4105 const keys = Object.keys(options); 4106 let i = keys.length; 4107 while (i-- > 0) { 4108 const opt = keys[i]; 4109 const validator = schema[opt]; 4110 if (validator) { 4111 const value = options[opt]; 4112 const result = value === undefined || validator(value, opt, options); 4113 if (result !== true) { 4114 throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('option ' + opt + ' must be ' + result, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_OPTION_VALUE); 4115 } 4116 continue; 4117 } 4118 if (allowUnknown !== true) { 4119 throw new _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"]('Unknown option ' + opt, _core_AxiosError_js__WEBPACK_IMPORTED_MODULE_1__["default"].ERR_BAD_OPTION); 4120 } 4121 } 4122} 4123 4124/* harmony default export */ __webpack_exports__["default"] = ({ 4125 assertOptions, 4126 validators 4127}); 4128 4129 4130/***/ }), 4131
vendor: 544 bytes, lines 4132-4147
4132/***/ "./node_modules/axios/lib/platform/browser/classes/FormData.js": 4133/*!*********************************************************************!*\ 4134 !*** ./node_modules/axios/lib/platform/browser/classes/FormData.js ***! 4135 \*********************************************************************/ 4136/*! exports provided: default */ 4137/***/ (function(module, __webpack_exports__, __webpack_require__) { 4138 4139"use strict"; 4140__webpack_require__.r(__webpack_exports__); 4141 4142 4143/* harmony default export */ __webpack_exports__["default"] = (FormData); 4144 4145 4146/***/ }), 4147
vendor: 914 bytes, lines 4148-4165
4148/***/ "./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js": 4149/*!****************************************************************************!*\ 4150 !*** ./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js ***! 4151 \****************************************************************************/ 4152/*! exports provided: default */ 4153/***/ (function(module, __webpack_exports__, __webpack_require__) { 4154 4155"use strict"; 4156__webpack_require__.r(__webpack_exports__); 4157/* harmony import */ var _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../helpers/AxiosURLSearchParams.js */ "./node_modules/axios/lib/helpers/AxiosURLSearchParams.js"); 4158 4159 4160 4161/* harmony default export */ __webpack_exports__["default"] = (typeof URLSearchParams !== 'undefined' ? URLSearchParams : _helpers_AxiosURLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__["default"]); 4162 4163 4164/***/ }), 4165
vendor: 2,643 bytes, lines 4166-4243
4166/***/ "./node_modules/axios/lib/platform/browser/index.js": 4167/*!**********************************************************!*\ 4168 !*** ./node_modules/axios/lib/platform/browser/index.js ***! 4169 \**********************************************************/ 4170/*! exports provided: default */ 4171/***/ (function(module, __webpack_exports__, __webpack_require__) { 4172 4173"use strict"; 4174__webpack_require__.r(__webpack_exports__); 4175/* harmony import */ var _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./classes/URLSearchParams.js */ "./node_modules/axios/lib/platform/browser/classes/URLSearchParams.js"); 4176/* harmony import */ var _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./classes/FormData.js */ "./node_modules/axios/lib/platform/browser/classes/FormData.js"); 4177 4178 4179 4180/** 4181 * Determine if we're running in a standard browser environment 4182 * 4183 * This allows axios to run in a web worker, and react-native. 4184 * Both environments support XMLHttpRequest, but not fully standard globals. 4185 * 4186 * web workers: 4187 * typeof window -> undefined 4188 * typeof document -> undefined 4189 * 4190 * react-native: 4191 * navigator.product -> 'ReactNative' 4192 * nativescript 4193 * navigator.product -> 'NativeScript' or 'NS' 4194 * 4195 * @returns {boolean} 4196 */ 4197const isStandardBrowserEnv = (() => { 4198 let product; 4199 if (typeof navigator !== 'undefined' && ( 4200 (product = navigator.product) === 'ReactNative' || 4201 product === 'NativeScript' || 4202 product === 'NS') 4203 ) { 4204 return false; 4205 } 4206 4207 return typeof window !== 'undefined' && typeof document !== 'undefined'; 4208})(); 4209 4210/** 4211 * Determine if we're running in a standard browser webWorker environment 4212 * 4213 * Although the `isStandardBrowserEnv` method indicates that 4214 * `allows axios to run in a web worker`, the WebWorker will still be 4215 * filtered out due to its judgment standard 4216 * `typeof window !== 'undefined' && typeof document !== 'undefined'`. 4217 * This leads to a problem when axios post `FormData` in webWorker 4218 */ 4219 const isStandardBrowserWebWorkerEnv = (() => { 4220 return ( 4221 typeof WorkerGlobalScope !== 'undefined' && 4222 // eslint-disable-next-line no-undef 4223 self instanceof WorkerGlobalScope && 4224 typeof self.importScripts === 'function' 4225 ); 4226})(); 4227 4228 4229/* harmony default export */ __webpack_exports__["default"] = ({ 4230 isBrowser: true, 4231 classes: { 4232 URLSearchParams: _classes_URLSearchParams_js__WEBPACK_IMPORTED_MODULE_0__["default"], 4233 FormData: _classes_FormData_js__WEBPACK_IMPORTED_MODULE_1__["default"], 4234 Blob 4235 }, 4236 isStandardBrowserEnv, 4237 isStandardBrowserWebWorkerEnv, 4238 protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] 4239}); 4240 4241 4242/***/ }), 4243
vendor: 729 bytes, lines 4244-4262
4244/***/ "./node_modules/axios/lib/platform/index.js": 4245/*!**************************************************!*\ 4246 !*** ./node_modules/axios/lib/platform/index.js ***! 4247 \**************************************************/ 4248/*! exports provided: default */ 4249/***/ (function(module, __webpack_exports__, __webpack_require__) { 4250 4251"use strict"; 4252__webpack_require__.r(__webpack_exports__); 4253/* harmony import */ var _node_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node/index.js */ "./node_modules/axios/lib/platform/browser/index.js"); 4254/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _node_index_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 4255 4256 4257 4258 4259 4260 4261/***/ }), 4262
vendor: 17,181 bytes, lines 4263-4954
4263/***/ "./node_modules/axios/lib/utils.js": 4264/*!*****************************************!*\ 4265 !*** ./node_modules/axios/lib/utils.js ***! 4266 \*****************************************/ 4267/*! exports provided: default */ 4268/***/ (function(module, __webpack_exports__, __webpack_require__) { 4269 4270"use strict"; 4271__webpack_require__.r(__webpack_exports__); 4272/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/bind.js */ "./node_modules/axios/lib/helpers/bind.js"); 4273 4274 4275 4276 4277// utils is a library of generic helper functions non-specific to axios 4278 4279const {toString} = Object.prototype; 4280const {getPrototypeOf} = Object; 4281 4282const kindOf = (cache => thing => { 4283 const str = toString.call(thing); 4284 return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); 4285})(Object.create(null)); 4286 4287const kindOfTest = (type) => { 4288 type = type.toLowerCase(); 4289 return (thing) => kindOf(thing) === type 4290} 4291 4292const typeOfTest = type => thing => typeof thing === type; 4293 4294/** 4295 * Determine if a value is an Array 4296 * 4297 * @param {Object} val The value to test 4298 * 4299 * @returns {boolean} True if value is an Array, otherwise false 4300 */ 4301const {isArray} = Array; 4302 4303/** 4304 * Determine if a value is undefined 4305 * 4306 * @param {*} val The value to test 4307 * 4308 * @returns {boolean} True if the value is undefined, otherwise false 4309 */ 4310const isUndefined = typeOfTest('undefined'); 4311 4312/** 4313 * Determine if a value is a Buffer 4314 * 4315 * @param {*} val The value to test 4316 * 4317 * @returns {boolean} True if value is a Buffer, otherwise false 4318 */ 4319function isBuffer(val) { 4320 return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) 4321 && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); 4322} 4323 4324/** 4325 * Determine if a value is an ArrayBuffer 4326 * 4327 * @param {*} val The value to test 4328 * 4329 * @returns {boolean} True if value is an ArrayBuffer, otherwise false 4330 */ 4331const isArrayBuffer = kindOfTest('ArrayBuffer'); 4332 4333 4334/** 4335 * Determine if a value is a view on an ArrayBuffer 4336 * 4337 * @param {*} val The value to test 4338 * 4339 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false 4340 */ 4341function isArrayBufferView(val) { 4342 let result; 4343 if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { 4344 result = ArrayBuffer.isView(val); 4345 } else { 4346 result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); 4347 } 4348 return result; 4349} 4350 4351/** 4352 * Determine if a value is a String 4353 * 4354 * @param {*} val The value to test 4355 * 4356 * @returns {boolean} True if value is a String, otherwise false 4357 */ 4358const isString = typeOfTest('string'); 4359 4360/** 4361 * Determine if a value is a Function 4362 * 4363 * @param {*} val The value to test 4364 * @returns {boolean} True if value is a Function, otherwise false 4365 */ 4366const isFunction = typeOfTest('function'); 4367 4368/** 4369 * Determine if a value is a Number 4370 * 4371 * @param {*} val The value to test 4372 * 4373 * @returns {boolean} True if value is a Number, otherwise false 4374 */ 4375const isNumber = typeOfTest('number'); 4376 4377/** 4378 * Determine if a value is an Object 4379 * 4380 * @param {*} thing The value to test 4381 * 4382 * @returns {boolean} True if value is an Object, otherwise false 4383 */ 4384const isObject = (thing) => thing !== null && typeof thing === 'object'; 4385 4386/** 4387 * Determine if a value is a Boolean 4388 * 4389 * @param {*} thing The value to test 4390 * @returns {boolean} True if value is a Boolean, otherwise false 4391 */ 4392const isBoolean = thing => thing === true || thing === false; 4393 4394/** 4395 * Determine if a value is a plain Object 4396 * 4397 * @param {*} val The value to test 4398 * 4399 * @returns {boolean} True if value is a plain Object, otherwise false 4400 */ 4401const isPlainObject = (val) => { 4402 if (kindOf(val) !== 'object') { 4403 return false; 4404 } 4405 4406 const prototype = getPrototypeOf(val); 4407 return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); 4408} 4409 4410/** 4411 * Determine if a value is a Date 4412 * 4413 * @param {*} val The value to test 4414 * 4415 * @returns {boolean} True if value is a Date, otherwise false 4416 */ 4417const isDate = kindOfTest('Date'); 4418 4419/** 4420 * Determine if a value is a File 4421 * 4422 * @param {*} val The value to test 4423 * 4424 * @returns {boolean} True if value is a File, otherwise false 4425 */ 4426const isFile = kindOfTest('File'); 4427 4428/** 4429 * Determine if a value is a Blob 4430 * 4431 * @param {*} val The value to test 4432 * 4433 * @returns {boolean} True if value is a Blob, otherwise false 4434 */ 4435const isBlob = kindOfTest('Blob'); 4436 4437/** 4438 * Determine if a value is a FileList 4439 * 4440 * @param {*} val The value to test 4441 * 4442 * @returns {boolean} True if value is a File, otherwise false 4443 */ 4444const isFileList = kindOfTest('FileList'); 4445 4446/** 4447 * Determine if a value is a Stream 4448 * 4449 * @param {*} val The value to test 4450 * 4451 * @returns {boolean} True if value is a Stream, otherwise false 4452 */ 4453const isStream = (val) => isObject(val) && isFunction(val.pipe); 4454 4455/** 4456 * Determine if a value is a FormData 4457 * 4458 * @param {*} thing The value to test 4459 * 4460 * @returns {boolean} True if value is an FormData, otherwise false 4461 */ 4462const isFormData = (thing) => { 4463 const pattern = '[object FormData]'; 4464 return thing && ( 4465 (typeof FormData === 'function' && thing instanceof FormData) || 4466 toString.call(thing) === pattern || 4467 (isFunction(thing.toString) && thing.toString() === pattern) 4468 ); 4469} 4470 4471/** 4472 * Determine if a value is a URLSearchParams object 4473 * 4474 * @param {*} val The value to test 4475 * 4476 * @returns {boolean} True if value is a URLSearchParams object, otherwise false 4477 */ 4478const isURLSearchParams = kindOfTest('URLSearchParams'); 4479 4480/** 4481 * Trim excess whitespace off the beginning and end of a string 4482 * 4483 * @param {String} str The String to trim 4484 * 4485 * @returns {String} The String freed of excess whitespace 4486 */ 4487const trim = (str) => str.trim ? 4488 str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); 4489 4490/** 4491 * Iterate over an Array or an Object invoking a function for each item. 4492 * 4493 * If `obj` is an Array callback will be called passing 4494 * the value, index, and complete array for each item. 4495 * 4496 * If 'obj' is an Object callback will be called passing 4497 * the value, key, and complete object for each property. 4498 * 4499 * @param {Object|Array} obj The object to iterate 4500 * @param {Function} fn The callback to invoke for each item 4501 * 4502 * @param {Boolean} [allOwnKeys = false] 4503 * @returns {any} 4504 */ 4505function forEach(obj, fn, {allOwnKeys = false} = {}) { 4506 // Don't bother if no value provided 4507 if (obj === null || typeof obj === 'undefined') { 4508 return; 4509 } 4510 4511 let i; 4512 let l; 4513 4514 // Force an array if not already something iterable 4515 if (typeof obj !== 'object') { 4516 /*eslint no-param-reassign:0*/ 4517 obj = [obj]; 4518 } 4519 4520 if (isArray(obj)) { 4521 // Iterate over array values 4522 for (i = 0, l = obj.length; i < l; i++) { 4523 fn.call(null, obj[i], i, obj); 4524 } 4525 } else { 4526 // Iterate over object keys 4527 const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); 4528 const len = keys.length; 4529 let key; 4530 4531 for (i = 0; i < len; i++) { 4532 key = keys[i]; 4533 fn.call(null, obj[key], key, obj); 4534 } 4535 } 4536} 4537 4538function findKey(obj, key) { 4539 key = key.toLowerCase(); 4540 const keys = Object.keys(obj); 4541 let i = keys.length; 4542 let _key; 4543 while (i-- > 0) { 4544 _key = keys[i]; 4545 if (key === _key.toLowerCase()) { 4546 return _key; 4547 } 4548 } 4549 return null; 4550} 4551 4552const _global = (() => { 4553 /*eslint no-undef:0*/ 4554 if (typeof globalThis !== "undefined") return globalThis; 4555 return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) 4556})(); 4557 4558const isContextDefined = (context) => !isUndefined(context) && context !== _global; 4559 4560/** 4561 * Accepts varargs expecting each argument to be an object, then 4562 * immutably merges the properties of each object and returns result. 4563 * 4564 * When multiple objects contain the same key the later object in 4565 * the arguments list will take precedence. 4566 * 4567 * Example: 4568 * 4569 * ```js 4570 * var result = merge({foo: 123}, {foo: 456}); 4571 * console.log(result.foo); // outputs 456 4572 * ``` 4573 * 4574 * @param {Object} obj1 Object to merge 4575 * 4576 * @returns {Object} Result of all merge properties 4577 */ 4578function merge(/* obj1, obj2, obj3, ... */) { 4579 const {caseless} = isContextDefined(this) && this || {}; 4580 const result = {}; 4581 const assignValue = (val, key) => { 4582 const targetKey = caseless && findKey(result, key) || key; 4583 if (isPlainObject(result[targetKey]) && isPlainObject(val)) { 4584 result[targetKey] = merge(result[targetKey], val); 4585 } else if (isPlainObject(val)) { 4586 result[targetKey] = merge({}, val); 4587 } else if (isArray(val)) { 4588 result[targetKey] = val.slice(); 4589 } else { 4590 result[targetKey] = val; 4591 } 4592 } 4593 4594 for (let i = 0, l = arguments.length; i < l; i++) { 4595 arguments[i] && forEach(arguments[i], assignValue); 4596 } 4597 return result; 4598} 4599 4600/** 4601 * Extends object a by mutably adding to it the properties of object b. 4602 * 4603 * @param {Object} a The object to be extended 4604 * @param {Object} b The object to copy properties from 4605 * @param {Object} thisArg The object to bind function to 4606 * 4607 * @param {Boolean} [allOwnKeys] 4608 * @returns {Object} The resulting value of object a 4609 */ 4610const extend = (a, b, thisArg, {allOwnKeys}= {}) => { 4611 forEach(b, (val, key) => { 4612 if (thisArg && isFunction(val)) { 4613 a[key] = Object(_helpers_bind_js__WEBPACK_IMPORTED_MODULE_0__["default"])(val, thisArg); 4614 } else { 4615 a[key] = val; 4616 } 4617 }, {allOwnKeys}); 4618 return a; 4619} 4620 4621/** 4622 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) 4623 * 4624 * @param {string} content with BOM 4625 * 4626 * @returns {string} content value without BOM 4627 */ 4628const stripBOM = (content) => { 4629 if (content.charCodeAt(0) === 0xFEFF) { 4630 content = content.slice(1); 4631 } 4632 return content; 4633} 4634 4635/** 4636 * Inherit the prototype methods from one constructor into another 4637 * @param {function} constructor 4638 * @param {function} superConstructor 4639 * @param {object} [props] 4640 * @param {object} [descriptors] 4641 * 4642 * @returns {void} 4643 */ 4644const inherits = (constructor, superConstructor, props, descriptors) => { 4645 constructor.prototype = Object.create(superConstructor.prototype, descriptors); 4646 constructor.prototype.constructor = constructor; 4647 Object.defineProperty(constructor, 'super', { 4648 value: superConstructor.prototype 4649 }); 4650 props && Object.assign(constructor.prototype, props); 4651} 4652 4653/** 4654 * Resolve object with deep prototype chain to a flat object 4655 * @param {Object} sourceObj source object 4656 * @param {Object} [destObj] 4657 * @param {Function|Boolean} [filter] 4658 * @param {Function} [propFilter] 4659 * 4660 * @returns {Object} 4661 */ 4662const toFlatObject = (sourceObj, destObj, filter, propFilter) => { 4663 let props; 4664 let i; 4665 let prop; 4666 const merged = {}; 4667 4668 destObj = destObj || {}; 4669 // eslint-disable-next-line no-eq-null,eqeqeq 4670 if (sourceObj == null) return destObj; 4671 4672 do { 4673 props = Object.getOwnPropertyNames(sourceObj); 4674 i = props.length; 4675 while (i-- > 0) { 4676 prop = props[i]; 4677 if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { 4678 destObj[prop] = sourceObj[prop]; 4679 merged[prop] = true; 4680 } 4681 } 4682 sourceObj = filter !== false && getPrototypeOf(sourceObj); 4683 } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); 4684 4685 return destObj; 4686} 4687 4688/** 4689 * Determines whether a string ends with the characters of a specified string 4690 * 4691 * @param {String} str 4692 * @param {String} searchString 4693 * @param {Number} [position= 0] 4694 * 4695 * @returns {boolean} 4696 */ 4697const endsWith = (str, searchString, position) => { 4698 str = String(str); 4699 if (position === undefined || position > str.length) { 4700 position = str.length; 4701 } 4702 position -= searchString.length; 4703 const lastIndex = str.indexOf(searchString, position); 4704 return lastIndex !== -1 && lastIndex === position; 4705} 4706 4707 4708/** 4709 * Returns new array from array like object or null if failed 4710 * 4711 * @param {*} [thing] 4712 * 4713 * @returns {?Array} 4714 */ 4715const toArray = (thing) => { 4716 if (!thing) return null; 4717 if (isArray(thing)) return thing; 4718 let i = thing.length; 4719 if (!isNumber(i)) return null; 4720 const arr = new Array(i); 4721 while (i-- > 0) { 4722 arr[i] = thing[i]; 4723 } 4724 return arr; 4725} 4726 4727/** 4728 * Checking if the Uint8Array exists and if it does, it returns a function that checks if the 4729 * thing passed in is an instance of Uint8Array 4730 * 4731 * @param {TypedArray} 4732 * 4733 * @returns {Array} 4734 */ 4735// eslint-disable-next-line func-names 4736const isTypedArray = (TypedArray => { 4737 // eslint-disable-next-line func-names 4738 return thing => { 4739 return TypedArray && thing instanceof TypedArray; 4740 }; 4741})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); 4742 4743/** 4744 * For each entry in the object, call the function with the key and value. 4745 * 4746 * @param {Object<any, any>} obj - The object to iterate over. 4747 * @param {Function} fn - The function to call for each entry. 4748 * 4749 * @returns {void} 4750 */ 4751const forEachEntry = (obj, fn) => { 4752 const generator = obj && obj[Symbol.iterator]; 4753 4754 const iterator = generator.call(obj); 4755 4756 let result; 4757 4758 while ((result = iterator.next()) && !result.done) { 4759 const pair = result.value; 4760 fn.call(obj, pair[0], pair[1]); 4761 } 4762} 4763 4764/** 4765 * It takes a regular expression and a string, and returns an array of all the matches 4766 * 4767 * @param {string} regExp - The regular expression to match against. 4768 * @param {string} str - The string to search. 4769 * 4770 * @returns {Array<boolean>} 4771 */ 4772const matchAll = (regExp, str) => { 4773 let matches; 4774 const arr = []; 4775 4776 while ((matches = regExp.exec(str)) !== null) { 4777 arr.push(matches); 4778 } 4779 4780 return arr; 4781} 4782 4783/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ 4784const isHTMLForm = kindOfTest('HTMLFormElement'); 4785 4786const toCamelCase = str => { 4787 return str.toLowerCase().replace(/[_-\s]([a-z\d])(\w*)/g, 4788 function replacer(m, p1, p2) { 4789 return p1.toUpperCase() + p2; 4790 } 4791 ); 4792}; 4793 4794/* Creating a function that will check if an object has a property. */ 4795const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); 4796 4797/** 4798 * Determine if a value is a RegExp object 4799 * 4800 * @param {*} val The value to test 4801 * 4802 * @returns {boolean} True if value is a RegExp object, otherwise false 4803 */ 4804const isRegExp = kindOfTest('RegExp'); 4805 4806const reduceDescriptors = (obj, reducer) => { 4807 const descriptors = Object.getOwnPropertyDescriptors(obj); 4808 const reducedDescriptors = {}; 4809 4810 forEach(descriptors, (descriptor, name) => { 4811 if (reducer(descriptor, name, obj) !== false) { 4812 reducedDescriptors[name] = descriptor; 4813 } 4814 }); 4815 4816 Object.defineProperties(obj, reducedDescriptors); 4817} 4818 4819/** 4820 * Makes all methods read-only 4821 * @param {Object} obj 4822 */ 4823 4824const freezeMethods = (obj) => { 4825 reduceDescriptors(obj, (descriptor, name) => { 4826 // skip restricted props in strict mode 4827 if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { 4828 return false; 4829 } 4830 4831 const value = obj[name]; 4832 4833 if (!isFunction(value)) return; 4834 4835 descriptor.enumerable = false; 4836 4837 if ('writable' in descriptor) { 4838 descriptor.writable = false; 4839 return; 4840 } 4841 4842 if (!descriptor.set) { 4843 descriptor.set = () => { 4844 throw Error('Can not rewrite read-only method \'' + name + '\''); 4845 }; 4846 } 4847 }); 4848} 4849 4850const toObjectSet = (arrayOrString, delimiter) => { 4851 const obj = {}; 4852 4853 const define = (arr) => { 4854 arr.forEach(value => { 4855 obj[value] = true; 4856 }); 4857 } 4858 4859 isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); 4860 4861 return obj; 4862} 4863 4864const noop = () => {} 4865 4866const toFiniteNumber = (value, defaultValue) => { 4867 value = +value; 4868 return Number.isFinite(value) ? value : defaultValue; 4869} 4870 4871const toJSONObject = (obj) => { 4872 const stack = new Array(10); 4873 4874 const visit = (source, i) => { 4875 4876 if (isObject(source)) { 4877 if (stack.indexOf(source) >= 0) { 4878 return; 4879 } 4880 4881 if(!('toJSON' in source)) { 4882 stack[i] = source; 4883 const target = isArray(source) ? [] : {}; 4884 4885 forEach(source, (value, key) => { 4886 const reducedValue = visit(value, i + 1); 4887 !isUndefined(reducedValue) && (target[key] = reducedValue); 4888 }); 4889 4890 stack[i] = undefined; 4891 4892 return target; 4893 } 4894 } 4895 4896 return source; 4897 } 4898 4899 return visit(obj, 0); 4900} 4901 4902/* harmony default export */ __webpack_exports__["default"] = ({ 4903 isArray, 4904 isArrayBuffer, 4905 isBuffer, 4906 isFormData, 4907 isArrayBufferView, 4908 isString, 4909 isNumber, 4910 isBoolean, 4911 isObject, 4912 isPlainObject, 4913 isUndefined, 4914 isDate, 4915 isFile, 4916 isBlob, 4917 isRegExp, 4918 isFunction, 4919 isStream, 4920 isURLSearchParams, 4921 isTypedArray, 4922 isFileList, 4923 forEach, 4924 merge, 4925 extend, 4926 trim, 4927 stripBOM, 4928 inherits, 4929 toFlatObject, 4930 kindOf, 4931 kindOfTest, 4932 endsWith, 4933 toArray, 4934 forEachEntry, 4935 matchAll, 4936 isHTMLForm, 4937 hasOwnProperty, 4938 hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection 4939 reduceDescriptors, 4940 freezeMethods, 4941 toObjectSet, 4942 toCamelCase, 4943 noop, 4944 toFiniteNumber, 4945 findKey, 4946 global: _global, 4947 isContextDefined, 4948 toJSONObject 4949}); 4950 4951/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 4952 4953/***/ }), 4954
vendor: 4,218 bytes, lines 4955-5116
4955/***/ "./node_modules/base64-js/index.js": 4956/*!*****************************************!*\ 4957 !*** ./node_modules/base64-js/index.js ***! 4958 \*****************************************/ 4959/*! no static exports found */ 4960/***/ (function(module, exports, __webpack_require__) { 4961 4962"use strict"; 4963 4964 4965exports.byteLength = byteLength 4966exports.toByteArray = toByteArray 4967exports.fromByteArray = fromByteArray 4968 4969var lookup = [] 4970var revLookup = [] 4971var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array 4972 4973var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' 4974for (var i = 0, len = code.length; i < len; ++i) { 4975 lookup[i] = code[i] 4976 revLookup[code.charCodeAt(i)] = i 4977} 4978 4979// Support decoding URL-safe base64 strings, as Node.js does. 4980// See: https://en.wikipedia.org/wiki/Base64#URL_applications 4981revLookup['-'.charCodeAt(0)] = 62 4982revLookup['_'.charCodeAt(0)] = 63 4983 4984function getLens (b64) { 4985 var len = b64.length 4986 4987 if (len % 4 > 0) { 4988 throw new Error('Invalid string. Length must be a multiple of 4') 4989 } 4990 4991 // Trim off extra bytes after placeholder bytes are found 4992 // See: https://github.com/beatgammit/base64-js/issues/42 4993 var validLen = b64.indexOf('=') 4994 if (validLen === -1) validLen = len 4995 4996 var placeHoldersLen = validLen === len 4997 ? 0 4998 : 4 - (validLen % 4) 4999 5000 return [validLen, placeHoldersLen] 5001} 5002 5003// base64 is 4/3 + up to two characters of the original data 5004function byteLength (b64) { 5005 var lens = getLens(b64) 5006 var validLen = lens[0] 5007 var placeHoldersLen = lens[1] 5008 return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen 5009} 5010 5011function _byteLength (b64, validLen, placeHoldersLen) { 5012 return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen 5013} 5014 5015function toByteArray (b64) { 5016 var tmp 5017 var lens = getLens(b64) 5018 var validLen = lens[0] 5019 var placeHoldersLen = lens[1] 5020 5021 var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)) 5022 5023 var curByte = 0 5024 5025 // if there are placeholders, only get up to the last complete 4 chars 5026 var len = placeHoldersLen > 0 5027 ? validLen - 4 5028 : validLen 5029 5030 var i 5031 for (i = 0; i < len; i += 4) { 5032 tmp = 5033 (revLookup[b64.charCodeAt(i)] << 18) | 5034 (revLookup[b64.charCodeAt(i + 1)] << 12) | 5035 (revLookup[b64.charCodeAt(i + 2)] << 6) | 5036 revLookup[b64.charCodeAt(i + 3)] 5037 arr[curByte++] = (tmp >> 16) & 0xFF 5038 arr[curByte++] = (tmp >> 8) & 0xFF 5039 arr[curByte++] = tmp & 0xFF 5040 } 5041 5042 if (placeHoldersLen === 2) { 5043 tmp = 5044 (revLookup[b64.charCodeAt(i)] << 2) | 5045 (revLookup[b64.charCodeAt(i + 1)] >> 4) 5046 arr[curByte++] = tmp & 0xFF 5047 } 5048 5049 if (placeHoldersLen === 1) { 5050 tmp = 5051 (revLookup[b64.charCodeAt(i)] << 10) | 5052 (revLookup[b64.charCodeAt(i + 1)] << 4) | 5053 (revLookup[b64.charCodeAt(i + 2)] >> 2) 5054 arr[curByte++] = (tmp >> 8) & 0xFF 5055 arr[curByte++] = tmp & 0xFF 5056 } 5057 5058 return arr 5059} 5060 5061function tripletToBase64 (num) { 5062 return lookup[num >> 18 & 0x3F] + 5063 lookup[num >> 12 & 0x3F] + 5064 lookup[num >> 6 & 0x3F] + 5065 lookup[num & 0x3F] 5066} 5067 5068function encodeChunk (uint8, start, end) { 5069 var tmp 5070 var output = [] 5071 for (var i = start; i < end; i += 3) { 5072 tmp = 5073 ((uint8[i] << 16) & 0xFF0000) + 5074 ((uint8[i + 1] << 8) & 0xFF00) + 5075 (uint8[i + 2] & 0xFF) 5076 output.push(tripletToBase64(tmp)) 5077 } 5078 return output.join('') 5079} 5080 5081function fromByteArray (uint8) { 5082 var tmp 5083 var len = uint8.length 5084 var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes 5085 var parts = [] 5086 var maxChunkLength = 16383 // must be multiple of 3 5087 5088 // go through the array every three bytes, we'll deal with trailing stuff later 5089 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { 5090 parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) 5091 } 5092 5093 // pad the end with zeros, but make sure to not forget the extra bytes 5094 if (extraBytes === 1) { 5095 tmp = uint8[len - 1] 5096 parts.push( 5097 lookup[tmp >> 2] + 5098 lookup[(tmp << 4) & 0x3F] + 5099 '==' 5100 ) 5101 } else if (extraBytes === 2) { 5102 tmp = (uint8[len - 2] << 8) + uint8[len - 1] 5103 parts.push( 5104 lookup[tmp >> 10] + 5105 lookup[(tmp >> 4) & 0x3F] + 5106 lookup[(tmp << 2) & 0x3F] + 5107 '=' 5108 ) 5109 } 5110 5111 return parts.join('') 5112} 5113 5114 5115/***/ }), 5116
vendor: 137,882 bytes, lines 5117-9482
5117/***/ "./node_modules/bootstrap/dist/js/bootstrap.js": 5118/*!*****************************************************!*\ 5119 !*** ./node_modules/bootstrap/dist/js/bootstrap.js ***! 5120 \*****************************************************/ 5121/*! no static exports found */ 5122/***/ (function(module, exports, __webpack_require__) { 5123 5124/*! 5125 * Bootstrap v4.6.2 (https://getbootstrap.com/) 5126 * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 5127 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5128 */ 5129(function (global, factory) { 5130 true ? factory(exports, __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js")) : 5131 undefined; 5132})(this, (function (exports, $, Popper) { 'use strict'; 5133 5134 function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } 5135 5136 var $__default = /*#__PURE__*/_interopDefaultLegacy($); 5137 var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper); 5138 5139 function _defineProperties(target, props) { 5140 for (var i = 0; i < props.length; i++) { 5141 var descriptor = props[i]; 5142 descriptor.enumerable = descriptor.enumerable || false; 5143 descriptor.configurable = true; 5144 if ("value" in descriptor) descriptor.writable = true; 5145 Object.defineProperty(target, descriptor.key, descriptor); 5146 } 5147 } 5148 5149 function _createClass(Constructor, protoProps, staticProps) { 5150 if (protoProps) _defineProperties(Constructor.prototype, protoProps); 5151 if (staticProps) _defineProperties(Constructor, staticProps); 5152 Object.defineProperty(Constructor, "prototype", { 5153 writable: false 5154 }); 5155 return Constructor; 5156 } 5157 5158 function _extends() { 5159 _extends = Object.assign ? Object.assign.bind() : function (target) { 5160 for (var i = 1; i < arguments.length; i++) { 5161 var source = arguments[i]; 5162 5163 for (var key in source) { 5164 if (Object.prototype.hasOwnProperty.call(source, key)) { 5165 target[key] = source[key]; 5166 } 5167 } 5168 } 5169 5170 return target; 5171 }; 5172 return _extends.apply(this, arguments); 5173 } 5174 5175 function _inheritsLoose(subClass, superClass) { 5176 subClass.prototype = Object.create(superClass.prototype); 5177 subClass.prototype.constructor = subClass; 5178 5179 _setPrototypeOf(subClass, superClass); 5180 } 5181 5182 function _setPrototypeOf(o, p) { 5183 _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { 5184 o.__proto__ = p; 5185 return o; 5186 }; 5187 return _setPrototypeOf(o, p); 5188 } 5189 5190 /** 5191 * -------------------------------------------------------------------------- 5192 * Bootstrap (v4.6.2): util.js 5193 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5194 * -------------------------------------------------------------------------- 5195 */ 5196 /** 5197 * Private TransitionEnd Helpers 5198 */ 5199 5200 var TRANSITION_END = 'transitionend'; 5201 var MAX_UID = 1000000; 5202 var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) 5203 5204 function toType(obj) { 5205 if (obj === null || typeof obj === 'undefined') { 5206 return "" + obj; 5207 } 5208 5209 return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); 5210 } 5211 5212 function getSpecialTransitionEndEvent() { 5213 return { 5214 bindType: TRANSITION_END, 5215 delegateType: TRANSITION_END, 5216 handle: function handle(event) { 5217 if ($__default["default"](event.target).is(this)) { 5218 return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params 5219 } 5220 5221 return undefined; 5222 } 5223 }; 5224 } 5225 5226 function transitionEndEmulator(duration) { 5227 var _this = this; 5228 5229 var called = false; 5230 $__default["default"](this).one(Util.TRANSITION_END, function () { 5231 called = true; 5232 }); 5233 setTimeout(function () { 5234 if (!called) { 5235 Util.triggerTransitionEnd(_this); 5236 } 5237 }, duration); 5238 return this; 5239 } 5240 5241 function setTransitionEndSupport() { 5242 $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator; 5243 $__default["default"].event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); 5244 } 5245 /** 5246 * Public Util API 5247 */ 5248 5249 5250 var Util = { 5251 TRANSITION_END: 'bsTransitionEnd', 5252 getUID: function getUID(prefix) { 5253 do { 5254 // eslint-disable-next-line no-bitwise 5255 prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here 5256 } while (document.getElementById(prefix)); 5257 5258 return prefix; 5259 }, 5260 getSelectorFromElement: function getSelectorFromElement(element) { 5261 var selector = element.getAttribute('data-target'); 5262 5263 if (!selector || selector === '#') { 5264 var hrefAttr = element.getAttribute('href'); 5265 selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; 5266 } 5267 5268 try { 5269 return document.querySelector(selector) ? selector : null; 5270 } catch (_) { 5271 return null; 5272 } 5273 }, 5274 getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { 5275 if (!element) { 5276 return 0; 5277 } // Get transition-duration of the element 5278 5279 5280 var transitionDuration = $__default["default"](element).css('transition-duration'); 5281 var transitionDelay = $__default["default"](element).css('transition-delay'); 5282 var floatTransitionDuration = parseFloat(transitionDuration); 5283 var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found 5284 5285 if (!floatTransitionDuration && !floatTransitionDelay) { 5286 return 0; 5287 } // If multiple durations are defined, take the first 5288 5289 5290 transitionDuration = transitionDuration.split(',')[0]; 5291 transitionDelay = transitionDelay.split(',')[0]; 5292 return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 5293 }, 5294 reflow: function reflow(element) { 5295 return element.offsetHeight; 5296 }, 5297 triggerTransitionEnd: function triggerTransitionEnd(element) { 5298 $__default["default"](element).trigger(TRANSITION_END); 5299 }, 5300 supportsTransitionEnd: function supportsTransitionEnd() { 5301 return Boolean(TRANSITION_END); 5302 }, 5303 isElement: function isElement(obj) { 5304 return (obj[0] || obj).nodeType; 5305 }, 5306 typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { 5307 for (var property in configTypes) { 5308 if (Object.prototype.hasOwnProperty.call(configTypes, property)) { 5309 var expectedTypes = configTypes[property]; 5310 var value = config[property]; 5311 var valueType = value && Util.isElement(value) ? 'element' : toType(value); 5312 5313 if (!new RegExp(expectedTypes).test(valueType)) { 5314 throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); 5315 } 5316 } 5317 } 5318 }, 5319 findShadowRoot: function findShadowRoot(element) { 5320 if (!document.documentElement.attachShadow) { 5321 return null; 5322 } // Can find the shadow root otherwise it'll return the document 5323 5324 5325 if (typeof element.getRootNode === 'function') { 5326 var root = element.getRootNode(); 5327 return root instanceof ShadowRoot ? root : null; 5328 } 5329 5330 if (element instanceof ShadowRoot) { 5331 return element; 5332 } // when we don't find a shadow root 5333 5334 5335 if (!element.parentNode) { 5336 return null; 5337 } 5338 5339 return Util.findShadowRoot(element.parentNode); 5340 }, 5341 jQueryDetection: function jQueryDetection() { 5342 if (typeof $__default["default"] === 'undefined') { 5343 throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); 5344 } 5345 5346 var version = $__default["default"].fn.jquery.split(' ')[0].split('.'); 5347 var minMajor = 1; 5348 var ltMajor = 2; 5349 var minMinor = 9; 5350 var minPatch = 1; 5351 var maxMajor = 4; 5352 5353 if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { 5354 throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); 5355 } 5356 } 5357 }; 5358 Util.jQueryDetection(); 5359 setTransitionEndSupport(); 5360 5361 /** 5362 * Constants 5363 */ 5364 5365 var NAME$a = 'alert'; 5366 var VERSION$a = '4.6.2'; 5367 var DATA_KEY$a = 'bs.alert'; 5368 var EVENT_KEY$a = "." + DATA_KEY$a; 5369 var DATA_API_KEY$7 = '.data-api'; 5370 var JQUERY_NO_CONFLICT$a = $__default["default"].fn[NAME$a]; 5371 var CLASS_NAME_ALERT = 'alert'; 5372 var CLASS_NAME_FADE$5 = 'fade'; 5373 var CLASS_NAME_SHOW$7 = 'show'; 5374 var EVENT_CLOSE = "close" + EVENT_KEY$a; 5375 var EVENT_CLOSED = "closed" + EVENT_KEY$a; 5376 var EVENT_CLICK_DATA_API$6 = "click" + EVENT_KEY$a + DATA_API_KEY$7; 5377 var SELECTOR_DISMISS = '[data-dismiss="alert"]'; 5378 /** 5379 * Class definition 5380 */ 5381 5382 var Alert = /*#__PURE__*/function () { 5383 function Alert(element) { 5384 this._element = element; 5385 } // Getters 5386 5387 5388 var _proto = Alert.prototype; 5389 5390 // Public 5391 _proto.close = function close(element) { 5392 var rootElement = this._element; 5393 5394 if (element) { 5395 rootElement = this._getRootElement(element); 5396 } 5397 5398 var customEvent = this._triggerCloseEvent(rootElement); 5399 5400 if (customEvent.isDefaultPrevented()) { 5401 return; 5402 } 5403 5404 this._removeElement(rootElement); 5405 }; 5406 5407 _proto.dispose = function dispose() { 5408 $__default["default"].removeData(this._element, DATA_KEY$a); 5409 this._element = null; 5410 } // Private 5411 ; 5412 5413 _proto._getRootElement = function _getRootElement(element) { 5414 var selector = Util.getSelectorFromElement(element); 5415 var parent = false; 5416 5417 if (selector) { 5418 parent = document.querySelector(selector); 5419 } 5420 5421 if (!parent) { 5422 parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0]; 5423 } 5424 5425 return parent; 5426 }; 5427 5428 _proto._triggerCloseEvent = function _triggerCloseEvent(element) { 5429 var closeEvent = $__default["default"].Event(EVENT_CLOSE); 5430 $__default["default"](element).trigger(closeEvent); 5431 return closeEvent; 5432 }; 5433 5434 _proto._removeElement = function _removeElement(element) { 5435 var _this = this; 5436 5437 $__default["default"](element).removeClass(CLASS_NAME_SHOW$7); 5438 5439 if (!$__default["default"](element).hasClass(CLASS_NAME_FADE$5)) { 5440 this._destroyElement(element); 5441 5442 return; 5443 } 5444 5445 var transitionDuration = Util.getTransitionDurationFromElement(element); 5446 $__default["default"](element).one(Util.TRANSITION_END, function (event) { 5447 return _this._destroyElement(element, event); 5448 }).emulateTransitionEnd(transitionDuration); 5449 }; 5450 5451 _proto._destroyElement = function _destroyElement(element) { 5452 $__default["default"](element).detach().trigger(EVENT_CLOSED).remove(); 5453 } // Static 5454 ; 5455 5456 Alert._jQueryInterface = function _jQueryInterface(config) { 5457 return this.each(function () { 5458 var $element = $__default["default"](this); 5459 var data = $element.data(DATA_KEY$a); 5460 5461 if (!data) { 5462 data = new Alert(this); 5463 $element.data(DATA_KEY$a, data); 5464 } 5465 5466 if (config === 'close') { 5467 data[config](this); 5468 } 5469 }); 5470 }; 5471 5472 Alert._handleDismiss = function _handleDismiss(alertInstance) { 5473 return function (event) { 5474 if (event) { 5475 event.preventDefault(); 5476 } 5477 5478 alertInstance.close(this); 5479 }; 5480 }; 5481 5482 _createClass(Alert, null, [{ 5483 key: "VERSION", 5484 get: function get() { 5485 return VERSION$a; 5486 } 5487 }]); 5488 5489 return Alert; 5490 }(); 5491 /** 5492 * Data API implementation 5493 */ 5494 5495 5496 $__default["default"](document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DISMISS, Alert._handleDismiss(new Alert())); 5497 /** 5498 * jQuery 5499 */ 5500 5501 $__default["default"].fn[NAME$a] = Alert._jQueryInterface; 5502 $__default["default"].fn[NAME$a].Constructor = Alert; 5503 5504 $__default["default"].fn[NAME$a].noConflict = function () { 5505 $__default["default"].fn[NAME$a] = JQUERY_NO_CONFLICT$a; 5506 return Alert._jQueryInterface; 5507 }; 5508 5509 /** 5510 * Constants 5511 */ 5512 5513 var NAME$9 = 'button'; 5514 var VERSION$9 = '4.6.2'; 5515 var DATA_KEY$9 = 'bs.button'; 5516 var EVENT_KEY$9 = "." + DATA_KEY$9; 5517 var DATA_API_KEY$6 = '.data-api'; 5518 var JQUERY_NO_CONFLICT$9 = $__default["default"].fn[NAME$9]; 5519 var CLASS_NAME_ACTIVE$3 = 'active'; 5520 var CLASS_NAME_BUTTON = 'btn'; 5521 var CLASS_NAME_FOCUS = 'focus'; 5522 var EVENT_CLICK_DATA_API$5 = "click" + EVENT_KEY$9 + DATA_API_KEY$6; 5523 var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY$9 + DATA_API_KEY$6 + " " + ("blur" + EVENT_KEY$9 + DATA_API_KEY$6); 5524 var EVENT_LOAD_DATA_API$2 = "load" + EVENT_KEY$9 + DATA_API_KEY$6; 5525 var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]'; 5526 var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]'; 5527 var SELECTOR_DATA_TOGGLE$4 = '[data-toggle="button"]'; 5528 var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn'; 5529 var SELECTOR_INPUT = 'input:not([type="hidden"])'; 5530 var SELECTOR_ACTIVE$2 = '.active'; 5531 var SELECTOR_BUTTON = '.btn'; 5532 /** 5533 * Class definition 5534 */ 5535 5536 var Button = /*#__PURE__*/function () { 5537 function Button(element) { 5538 this._element = element; 5539 this.shouldAvoidTriggerChange = false; 5540 } // Getters 5541 5542 5543 var _proto = Button.prototype; 5544 5545 // Public 5546 _proto.toggle = function toggle() { 5547 var triggerChangeEvent = true; 5548 var addAriaPressed = true; 5549 var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0]; 5550 5551 if (rootElement) { 5552 var input = this._element.querySelector(SELECTOR_INPUT); 5553 5554 if (input) { 5555 if (input.type === 'radio') { 5556 if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE$3)) { 5557 triggerChangeEvent = false; 5558 } else { 5559 var activeElement = rootElement.querySelector(SELECTOR_ACTIVE$2); 5560 5561 if (activeElement) { 5562 $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$3); 5563 } 5564 } 5565 } 5566 5567 if (triggerChangeEvent) { 5568 // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input 5569 if (input.type === 'checkbox' || input.type === 'radio') { 5570 input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE$3); 5571 } 5572 5573 if (!this.shouldAvoidTriggerChange) { 5574 $__default["default"](input).trigger('change'); 5575 } 5576 } 5577 5578 input.focus(); 5579 addAriaPressed = false; 5580 } 5581 } 5582 5583 if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) { 5584 if (addAriaPressed) { 5585 this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE$3)); 5586 } 5587 5588 if (triggerChangeEvent) { 5589 $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE$3); 5590 } 5591 } 5592 }; 5593 5594 _proto.dispose = function dispose() { 5595 $__default["default"].removeData(this._element, DATA_KEY$9); 5596 this._element = null; 5597 } // Static 5598 ; 5599 5600 Button._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) { 5601 return this.each(function () { 5602 var $element = $__default["default"](this); 5603 var data = $element.data(DATA_KEY$9); 5604 5605 if (!data) { 5606 data = new Button(this); 5607 $element.data(DATA_KEY$9, data); 5608 } 5609 5610 data.shouldAvoidTriggerChange = avoidTriggerChange; 5611 5612 if (config === 'toggle') { 5613 data[config](); 5614 } 5615 }); 5616 }; 5617 5618 _createClass(Button, null, [{ 5619 key: "VERSION", 5620 get: function get() { 5621 return VERSION$9; 5622 } 5623 }]); 5624 5625 return Button; 5626 }(); 5627 /** 5628 * Data API implementation 5629 */ 5630 5631 5632 $__default["default"](document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE_CARROT, function (event) { 5633 var button = event.target; 5634 var initialButton = button; 5635 5636 if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) { 5637 button = $__default["default"](button).closest(SELECTOR_BUTTON)[0]; 5638 } 5639 5640 if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) { 5641 event.preventDefault(); // work around Firefox bug #1540995 5642 } else { 5643 var inputBtn = button.querySelector(SELECTOR_INPUT); 5644 5645 if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) { 5646 event.preventDefault(); // work around Firefox bug #1540995 5647 5648 return; 5649 } 5650 5651 if (initialButton.tagName === 'INPUT' || button.tagName !== 'LABEL') { 5652 Button._jQueryInterface.call($__default["default"](button), 'toggle', initialButton.tagName === 'INPUT'); 5653 } 5654 } 5655 }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) { 5656 var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0]; 5657 $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type)); 5658 }); 5659 $__default["default"](window).on(EVENT_LOAD_DATA_API$2, function () { 5660 // ensure correct active class is set to match the controls' actual values/states 5661 // find all checkboxes/readio buttons inside data-toggle groups 5662 var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS)); 5663 5664 for (var i = 0, len = buttons.length; i < len; i++) { 5665 var button = buttons[i]; 5666 var input = button.querySelector(SELECTOR_INPUT); 5667 5668 if (input.checked || input.hasAttribute('checked')) { 5669 button.classList.add(CLASS_NAME_ACTIVE$3); 5670 } else { 5671 button.classList.remove(CLASS_NAME_ACTIVE$3); 5672 } 5673 } // find all button toggles 5674 5675 5676 buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$4)); 5677 5678 for (var _i = 0, _len = buttons.length; _i < _len; _i++) { 5679 var _button = buttons[_i]; 5680 5681 if (_button.getAttribute('aria-pressed') === 'true') { 5682 _button.classList.add(CLASS_NAME_ACTIVE$3); 5683 } else { 5684 _button.classList.remove(CLASS_NAME_ACTIVE$3); 5685 } 5686 } 5687 }); 5688 /** 5689 * jQuery 5690 */ 5691 5692 $__default["default"].fn[NAME$9] = Button._jQueryInterface; 5693 $__default["default"].fn[NAME$9].Constructor = Button; 5694 5695 $__default["default"].fn[NAME$9].noConflict = function () { 5696 $__default["default"].fn[NAME$9] = JQUERY_NO_CONFLICT$9; 5697 return Button._jQueryInterface; 5698 }; 5699 5700 /** 5701 * Constants 5702 */ 5703 5704 var NAME$8 = 'carousel'; 5705 var VERSION$8 = '4.6.2'; 5706 var DATA_KEY$8 = 'bs.carousel'; 5707 var EVENT_KEY$8 = "." + DATA_KEY$8; 5708 var DATA_API_KEY$5 = '.data-api'; 5709 var JQUERY_NO_CONFLICT$8 = $__default["default"].fn[NAME$8]; 5710 var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key 5711 5712 var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key 5713 5714 var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch 5715 5716 var SWIPE_THRESHOLD = 40; 5717 var CLASS_NAME_CAROUSEL = 'carousel'; 5718 var CLASS_NAME_ACTIVE$2 = 'active'; 5719 var CLASS_NAME_SLIDE = 'slide'; 5720 var CLASS_NAME_RIGHT = 'carousel-item-right'; 5721 var CLASS_NAME_LEFT = 'carousel-item-left'; 5722 var CLASS_NAME_NEXT = 'carousel-item-next'; 5723 var CLASS_NAME_PREV = 'carousel-item-prev'; 5724 var CLASS_NAME_POINTER_EVENT = 'pointer-event'; 5725 var DIRECTION_NEXT = 'next'; 5726 var DIRECTION_PREV = 'prev'; 5727 var DIRECTION_LEFT = 'left'; 5728 var DIRECTION_RIGHT = 'right'; 5729 var EVENT_SLIDE = "slide" + EVENT_KEY$8; 5730 var EVENT_SLID = "slid" + EVENT_KEY$8; 5731 var EVENT_KEYDOWN = "keydown" + EVENT_KEY$8; 5732 var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY$8; 5733 var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY$8; 5734 var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY$8; 5735 var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY$8; 5736 var EVENT_TOUCHEND = "touchend" + EVENT_KEY$8; 5737 var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY$8; 5738 var EVENT_POINTERUP = "pointerup" + EVENT_KEY$8; 5739 var EVENT_DRAG_START = "dragstart" + EVENT_KEY$8; 5740 var EVENT_LOAD_DATA_API$1 = "load" + EVENT_KEY$8 + DATA_API_KEY$5; 5741 var EVENT_CLICK_DATA_API$4 = "click" + EVENT_KEY$8 + DATA_API_KEY$5; 5742 var SELECTOR_ACTIVE$1 = '.active'; 5743 var SELECTOR_ACTIVE_ITEM = '.active.carousel-item'; 5744 var SELECTOR_ITEM = '.carousel-item'; 5745 var SELECTOR_ITEM_IMG = '.carousel-item img'; 5746 var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'; 5747 var SELECTOR_INDICATORS = '.carousel-indicators'; 5748 var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]'; 5749 var SELECTOR_DATA_RIDE = '[data-ride="carousel"]'; 5750 var Default$7 = { 5751 interval: 5000, 5752 keyboard: true, 5753 slide: false, 5754 pause: 'hover', 5755 wrap: true, 5756 touch: true 5757 }; 5758 var DefaultType$7 = { 5759 interval: '(number|boolean)', 5760 keyboard: 'boolean', 5761 slide: '(boolean|string)', 5762 pause: '(string|boolean)', 5763 wrap: 'boolean', 5764 touch: 'boolean' 5765 }; 5766 var PointerType = { 5767 TOUCH: 'touch', 5768 PEN: 'pen' 5769 }; 5770 /** 5771 * Class definition 5772 */ 5773 5774 var Carousel = /*#__PURE__*/function () { 5775 function Carousel(element, config) { 5776 this._items = null; 5777 this._interval = null; 5778 this._activeElement = null; 5779 this._isPaused = false; 5780 this._isSliding = false; 5781 this.touchTimeout = null; 5782 this.touchStartX = 0; 5783 this.touchDeltaX = 0; 5784 this._config = this._getConfig(config); 5785 this._element = element; 5786 this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS); 5787 this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; 5788 this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); 5789 5790 this._addEventListeners(); 5791 } // Getters 5792 5793 5794 var _proto = Carousel.prototype; 5795 5796 // Public 5797 _proto.next = function next() { 5798 if (!this._isSliding) { 5799 this._slide(DIRECTION_NEXT); 5800 } 5801 }; 5802 5803 _proto.nextWhenVisible = function nextWhenVisible() { 5804 var $element = $__default["default"](this._element); // Don't call next when the page isn't visible 5805 // or the carousel or its parent isn't visible 5806 5807 if (!document.hidden && $element.is(':visible') && $element.css('visibility') !== 'hidden') { 5808 this.next(); 5809 } 5810 }; 5811 5812 _proto.prev = function prev() { 5813 if (!this._isSliding) { 5814 this._slide(DIRECTION_PREV); 5815 } 5816 }; 5817 5818 _proto.pause = function pause(event) { 5819 if (!event) { 5820 this._isPaused = true; 5821 } 5822 5823 if (this._element.querySelector(SELECTOR_NEXT_PREV)) { 5824 Util.triggerTransitionEnd(this._element); 5825 this.cycle(true); 5826 } 5827 5828 clearInterval(this._interval); 5829 this._interval = null; 5830 }; 5831 5832 _proto.cycle = function cycle(event) { 5833 if (!event) { 5834 this._isPaused = false; 5835 } 5836 5837 if (this._interval) { 5838 clearInterval(this._interval); 5839 this._interval = null; 5840 } 5841 5842 if (this._config.interval && !this._isPaused) { 5843 this._updateInterval(); 5844 5845 this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); 5846 } 5847 }; 5848 5849 _proto.to = function to(index) { 5850 var _this = this; 5851 5852 this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); 5853 5854 var activeIndex = this._getItemIndex(this._activeElement); 5855 5856 if (index > this._items.length - 1 || index < 0) { 5857 return; 5858 } 5859 5860 if (this._isSliding) { 5861 $__default["default"](this._element).one(EVENT_SLID, function () { 5862 return _this.to(index); 5863 }); 5864 return; 5865 } 5866 5867 if (activeIndex === index) { 5868 this.pause(); 5869 this.cycle(); 5870 return; 5871 } 5872 5873 var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV; 5874 5875 this._slide(direction, this._items[index]); 5876 }; 5877 5878 _proto.dispose = function dispose() { 5879 $__default["default"](this._element).off(EVENT_KEY$8); 5880 $__default["default"].removeData(this._element, DATA_KEY$8); 5881 this._items = null; 5882 this._config = null; 5883 this._element = null; 5884 this._interval = null; 5885 this._isPaused = null; 5886 this._isSliding = null; 5887 this._activeElement = null; 5888 this._indicatorsElement = null; 5889 } // Private 5890 ; 5891 5892 _proto._getConfig = function _getConfig(config) { 5893 config = _extends({}, Default$7, config); 5894 Util.typeCheckConfig(NAME$8, config, DefaultType$7); 5895 return config; 5896 }; 5897 5898 _proto._handleSwipe = function _handleSwipe() { 5899 var absDeltax = Math.abs(this.touchDeltaX); 5900 5901 if (absDeltax <= SWIPE_THRESHOLD) { 5902 return; 5903 } 5904 5905 var direction = absDeltax / this.touchDeltaX; 5906 this.touchDeltaX = 0; // swipe left 5907 5908 if (direction > 0) { 5909 this.prev(); 5910 } // swipe right 5911 5912 5913 if (direction < 0) { 5914 this.next(); 5915 } 5916 }; 5917 5918 _proto._addEventListeners = function _addEventListeners() { 5919 var _this2 = this; 5920 5921 if (this._config.keyboard) { 5922 $__default["default"](this._element).on(EVENT_KEYDOWN, function (event) { 5923 return _this2._keydown(event); 5924 }); 5925 } 5926 5927 if (this._config.pause === 'hover') { 5928 $__default["default"](this._element).on(EVENT_MOUSEENTER, function (event) { 5929 return _this2.pause(event); 5930 }).on(EVENT_MOUSELEAVE, function (event) { 5931 return _this2.cycle(event); 5932 }); 5933 } 5934 5935 if (this._config.touch) { 5936 this._addTouchEventListeners(); 5937 } 5938 }; 5939 5940 _proto._addTouchEventListeners = function _addTouchEventListeners() { 5941 var _this3 = this; 5942 5943 if (!this._touchSupported) { 5944 return; 5945 } 5946 5947 var start = function start(event) { 5948 if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { 5949 _this3.touchStartX = event.originalEvent.clientX; 5950 } else if (!_this3._pointerEvent) { 5951 _this3.touchStartX = event.originalEvent.touches[0].clientX; 5952 } 5953 }; 5954 5955 var move = function move(event) { 5956 // ensure swiping with one touch and not pinching 5957 _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX; 5958 }; 5959 5960 var end = function end(event) { 5961 if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { 5962 _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; 5963 } 5964 5965 _this3._handleSwipe(); 5966 5967 if (_this3._config.pause === 'hover') { 5968 // If it's a touch-enabled device, mouseenter/leave are fired as 5969 // part of the mouse compatibility events on first tap - the carousel 5970 // would stop cycling until user tapped out of it; 5971 // here, we listen for touchend, explicitly pause the carousel 5972 // (as if it's the second time we tap on it, mouseenter compat event 5973 // is NOT fired) and after a timeout (to allow for mouse compatibility 5974 // events to fire) we explicitly restart cycling 5975 _this3.pause(); 5976 5977 if (_this3.touchTimeout) { 5978 clearTimeout(_this3.touchTimeout); 5979 } 5980 5981 _this3.touchTimeout = setTimeout(function (event) { 5982 return _this3.cycle(event); 5983 }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); 5984 } 5985 }; 5986 5987 $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) { 5988 return e.preventDefault(); 5989 }); 5990 5991 if (this._pointerEvent) { 5992 $__default["default"](this._element).on(EVENT_POINTERDOWN, function (event) { 5993 return start(event); 5994 }); 5995 $__default["default"](this._element).on(EVENT_POINTERUP, function (event) { 5996 return end(event); 5997 }); 5998 5999 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 6000 } else { 6001 $__default["default"](this._element).on(EVENT_TOUCHSTART, function (event) { 6002 return start(event); 6003 }); 6004 $__default["default"](this._element).on(EVENT_TOUCHMOVE, function (event) { 6005 return move(event); 6006 }); 6007 $__default["default"](this._element).on(EVENT_TOUCHEND, function (event) { 6008 return end(event); 6009 }); 6010 } 6011 }; 6012 6013 _proto._keydown = function _keydown(event) { 6014 if (/input|textarea/i.test(event.target.tagName)) { 6015 return; 6016 } 6017 6018 switch (event.which) { 6019 case ARROW_LEFT_KEYCODE: 6020 event.preventDefault(); 6021 this.prev(); 6022 break; 6023 6024 case ARROW_RIGHT_KEYCODE: 6025 event.preventDefault(); 6026 this.next(); 6027 break; 6028 } 6029 }; 6030 6031 _proto._getItemIndex = function _getItemIndex(element) { 6032 this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : []; 6033 return this._items.indexOf(element); 6034 }; 6035 6036 _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { 6037 var isNextDirection = direction === DIRECTION_NEXT; 6038 var isPrevDirection = direction === DIRECTION_PREV; 6039 6040 var activeIndex = this._getItemIndex(activeElement); 6041 6042 var lastItemIndex = this._items.length - 1; 6043 var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; 6044 6045 if (isGoingToWrap && !this._config.wrap) { 6046 return activeElement; 6047 } 6048 6049 var delta = direction === DIRECTION_PREV ? -1 : 1; 6050 var itemIndex = (activeIndex + delta) % this._items.length; 6051 return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; 6052 }; 6053 6054 _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { 6055 var targetIndex = this._getItemIndex(relatedTarget); 6056 6057 var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM)); 6058 6059 var slideEvent = $__default["default"].Event(EVENT_SLIDE, { 6060 relatedTarget: relatedTarget, 6061 direction: eventDirectionName, 6062 from: fromIndex, 6063 to: targetIndex 6064 }); 6065 $__default["default"](this._element).trigger(slideEvent); 6066 return slideEvent; 6067 }; 6068 6069 _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { 6070 if (this._indicatorsElement) { 6071 var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1)); 6072 $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE$2); 6073 6074 var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; 6075 6076 if (nextIndicator) { 6077 $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE$2); 6078 } 6079 } 6080 }; 6081 6082 _proto._updateInterval = function _updateInterval() { 6083 var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM); 6084 6085 if (!element) { 6086 return; 6087 } 6088 6089 var elementInterval = parseInt(element.getAttribute('data-interval'), 10); 6090 6091 if (elementInterval) { 6092 this._config.defaultInterval = this._config.defaultInterval || this._config.interval; 6093 this._config.interval = elementInterval; 6094 } else { 6095 this._config.interval = this._config.defaultInterval || this._config.interval; 6096 } 6097 }; 6098 6099 _proto._slide = function _slide(direction, element) { 6100 var _this4 = this; 6101 6102 var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM); 6103 6104 var activeElementIndex = this._getItemIndex(activeElement); 6105 6106 var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); 6107 6108 var nextElementIndex = this._getItemIndex(nextElement); 6109 6110 var isCycling = Boolean(this._interval); 6111 var directionalClassName; 6112 var orderClassName; 6113 var eventDirectionName; 6114 6115 if (direction === DIRECTION_NEXT) { 6116 directionalClassName = CLASS_NAME_LEFT; 6117 orderClassName = CLASS_NAME_NEXT; 6118 eventDirectionName = DIRECTION_LEFT; 6119 } else { 6120 directionalClassName = CLASS_NAME_RIGHT; 6121 orderClassName = CLASS_NAME_PREV; 6122 eventDirectionName = DIRECTION_RIGHT; 6123 } 6124 6125 if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE$2)) { 6126 this._isSliding = false; 6127 return; 6128 } 6129 6130 var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); 6131 6132 if (slideEvent.isDefaultPrevented()) { 6133 return; 6134 } 6135 6136 if (!activeElement || !nextElement) { 6137 // Some weirdness is happening, so we bail 6138 return; 6139 } 6140 6141 this._isSliding = true; 6142 6143 if (isCycling) { 6144 this.pause(); 6145 } 6146 6147 this._setActiveIndicatorElement(nextElement); 6148 6149 this._activeElement = nextElement; 6150 var slidEvent = $__default["default"].Event(EVENT_SLID, { 6151 relatedTarget: nextElement, 6152 direction: eventDirectionName, 6153 from: activeElementIndex, 6154 to: nextElementIndex 6155 }); 6156 6157 if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) { 6158 $__default["default"](nextElement).addClass(orderClassName); 6159 Util.reflow(nextElement); 6160 $__default["default"](activeElement).addClass(directionalClassName); 6161 $__default["default"](nextElement).addClass(directionalClassName); 6162 var transitionDuration = Util.getTransitionDurationFromElement(activeElement); 6163 $__default["default"](activeElement).one(Util.TRANSITION_END, function () { 6164 $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE$2); 6165 $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2 + " " + orderClassName + " " + directionalClassName); 6166 _this4._isSliding = false; 6167 setTimeout(function () { 6168 return $__default["default"](_this4._element).trigger(slidEvent); 6169 }, 0); 6170 }).emulateTransitionEnd(transitionDuration); 6171 } else { 6172 $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE$2); 6173 $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE$2); 6174 this._isSliding = false; 6175 $__default["default"](this._element).trigger(slidEvent); 6176 } 6177 6178 if (isCycling) { 6179 this.cycle(); 6180 } 6181 } // Static 6182 ; 6183 6184 Carousel._jQueryInterface = function _jQueryInterface(config) { 6185 return this.each(function () { 6186 var data = $__default["default"](this).data(DATA_KEY$8); 6187 6188 var _config = _extends({}, Default$7, $__default["default"](this).data()); 6189 6190 if (typeof config === 'object') { 6191 _config = _extends({}, _config, config); 6192 } 6193 6194 var action = typeof config === 'string' ? config : _config.slide; 6195 6196 if (!data) { 6197 data = new Carousel(this, _config); 6198 $__default["default"](this).data(DATA_KEY$8, data); 6199 } 6200 6201 if (typeof config === 'number') { 6202 data.to(config); 6203 } else if (typeof action === 'string') { 6204 if (typeof data[action] === 'undefined') { 6205 throw new TypeError("No method named \"" + action + "\""); 6206 } 6207 6208 data[action](); 6209 } else if (_config.interval && _config.ride) { 6210 data.pause(); 6211 data.cycle(); 6212 } 6213 }); 6214 }; 6215 6216 Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { 6217 var selector = Util.getSelectorFromElement(this); 6218 6219 if (!selector) { 6220 return; 6221 } 6222 6223 var target = $__default["default"](selector)[0]; 6224 6225 if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) { 6226 return; 6227 } 6228 6229 var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); 6230 6231 var slideIndex = this.getAttribute('data-slide-to'); 6232 6233 if (slideIndex) { 6234 config.interval = false; 6235 } 6236 6237 Carousel._jQueryInterface.call($__default["default"](target), config); 6238 6239 if (slideIndex) { 6240 $__default["default"](target).data(DATA_KEY$8).to(slideIndex); 6241 } 6242 6243 event.preventDefault(); 6244 }; 6245 6246 _createClass(Carousel, null, [{ 6247 key: "VERSION", 6248 get: function get() { 6249 return VERSION$8; 6250 } 6251 }, { 6252 key: "Default", 6253 get: function get() { 6254 return Default$7; 6255 } 6256 }]); 6257 6258 return Carousel; 6259 }(); 6260 /** 6261 * Data API implementation 6262 */ 6263 6264 6265 $__default["default"](document).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler); 6266 $__default["default"](window).on(EVENT_LOAD_DATA_API$1, function () { 6267 var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE)); 6268 6269 for (var i = 0, len = carousels.length; i < len; i++) { 6270 var $carousel = $__default["default"](carousels[i]); 6271 6272 Carousel._jQueryInterface.call($carousel, $carousel.data()); 6273 } 6274 }); 6275 /** 6276 * jQuery 6277 */ 6278 6279 $__default["default"].fn[NAME$8] = Carousel._jQueryInterface; 6280 $__default["default"].fn[NAME$8].Constructor = Carousel; 6281 6282 $__default["default"].fn[NAME$8].noConflict = function () { 6283 $__default["default"].fn[NAME$8] = JQUERY_NO_CONFLICT$8; 6284 return Carousel._jQueryInterface; 6285 }; 6286 6287 /** 6288 * Constants 6289 */ 6290 6291 var NAME$7 = 'collapse'; 6292 var VERSION$7 = '4.6.2'; 6293 var DATA_KEY$7 = 'bs.collapse'; 6294 var EVENT_KEY$7 = "." + DATA_KEY$7; 6295 var DATA_API_KEY$4 = '.data-api'; 6296 var JQUERY_NO_CONFLICT$7 = $__default["default"].fn[NAME$7]; 6297 var CLASS_NAME_SHOW$6 = 'show'; 6298 var CLASS_NAME_COLLAPSE = 'collapse'; 6299 var CLASS_NAME_COLLAPSING = 'collapsing'; 6300 var CLASS_NAME_COLLAPSED = 'collapsed'; 6301 var DIMENSION_WIDTH = 'width'; 6302 var DIMENSION_HEIGHT = 'height'; 6303 var EVENT_SHOW$4 = "show" + EVENT_KEY$7; 6304 var EVENT_SHOWN$4 = "shown" + EVENT_KEY$7; 6305 var EVENT_HIDE$4 = "hide" + EVENT_KEY$7; 6306 var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$7; 6307 var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$7 + DATA_API_KEY$4; 6308 var SELECTOR_ACTIVES = '.show, .collapsing'; 6309 var SELECTOR_DATA_TOGGLE$3 = '[data-toggle="collapse"]'; 6310 var Default$6 = { 6311 toggle: true, 6312 parent: '' 6313 }; 6314 var DefaultType$6 = { 6315 toggle: 'boolean', 6316 parent: '(string|element)' 6317 }; 6318 /** 6319 * Class definition 6320 */ 6321 6322 var Collapse = /*#__PURE__*/function () { 6323 function Collapse(element, config) { 6324 this._isTransitioning = false; 6325 this._element = element; 6326 this._config = this._getConfig(config); 6327 this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); 6328 var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$3)); 6329 6330 for (var i = 0, len = toggleList.length; i < len; i++) { 6331 var elem = toggleList[i]; 6332 var selector = Util.getSelectorFromElement(elem); 6333 var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { 6334 return foundElem === element; 6335 }); 6336 6337 if (selector !== null && filterElement.length > 0) { 6338 this._selector = selector; 6339 6340 this._triggerArray.push(elem); 6341 } 6342 } 6343 6344 this._parent = this._config.parent ? this._getParent() : null; 6345 6346 if (!this._config.parent) { 6347 this._addAriaAndCollapsedClass(this._element, this._triggerArray); 6348 } 6349 6350 if (this._config.toggle) { 6351 this.toggle(); 6352 } 6353 } // Getters 6354 6355 6356 var _proto = Collapse.prototype; 6357 6358 // Public 6359 _proto.toggle = function toggle() { 6360 if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { 6361 this.hide(); 6362 } else { 6363 this.show(); 6364 } 6365 }; 6366 6367 _proto.show = function show() { 6368 var _this = this; 6369 6370 if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { 6371 return; 6372 } 6373 6374 var actives; 6375 var activesData; 6376 6377 if (this._parent) { 6378 actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) { 6379 if (typeof _this._config.parent === 'string') { 6380 return elem.getAttribute('data-parent') === _this._config.parent; 6381 } 6382 6383 return elem.classList.contains(CLASS_NAME_COLLAPSE); 6384 }); 6385 6386 if (actives.length === 0) { 6387 actives = null; 6388 } 6389 } 6390 6391 if (actives) { 6392 activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY$7); 6393 6394 if (activesData && activesData._isTransitioning) { 6395 return; 6396 } 6397 } 6398 6399 var startEvent = $__default["default"].Event(EVENT_SHOW$4); 6400 $__default["default"](this._element).trigger(startEvent); 6401 6402 if (startEvent.isDefaultPrevented()) { 6403 return; 6404 } 6405 6406 if (actives) { 6407 Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide'); 6408 6409 if (!activesData) { 6410 $__default["default"](actives).data(DATA_KEY$7, null); 6411 } 6412 } 6413 6414 var dimension = this._getDimension(); 6415 6416 $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING); 6417 this._element.style[dimension] = 0; 6418 6419 if (this._triggerArray.length) { 6420 $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true); 6421 } 6422 6423 this.setTransitioning(true); 6424 6425 var complete = function complete() { 6426 $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6); 6427 _this._element.style[dimension] = ''; 6428 6429 _this.setTransitioning(false); 6430 6431 $__default["default"](_this._element).trigger(EVENT_SHOWN$4); 6432 }; 6433 6434 var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 6435 var scrollSize = "scroll" + capitalizedDimension; 6436 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 6437 $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 6438 this._element.style[dimension] = this._element[scrollSize] + "px"; 6439 }; 6440 6441 _proto.hide = function hide() { 6442 var _this2 = this; 6443 6444 if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW$6)) { 6445 return; 6446 } 6447 6448 var startEvent = $__default["default"].Event(EVENT_HIDE$4); 6449 $__default["default"](this._element).trigger(startEvent); 6450 6451 if (startEvent.isDefaultPrevented()) { 6452 return; 6453 } 6454 6455 var dimension = this._getDimension(); 6456 6457 this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; 6458 Util.reflow(this._element); 6459 $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW$6); 6460 var triggerArrayLength = this._triggerArray.length; 6461 6462 if (triggerArrayLength > 0) { 6463 for (var i = 0; i < triggerArrayLength; i++) { 6464 var trigger = this._triggerArray[i]; 6465 var selector = Util.getSelectorFromElement(trigger); 6466 6467 if (selector !== null) { 6468 var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector))); 6469 6470 if (!$elem.hasClass(CLASS_NAME_SHOW$6)) { 6471 $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false); 6472 } 6473 } 6474 } 6475 } 6476 6477 this.setTransitioning(true); 6478 6479 var complete = function complete() { 6480 _this2.setTransitioning(false); 6481 6482 $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN$4); 6483 }; 6484 6485 this._element.style[dimension] = ''; 6486 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 6487 $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 6488 }; 6489 6490 _proto.setTransitioning = function setTransitioning(isTransitioning) { 6491 this._isTransitioning = isTransitioning; 6492 }; 6493 6494 _proto.dispose = function dispose() { 6495 $__default["default"].removeData(this._element, DATA_KEY$7); 6496 this._config = null; 6497 this._parent = null; 6498 this._element = null; 6499 this._triggerArray = null; 6500 this._isTransitioning = null; 6501 } // Private 6502 ; 6503 6504 _proto._getConfig = function _getConfig(config) { 6505 config = _extends({}, Default$6, config); 6506 config.toggle = Boolean(config.toggle); // Coerce string values 6507 6508 Util.typeCheckConfig(NAME$7, config, DefaultType$6); 6509 return config; 6510 }; 6511 6512 _proto._getDimension = function _getDimension() { 6513 var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH); 6514 return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT; 6515 }; 6516 6517 _proto._getParent = function _getParent() { 6518 var _this3 = this; 6519 6520 var parent; 6521 6522 if (Util.isElement(this._config.parent)) { 6523 parent = this._config.parent; // It's a jQuery object 6524 6525 if (typeof this._config.parent.jquery !== 'undefined') { 6526 parent = this._config.parent[0]; 6527 } 6528 } else { 6529 parent = document.querySelector(this._config.parent); 6530 } 6531 6532 var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; 6533 var children = [].slice.call(parent.querySelectorAll(selector)); 6534 $__default["default"](children).each(function (i, element) { 6535 _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); 6536 }); 6537 return parent; 6538 }; 6539 6540 _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { 6541 var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW$6); 6542 6543 if (triggerArray.length) { 6544 $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen); 6545 } 6546 } // Static 6547 ; 6548 6549 Collapse._getTargetFromElement = function _getTargetFromElement(element) { 6550 var selector = Util.getSelectorFromElement(element); 6551 return selector ? document.querySelector(selector) : null; 6552 }; 6553 6554 Collapse._jQueryInterface = function _jQueryInterface(config) { 6555 return this.each(function () { 6556 var $element = $__default["default"](this); 6557 var data = $element.data(DATA_KEY$7); 6558 6559 var _config = _extends({}, Default$6, $element.data(), typeof config === 'object' && config ? config : {}); 6560 6561 if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) { 6562 _config.toggle = false; 6563 } 6564 6565 if (!data) { 6566 data = new Collapse(this, _config); 6567 $element.data(DATA_KEY$7, data); 6568 } 6569 6570 if (typeof config === 'string') { 6571 if (typeof data[config] === 'undefined') { 6572 throw new TypeError("No method named \"" + config + "\""); 6573 } 6574 6575 data[config](); 6576 } 6577 }); 6578 }; 6579 6580 _createClass(Collapse, null, [{ 6581 key: "VERSION", 6582 get: function get() { 6583 return VERSION$7; 6584 } 6585 }, { 6586 key: "Default", 6587 get: function get() { 6588 return Default$6; 6589 } 6590 }]); 6591 6592 return Collapse; 6593 }(); 6594 /** 6595 * Data API implementation 6596 */ 6597 6598 6599 $__default["default"](document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { 6600 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 6601 if (event.currentTarget.tagName === 'A') { 6602 event.preventDefault(); 6603 } 6604 6605 var $trigger = $__default["default"](this); 6606 var selector = Util.getSelectorFromElement(this); 6607 var selectors = [].slice.call(document.querySelectorAll(selector)); 6608 $__default["default"](selectors).each(function () { 6609 var $target = $__default["default"](this); 6610 var data = $target.data(DATA_KEY$7); 6611 var config = data ? 'toggle' : $trigger.data(); 6612 6613 Collapse._jQueryInterface.call($target, config); 6614 }); 6615 }); 6616 /** 6617 * jQuery 6618 */ 6619 6620 $__default["default"].fn[NAME$7] = Collapse._jQueryInterface; 6621 $__default["default"].fn[NAME$7].Constructor = Collapse; 6622 6623 $__default["default"].fn[NAME$7].noConflict = function () { 6624 $__default["default"].fn[NAME$7] = JQUERY_NO_CONFLICT$7; 6625 return Collapse._jQueryInterface; 6626 }; 6627 6628 /** 6629 * Constants 6630 */ 6631 6632 var NAME$6 = 'dropdown'; 6633 var VERSION$6 = '4.6.2'; 6634 var DATA_KEY$6 = 'bs.dropdown'; 6635 var EVENT_KEY$6 = "." + DATA_KEY$6; 6636 var DATA_API_KEY$3 = '.data-api'; 6637 var JQUERY_NO_CONFLICT$6 = $__default["default"].fn[NAME$6]; 6638 var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key 6639 6640 var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key 6641 6642 var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key 6643 6644 var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key 6645 6646 var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key 6647 6648 var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) 6649 6650 var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE$1); 6651 var CLASS_NAME_DISABLED$1 = 'disabled'; 6652 var CLASS_NAME_SHOW$5 = 'show'; 6653 var CLASS_NAME_DROPUP = 'dropup'; 6654 var CLASS_NAME_DROPRIGHT = 'dropright'; 6655 var CLASS_NAME_DROPLEFT = 'dropleft'; 6656 var CLASS_NAME_MENURIGHT = 'dropdown-menu-right'; 6657 var CLASS_NAME_POSITION_STATIC = 'position-static'; 6658 var EVENT_HIDE$3 = "hide" + EVENT_KEY$6; 6659 var EVENT_HIDDEN$3 = "hidden" + EVENT_KEY$6; 6660 var EVENT_SHOW$3 = "show" + EVENT_KEY$6; 6661 var EVENT_SHOWN$3 = "shown" + EVENT_KEY$6; 6662 var EVENT_CLICK = "click" + EVENT_KEY$6; 6663 var EVENT_CLICK_DATA_API$2 = "click" + EVENT_KEY$6 + DATA_API_KEY$3; 6664 var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$6 + DATA_API_KEY$3; 6665 var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$6 + DATA_API_KEY$3; 6666 var SELECTOR_DATA_TOGGLE$2 = '[data-toggle="dropdown"]'; 6667 var SELECTOR_FORM_CHILD = '.dropdown form'; 6668 var SELECTOR_MENU = '.dropdown-menu'; 6669 var SELECTOR_NAVBAR_NAV = '.navbar-nav'; 6670 var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 6671 var PLACEMENT_TOP = 'top-start'; 6672 var PLACEMENT_TOPEND = 'top-end'; 6673 var PLACEMENT_BOTTOM = 'bottom-start'; 6674 var PLACEMENT_BOTTOMEND = 'bottom-end'; 6675 var PLACEMENT_RIGHT = 'right-start'; 6676 var PLACEMENT_LEFT = 'left-start'; 6677 var Default$5 = { 6678 offset: 0, 6679 flip: true, 6680 boundary: 'scrollParent', 6681 reference: 'toggle', 6682 display: 'dynamic', 6683 popperConfig: null 6684 }; 6685 var DefaultType$5 = { 6686 offset: '(number|string|function)', 6687 flip: 'boolean', 6688 boundary: '(string|element)', 6689 reference: '(string|element)', 6690 display: 'string', 6691 popperConfig: '(null|object)' 6692 }; 6693 /** 6694 * Class definition 6695 */ 6696 6697 var Dropdown = /*#__PURE__*/function () { 6698 function Dropdown(element, config) { 6699 this._element = element; 6700 this._popper = null; 6701 this._config = this._getConfig(config); 6702 this._menu = this._getMenuElement(); 6703 this._inNavbar = this._detectNavbar(); 6704 6705 this._addEventListeners(); 6706 } // Getters 6707 6708 6709 var _proto = Dropdown.prototype; 6710 6711 // Public 6712 _proto.toggle = function toggle() { 6713 if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1)) { 6714 return; 6715 } 6716 6717 var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5); 6718 6719 Dropdown._clearMenus(); 6720 6721 if (isActive) { 6722 return; 6723 } 6724 6725 this.show(true); 6726 }; 6727 6728 _proto.show = function show(usePopper) { 6729 if (usePopper === void 0) { 6730 usePopper = false; 6731 } 6732 6733 if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) { 6734 return; 6735 } 6736 6737 var relatedTarget = { 6738 relatedTarget: this._element 6739 }; 6740 var showEvent = $__default["default"].Event(EVENT_SHOW$3, relatedTarget); 6741 6742 var parent = Dropdown._getParentFromElement(this._element); 6743 6744 $__default["default"](parent).trigger(showEvent); 6745 6746 if (showEvent.isDefaultPrevented()) { 6747 return; 6748 } // Totally disable Popper for Dropdowns in Navbar 6749 6750 6751 if (!this._inNavbar && usePopper) { 6752 // Check for Popper dependency 6753 if (typeof Popper__default["default"] === 'undefined') { 6754 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 6755 } 6756 6757 var referenceElement = this._element; 6758 6759 if (this._config.reference === 'parent') { 6760 referenceElement = parent; 6761 } else if (Util.isElement(this._config.reference)) { 6762 referenceElement = this._config.reference; // Check if it's jQuery element 6763 6764 if (typeof this._config.reference.jquery !== 'undefined') { 6765 referenceElement = this._config.reference[0]; 6766 } 6767 } // If boundary is not `scrollParent`, then set position to `static` 6768 // to allow the menu to "escape" the scroll parent's boundaries 6769 // https://github.com/twbs/bootstrap/issues/24251 6770 6771 6772 if (this._config.boundary !== 'scrollParent') { 6773 $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC); 6774 } 6775 6776 this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig()); 6777 } // If this is a touch-enabled device we add extra 6778 // empty mouseover listeners to the body's immediate children; 6779 // only needed because of broken event delegation on iOS 6780 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 6781 6782 6783 if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) { 6784 $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop); 6785 } 6786 6787 this._element.focus(); 6788 6789 this._element.setAttribute('aria-expanded', true); 6790 6791 $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5); 6792 $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_SHOWN$3, relatedTarget)); 6793 }; 6794 6795 _proto.hide = function hide() { 6796 if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED$1) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW$5)) { 6797 return; 6798 } 6799 6800 var relatedTarget = { 6801 relatedTarget: this._element 6802 }; 6803 var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget); 6804 6805 var parent = Dropdown._getParentFromElement(this._element); 6806 6807 $__default["default"](parent).trigger(hideEvent); 6808 6809 if (hideEvent.isDefaultPrevented()) { 6810 return; 6811 } 6812 6813 if (this._popper) { 6814 this._popper.destroy(); 6815 } 6816 6817 $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW$5); 6818 $__default["default"](parent).toggleClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget)); 6819 }; 6820 6821 _proto.dispose = function dispose() { 6822 $__default["default"].removeData(this._element, DATA_KEY$6); 6823 $__default["default"](this._element).off(EVENT_KEY$6); 6824 this._element = null; 6825 this._menu = null; 6826 6827 if (this._popper !== null) { 6828 this._popper.destroy(); 6829 6830 this._popper = null; 6831 } 6832 }; 6833 6834 _proto.update = function update() { 6835 this._inNavbar = this._detectNavbar(); 6836 6837 if (this._popper !== null) { 6838 this._popper.scheduleUpdate(); 6839 } 6840 } // Private 6841 ; 6842 6843 _proto._addEventListeners = function _addEventListeners() { 6844 var _this = this; 6845 6846 $__default["default"](this._element).on(EVENT_CLICK, function (event) { 6847 event.preventDefault(); 6848 event.stopPropagation(); 6849 6850 _this.toggle(); 6851 }); 6852 }; 6853 6854 _proto._getConfig = function _getConfig(config) { 6855 config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config); 6856 Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); 6857 return config; 6858 }; 6859 6860 _proto._getMenuElement = function _getMenuElement() { 6861 if (!this._menu) { 6862 var parent = Dropdown._getParentFromElement(this._element); 6863 6864 if (parent) { 6865 this._menu = parent.querySelector(SELECTOR_MENU); 6866 } 6867 } 6868 6869 return this._menu; 6870 }; 6871 6872 _proto._getPlacement = function _getPlacement() { 6873 var $parentDropdown = $__default["default"](this._element.parentNode); 6874 var placement = PLACEMENT_BOTTOM; // Handle dropup 6875 6876 if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) { 6877 placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP; 6878 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) { 6879 placement = PLACEMENT_RIGHT; 6880 } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) { 6881 placement = PLACEMENT_LEFT; 6882 } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) { 6883 placement = PLACEMENT_BOTTOMEND; 6884 } 6885 6886 return placement; 6887 }; 6888 6889 _proto._detectNavbar = function _detectNavbar() { 6890 return $__default["default"](this._element).closest('.navbar').length > 0; 6891 }; 6892 6893 _proto._getOffset = function _getOffset() { 6894 var _this2 = this; 6895 6896 var offset = {}; 6897 6898 if (typeof this._config.offset === 'function') { 6899 offset.fn = function (data) { 6900 data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element)); 6901 return data; 6902 }; 6903 } else { 6904 offset.offset = this._config.offset; 6905 } 6906 6907 return offset; 6908 }; 6909 6910 _proto._getPopperConfig = function _getPopperConfig() { 6911 var popperConfig = { 6912 placement: this._getPlacement(), 6913 modifiers: { 6914 offset: this._getOffset(), 6915 flip: { 6916 enabled: this._config.flip 6917 }, 6918 preventOverflow: { 6919 boundariesElement: this._config.boundary 6920 } 6921 } 6922 }; // Disable Popper if we have a static display 6923 6924 if (this._config.display === 'static') { 6925 popperConfig.modifiers.applyStyle = { 6926 enabled: false 6927 }; 6928 } 6929 6930 return _extends({}, popperConfig, this._config.popperConfig); 6931 } // Static 6932 ; 6933 6934 Dropdown._jQueryInterface = function _jQueryInterface(config) { 6935 return this.each(function () { 6936 var data = $__default["default"](this).data(DATA_KEY$6); 6937 6938 var _config = typeof config === 'object' ? config : null; 6939 6940 if (!data) { 6941 data = new Dropdown(this, _config); 6942 $__default["default"](this).data(DATA_KEY$6, data); 6943 } 6944 6945 if (typeof config === 'string') { 6946 if (typeof data[config] === 'undefined') { 6947 throw new TypeError("No method named \"" + config + "\""); 6948 } 6949 6950 data[config](); 6951 } 6952 }); 6953 }; 6954 6955 Dropdown._clearMenus = function _clearMenus(event) { 6956 if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { 6957 return; 6958 } 6959 6960 var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2)); 6961 6962 for (var i = 0, len = toggles.length; i < len; i++) { 6963 var parent = Dropdown._getParentFromElement(toggles[i]); 6964 6965 var context = $__default["default"](toggles[i]).data(DATA_KEY$6); 6966 var relatedTarget = { 6967 relatedTarget: toggles[i] 6968 }; 6969 6970 if (event && event.type === 'click') { 6971 relatedTarget.clickEvent = event; 6972 } 6973 6974 if (!context) { 6975 continue; 6976 } 6977 6978 var dropdownMenu = context._menu; 6979 6980 if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW$5)) { 6981 continue; 6982 } 6983 6984 if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) { 6985 continue; 6986 } 6987 6988 var hideEvent = $__default["default"].Event(EVENT_HIDE$3, relatedTarget); 6989 $__default["default"](parent).trigger(hideEvent); 6990 6991 if (hideEvent.isDefaultPrevented()) { 6992 continue; 6993 } // If this is a touch-enabled device we remove the extra 6994 // empty mouseover listeners we added for iOS support 6995 6996 6997 if ('ontouchstart' in document.documentElement) { 6998 $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop); 6999 } 7000 7001 toggles[i].setAttribute('aria-expanded', 'false'); 7002 7003 if (context._popper) { 7004 context._popper.destroy(); 7005 } 7006 7007 $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW$5); 7008 $__default["default"](parent).removeClass(CLASS_NAME_SHOW$5).trigger($__default["default"].Event(EVENT_HIDDEN$3, relatedTarget)); 7009 } 7010 }; 7011 7012 Dropdown._getParentFromElement = function _getParentFromElement(element) { 7013 var parent; 7014 var selector = Util.getSelectorFromElement(element); 7015 7016 if (selector) { 7017 parent = document.querySelector(selector); 7018 } 7019 7020 return parent || element.parentNode; 7021 } // eslint-disable-next-line complexity 7022 ; 7023 7024 Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { 7025 // If not input/textarea: 7026 // - And not a key in REGEXP_KEYDOWN => not a dropdown command 7027 // If input/textarea: 7028 // - If space key => not a dropdown command 7029 // - If key is other than escape 7030 // - If key is not up or down => not a dropdown command 7031 // - If trigger inside the menu => not a dropdown command 7032 if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE$1 && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { 7033 return; 7034 } 7035 7036 if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED$1)) { 7037 return; 7038 } 7039 7040 var parent = Dropdown._getParentFromElement(this); 7041 7042 var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW$5); 7043 7044 if (!isActive && event.which === ESCAPE_KEYCODE$1) { 7045 return; 7046 } 7047 7048 event.preventDefault(); 7049 event.stopPropagation(); 7050 7051 if (!isActive || event.which === ESCAPE_KEYCODE$1 || event.which === SPACE_KEYCODE) { 7052 if (event.which === ESCAPE_KEYCODE$1) { 7053 $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus'); 7054 } 7055 7056 $__default["default"](this).trigger('click'); 7057 return; 7058 } 7059 7060 var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) { 7061 return $__default["default"](item).is(':visible'); 7062 }); 7063 7064 if (items.length === 0) { 7065 return; 7066 } 7067 7068 var index = items.indexOf(event.target); 7069 7070 if (event.which === ARROW_UP_KEYCODE && index > 0) { 7071 // Up 7072 index--; 7073 } 7074 7075 if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { 7076 // Down 7077 index++; 7078 } 7079 7080 if (index < 0) { 7081 index = 0; 7082 } 7083 7084 items[index].focus(); 7085 }; 7086 7087 _createClass(Dropdown, null, [{ 7088 key: "VERSION", 7089 get: function get() { 7090 return VERSION$6; 7091 } 7092 }, { 7093 key: "Default", 7094 get: function get() { 7095 return Default$5; 7096 } 7097 }, { 7098 key: "DefaultType", 7099 get: function get() { 7100 return DefaultType$5; 7101 } 7102 }]); 7103 7104 return Dropdown; 7105 }(); 7106 /** 7107 * Data API implementation 7108 */ 7109 7110 7111 $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$2 + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { 7112 event.preventDefault(); 7113 event.stopPropagation(); 7114 7115 Dropdown._jQueryInterface.call($__default["default"](this), 'toggle'); 7116 }).on(EVENT_CLICK_DATA_API$2, SELECTOR_FORM_CHILD, function (e) { 7117 e.stopPropagation(); 7118 }); 7119 /** 7120 * jQuery 7121 */ 7122 7123 $__default["default"].fn[NAME$6] = Dropdown._jQueryInterface; 7124 $__default["default"].fn[NAME$6].Constructor = Dropdown; 7125 7126 $__default["default"].fn[NAME$6].noConflict = function () { 7127 $__default["default"].fn[NAME$6] = JQUERY_NO_CONFLICT$6; 7128 return Dropdown._jQueryInterface; 7129 }; 7130 7131 /** 7132 * Constants 7133 */ 7134 7135 var NAME$5 = 'modal'; 7136 var VERSION$5 = '4.6.2'; 7137 var DATA_KEY$5 = 'bs.modal'; 7138 var EVENT_KEY$5 = "." + DATA_KEY$5; 7139 var DATA_API_KEY$2 = '.data-api'; 7140 var JQUERY_NO_CONFLICT$5 = $__default["default"].fn[NAME$5]; 7141 var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key 7142 7143 var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable'; 7144 var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'; 7145 var CLASS_NAME_BACKDROP = 'modal-backdrop'; 7146 var CLASS_NAME_OPEN = 'modal-open'; 7147 var CLASS_NAME_FADE$4 = 'fade'; 7148 var CLASS_NAME_SHOW$4 = 'show'; 7149 var CLASS_NAME_STATIC = 'modal-static'; 7150 var EVENT_HIDE$2 = "hide" + EVENT_KEY$5; 7151 var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY$5; 7152 var EVENT_HIDDEN$2 = "hidden" + EVENT_KEY$5; 7153 var EVENT_SHOW$2 = "show" + EVENT_KEY$5; 7154 var EVENT_SHOWN$2 = "shown" + EVENT_KEY$5; 7155 var EVENT_FOCUSIN = "focusin" + EVENT_KEY$5; 7156 var EVENT_RESIZE = "resize" + EVENT_KEY$5; 7157 var EVENT_CLICK_DISMISS$1 = "click.dismiss" + EVENT_KEY$5; 7158 var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY$5; 7159 var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY$5; 7160 var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY$5; 7161 var EVENT_CLICK_DATA_API$1 = "click" + EVENT_KEY$5 + DATA_API_KEY$2; 7162 var SELECTOR_DIALOG = '.modal-dialog'; 7163 var SELECTOR_MODAL_BODY = '.modal-body'; 7164 var SELECTOR_DATA_TOGGLE$1 = '[data-toggle="modal"]'; 7165 var SELECTOR_DATA_DISMISS$1 = '[data-dismiss="modal"]'; 7166 var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; 7167 var SELECTOR_STICKY_CONTENT = '.sticky-top'; 7168 var Default$4 = { 7169 backdrop: true, 7170 keyboard: true, 7171 focus: true, 7172 show: true 7173 }; 7174 var DefaultType$4 = { 7175 backdrop: '(boolean|string)', 7176 keyboard: 'boolean', 7177 focus: 'boolean', 7178 show: 'boolean' 7179 }; 7180 /** 7181 * Class definition 7182 */ 7183 7184 var Modal = /*#__PURE__*/function () { 7185 function Modal(element, config) { 7186 this._config = this._getConfig(config); 7187 this._element = element; 7188 this._dialog = element.querySelector(SELECTOR_DIALOG); 7189 this._backdrop = null; 7190 this._isShown = false; 7191 this._isBodyOverflowing = false; 7192 this._ignoreBackdropClick = false; 7193 this._isTransitioning = false; 7194 this._scrollbarWidth = 0; 7195 } // Getters 7196 7197 7198 var _proto = Modal.prototype; 7199 7200 // Public 7201 _proto.toggle = function toggle(relatedTarget) { 7202 return this._isShown ? this.hide() : this.show(relatedTarget); 7203 }; 7204 7205 _proto.show = function show(relatedTarget) { 7206 var _this = this; 7207 7208 if (this._isShown || this._isTransitioning) { 7209 return; 7210 } 7211 7212 var showEvent = $__default["default"].Event(EVENT_SHOW$2, { 7213 relatedTarget: relatedTarget 7214 }); 7215 $__default["default"](this._element).trigger(showEvent); 7216 7217 if (showEvent.isDefaultPrevented()) { 7218 return; 7219 } 7220 7221 this._isShown = true; 7222 7223 if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) { 7224 this._isTransitioning = true; 7225 } 7226 7227 this._checkScrollbar(); 7228 7229 this._setScrollbar(); 7230 7231 this._adjustDialog(); 7232 7233 this._setEscapeEvent(); 7234 7235 this._setResizeEvent(); 7236 7237 $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function (event) { 7238 return _this.hide(event); 7239 }); 7240 $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () { 7241 $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) { 7242 if ($__default["default"](event.target).is(_this._element)) { 7243 _this._ignoreBackdropClick = true; 7244 } 7245 }); 7246 }); 7247 7248 this._showBackdrop(function () { 7249 return _this._showElement(relatedTarget); 7250 }); 7251 }; 7252 7253 _proto.hide = function hide(event) { 7254 var _this2 = this; 7255 7256 if (event) { 7257 event.preventDefault(); 7258 } 7259 7260 if (!this._isShown || this._isTransitioning) { 7261 return; 7262 } 7263 7264 var hideEvent = $__default["default"].Event(EVENT_HIDE$2); 7265 $__default["default"](this._element).trigger(hideEvent); 7266 7267 if (!this._isShown || hideEvent.isDefaultPrevented()) { 7268 return; 7269 } 7270 7271 this._isShown = false; 7272 var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4); 7273 7274 if (transition) { 7275 this._isTransitioning = true; 7276 } 7277 7278 this._setEscapeEvent(); 7279 7280 this._setResizeEvent(); 7281 7282 $__default["default"](document).off(EVENT_FOCUSIN); 7283 $__default["default"](this._element).removeClass(CLASS_NAME_SHOW$4); 7284 $__default["default"](this._element).off(EVENT_CLICK_DISMISS$1); 7285 $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS); 7286 7287 if (transition) { 7288 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 7289 $__default["default"](this._element).one(Util.TRANSITION_END, function (event) { 7290 return _this2._hideModal(event); 7291 }).emulateTransitionEnd(transitionDuration); 7292 } else { 7293 this._hideModal(); 7294 } 7295 }; 7296 7297 _proto.dispose = function dispose() { 7298 [window, this._element, this._dialog].forEach(function (htmlElement) { 7299 return $__default["default"](htmlElement).off(EVENT_KEY$5); 7300 }); 7301 /** 7302 * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` 7303 * Do not move `document` in `htmlElements` array 7304 * It will remove `EVENT_CLICK_DATA_API` event that should remain 7305 */ 7306 7307 $__default["default"](document).off(EVENT_FOCUSIN); 7308 $__default["default"].removeData(this._element, DATA_KEY$5); 7309 this._config = null; 7310 this._element = null; 7311 this._dialog = null; 7312 this._backdrop = null; 7313 this._isShown = null; 7314 this._isBodyOverflowing = null; 7315 this._ignoreBackdropClick = null; 7316 this._isTransitioning = null; 7317 this._scrollbarWidth = null; 7318 }; 7319 7320 _proto.handleUpdate = function handleUpdate() { 7321 this._adjustDialog(); 7322 } // Private 7323 ; 7324 7325 _proto._getConfig = function _getConfig(config) { 7326 config = _extends({}, Default$4, config); 7327 Util.typeCheckConfig(NAME$5, config, DefaultType$4); 7328 return config; 7329 }; 7330 7331 _proto._triggerBackdropTransition = function _triggerBackdropTransition() { 7332 var _this3 = this; 7333 7334 var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED); 7335 $__default["default"](this._element).trigger(hideEventPrevented); 7336 7337 if (hideEventPrevented.isDefaultPrevented()) { 7338 return; 7339 } 7340 7341 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 7342 7343 if (!isModalOverflowing) { 7344 this._element.style.overflowY = 'hidden'; 7345 } 7346 7347 this._element.classList.add(CLASS_NAME_STATIC); 7348 7349 var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog); 7350 $__default["default"](this._element).off(Util.TRANSITION_END); 7351 $__default["default"](this._element).one(Util.TRANSITION_END, function () { 7352 _this3._element.classList.remove(CLASS_NAME_STATIC); 7353 7354 if (!isModalOverflowing) { 7355 $__default["default"](_this3._element).one(Util.TRANSITION_END, function () { 7356 _this3._element.style.overflowY = ''; 7357 }).emulateTransitionEnd(_this3._element, modalTransitionDuration); 7358 } 7359 }).emulateTransitionEnd(modalTransitionDuration); 7360 7361 this._element.focus(); 7362 }; 7363 7364 _proto._showElement = function _showElement(relatedTarget) { 7365 var _this4 = this; 7366 7367 var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4); 7368 var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null; 7369 7370 if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { 7371 // Don't move modal's DOM position 7372 document.body.appendChild(this._element); 7373 } 7374 7375 this._element.style.display = 'block'; 7376 7377 this._element.removeAttribute('aria-hidden'); 7378 7379 this._element.setAttribute('aria-modal', true); 7380 7381 this._element.setAttribute('role', 'dialog'); 7382 7383 if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) { 7384 modalBody.scrollTop = 0; 7385 } else { 7386 this._element.scrollTop = 0; 7387 } 7388 7389 if (transition) { 7390 Util.reflow(this._element); 7391 } 7392 7393 $__default["default"](this._element).addClass(CLASS_NAME_SHOW$4); 7394 7395 if (this._config.focus) { 7396 this._enforceFocus(); 7397 } 7398 7399 var shownEvent = $__default["default"].Event(EVENT_SHOWN$2, { 7400 relatedTarget: relatedTarget 7401 }); 7402 7403 var transitionComplete = function transitionComplete() { 7404 if (_this4._config.focus) { 7405 _this4._element.focus(); 7406 } 7407 7408 _this4._isTransitioning = false; 7409 $__default["default"](_this4._element).trigger(shownEvent); 7410 }; 7411 7412 if (transition) { 7413 var transitionDuration = Util.getTransitionDurationFromElement(this._dialog); 7414 $__default["default"](this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); 7415 } else { 7416 transitionComplete(); 7417 } 7418 }; 7419 7420 _proto._enforceFocus = function _enforceFocus() { 7421 var _this5 = this; 7422 7423 $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop 7424 .on(EVENT_FOCUSIN, function (event) { 7425 if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) { 7426 _this5._element.focus(); 7427 } 7428 }); 7429 }; 7430 7431 _proto._setEscapeEvent = function _setEscapeEvent() { 7432 var _this6 = this; 7433 7434 if (this._isShown) { 7435 $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) { 7436 if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) { 7437 event.preventDefault(); 7438 7439 _this6.hide(); 7440 } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) { 7441 _this6._triggerBackdropTransition(); 7442 } 7443 }); 7444 } else if (!this._isShown) { 7445 $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS); 7446 } 7447 }; 7448 7449 _proto._setResizeEvent = function _setResizeEvent() { 7450 var _this7 = this; 7451 7452 if (this._isShown) { 7453 $__default["default"](window).on(EVENT_RESIZE, function (event) { 7454 return _this7.handleUpdate(event); 7455 }); 7456 } else { 7457 $__default["default"](window).off(EVENT_RESIZE); 7458 } 7459 }; 7460 7461 _proto._hideModal = function _hideModal() { 7462 var _this8 = this; 7463 7464 this._element.style.display = 'none'; 7465 7466 this._element.setAttribute('aria-hidden', true); 7467 7468 this._element.removeAttribute('aria-modal'); 7469 7470 this._element.removeAttribute('role'); 7471 7472 this._isTransitioning = false; 7473 7474 this._showBackdrop(function () { 7475 $__default["default"](document.body).removeClass(CLASS_NAME_OPEN); 7476 7477 _this8._resetAdjustments(); 7478 7479 _this8._resetScrollbar(); 7480 7481 $__default["default"](_this8._element).trigger(EVENT_HIDDEN$2); 7482 }); 7483 }; 7484 7485 _proto._removeBackdrop = function _removeBackdrop() { 7486 if (this._backdrop) { 7487 $__default["default"](this._backdrop).remove(); 7488 this._backdrop = null; 7489 } 7490 }; 7491 7492 _proto._showBackdrop = function _showBackdrop(callback) { 7493 var _this9 = this; 7494 7495 var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE$4) ? CLASS_NAME_FADE$4 : ''; 7496 7497 if (this._isShown && this._config.backdrop) { 7498 this._backdrop = document.createElement('div'); 7499 this._backdrop.className = CLASS_NAME_BACKDROP; 7500 7501 if (animate) { 7502 this._backdrop.classList.add(animate); 7503 } 7504 7505 $__default["default"](this._backdrop).appendTo(document.body); 7506 $__default["default"](this._element).on(EVENT_CLICK_DISMISS$1, function (event) { 7507 if (_this9._ignoreBackdropClick) { 7508 _this9._ignoreBackdropClick = false; 7509 return; 7510 } 7511 7512 if (event.target !== event.currentTarget) { 7513 return; 7514 } 7515 7516 if (_this9._config.backdrop === 'static') { 7517 _this9._triggerBackdropTransition(); 7518 } else { 7519 _this9.hide(); 7520 } 7521 }); 7522 7523 if (animate) { 7524 Util.reflow(this._backdrop); 7525 } 7526 7527 $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW$4); 7528 7529 if (!callback) { 7530 return; 7531 } 7532 7533 if (!animate) { 7534 callback(); 7535 return; 7536 } 7537 7538 var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); 7539 $__default["default"](this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); 7540 } else if (!this._isShown && this._backdrop) { 7541 $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW$4); 7542 7543 var callbackRemove = function callbackRemove() { 7544 _this9._removeBackdrop(); 7545 7546 if (callback) { 7547 callback(); 7548 } 7549 }; 7550 7551 if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE$4)) { 7552 var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); 7553 7554 $__default["default"](this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); 7555 } else { 7556 callbackRemove(); 7557 } 7558 } else if (callback) { 7559 callback(); 7560 } 7561 } // ---------------------------------------------------------------------- 7562 // the following methods are used to handle overflowing modals 7563 // todo (fat): these should probably be refactored out of modal.js 7564 // ---------------------------------------------------------------------- 7565 ; 7566 7567 _proto._adjustDialog = function _adjustDialog() { 7568 var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 7569 7570 if (!this._isBodyOverflowing && isModalOverflowing) { 7571 this._element.style.paddingLeft = this._scrollbarWidth + "px"; 7572 } 7573 7574 if (this._isBodyOverflowing && !isModalOverflowing) { 7575 this._element.style.paddingRight = this._scrollbarWidth + "px"; 7576 } 7577 }; 7578 7579 _proto._resetAdjustments = function _resetAdjustments() { 7580 this._element.style.paddingLeft = ''; 7581 this._element.style.paddingRight = ''; 7582 }; 7583 7584 _proto._checkScrollbar = function _checkScrollbar() { 7585 var rect = document.body.getBoundingClientRect(); 7586 this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth; 7587 this._scrollbarWidth = this._getScrollbarWidth(); 7588 }; 7589 7590 _proto._setScrollbar = function _setScrollbar() { 7591 var _this10 = this; 7592 7593 if (this._isBodyOverflowing) { 7594 // Note: DOMNode.style.paddingRight returns the actual value or '' if not set 7595 // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set 7596 var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); 7597 var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding 7598 7599 $__default["default"](fixedContent).each(function (index, element) { 7600 var actualPadding = element.style.paddingRight; 7601 var calculatedPadding = $__default["default"](element).css('padding-right'); 7602 $__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px"); 7603 }); // Adjust sticky content margin 7604 7605 $__default["default"](stickyContent).each(function (index, element) { 7606 var actualMargin = element.style.marginRight; 7607 var calculatedMargin = $__default["default"](element).css('margin-right'); 7608 $__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px"); 7609 }); // Adjust body padding 7610 7611 var actualPadding = document.body.style.paddingRight; 7612 var calculatedPadding = $__default["default"](document.body).css('padding-right'); 7613 $__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); 7614 } 7615 7616 $__default["default"](document.body).addClass(CLASS_NAME_OPEN); 7617 }; 7618 7619 _proto._resetScrollbar = function _resetScrollbar() { 7620 // Restore fixed content padding 7621 var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT)); 7622 $__default["default"](fixedContent).each(function (index, element) { 7623 var padding = $__default["default"](element).data('padding-right'); 7624 $__default["default"](element).removeData('padding-right'); 7625 element.style.paddingRight = padding ? padding : ''; 7626 }); // Restore sticky content 7627 7628 var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT)); 7629 $__default["default"](elements).each(function (index, element) { 7630 var margin = $__default["default"](element).data('margin-right'); 7631 7632 if (typeof margin !== 'undefined') { 7633 $__default["default"](element).css('margin-right', margin).removeData('margin-right'); 7634 } 7635 }); // Restore body padding 7636 7637 var padding = $__default["default"](document.body).data('padding-right'); 7638 $__default["default"](document.body).removeData('padding-right'); 7639 document.body.style.paddingRight = padding ? padding : ''; 7640 }; 7641 7642 _proto._getScrollbarWidth = function _getScrollbarWidth() { 7643 // thx d.walsh 7644 var scrollDiv = document.createElement('div'); 7645 scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER; 7646 document.body.appendChild(scrollDiv); 7647 var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; 7648 document.body.removeChild(scrollDiv); 7649 return scrollbarWidth; 7650 } // Static 7651 ; 7652 7653 Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { 7654 return this.each(function () { 7655 var data = $__default["default"](this).data(DATA_KEY$5); 7656 7657 var _config = _extends({}, Default$4, $__default["default"](this).data(), typeof config === 'object' && config ? config : {}); 7658 7659 if (!data) { 7660 data = new Modal(this, _config); 7661 $__default["default"](this).data(DATA_KEY$5, data); 7662 } 7663 7664 if (typeof config === 'string') { 7665 if (typeof data[config] === 'undefined') { 7666 throw new TypeError("No method named \"" + config + "\""); 7667 } 7668 7669 data[config](relatedTarget); 7670 } else if (_config.show) { 7671 data.show(relatedTarget); 7672 } 7673 }); 7674 }; 7675 7676 _createClass(Modal, null, [{ 7677 key: "VERSION", 7678 get: function get() { 7679 return VERSION$5; 7680 } 7681 }, { 7682 key: "Default", 7683 get: function get() { 7684 return Default$4; 7685 } 7686 }]); 7687 7688 return Modal; 7689 }(); 7690 /** 7691 * Data API implementation 7692 */ 7693 7694 7695 $__default["default"](document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { 7696 var _this11 = this; 7697 7698 var target; 7699 var selector = Util.getSelectorFromElement(this); 7700 7701 if (selector) { 7702 target = document.querySelector(selector); 7703 } 7704 7705 var config = $__default["default"](target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data()); 7706 7707 if (this.tagName === 'A' || this.tagName === 'AREA') { 7708 event.preventDefault(); 7709 } 7710 7711 var $target = $__default["default"](target).one(EVENT_SHOW$2, function (showEvent) { 7712 if (showEvent.isDefaultPrevented()) { 7713 // Only register focus restorer if modal will actually get shown 7714 return; 7715 } 7716 7717 $target.one(EVENT_HIDDEN$2, function () { 7718 if ($__default["default"](_this11).is(':visible')) { 7719 _this11.focus(); 7720 } 7721 }); 7722 }); 7723 7724 Modal._jQueryInterface.call($__default["default"](target), config, this); 7725 }); 7726 /** 7727 * jQuery 7728 */ 7729 7730 $__default["default"].fn[NAME$5] = Modal._jQueryInterface; 7731 $__default["default"].fn[NAME$5].Constructor = Modal; 7732 7733 $__default["default"].fn[NAME$5].noConflict = function () { 7734 $__default["default"].fn[NAME$5] = JQUERY_NO_CONFLICT$5; 7735 return Modal._jQueryInterface; 7736 }; 7737 7738 /** 7739 * -------------------------------------------------------------------------- 7740 * Bootstrap (v4.6.2): tools/sanitizer.js 7741 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7742 * -------------------------------------------------------------------------- 7743 */ 7744 var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; 7745 var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 7746 var DefaultWhitelist = { 7747 // Global attributes allowed on any supplied element below. 7748 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 7749 a: ['target', 'href', 'title', 'rel'], 7750 area: [], 7751 b: [], 7752 br: [], 7753 col: [], 7754 code: [], 7755 div: [], 7756 em: [], 7757 hr: [], 7758 h1: [], 7759 h2: [], 7760 h3: [], 7761 h4: [], 7762 h5: [], 7763 h6: [], 7764 i: [], 7765 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 7766 li: [], 7767 ol: [], 7768 p: [], 7769 pre: [], 7770 s: [], 7771 small: [], 7772 span: [], 7773 sub: [], 7774 sup: [], 7775 strong: [], 7776 u: [], 7777 ul: [] 7778 }; 7779 /** 7780 * A pattern that recognizes a commonly useful subset of URLs that are safe. 7781 * 7782 * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts 7783 */ 7784 7785 var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i; 7786 /** 7787 * A pattern that matches safe data URLs. Only matches image, video and audio types. 7788 * 7789 * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts 7790 */ 7791 7792 var 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; 7793 7794 function allowedAttribute(attr, allowedAttributeList) { 7795 var attrName = attr.nodeName.toLowerCase(); 7796 7797 if (allowedAttributeList.indexOf(attrName) !== -1) { 7798 if (uriAttrs.indexOf(attrName) !== -1) { 7799 return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue)); 7800 } 7801 7802 return true; 7803 } 7804 7805 var regExp = allowedAttributeList.filter(function (attrRegex) { 7806 return attrRegex instanceof RegExp; 7807 }); // Check if a regular expression validates the attribute. 7808 7809 for (var i = 0, len = regExp.length; i < len; i++) { 7810 if (regExp[i].test(attrName)) { 7811 return true; 7812 } 7813 } 7814 7815 return false; 7816 } 7817 7818 function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { 7819 if (unsafeHtml.length === 0) { 7820 return unsafeHtml; 7821 } 7822 7823 if (sanitizeFn && typeof sanitizeFn === 'function') { 7824 return sanitizeFn(unsafeHtml); 7825 } 7826 7827 var domParser = new window.DOMParser(); 7828 var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 7829 var whitelistKeys = Object.keys(whiteList); 7830 var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); 7831 7832 var _loop = function _loop(i, len) { 7833 var el = elements[i]; 7834 var elName = el.nodeName.toLowerCase(); 7835 7836 if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { 7837 el.parentNode.removeChild(el); 7838 return "continue"; 7839 } 7840 7841 var attributeList = [].slice.call(el.attributes); // eslint-disable-next-line unicorn/prefer-spread 7842 7843 var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); 7844 attributeList.forEach(function (attr) { 7845 if (!allowedAttribute(attr, whitelistedAttributes)) { 7846 el.removeAttribute(attr.nodeName); 7847 } 7848 }); 7849 }; 7850 7851 for (var i = 0, len = elements.length; i < len; i++) { 7852 var _ret = _loop(i); 7853 7854 if (_ret === "continue") continue; 7855 } 7856 7857 return createdDocument.body.innerHTML; 7858 } 7859 7860 /** 7861 * Constants 7862 */ 7863 7864 var NAME$4 = 'tooltip'; 7865 var VERSION$4 = '4.6.2'; 7866 var DATA_KEY$4 = 'bs.tooltip'; 7867 var EVENT_KEY$4 = "." + DATA_KEY$4; 7868 var JQUERY_NO_CONFLICT$4 = $__default["default"].fn[NAME$4]; 7869 var CLASS_PREFIX$1 = 'bs-tooltip'; 7870 var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); 7871 var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; 7872 var CLASS_NAME_FADE$3 = 'fade'; 7873 var CLASS_NAME_SHOW$3 = 'show'; 7874 var HOVER_STATE_SHOW = 'show'; 7875 var HOVER_STATE_OUT = 'out'; 7876 var SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; 7877 var SELECTOR_ARROW = '.arrow'; 7878 var TRIGGER_HOVER = 'hover'; 7879 var TRIGGER_FOCUS = 'focus'; 7880 var TRIGGER_CLICK = 'click'; 7881 var TRIGGER_MANUAL = 'manual'; 7882 var AttachmentMap = { 7883 AUTO: 'auto', 7884 TOP: 'top', 7885 RIGHT: 'right', 7886 BOTTOM: 'bottom', 7887 LEFT: 'left' 7888 }; 7889 var Default$3 = { 7890 animation: true, 7891 template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', 7892 trigger: 'hover focus', 7893 title: '', 7894 delay: 0, 7895 html: false, 7896 selector: false, 7897 placement: 'top', 7898 offset: 0, 7899 container: false, 7900 fallbackPlacement: 'flip', 7901 boundary: 'scrollParent', 7902 customClass: '', 7903 sanitize: true, 7904 sanitizeFn: null, 7905 whiteList: DefaultWhitelist, 7906 popperConfig: null 7907 }; 7908 var DefaultType$3 = { 7909 animation: 'boolean', 7910 template: 'string', 7911 title: '(string|element|function)', 7912 trigger: 'string', 7913 delay: '(number|object)', 7914 html: 'boolean', 7915 selector: '(string|boolean)', 7916 placement: '(string|function)', 7917 offset: '(number|string|function)', 7918 container: '(string|element|boolean)', 7919 fallbackPlacement: '(string|array)', 7920 boundary: '(string|element)', 7921 customClass: '(string|function)', 7922 sanitize: 'boolean', 7923 sanitizeFn: '(null|function)', 7924 whiteList: 'object', 7925 popperConfig: '(null|object)' 7926 }; 7927 var Event$1 = { 7928 HIDE: "hide" + EVENT_KEY$4, 7929 HIDDEN: "hidden" + EVENT_KEY$4, 7930 SHOW: "show" + EVENT_KEY$4, 7931 SHOWN: "shown" + EVENT_KEY$4, 7932 INSERTED: "inserted" + EVENT_KEY$4, 7933 CLICK: "click" + EVENT_KEY$4, 7934 FOCUSIN: "focusin" + EVENT_KEY$4, 7935 FOCUSOUT: "focusout" + EVENT_KEY$4, 7936 MOUSEENTER: "mouseenter" + EVENT_KEY$4, 7937 MOUSELEAVE: "mouseleave" + EVENT_KEY$4 7938 }; 7939 /** 7940 * Class definition 7941 */ 7942 7943 var Tooltip = /*#__PURE__*/function () { 7944 function Tooltip(element, config) { 7945 if (typeof Popper__default["default"] === 'undefined') { 7946 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); 7947 } // Private 7948 7949 7950 this._isEnabled = true; 7951 this._timeout = 0; 7952 this._hoverState = ''; 7953 this._activeTrigger = {}; 7954 this._popper = null; // Protected 7955 7956 this.element = element; 7957 this.config = this._getConfig(config); 7958 this.tip = null; 7959 7960 this._setListeners(); 7961 } // Getters 7962 7963 7964 var _proto = Tooltip.prototype; 7965 7966 // Public 7967 _proto.enable = function enable() { 7968 this._isEnabled = true; 7969 }; 7970 7971 _proto.disable = function disable() { 7972 this._isEnabled = false; 7973 }; 7974 7975 _proto.toggleEnabled = function toggleEnabled() { 7976 this._isEnabled = !this._isEnabled; 7977 }; 7978 7979 _proto.toggle = function toggle(event) { 7980 if (!this._isEnabled) { 7981 return; 7982 } 7983 7984 if (event) { 7985 var dataKey = this.constructor.DATA_KEY; 7986 var context = $__default["default"](event.currentTarget).data(dataKey); 7987 7988 if (!context) { 7989 context = new this.constructor(event.currentTarget, this._getDelegateConfig()); 7990 $__default["default"](event.currentTarget).data(dataKey, context); 7991 } 7992 7993 context._activeTrigger.click = !context._activeTrigger.click; 7994 7995 if (context._isWithActiveTrigger()) { 7996 context._enter(null, context); 7997 } else { 7998 context._leave(null, context); 7999 } 8000 } else { 8001 if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW$3)) { 8002 this._leave(null, this); 8003 8004 return; 8005 } 8006 8007 this._enter(null, this); 8008 } 8009 }; 8010 8011 _proto.dispose = function dispose() { 8012 clearTimeout(this._timeout); 8013 $__default["default"].removeData(this.element, this.constructor.DATA_KEY); 8014 $__default["default"](this.element).off(this.constructor.EVENT_KEY); 8015 $__default["default"](this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler); 8016 8017 if (this.tip) { 8018 $__default["default"](this.tip).remove(); 8019 } 8020 8021 this._isEnabled = null; 8022 this._timeout = null; 8023 this._hoverState = null; 8024 this._activeTrigger = null; 8025 8026 if (this._popper) { 8027 this._popper.destroy(); 8028 } 8029 8030 this._popper = null; 8031 this.element = null; 8032 this.config = null; 8033 this.tip = null; 8034 }; 8035 8036 _proto.show = function show() { 8037 var _this = this; 8038 8039 if ($__default["default"](this.element).css('display') === 'none') { 8040 throw new Error('Please use show on visible elements'); 8041 } 8042 8043 var showEvent = $__default["default"].Event(this.constructor.Event.SHOW); 8044 8045 if (this.isWithContent() && this._isEnabled) { 8046 $__default["default"](this.element).trigger(showEvent); 8047 var shadowRoot = Util.findShadowRoot(this.element); 8048 var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); 8049 8050 if (showEvent.isDefaultPrevented() || !isInTheDom) { 8051 return; 8052 } 8053 8054 var tip = this.getTipElement(); 8055 var tipId = Util.getUID(this.constructor.NAME); 8056 tip.setAttribute('id', tipId); 8057 this.element.setAttribute('aria-describedby', tipId); 8058 this.setContent(); 8059 8060 if (this.config.animation) { 8061 $__default["default"](tip).addClass(CLASS_NAME_FADE$3); 8062 } 8063 8064 var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; 8065 8066 var attachment = this._getAttachment(placement); 8067 8068 this.addAttachmentClass(attachment); 8069 8070 var container = this._getContainer(); 8071 8072 $__default["default"](tip).data(this.constructor.DATA_KEY, this); 8073 8074 if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) { 8075 $__default["default"](tip).appendTo(container); 8076 } 8077 8078 $__default["default"](this.element).trigger(this.constructor.Event.INSERTED); 8079 this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment)); 8080 $__default["default"](tip).addClass(CLASS_NAME_SHOW$3); 8081 $__default["default"](tip).addClass(this.config.customClass); // If this is a touch-enabled device we add extra 8082 // empty mouseover listeners to the body's immediate children; 8083 // only needed because of broken event delegation on iOS 8084 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 8085 8086 if ('ontouchstart' in document.documentElement) { 8087 $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop); 8088 } 8089 8090 var complete = function complete() { 8091 if (_this.config.animation) { 8092 _this._fixTransition(); 8093 } 8094 8095 var prevHoverState = _this._hoverState; 8096 _this._hoverState = null; 8097 $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN); 8098 8099 if (prevHoverState === HOVER_STATE_OUT) { 8100 _this._leave(null, _this); 8101 } 8102 }; 8103 8104 if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) { 8105 var transitionDuration = Util.getTransitionDurationFromElement(this.tip); 8106 $__default["default"](this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 8107 } else { 8108 complete(); 8109 } 8110 } 8111 }; 8112 8113 _proto.hide = function hide(callback) { 8114 var _this2 = this; 8115 8116 var tip = this.getTipElement(); 8117 var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE); 8118 8119 var complete = function complete() { 8120 if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) { 8121 tip.parentNode.removeChild(tip); 8122 } 8123 8124 _this2._cleanTipClass(); 8125 8126 _this2.element.removeAttribute('aria-describedby'); 8127 8128 $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN); 8129 8130 if (_this2._popper !== null) { 8131 _this2._popper.destroy(); 8132 } 8133 8134 if (callback) { 8135 callback(); 8136 } 8137 }; 8138 8139 $__default["default"](this.element).trigger(hideEvent); 8140 8141 if (hideEvent.isDefaultPrevented()) { 8142 return; 8143 } 8144 8145 $__default["default"](tip).removeClass(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra 8146 // empty mouseover listeners we added for iOS support 8147 8148 if ('ontouchstart' in document.documentElement) { 8149 $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop); 8150 } 8151 8152 this._activeTrigger[TRIGGER_CLICK] = false; 8153 this._activeTrigger[TRIGGER_FOCUS] = false; 8154 this._activeTrigger[TRIGGER_HOVER] = false; 8155 8156 if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE$3)) { 8157 var transitionDuration = Util.getTransitionDurationFromElement(tip); 8158 $__default["default"](tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 8159 } else { 8160 complete(); 8161 } 8162 8163 this._hoverState = ''; 8164 }; 8165 8166 _proto.update = function update() { 8167 if (this._popper !== null) { 8168 this._popper.scheduleUpdate(); 8169 } 8170 } // Protected 8171 ; 8172 8173 _proto.isWithContent = function isWithContent() { 8174 return Boolean(this.getTitle()); 8175 }; 8176 8177 _proto.addAttachmentClass = function addAttachmentClass(attachment) { 8178 $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment); 8179 }; 8180 8181 _proto.getTipElement = function getTipElement() { 8182 this.tip = this.tip || $__default["default"](this.config.template)[0]; 8183 return this.tip; 8184 }; 8185 8186 _proto.setContent = function setContent() { 8187 var tip = this.getTipElement(); 8188 this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle()); 8189 $__default["default"](tip).removeClass(CLASS_NAME_FADE$3 + " " + CLASS_NAME_SHOW$3); 8190 }; 8191 8192 _proto.setElementContent = function setElementContent($element, content) { 8193 if (typeof content === 'object' && (content.nodeType || content.jquery)) { 8194 // Content is a DOM node or a jQuery 8195 if (this.config.html) { 8196 if (!$__default["default"](content).parent().is($element)) { 8197 $element.empty().append(content); 8198 } 8199 } else { 8200 $element.text($__default["default"](content).text()); 8201 } 8202 8203 return; 8204 } 8205 8206 if (this.config.html) { 8207 if (this.config.sanitize) { 8208 content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); 8209 } 8210 8211 $element.html(content); 8212 } else { 8213 $element.text(content); 8214 } 8215 }; 8216 8217 _proto.getTitle = function getTitle() { 8218 var title = this.element.getAttribute('data-original-title'); 8219 8220 if (!title) { 8221 title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; 8222 } 8223 8224 return title; 8225 } // Private 8226 ; 8227 8228 _proto._getPopperConfig = function _getPopperConfig(attachment) { 8229 var _this3 = this; 8230 8231 var defaultBsConfig = { 8232 placement: attachment, 8233 modifiers: { 8234 offset: this._getOffset(), 8235 flip: { 8236 behavior: this.config.fallbackPlacement 8237 }, 8238 arrow: { 8239 element: SELECTOR_ARROW 8240 }, 8241 preventOverflow: { 8242 boundariesElement: this.config.boundary 8243 } 8244 }, 8245 onCreate: function onCreate(data) { 8246 if (data.originalPlacement !== data.placement) { 8247 _this3._handlePopperPlacementChange(data); 8248 } 8249 }, 8250 onUpdate: function onUpdate(data) { 8251 return _this3._handlePopperPlacementChange(data); 8252 } 8253 }; 8254 return _extends({}, defaultBsConfig, this.config.popperConfig); 8255 }; 8256 8257 _proto._getOffset = function _getOffset() { 8258 var _this4 = this; 8259 8260 var offset = {}; 8261 8262 if (typeof this.config.offset === 'function') { 8263 offset.fn = function (data) { 8264 data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element)); 8265 return data; 8266 }; 8267 } else { 8268 offset.offset = this.config.offset; 8269 } 8270 8271 return offset; 8272 }; 8273 8274 _proto._getContainer = function _getContainer() { 8275 if (this.config.container === false) { 8276 return document.body; 8277 } 8278 8279 if (Util.isElement(this.config.container)) { 8280 return $__default["default"](this.config.container); 8281 } 8282 8283 return $__default["default"](document).find(this.config.container); 8284 }; 8285 8286 _proto._getAttachment = function _getAttachment(placement) { 8287 return AttachmentMap[placement.toUpperCase()]; 8288 }; 8289 8290 _proto._setListeners = function _setListeners() { 8291 var _this5 = this; 8292 8293 var triggers = this.config.trigger.split(' '); 8294 triggers.forEach(function (trigger) { 8295 if (trigger === 'click') { 8296 $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) { 8297 return _this5.toggle(event); 8298 }); 8299 } else if (trigger !== TRIGGER_MANUAL) { 8300 var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN; 8301 var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT; 8302 $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function (event) { 8303 return _this5._enter(event); 8304 }).on(eventOut, _this5.config.selector, function (event) { 8305 return _this5._leave(event); 8306 }); 8307 } 8308 }); 8309 8310 this._hideModalHandler = function () { 8311 if (_this5.element) { 8312 _this5.hide(); 8313 } 8314 }; 8315 8316 $__default["default"](this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler); 8317 8318 if (this.config.selector) { 8319 this.config = _extends({}, this.config, { 8320 trigger: 'manual', 8321 selector: '' 8322 }); 8323 } else { 8324 this._fixTitle(); 8325 } 8326 }; 8327 8328 _proto._fixTitle = function _fixTitle() { 8329 var titleType = typeof this.element.getAttribute('data-original-title'); 8330 8331 if (this.element.getAttribute('title') || titleType !== 'string') { 8332 this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); 8333 this.element.setAttribute('title', ''); 8334 } 8335 }; 8336 8337 _proto._enter = function _enter(event, context) { 8338 var dataKey = this.constructor.DATA_KEY; 8339 context = context || $__default["default"](event.currentTarget).data(dataKey); 8340 8341 if (!context) { 8342 context = new this.constructor(event.currentTarget, this._getDelegateConfig()); 8343 $__default["default"](event.currentTarget).data(dataKey, context); 8344 } 8345 8346 if (event) { 8347 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 8348 } 8349 8350 if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) { 8351 context._hoverState = HOVER_STATE_SHOW; 8352 return; 8353 } 8354 8355 clearTimeout(context._timeout); 8356 context._hoverState = HOVER_STATE_SHOW; 8357 8358 if (!context.config.delay || !context.config.delay.show) { 8359 context.show(); 8360 return; 8361 } 8362 8363 context._timeout = setTimeout(function () { 8364 if (context._hoverState === HOVER_STATE_SHOW) { 8365 context.show(); 8366 } 8367 }, context.config.delay.show); 8368 }; 8369 8370 _proto._leave = function _leave(event, context) { 8371 var dataKey = this.constructor.DATA_KEY; 8372 context = context || $__default["default"](event.currentTarget).data(dataKey); 8373 8374 if (!context) { 8375 context = new this.constructor(event.currentTarget, this._getDelegateConfig()); 8376 $__default["default"](event.currentTarget).data(dataKey, context); 8377 } 8378 8379 if (event) { 8380 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false; 8381 } 8382 8383 if (context._isWithActiveTrigger()) { 8384 return; 8385 } 8386 8387 clearTimeout(context._timeout); 8388 context._hoverState = HOVER_STATE_OUT; 8389 8390 if (!context.config.delay || !context.config.delay.hide) { 8391 context.hide(); 8392 return; 8393 } 8394 8395 context._timeout = setTimeout(function () { 8396 if (context._hoverState === HOVER_STATE_OUT) { 8397 context.hide(); 8398 } 8399 }, context.config.delay.hide); 8400 }; 8401 8402 _proto._isWithActiveTrigger = function _isWithActiveTrigger() { 8403 for (var trigger in this._activeTrigger) { 8404 if (this._activeTrigger[trigger]) { 8405 return true; 8406 } 8407 } 8408 8409 return false; 8410 }; 8411 8412 _proto._getConfig = function _getConfig(config) { 8413 var dataAttributes = $__default["default"](this.element).data(); 8414 Object.keys(dataAttributes).forEach(function (dataAttr) { 8415 if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { 8416 delete dataAttributes[dataAttr]; 8417 } 8418 }); 8419 config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); 8420 8421 if (typeof config.delay === 'number') { 8422 config.delay = { 8423 show: config.delay, 8424 hide: config.delay 8425 }; 8426 } 8427 8428 if (typeof config.title === 'number') { 8429 config.title = config.title.toString(); 8430 } 8431 8432 if (typeof config.content === 'number') { 8433 config.content = config.content.toString(); 8434 } 8435 8436 Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); 8437 8438 if (config.sanitize) { 8439 config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); 8440 } 8441 8442 return config; 8443 }; 8444 8445 _proto._getDelegateConfig = function _getDelegateConfig() { 8446 var config = {}; 8447 8448 if (this.config) { 8449 for (var key in this.config) { 8450 if (this.constructor.Default[key] !== this.config[key]) { 8451 config[key] = this.config[key]; 8452 } 8453 } 8454 } 8455 8456 return config; 8457 }; 8458 8459 _proto._cleanTipClass = function _cleanTipClass() { 8460 var $tip = $__default["default"](this.getTipElement()); 8461 var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1); 8462 8463 if (tabClass !== null && tabClass.length) { 8464 $tip.removeClass(tabClass.join('')); 8465 } 8466 }; 8467 8468 _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) { 8469 this.tip = popperData.instance.popper; 8470 8471 this._cleanTipClass(); 8472 8473 this.addAttachmentClass(this._getAttachment(popperData.placement)); 8474 }; 8475 8476 _proto._fixTransition = function _fixTransition() { 8477 var tip = this.getTipElement(); 8478 var initConfigAnimation = this.config.animation; 8479 8480 if (tip.getAttribute('x-placement') !== null) { 8481 return; 8482 } 8483 8484 $__default["default"](tip).removeClass(CLASS_NAME_FADE$3); 8485 this.config.animation = false; 8486 this.hide(); 8487 this.show(); 8488 this.config.animation = initConfigAnimation; 8489 } // Static 8490 ; 8491 8492 Tooltip._jQueryInterface = function _jQueryInterface(config) { 8493 return this.each(function () { 8494 var $element = $__default["default"](this); 8495 var data = $element.data(DATA_KEY$4); 8496 8497 var _config = typeof config === 'object' && config; 8498 8499 if (!data && /dispose|hide/.test(config)) { 8500 return; 8501 } 8502 8503 if (!data) { 8504 data = new Tooltip(this, _config); 8505 $element.data(DATA_KEY$4, data); 8506 } 8507 8508 if (typeof config === 'string') { 8509 if (typeof data[config] === 'undefined') { 8510 throw new TypeError("No method named \"" + config + "\""); 8511 } 8512 8513 data[config](); 8514 } 8515 }); 8516 }; 8517 8518 _createClass(Tooltip, null, [{ 8519 key: "VERSION", 8520 get: function get() { 8521 return VERSION$4; 8522 } 8523 }, { 8524 key: "Default", 8525 get: function get() { 8526 return Default$3; 8527 } 8528 }, { 8529 key: "NAME", 8530 get: function get() { 8531 return NAME$4; 8532 } 8533 }, { 8534 key: "DATA_KEY", 8535 get: function get() { 8536 return DATA_KEY$4; 8537 } 8538 }, { 8539 key: "Event", 8540 get: function get() { 8541 return Event$1; 8542 } 8543 }, { 8544 key: "EVENT_KEY", 8545 get: function get() { 8546 return EVENT_KEY$4; 8547 } 8548 }, { 8549 key: "DefaultType", 8550 get: function get() { 8551 return DefaultType$3; 8552 } 8553 }]); 8554 8555 return Tooltip; 8556 }(); 8557 /** 8558 * jQuery 8559 */ 8560 8561 8562 $__default["default"].fn[NAME$4] = Tooltip._jQueryInterface; 8563 $__default["default"].fn[NAME$4].Constructor = Tooltip; 8564 8565 $__default["default"].fn[NAME$4].noConflict = function () { 8566 $__default["default"].fn[NAME$4] = JQUERY_NO_CONFLICT$4; 8567 return Tooltip._jQueryInterface; 8568 }; 8569 8570 /** 8571 * Constants 8572 */ 8573 8574 var NAME$3 = 'popover'; 8575 var VERSION$3 = '4.6.2'; 8576 var DATA_KEY$3 = 'bs.popover'; 8577 var EVENT_KEY$3 = "." + DATA_KEY$3; 8578 var JQUERY_NO_CONFLICT$3 = $__default["default"].fn[NAME$3]; 8579 var CLASS_PREFIX = 'bs-popover'; 8580 var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); 8581 var CLASS_NAME_FADE$2 = 'fade'; 8582 var CLASS_NAME_SHOW$2 = 'show'; 8583 var SELECTOR_TITLE = '.popover-header'; 8584 var SELECTOR_CONTENT = '.popover-body'; 8585 8586 var Default$2 = _extends({}, Tooltip.Default, { 8587 placement: 'right', 8588 trigger: 'click', 8589 content: '', 8590 template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' 8591 }); 8592 8593 var DefaultType$2 = _extends({}, Tooltip.DefaultType, { 8594 content: '(string|element|function)' 8595 }); 8596 8597 var Event = { 8598 HIDE: "hide" + EVENT_KEY$3, 8599 HIDDEN: "hidden" + EVENT_KEY$3, 8600 SHOW: "show" + EVENT_KEY$3, 8601 SHOWN: "shown" + EVENT_KEY$3, 8602 INSERTED: "inserted" + EVENT_KEY$3, 8603 CLICK: "click" + EVENT_KEY$3, 8604 FOCUSIN: "focusin" + EVENT_KEY$3, 8605 FOCUSOUT: "focusout" + EVENT_KEY$3, 8606 MOUSEENTER: "mouseenter" + EVENT_KEY$3, 8607 MOUSELEAVE: "mouseleave" + EVENT_KEY$3 8608 }; 8609 /** 8610 * Class definition 8611 */ 8612 8613 var Popover = /*#__PURE__*/function (_Tooltip) { 8614 _inheritsLoose(Popover, _Tooltip); 8615 8616 function Popover() { 8617 return _Tooltip.apply(this, arguments) || this; 8618 } 8619 8620 var _proto = Popover.prototype; 8621 8622 // Overrides 8623 _proto.isWithContent = function isWithContent() { 8624 return this.getTitle() || this._getContent(); 8625 }; 8626 8627 _proto.addAttachmentClass = function addAttachmentClass(attachment) { 8628 $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); 8629 }; 8630 8631 _proto.getTipElement = function getTipElement() { 8632 this.tip = this.tip || $__default["default"](this.config.template)[0]; 8633 return this.tip; 8634 }; 8635 8636 _proto.setContent = function setContent() { 8637 var $tip = $__default["default"](this.getTipElement()); // We use append for html objects to maintain js events 8638 8639 this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle()); 8640 8641 var content = this._getContent(); 8642 8643 if (typeof content === 'function') { 8644 content = content.call(this.element); 8645 } 8646 8647 this.setElementContent($tip.find(SELECTOR_CONTENT), content); 8648 $tip.removeClass(CLASS_NAME_FADE$2 + " " + CLASS_NAME_SHOW$2); 8649 } // Private 8650 ; 8651 8652 _proto._getContent = function _getContent() { 8653 return this.element.getAttribute('data-content') || this.config.content; 8654 }; 8655 8656 _proto._cleanTipClass = function _cleanTipClass() { 8657 var $tip = $__default["default"](this.getTipElement()); 8658 var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); 8659 8660 if (tabClass !== null && tabClass.length > 0) { 8661 $tip.removeClass(tabClass.join('')); 8662 } 8663 } // Static 8664 ; 8665 8666 Popover._jQueryInterface = function _jQueryInterface(config) { 8667 return this.each(function () { 8668 var data = $__default["default"](this).data(DATA_KEY$3); 8669 8670 var _config = typeof config === 'object' ? config : null; 8671 8672 if (!data && /dispose|hide/.test(config)) { 8673 return; 8674 } 8675 8676 if (!data) { 8677 data = new Popover(this, _config); 8678 $__default["default"](this).data(DATA_KEY$3, data); 8679 } 8680 8681 if (typeof config === 'string') { 8682 if (typeof data[config] === 'undefined') { 8683 throw new TypeError("No method named \"" + config + "\""); 8684 } 8685 8686 data[config](); 8687 } 8688 }); 8689 }; 8690 8691 _createClass(Popover, null, [{ 8692 key: "VERSION", 8693 get: // Getters 8694 function get() { 8695 return VERSION$3; 8696 } 8697 }, { 8698 key: "Default", 8699 get: function get() { 8700 return Default$2; 8701 } 8702 }, { 8703 key: "NAME", 8704 get: function get() { 8705 return NAME$3; 8706 } 8707 }, { 8708 key: "DATA_KEY", 8709 get: function get() { 8710 return DATA_KEY$3; 8711 } 8712 }, { 8713 key: "Event", 8714 get: function get() { 8715 return Event; 8716 } 8717 }, { 8718 key: "EVENT_KEY", 8719 get: function get() { 8720 return EVENT_KEY$3; 8721 } 8722 }, { 8723 key: "DefaultType", 8724 get: function get() { 8725 return DefaultType$2; 8726 } 8727 }]); 8728 8729 return Popover; 8730 }(Tooltip); 8731 /** 8732 * jQuery 8733 */ 8734 8735 8736 $__default["default"].fn[NAME$3] = Popover._jQueryInterface; 8737 $__default["default"].fn[NAME$3].Constructor = Popover; 8738 8739 $__default["default"].fn[NAME$3].noConflict = function () { 8740 $__default["default"].fn[NAME$3] = JQUERY_NO_CONFLICT$3; 8741 return Popover._jQueryInterface; 8742 }; 8743 8744 /** 8745 * Constants 8746 */ 8747 8748 var NAME$2 = 'scrollspy'; 8749 var VERSION$2 = '4.6.2'; 8750 var DATA_KEY$2 = 'bs.scrollspy'; 8751 var EVENT_KEY$2 = "." + DATA_KEY$2; 8752 var DATA_API_KEY$1 = '.data-api'; 8753 var JQUERY_NO_CONFLICT$2 = $__default["default"].fn[NAME$2]; 8754 var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; 8755 var CLASS_NAME_ACTIVE$1 = 'active'; 8756 var EVENT_ACTIVATE = "activate" + EVENT_KEY$2; 8757 var EVENT_SCROLL = "scroll" + EVENT_KEY$2; 8758 var EVENT_LOAD_DATA_API = "load" + EVENT_KEY$2 + DATA_API_KEY$1; 8759 var METHOD_OFFSET = 'offset'; 8760 var METHOD_POSITION = 'position'; 8761 var SELECTOR_DATA_SPY = '[data-spy="scroll"]'; 8762 var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group'; 8763 var SELECTOR_NAV_LINKS = '.nav-link'; 8764 var SELECTOR_NAV_ITEMS = '.nav-item'; 8765 var SELECTOR_LIST_ITEMS = '.list-group-item'; 8766 var SELECTOR_DROPDOWN$1 = '.dropdown'; 8767 var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item'; 8768 var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; 8769 var Default$1 = { 8770 offset: 10, 8771 method: 'auto', 8772 target: '' 8773 }; 8774 var DefaultType$1 = { 8775 offset: 'number', 8776 method: 'string', 8777 target: '(string|element)' 8778 }; 8779 /** 8780 * Class definition 8781 */ 8782 8783 var ScrollSpy = /*#__PURE__*/function () { 8784 function ScrollSpy(element, config) { 8785 var _this = this; 8786 8787 this._element = element; 8788 this._scrollElement = element.tagName === 'BODY' ? window : element; 8789 this._config = this._getConfig(config); 8790 this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS); 8791 this._offsets = []; 8792 this._targets = []; 8793 this._activeTarget = null; 8794 this._scrollHeight = 0; 8795 $__default["default"](this._scrollElement).on(EVENT_SCROLL, function (event) { 8796 return _this._process(event); 8797 }); 8798 this.refresh(); 8799 8800 this._process(); 8801 } // Getters 8802 8803 8804 var _proto = ScrollSpy.prototype; 8805 8806 // Public 8807 _proto.refresh = function refresh() { 8808 var _this2 = this; 8809 8810 var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION; 8811 var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; 8812 var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0; 8813 this._offsets = []; 8814 this._targets = []; 8815 this._scrollHeight = this._getScrollHeight(); 8816 var targets = [].slice.call(document.querySelectorAll(this._selector)); 8817 targets.map(function (element) { 8818 var target; 8819 var targetSelector = Util.getSelectorFromElement(element); 8820 8821 if (targetSelector) { 8822 target = document.querySelector(targetSelector); 8823 } 8824 8825 if (target) { 8826 var targetBCR = target.getBoundingClientRect(); 8827 8828 if (targetBCR.width || targetBCR.height) { 8829 // TODO (fat): remove sketch reliance on jQuery position/offset 8830 return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector]; 8831 } 8832 } 8833 8834 return null; 8835 }).filter(Boolean).sort(function (a, b) { 8836 return a[0] - b[0]; 8837 }).forEach(function (item) { 8838 _this2._offsets.push(item[0]); 8839 8840 _this2._targets.push(item[1]); 8841 }); 8842 }; 8843 8844 _proto.dispose = function dispose() { 8845 $__default["default"].removeData(this._element, DATA_KEY$2); 8846 $__default["default"](this._scrollElement).off(EVENT_KEY$2); 8847 this._element = null; 8848 this._scrollElement = null; 8849 this._config = null; 8850 this._selector = null; 8851 this._offsets = null; 8852 this._targets = null; 8853 this._activeTarget = null; 8854 this._scrollHeight = null; 8855 } // Private 8856 ; 8857 8858 _proto._getConfig = function _getConfig(config) { 8859 config = _extends({}, Default$1, typeof config === 'object' && config ? config : {}); 8860 8861 if (typeof config.target !== 'string' && Util.isElement(config.target)) { 8862 var id = $__default["default"](config.target).attr('id'); 8863 8864 if (!id) { 8865 id = Util.getUID(NAME$2); 8866 $__default["default"](config.target).attr('id', id); 8867 } 8868 8869 config.target = "#" + id; 8870 } 8871 8872 Util.typeCheckConfig(NAME$2, config, DefaultType$1); 8873 return config; 8874 }; 8875 8876 _proto._getScrollTop = function _getScrollTop() { 8877 return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; 8878 }; 8879 8880 _proto._getScrollHeight = function _getScrollHeight() { 8881 return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); 8882 }; 8883 8884 _proto._getOffsetHeight = function _getOffsetHeight() { 8885 return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; 8886 }; 8887 8888 _proto._process = function _process() { 8889 var scrollTop = this._getScrollTop() + this._config.offset; 8890 8891 var scrollHeight = this._getScrollHeight(); 8892 8893 var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); 8894 8895 if (this._scrollHeight !== scrollHeight) { 8896 this.refresh(); 8897 } 8898 8899 if (scrollTop >= maxScroll) { 8900 var target = this._targets[this._targets.length - 1]; 8901 8902 if (this._activeTarget !== target) { 8903 this._activate(target); 8904 } 8905 8906 return; 8907 } 8908 8909 if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { 8910 this._activeTarget = null; 8911 8912 this._clear(); 8913 8914 return; 8915 } 8916 8917 for (var i = this._offsets.length; i--;) { 8918 var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); 8919 8920 if (isActiveTarget) { 8921 this._activate(this._targets[i]); 8922 } 8923 } 8924 }; 8925 8926 _proto._activate = function _activate(target) { 8927 this._activeTarget = target; 8928 8929 this._clear(); 8930 8931 var queries = this._selector.split(',').map(function (selector) { 8932 return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; 8933 }); 8934 8935 var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(',')))); 8936 8937 if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) { 8938 $link.closest(SELECTOR_DROPDOWN$1).find(SELECTOR_DROPDOWN_TOGGLE$1).addClass(CLASS_NAME_ACTIVE$1); 8939 $link.addClass(CLASS_NAME_ACTIVE$1); 8940 } else { 8941 // Set triggered link as active 8942 $link.addClass(CLASS_NAME_ACTIVE$1); // Set triggered links parents as active 8943 // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor 8944 8945 $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$1); // Handle special case when .nav-link is inside .nav-item 8946 8947 $link.parents(SELECTOR_NAV_LIST_GROUP$1).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$1); 8948 } 8949 8950 $__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, { 8951 relatedTarget: target 8952 }); 8953 }; 8954 8955 _proto._clear = function _clear() { 8956 [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) { 8957 return node.classList.contains(CLASS_NAME_ACTIVE$1); 8958 }).forEach(function (node) { 8959 return node.classList.remove(CLASS_NAME_ACTIVE$1); 8960 }); 8961 } // Static 8962 ; 8963 8964 ScrollSpy._jQueryInterface = function _jQueryInterface(config) { 8965 return this.each(function () { 8966 var data = $__default["default"](this).data(DATA_KEY$2); 8967 8968 var _config = typeof config === 'object' && config; 8969 8970 if (!data) { 8971 data = new ScrollSpy(this, _config); 8972 $__default["default"](this).data(DATA_KEY$2, data); 8973 } 8974 8975 if (typeof config === 'string') { 8976 if (typeof data[config] === 'undefined') { 8977 throw new TypeError("No method named \"" + config + "\""); 8978 } 8979 8980 data[config](); 8981 } 8982 }); 8983 }; 8984 8985 _createClass(ScrollSpy, null, [{ 8986 key: "VERSION", 8987 get: function get() { 8988 return VERSION$2; 8989 } 8990 }, { 8991 key: "Default", 8992 get: function get() { 8993 return Default$1; 8994 } 8995 }]); 8996 8997 return ScrollSpy; 8998 }(); 8999 /** 9000 * Data API implementation 9001 */ 9002 9003 9004 $__default["default"](window).on(EVENT_LOAD_DATA_API, function () { 9005 var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY)); 9006 var scrollSpysLength = scrollSpys.length; 9007 9008 for (var i = scrollSpysLength; i--;) { 9009 var $spy = $__default["default"](scrollSpys[i]); 9010 9011 ScrollSpy._jQueryInterface.call($spy, $spy.data()); 9012 } 9013 }); 9014 /** 9015 * jQuery 9016 */ 9017 9018 $__default["default"].fn[NAME$2] = ScrollSpy._jQueryInterface; 9019 $__default["default"].fn[NAME$2].Constructor = ScrollSpy; 9020 9021 $__default["default"].fn[NAME$2].noConflict = function () { 9022 $__default["default"].fn[NAME$2] = JQUERY_NO_CONFLICT$2; 9023 return ScrollSpy._jQueryInterface; 9024 }; 9025 9026 /** 9027 * Constants 9028 */ 9029 9030 var NAME$1 = 'tab'; 9031 var VERSION$1 = '4.6.2'; 9032 var DATA_KEY$1 = 'bs.tab'; 9033 var EVENT_KEY$1 = "." + DATA_KEY$1; 9034 var DATA_API_KEY = '.data-api'; 9035 var JQUERY_NO_CONFLICT$1 = $__default["default"].fn[NAME$1]; 9036 var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'; 9037 var CLASS_NAME_ACTIVE = 'active'; 9038 var CLASS_NAME_DISABLED = 'disabled'; 9039 var CLASS_NAME_FADE$1 = 'fade'; 9040 var CLASS_NAME_SHOW$1 = 'show'; 9041 var EVENT_HIDE$1 = "hide" + EVENT_KEY$1; 9042 var EVENT_HIDDEN$1 = "hidden" + EVENT_KEY$1; 9043 var EVENT_SHOW$1 = "show" + EVENT_KEY$1; 9044 var EVENT_SHOWN$1 = "shown" + EVENT_KEY$1; 9045 var EVENT_CLICK_DATA_API = "click" + EVENT_KEY$1 + DATA_API_KEY; 9046 var SELECTOR_DROPDOWN = '.dropdown'; 9047 var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; 9048 var SELECTOR_ACTIVE = '.active'; 9049 var SELECTOR_ACTIVE_UL = '> li > .active'; 9050 var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]'; 9051 var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; 9052 var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active'; 9053 /** 9054 * Class definition 9055 */ 9056 9057 var Tab = /*#__PURE__*/function () { 9058 function Tab(element) { 9059 this._element = element; 9060 } // Getters 9061 9062 9063 var _proto = Tab.prototype; 9064 9065 // Public 9066 _proto.show = function show() { 9067 var _this = this; 9068 9069 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default["default"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute('disabled')) { 9070 return; 9071 } 9072 9073 var target; 9074 var previous; 9075 var listElement = $__default["default"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0]; 9076 var selector = Util.getSelectorFromElement(this._element); 9077 9078 if (listElement) { 9079 var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE; 9080 previous = $__default["default"].makeArray($__default["default"](listElement).find(itemSelector)); 9081 previous = previous[previous.length - 1]; 9082 } 9083 9084 var hideEvent = $__default["default"].Event(EVENT_HIDE$1, { 9085 relatedTarget: this._element 9086 }); 9087 var showEvent = $__default["default"].Event(EVENT_SHOW$1, { 9088 relatedTarget: previous 9089 }); 9090 9091 if (previous) { 9092 $__default["default"](previous).trigger(hideEvent); 9093 } 9094 9095 $__default["default"](this._element).trigger(showEvent); 9096 9097 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { 9098 return; 9099 } 9100 9101 if (selector) { 9102 target = document.querySelector(selector); 9103 } 9104 9105 this._activate(this._element, listElement); 9106 9107 var complete = function complete() { 9108 var hiddenEvent = $__default["default"].Event(EVENT_HIDDEN$1, { 9109 relatedTarget: _this._element 9110 }); 9111 var shownEvent = $__default["default"].Event(EVENT_SHOWN$1, { 9112 relatedTarget: previous 9113 }); 9114 $__default["default"](previous).trigger(hiddenEvent); 9115 $__default["default"](_this._element).trigger(shownEvent); 9116 }; 9117 9118 if (target) { 9119 this._activate(target, target.parentNode, complete); 9120 } else { 9121 complete(); 9122 } 9123 }; 9124 9125 _proto.dispose = function dispose() { 9126 $__default["default"].removeData(this._element, DATA_KEY$1); 9127 this._element = null; 9128 } // Private 9129 ; 9130 9131 _proto._activate = function _activate(element, container, callback) { 9132 var _this2 = this; 9133 9134 var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $__default["default"](container).find(SELECTOR_ACTIVE_UL) : $__default["default"](container).children(SELECTOR_ACTIVE); 9135 var active = activeElements[0]; 9136 var isTransitioning = callback && active && $__default["default"](active).hasClass(CLASS_NAME_FADE$1); 9137 9138 var complete = function complete() { 9139 return _this2._transitionComplete(element, active, callback); 9140 }; 9141 9142 if (active && isTransitioning) { 9143 var transitionDuration = Util.getTransitionDurationFromElement(active); 9144 $__default["default"](active).removeClass(CLASS_NAME_SHOW$1).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 9145 } else { 9146 complete(); 9147 } 9148 }; 9149 9150 _proto._transitionComplete = function _transitionComplete(element, active, callback) { 9151 if (active) { 9152 $__default["default"](active).removeClass(CLASS_NAME_ACTIVE); 9153 var dropdownChild = $__default["default"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0]; 9154 9155 if (dropdownChild) { 9156 $__default["default"](dropdownChild).removeClass(CLASS_NAME_ACTIVE); 9157 } 9158 9159 if (active.getAttribute('role') === 'tab') { 9160 active.setAttribute('aria-selected', false); 9161 } 9162 } 9163 9164 $__default["default"](element).addClass(CLASS_NAME_ACTIVE); 9165 9166 if (element.getAttribute('role') === 'tab') { 9167 element.setAttribute('aria-selected', true); 9168 } 9169 9170 Util.reflow(element); 9171 9172 if (element.classList.contains(CLASS_NAME_FADE$1)) { 9173 element.classList.add(CLASS_NAME_SHOW$1); 9174 } 9175 9176 var parent = element.parentNode; 9177 9178 if (parent && parent.nodeName === 'LI') { 9179 parent = parent.parentNode; 9180 } 9181 9182 if (parent && $__default["default"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) { 9183 var dropdownElement = $__default["default"](element).closest(SELECTOR_DROPDOWN)[0]; 9184 9185 if (dropdownElement) { 9186 var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE)); 9187 $__default["default"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE); 9188 } 9189 9190 element.setAttribute('aria-expanded', true); 9191 } 9192 9193 if (callback) { 9194 callback(); 9195 } 9196 } // Static 9197 ; 9198 9199 Tab._jQueryInterface = function _jQueryInterface(config) { 9200 return this.each(function () { 9201 var $this = $__default["default"](this); 9202 var data = $this.data(DATA_KEY$1); 9203 9204 if (!data) { 9205 data = new Tab(this); 9206 $this.data(DATA_KEY$1, data); 9207 } 9208 9209 if (typeof config === 'string') { 9210 if (typeof data[config] === 'undefined') { 9211 throw new TypeError("No method named \"" + config + "\""); 9212 } 9213 9214 data[config](); 9215 } 9216 }); 9217 }; 9218 9219 _createClass(Tab, null, [{ 9220 key: "VERSION", 9221 get: function get() { 9222 return VERSION$1; 9223 } 9224 }]); 9225 9226 return Tab; 9227 }(); 9228 /** 9229 * Data API implementation 9230 */ 9231 9232 9233 $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 9234 event.preventDefault(); 9235 9236 Tab._jQueryInterface.call($__default["default"](this), 'show'); 9237 }); 9238 /** 9239 * jQuery 9240 */ 9241 9242 $__default["default"].fn[NAME$1] = Tab._jQueryInterface; 9243 $__default["default"].fn[NAME$1].Constructor = Tab; 9244 9245 $__default["default"].fn[NAME$1].noConflict = function () { 9246 $__default["default"].fn[NAME$1] = JQUERY_NO_CONFLICT$1; 9247 return Tab._jQueryInterface; 9248 }; 9249 9250 /** 9251 * Constants 9252 */ 9253 9254 var NAME = 'toast'; 9255 var VERSION = '4.6.2'; 9256 var DATA_KEY = 'bs.toast'; 9257 var EVENT_KEY = "." + DATA_KEY; 9258 var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME]; 9259 var CLASS_NAME_FADE = 'fade'; 9260 var CLASS_NAME_HIDE = 'hide'; 9261 var CLASS_NAME_SHOW = 'show'; 9262 var CLASS_NAME_SHOWING = 'showing'; 9263 var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY; 9264 var EVENT_HIDE = "hide" + EVENT_KEY; 9265 var EVENT_HIDDEN = "hidden" + EVENT_KEY; 9266 var EVENT_SHOW = "show" + EVENT_KEY; 9267 var EVENT_SHOWN = "shown" + EVENT_KEY; 9268 var SELECTOR_DATA_DISMISS = '[data-dismiss="toast"]'; 9269 var Default = { 9270 animation: true, 9271 autohide: true, 9272 delay: 500 9273 }; 9274 var DefaultType = { 9275 animation: 'boolean', 9276 autohide: 'boolean', 9277 delay: 'number' 9278 }; 9279 /** 9280 * Class definition 9281 */ 9282 9283 var Toast = /*#__PURE__*/function () { 9284 function Toast(element, config) { 9285 this._element = element; 9286 this._config = this._getConfig(config); 9287 this._timeout = null; 9288 9289 this._setListeners(); 9290 } // Getters 9291 9292 9293 var _proto = Toast.prototype; 9294 9295 // Public 9296 _proto.show = function show() { 9297 var _this = this; 9298 9299 var showEvent = $__default["default"].Event(EVENT_SHOW); 9300 $__default["default"](this._element).trigger(showEvent); 9301 9302 if (showEvent.isDefaultPrevented()) { 9303 return; 9304 } 9305 9306 this._clearTimeout(); 9307 9308 if (this._config.animation) { 9309 this._element.classList.add(CLASS_NAME_FADE); 9310 } 9311 9312 var complete = function complete() { 9313 _this._element.classList.remove(CLASS_NAME_SHOWING); 9314 9315 _this._element.classList.add(CLASS_NAME_SHOW); 9316 9317 $__default["default"](_this._element).trigger(EVENT_SHOWN); 9318 9319 if (_this._config.autohide) { 9320 _this._timeout = setTimeout(function () { 9321 _this.hide(); 9322 }, _this._config.delay); 9323 } 9324 }; 9325 9326 this._element.classList.remove(CLASS_NAME_HIDE); 9327 9328 Util.reflow(this._element); 9329 9330 this._element.classList.add(CLASS_NAME_SHOWING); 9331 9332 if (this._config.animation) { 9333 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 9334 $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 9335 } else { 9336 complete(); 9337 } 9338 }; 9339 9340 _proto.hide = function hide() { 9341 if (!this._element.classList.contains(CLASS_NAME_SHOW)) { 9342 return; 9343 } 9344 9345 var hideEvent = $__default["default"].Event(EVENT_HIDE); 9346 $__default["default"](this._element).trigger(hideEvent); 9347 9348 if (hideEvent.isDefaultPrevented()) { 9349 return; 9350 } 9351 9352 this._close(); 9353 }; 9354 9355 _proto.dispose = function dispose() { 9356 this._clearTimeout(); 9357 9358 if (this._element.classList.contains(CLASS_NAME_SHOW)) { 9359 this._element.classList.remove(CLASS_NAME_SHOW); 9360 } 9361 9362 $__default["default"](this._element).off(EVENT_CLICK_DISMISS); 9363 $__default["default"].removeData(this._element, DATA_KEY); 9364 this._element = null; 9365 this._config = null; 9366 } // Private 9367 ; 9368 9369 _proto._getConfig = function _getConfig(config) { 9370 config = _extends({}, Default, $__default["default"](this._element).data(), typeof config === 'object' && config ? config : {}); 9371 Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); 9372 return config; 9373 }; 9374 9375 _proto._setListeners = function _setListeners() { 9376 var _this2 = this; 9377 9378 $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () { 9379 return _this2.hide(); 9380 }); 9381 }; 9382 9383 _proto._close = function _close() { 9384 var _this3 = this; 9385 9386 var complete = function complete() { 9387 _this3._element.classList.add(CLASS_NAME_HIDE); 9388 9389 $__default["default"](_this3._element).trigger(EVENT_HIDDEN); 9390 }; 9391 9392 this._element.classList.remove(CLASS_NAME_SHOW); 9393 9394 if (this._config.animation) { 9395 var transitionDuration = Util.getTransitionDurationFromElement(this._element); 9396 $__default["default"](this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); 9397 } else { 9398 complete(); 9399 } 9400 }; 9401 9402 _proto._clearTimeout = function _clearTimeout() { 9403 clearTimeout(this._timeout); 9404 this._timeout = null; 9405 } // Static 9406 ; 9407 9408 Toast._jQueryInterface = function _jQueryInterface(config) { 9409 return this.each(function () { 9410 var $element = $__default["default"](this); 9411 var data = $element.data(DATA_KEY); 9412 9413 var _config = typeof config === 'object' && config; 9414 9415 if (!data) { 9416 data = new Toast(this, _config); 9417 $element.data(DATA_KEY, data); 9418 } 9419 9420 if (typeof config === 'string') { 9421 if (typeof data[config] === 'undefined') { 9422 throw new TypeError("No method named \"" + config + "\""); 9423 } 9424 9425 data[config](this); 9426 } 9427 }); 9428 }; 9429 9430 _createClass(Toast, null, [{ 9431 key: "VERSION", 9432 get: function get() { 9433 return VERSION; 9434 } 9435 }, { 9436 key: "DefaultType", 9437 get: function get() { 9438 return DefaultType; 9439 } 9440 }, { 9441 key: "Default", 9442 get: function get() { 9443 return Default; 9444 } 9445 }]); 9446 9447 return Toast; 9448 }(); 9449 /** 9450 * jQuery 9451 */ 9452 9453 9454 $__default["default"].fn[NAME] = Toast._jQueryInterface; 9455 $__default["default"].fn[NAME].Constructor = Toast; 9456 9457 $__default["default"].fn[NAME].noConflict = function () { 9458 $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT; 9459 return Toast._jQueryInterface; 9460 }; 9461 9462 exports.Alert = Alert; 9463 exports.Button = Button; 9464 exports.Carousel = Carousel; 9465 exports.Collapse = Collapse; 9466 exports.Dropdown = Dropdown; 9467 exports.Modal = Modal; 9468 exports.Popover = Popover; 9469 exports.Scrollspy = ScrollSpy; 9470 exports.Tab = Tab; 9471 exports.Toast = Toast; 9472 exports.Tooltip = Tooltip; 9473 exports.Util = Util; 9474 9475 Object.defineProperty(exports, '__esModule', { value: true }); 9476 9477})); 9478//# sourceMappingURL=bootstrap.js.map 9479 9480 9481/***/ }), 9482
vendor: 49,209 bytes, lines 9483-11284
9483/***/ "./node_modules/buffer/index.js": 9484/*!**************************************!*\ 9485 !*** ./node_modules/buffer/index.js ***! 9486 \**************************************/ 9487/*! no static exports found */ 9488/***/ (function(module, exports, __webpack_require__) { 9489 9490"use strict"; 9491/* WEBPACK VAR INJECTION */(function(global) {/*! 9492 * The buffer module from node.js, for the browser. 9493 * 9494 * @author Feross Aboukhadijeh <http://feross.org> 9495 * @license MIT 9496 */ 9497/* eslint-disable no-proto */ 9498 9499 9500 9501var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js") 9502var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js") 9503var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js") 9504 9505exports.Buffer = Buffer 9506exports.SlowBuffer = SlowBuffer 9507exports.INSPECT_MAX_BYTES = 50 9508 9509/** 9510 * If `Buffer.TYPED_ARRAY_SUPPORT`: 9511 * === true Use Uint8Array implementation (fastest) 9512 * === false Use Object implementation (most compatible, even IE6) 9513 * 9514 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, 9515 * Opera 11.6+, iOS 4.2+. 9516 * 9517 * Due to various browser bugs, sometimes the Object implementation will be used even 9518 * when the browser supports typed arrays. 9519 * 9520 * Note: 9521 * 9522 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, 9523 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. 9524 * 9525 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. 9526 * 9527 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of 9528 * incorrect length in some situations. 9529 9530 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they 9531 * get the Object implementation, which is slower but behaves correctly. 9532 */ 9533Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined 9534 ? global.TYPED_ARRAY_SUPPORT 9535 : typedArraySupport() 9536 9537/* 9538 * Export kMaxLength after typed array support is determined. 9539 */ 9540exports.kMaxLength = kMaxLength() 9541 9542function typedArraySupport () { 9543 try { 9544 var arr = new Uint8Array(1) 9545 arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} 9546 return arr.foo() === 42 && // typed array instances can be augmented 9547 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` 9548 arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` 9549 } catch (e) { 9550 return false 9551 } 9552} 9553 9554function kMaxLength () { 9555 return Buffer.TYPED_ARRAY_SUPPORT 9556 ? 0x7fffffff 9557 : 0x3fffffff 9558} 9559 9560function createBuffer (that, length) { 9561 if (kMaxLength() < length) { 9562 throw new RangeError('Invalid typed array length') 9563 } 9564 if (Buffer.TYPED_ARRAY_SUPPORT) { 9565 // Return an augmented `Uint8Array` instance, for best performance 9566 that = new Uint8Array(length) 9567 that.__proto__ = Buffer.prototype 9568 } else { 9569 // Fallback: Return an object instance of the Buffer class 9570 if (that === null) { 9571 that = new Buffer(length) 9572 } 9573 that.length = length 9574 } 9575 9576 return that 9577} 9578 9579/** 9580 * The Buffer constructor returns instances of `Uint8Array` that have their 9581 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of 9582 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods 9583 * and the `Uint8Array` methods. Square bracket notation works as expected -- it 9584 * returns a single octet. 9585 * 9586 * The `Uint8Array` prototype remains unmodified. 9587 */ 9588 9589function Buffer (arg, encodingOrOffset, length) { 9590 if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { 9591 return new Buffer(arg, encodingOrOffset, length) 9592 } 9593 9594 // Common case. 9595 if (typeof arg === 'number') { 9596 if (typeof encodingOrOffset === 'string') { 9597 throw new Error( 9598 'If encoding is specified then the first argument must be a string' 9599 ) 9600 } 9601 return allocUnsafe(this, arg) 9602 } 9603 return from(this, arg, encodingOrOffset, length) 9604} 9605 9606Buffer.poolSize = 8192 // not used by this implementation 9607 9608// TODO: Legacy, not needed anymore. Remove in next major version. 9609Buffer._augment = function (arr) { 9610 arr.__proto__ = Buffer.prototype 9611 return arr 9612} 9613 9614function from (that, value, encodingOrOffset, length) { 9615 if (typeof value === 'number') { 9616 throw new TypeError('"value" argument must not be a number') 9617 } 9618 9619 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { 9620 return fromArrayBuffer(that, value, encodingOrOffset, length) 9621 } 9622 9623 if (typeof value === 'string') { 9624 return fromString(that, value, encodingOrOffset) 9625 } 9626 9627 return fromObject(that, value) 9628} 9629 9630/** 9631 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError 9632 * if value is a number. 9633 * Buffer.from(str[, encoding]) 9634 * Buffer.from(array) 9635 * Buffer.from(buffer) 9636 * Buffer.from(arrayBuffer[, byteOffset[, length]]) 9637 **/ 9638Buffer.from = function (value, encodingOrOffset, length) { 9639 return from(null, value, encodingOrOffset, length) 9640} 9641 9642if (Buffer.TYPED_ARRAY_SUPPORT) { 9643 Buffer.prototype.__proto__ = Uint8Array.prototype 9644 Buffer.__proto__ = Uint8Array 9645 if (typeof Symbol !== 'undefined' && Symbol.species && 9646 Buffer[Symbol.species] === Buffer) { 9647 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 9648 Object.defineProperty(Buffer, Symbol.species, { 9649 value: null, 9650 configurable: true 9651 }) 9652 } 9653} 9654 9655function assertSize (size) { 9656 if (typeof size !== 'number') { 9657 throw new TypeError('"size" argument must be a number') 9658 } else if (size < 0) { 9659 throw new RangeError('"size" argument must not be negative') 9660 } 9661} 9662 9663function alloc (that, size, fill, encoding) { 9664 assertSize(size) 9665 if (size <= 0) { 9666 return createBuffer(that, size) 9667 } 9668 if (fill !== undefined) { 9669 // Only pay attention to encoding if it's a string. This 9670 // prevents accidentally sending in a number that would 9671 // be interpretted as a start offset. 9672 return typeof encoding === 'string' 9673 ? createBuffer(that, size).fill(fill, encoding) 9674 : createBuffer(that, size).fill(fill) 9675 } 9676 return createBuffer(that, size) 9677} 9678 9679/** 9680 * Creates a new filled Buffer instance. 9681 * alloc(size[, fill[, encoding]]) 9682 **/ 9683Buffer.alloc = function (size, fill, encoding) { 9684 return alloc(null, size, fill, encoding) 9685} 9686 9687function allocUnsafe (that, size) { 9688 assertSize(size) 9689 that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) 9690 if (!Buffer.TYPED_ARRAY_SUPPORT) { 9691 for (var i = 0; i < size; ++i) { 9692 that[i] = 0 9693 } 9694 } 9695 return that 9696} 9697 9698/** 9699 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. 9700 * */ 9701Buffer.allocUnsafe = function (size) { 9702 return allocUnsafe(null, size) 9703} 9704/** 9705 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. 9706 */ 9707Buffer.allocUnsafeSlow = function (size) { 9708 return allocUnsafe(null, size) 9709} 9710 9711function fromString (that, string, encoding) { 9712 if (typeof encoding !== 'string' || encoding === '') { 9713 encoding = 'utf8' 9714 } 9715 9716 if (!Buffer.isEncoding(encoding)) { 9717 throw new TypeError('"encoding" must be a valid string encoding') 9718 } 9719 9720 var length = byteLength(string, encoding) | 0 9721 that = createBuffer(that, length) 9722 9723 var actual = that.write(string, encoding) 9724 9725 if (actual !== length) { 9726 // Writing a hex string, for example, that contains invalid characters will 9727 // cause everything after the first invalid character to be ignored. (e.g. 9728 // 'abxxcd' will be treated as 'ab') 9729 that = that.slice(0, actual) 9730 } 9731 9732 return that 9733} 9734 9735function fromArrayLike (that, array) { 9736 var length = array.length < 0 ? 0 : checked(array.length) | 0 9737 that = createBuffer(that, length) 9738 for (var i = 0; i < length; i += 1) { 9739 that[i] = array[i] & 255 9740 } 9741 return that 9742} 9743 9744function fromArrayBuffer (that, array, byteOffset, length) { 9745 array.byteLength // this throws if `array` is not a valid ArrayBuffer 9746 9747 if (byteOffset < 0 || array.byteLength < byteOffset) { 9748 throw new RangeError('\'offset\' is out of bounds') 9749 } 9750 9751 if (array.byteLength < byteOffset + (length || 0)) { 9752 throw new RangeError('\'length\' is out of bounds') 9753 } 9754 9755 if (byteOffset === undefined && length === undefined) { 9756 array = new Uint8Array(array) 9757 } else if (length === undefined) { 9758 array = new Uint8Array(array, byteOffset) 9759 } else { 9760 array = new Uint8Array(array, byteOffset, length) 9761 } 9762 9763 if (Buffer.TYPED_ARRAY_SUPPORT) { 9764 // Return an augmented `Uint8Array` instance, for best performance 9765 that = array 9766 that.__proto__ = Buffer.prototype 9767 } else { 9768 // Fallback: Return an object instance of the Buffer class 9769 that = fromArrayLike(that, array) 9770 } 9771 return that 9772} 9773 9774function fromObject (that, obj) { 9775 if (Buffer.isBuffer(obj)) { 9776 var len = checked(obj.length) | 0 9777 that = createBuffer(that, len) 9778 9779 if (that.length === 0) { 9780 return that 9781 } 9782 9783 obj.copy(that, 0, 0, len) 9784 return that 9785 } 9786 9787 if (obj) { 9788 if ((typeof ArrayBuffer !== 'undefined' && 9789 obj.buffer instanceof ArrayBuffer) || 'length' in obj) { 9790 if (typeof obj.length !== 'number' || isnan(obj.length)) { 9791 return createBuffer(that, 0) 9792 } 9793 return fromArrayLike(that, obj) 9794 } 9795 9796 if (obj.type === 'Buffer' && isArray(obj.data)) { 9797 return fromArrayLike(that, obj.data) 9798 } 9799 } 9800 9801 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') 9802} 9803 9804function checked (length) { 9805 // Note: cannot use `length < kMaxLength()` here because that fails when 9806 // length is NaN (which is otherwise coerced to zero.) 9807 if (length >= kMaxLength()) { 9808 throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 9809 'size: 0x' + kMaxLength().toString(16) + ' bytes') 9810 } 9811 return length | 0 9812} 9813 9814function SlowBuffer (length) { 9815 if (+length != length) { // eslint-disable-line eqeqeq 9816 length = 0 9817 } 9818 return Buffer.alloc(+length) 9819} 9820 9821Buffer.isBuffer = function isBuffer (b) { 9822 return !!(b != null && b._isBuffer) 9823} 9824 9825Buffer.compare = function compare (a, b) { 9826 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { 9827 throw new TypeError('Arguments must be Buffers') 9828 } 9829 9830 if (a === b) return 0 9831 9832 var x = a.length 9833 var y = b.length 9834 9835 for (var i = 0, len = Math.min(x, y); i < len; ++i) { 9836 if (a[i] !== b[i]) { 9837 x = a[i] 9838 y = b[i] 9839 break 9840 } 9841 } 9842 9843 if (x < y) return -1 9844 if (y < x) return 1 9845 return 0 9846} 9847 9848Buffer.isEncoding = function isEncoding (encoding) { 9849 switch (String(encoding).toLowerCase()) { 9850 case 'hex': 9851 case 'utf8': 9852 case 'utf-8': 9853 case 'ascii': 9854 case 'latin1': 9855 case 'binary': 9856 case 'base64': 9857 case 'ucs2': 9858 case 'ucs-2': 9859 case 'utf16le': 9860 case 'utf-16le': 9861 return true 9862 default: 9863 return false 9864 } 9865} 9866 9867Buffer.concat = function concat (list, length) { 9868 if (!isArray(list)) { 9869 throw new TypeError('"list" argument must be an Array of Buffers') 9870 } 9871 9872 if (list.length === 0) { 9873 return Buffer.alloc(0) 9874 } 9875 9876 var i 9877 if (length === undefined) { 9878 length = 0 9879 for (i = 0; i < list.length; ++i) { 9880 length += list[i].length 9881 } 9882 } 9883 9884 var buffer = Buffer.allocUnsafe(length) 9885 var pos = 0 9886 for (i = 0; i < list.length; ++i) { 9887 var buf = list[i] 9888 if (!Buffer.isBuffer(buf)) { 9889 throw new TypeError('"list" argument must be an Array of Buffers') 9890 } 9891 buf.copy(buffer, pos) 9892 pos += buf.length 9893 } 9894 return buffer 9895} 9896 9897function byteLength (string, encoding) { 9898 if (Buffer.isBuffer(string)) { 9899 return string.length 9900 } 9901 if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && 9902 (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { 9903 return string.byteLength 9904 } 9905 if (typeof string !== 'string') { 9906 string = '' + string 9907 } 9908 9909 var len = string.length 9910 if (len === 0) return 0 9911 9912 // Use a for loop to avoid recursion 9913 var loweredCase = false 9914 for (;;) { 9915 switch (encoding) { 9916 case 'ascii': 9917 case 'latin1': 9918 case 'binary': 9919 return len 9920 case 'utf8': 9921 case 'utf-8': 9922 case undefined: 9923 return utf8ToBytes(string).length 9924 case 'ucs2': 9925 case 'ucs-2': 9926 case 'utf16le': 9927 case 'utf-16le': 9928 return len * 2 9929 case 'hex': 9930 return len >>> 1 9931 case 'base64': 9932 return base64ToBytes(string).length 9933 default: 9934 if (loweredCase) return utf8ToBytes(string).length // assume utf8 9935 encoding = ('' + encoding).toLowerCase() 9936 loweredCase = true 9937 } 9938 } 9939} 9940Buffer.byteLength = byteLength 9941 9942function slowToString (encoding, start, end) { 9943 var loweredCase = false 9944 9945 // No need to verify that "this.length <= MAX_UINT32" since it's a read-only 9946 // property of a typed array. 9947 9948 // This behaves neither like String nor Uint8Array in that we set start/end 9949 // to their upper/lower bounds if the value passed is out of range. 9950 // undefined is handled specially as per ECMA-262 6th Edition, 9951 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. 9952 if (start === undefined || start < 0) { 9953 start = 0 9954 } 9955 // Return early if start > this.length. Done here to prevent potential uint32 9956 // coercion fail below. 9957 if (start > this.length) { 9958 return '' 9959 } 9960 9961 if (end === undefined || end > this.length) { 9962 end = this.length 9963 } 9964 9965 if (end <= 0) { 9966 return '' 9967 } 9968 9969 // Force coersion to uint32. This will also coerce falsey/NaN values to 0. 9970 end >>>= 0 9971 start >>>= 0 9972 9973 if (end <= start) { 9974 return '' 9975 } 9976 9977 if (!encoding) encoding = 'utf8' 9978 9979 while (true) { 9980 switch (encoding) { 9981 case 'hex': 9982 return hexSlice(this, start, end) 9983 9984 case 'utf8': 9985 case 'utf-8': 9986 return utf8Slice(this, start, end) 9987 9988 case 'ascii': 9989 return asciiSlice(this, start, end) 9990 9991 case 'latin1': 9992 case 'binary': 9993 return latin1Slice(this, start, end) 9994 9995 case 'base64': 9996 return base64Slice(this, start, end) 9997 9998 case 'ucs2': 9999 case 'ucs-2': 10000 case 'utf16le': 10001 case 'utf-16le': 10002 return utf16leSlice(this, start, end) 10003 10004 default: 10005 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) 10006 encoding = (encoding + '').toLowerCase() 10007 loweredCase = true 10008 } 10009 } 10010} 10011 10012// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect 10013// Buffer instances. 10014Buffer.prototype._isBuffer = true 10015 10016function swap (b, n, m) { 10017 var i = b[n] 10018 b[n] = b[m] 10019 b[m] = i 10020} 10021 10022Buffer.prototype.swap16 = function swap16 () { 10023 var len = this.length 10024 if (len % 2 !== 0) { 10025 throw new RangeError('Buffer size must be a multiple of 16-bits') 10026 } 10027 for (var i = 0; i < len; i += 2) { 10028 swap(this, i, i + 1) 10029 } 10030 return this 10031} 10032 10033Buffer.prototype.swap32 = function swap32 () { 10034 var len = this.length 10035 if (len % 4 !== 0) { 10036 throw new RangeError('Buffer size must be a multiple of 32-bits') 10037 } 10038 for (var i = 0; i < len; i += 4) { 10039 swap(this, i, i + 3) 10040 swap(this, i + 1, i + 2) 10041 } 10042 return this 10043} 10044 10045Buffer.prototype.swap64 = function swap64 () { 10046 var len = this.length 10047 if (len % 8 !== 0) { 10048 throw new RangeError('Buffer size must be a multiple of 64-bits') 10049 } 10050 for (var i = 0; i < len; i += 8) { 10051 swap(this, i, i + 7) 10052 swap(this, i + 1, i + 6) 10053 swap(this, i + 2, i + 5) 10054 swap(this, i + 3, i + 4) 10055 } 10056 return this 10057} 10058 10059Buffer.prototype.toString = function toString () { 10060 var length = this.length | 0 10061 if (length === 0) return '' 10062 if (arguments.length === 0) return utf8Slice(this, 0, length) 10063 return slowToString.apply(this, arguments) 10064} 10065 10066Buffer.prototype.equals = function equals (b) { 10067 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') 10068 if (this === b) return true 10069 return Buffer.compare(this, b) === 0 10070} 10071 10072Buffer.prototype.inspect = function inspect () { 10073 var str = '' 10074 var max = exports.INSPECT_MAX_BYTES 10075 if (this.length > 0) { 10076 str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') 10077 if (this.length > max) str += ' ... ' 10078 } 10079 return '<Buffer ' + str + '>' 10080} 10081 10082Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { 10083 if (!Buffer.isBuffer(target)) { 10084 throw new TypeError('Argument must be a Buffer') 10085 } 10086 10087 if (start === undefined) { 10088 start = 0 10089 } 10090 if (end === undefined) { 10091 end = target ? target.length : 0 10092 } 10093 if (thisStart === undefined) { 10094 thisStart = 0 10095 } 10096 if (thisEnd === undefined) { 10097 thisEnd = this.length 10098 } 10099 10100 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { 10101 throw new RangeError('out of range index') 10102 } 10103 10104 if (thisStart >= thisEnd && start >= end) { 10105 return 0 10106 } 10107 if (thisStart >= thisEnd) { 10108 return -1 10109 } 10110 if (start >= end) { 10111 return 1 10112 } 10113 10114 start >>>= 0 10115 end >>>= 0 10116 thisStart >>>= 0 10117 thisEnd >>>= 0 10118 10119 if (this === target) return 0 10120 10121 var x = thisEnd - thisStart 10122 var y = end - start 10123 var len = Math.min(x, y) 10124 10125 var thisCopy = this.slice(thisStart, thisEnd) 10126 var targetCopy = target.slice(start, end) 10127 10128 for (var i = 0; i < len; ++i) { 10129 if (thisCopy[i] !== targetCopy[i]) { 10130 x = thisCopy[i] 10131 y = targetCopy[i] 10132 break 10133 } 10134 } 10135 10136 if (x < y) return -1 10137 if (y < x) return 1 10138 return 0 10139} 10140 10141// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, 10142// OR the last index of `val` in `buffer` at offset <= `byteOffset`. 10143// 10144// Arguments: 10145// - buffer - a Buffer to search 10146// - val - a string, Buffer, or number 10147// - byteOffset - an index into `buffer`; will be clamped to an int32 10148// - encoding - an optional encoding, relevant is val is a string 10149// - dir - true for indexOf, false for lastIndexOf 10150function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { 10151 // Empty buffer means no match 10152 if (buffer.length === 0) return -1 10153 10154 // Normalize byteOffset 10155 if (typeof byteOffset === 'string') { 10156 encoding = byteOffset 10157 byteOffset = 0 10158 } else if (byteOffset > 0x7fffffff) { 10159 byteOffset = 0x7fffffff 10160 } else if (byteOffset < -0x80000000) { 10161 byteOffset = -0x80000000 10162 } 10163 byteOffset = +byteOffset // Coerce to Number. 10164 if (isNaN(byteOffset)) { 10165 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer 10166 byteOffset = dir ? 0 : (buffer.length - 1) 10167 } 10168 10169 // Normalize byteOffset: negative offsets start from the end of the buffer 10170 if (byteOffset < 0) byteOffset = buffer.length + byteOffset 10171 if (byteOffset >= buffer.length) { 10172 if (dir) return -1 10173 else byteOffset = buffer.length - 1 10174 } else if (byteOffset < 0) { 10175 if (dir) byteOffset = 0 10176 else return -1 10177 } 10178 10179 // Normalize val 10180 if (typeof val === 'string') { 10181 val = Buffer.from(val, encoding) 10182 } 10183 10184 // Finally, search either indexOf (if dir is true) or lastIndexOf 10185 if (Buffer.isBuffer(val)) { 10186 // Special case: looking for empty string/buffer always fails 10187 if (val.length === 0) { 10188 return -1 10189 } 10190 return arrayIndexOf(buffer, val, byteOffset, encoding, dir) 10191 } else if (typeof val === 'number') { 10192 val = val & 0xFF // Search for a byte value [0-255] 10193 if (Buffer.TYPED_ARRAY_SUPPORT && 10194 typeof Uint8Array.prototype.indexOf === 'function') { 10195 if (dir) { 10196 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) 10197 } else { 10198 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) 10199 } 10200 } 10201 return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) 10202 } 10203 10204 throw new TypeError('val must be string, number or Buffer') 10205} 10206 10207function arrayIndexOf (arr, val, byteOffset, encoding, dir) { 10208 var indexSize = 1 10209 var arrLength = arr.length 10210 var valLength = val.length 10211 10212 if (encoding !== undefined) { 10213 encoding = String(encoding).toLowerCase() 10214 if (encoding === 'ucs2' || encoding === 'ucs-2' || 10215 encoding === 'utf16le' || encoding === 'utf-16le') { 10216 if (arr.length < 2 || val.length < 2) { 10217 return -1 10218 } 10219 indexSize = 2 10220 arrLength /= 2 10221 valLength /= 2 10222 byteOffset /= 2 10223 } 10224 } 10225 10226 function read (buf, i) { 10227 if (indexSize === 1) { 10228 return buf[i] 10229 } else { 10230 return buf.readUInt16BE(i * indexSize) 10231 } 10232 } 10233 10234 var i 10235 if (dir) { 10236 var foundIndex = -1 10237 for (i = byteOffset; i < arrLength; i++) { 10238 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { 10239 if (foundIndex === -1) foundIndex = i 10240 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize 10241 } else { 10242 if (foundIndex !== -1) i -= i - foundIndex 10243 foundIndex = -1 10244 } 10245 } 10246 } else { 10247 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength 10248 for (i = byteOffset; i >= 0; i--) { 10249 var found = true 10250 for (var j = 0; j < valLength; j++) { 10251 if (read(arr, i + j) !== read(val, j)) { 10252 found = false 10253 break 10254 } 10255 } 10256 if (found) return i 10257 } 10258 } 10259 10260 return -1 10261} 10262 10263Buffer.prototype.includes = function includes (val, byteOffset, encoding) { 10264 return this.indexOf(val, byteOffset, encoding) !== -1 10265} 10266 10267Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { 10268 return bidirectionalIndexOf(this, val, byteOffset, encoding, true) 10269} 10270 10271Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { 10272 return bidirectionalIndexOf(this, val, byteOffset, encoding, false) 10273} 10274 10275function hexWrite (buf, string, offset, length) { 10276 offset = Number(offset) || 0 10277 var remaining = buf.length - offset 10278 if (!length) { 10279 length = remaining 10280 } else { 10281 length = Number(length) 10282 if (length > remaining) { 10283 length = remaining 10284 } 10285 } 10286 10287 // must be an even number of digits 10288 var strLen = string.length 10289 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') 10290 10291 if (length > strLen / 2) { 10292 length = strLen / 2 10293 } 10294 for (var i = 0; i < length; ++i) { 10295 var parsed = parseInt(string.substr(i * 2, 2), 16) 10296 if (isNaN(parsed)) return i 10297 buf[offset + i] = parsed 10298 } 10299 return i 10300} 10301 10302function utf8Write (buf, string, offset, length) { 10303 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) 10304} 10305 10306function asciiWrite (buf, string, offset, length) { 10307 return blitBuffer(asciiToBytes(string), buf, offset, length) 10308} 10309 10310function latin1Write (buf, string, offset, length) { 10311 return asciiWrite(buf, string, offset, length) 10312} 10313 10314function base64Write (buf, string, offset, length) { 10315 return blitBuffer(base64ToBytes(string), buf, offset, length) 10316} 10317 10318function ucs2Write (buf, string, offset, length) { 10319 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) 10320} 10321 10322Buffer.prototype.write = function write (string, offset, length, encoding) { 10323 // Buffer#write(string) 10324 if (offset === undefined) { 10325 encoding = 'utf8' 10326 length = this.length 10327 offset = 0 10328 // Buffer#write(string, encoding) 10329 } else if (length === undefined && typeof offset === 'string') { 10330 encoding = offset 10331 length = this.length 10332 offset = 0 10333 // Buffer#write(string, offset[, length][, encoding]) 10334 } else if (isFinite(offset)) { 10335 offset = offset | 0 10336 if (isFinite(length)) { 10337 length = length | 0 10338 if (encoding === undefined) encoding = 'utf8' 10339 } else { 10340 encoding = length 10341 length = undefined 10342 } 10343 // legacy write(string, encoding, offset, length) - remove in v0.13 10344 } else { 10345 throw new Error( 10346 'Buffer.write(string, encoding, offset[, length]) is no longer supported' 10347 ) 10348 } 10349 10350 var remaining = this.length - offset 10351 if (length === undefined || length > remaining) length = remaining 10352 10353 if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { 10354 throw new RangeError('Attempt to write outside buffer bounds') 10355 } 10356 10357 if (!encoding) encoding = 'utf8' 10358 10359 var loweredCase = false 10360 for (;;) { 10361 switch (encoding) { 10362 case 'hex': 10363 return hexWrite(this, string, offset, length) 10364 10365 case 'utf8': 10366 case 'utf-8': 10367 return utf8Write(this, string, offset, length) 10368 10369 case 'ascii': 10370 return asciiWrite(this, string, offset, length) 10371 10372 case 'latin1': 10373 case 'binary': 10374 return latin1Write(this, string, offset, length) 10375 10376 case 'base64': 10377 // Warning: maxLength not taken into account in base64Write 10378 return base64Write(this, string, offset, length) 10379 10380 case 'ucs2': 10381 case 'ucs-2': 10382 case 'utf16le': 10383 case 'utf-16le': 10384 return ucs2Write(this, string, offset, length) 10385 10386 default: 10387 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) 10388 encoding = ('' + encoding).toLowerCase() 10389 loweredCase = true 10390 } 10391 } 10392} 10393 10394Buffer.prototype.toJSON = function toJSON () { 10395 return { 10396 type: 'Buffer', 10397 data: Array.prototype.slice.call(this._arr || this, 0) 10398 } 10399} 10400 10401function base64Slice (buf, start, end) { 10402 if (start === 0 && end === buf.length) { 10403 return base64.fromByteArray(buf) 10404 } else { 10405 return base64.fromByteArray(buf.slice(start, end)) 10406 } 10407} 10408 10409function utf8Slice (buf, start, end) { 10410 end = Math.min(buf.length, end) 10411 var res = [] 10412 10413 var i = start 10414 while (i < end) { 10415 var firstByte = buf[i] 10416 var codePoint = null 10417 var bytesPerSequence = (firstByte > 0xEF) ? 4 10418 : (firstByte > 0xDF) ? 3 10419 : (firstByte > 0xBF) ? 2 10420 : 1 10421 10422 if (i + bytesPerSequence <= end) { 10423 var secondByte, thirdByte, fourthByte, tempCodePoint 10424 10425 switch (bytesPerSequence) { 10426 case 1: 10427 if (firstByte < 0x80) { 10428 codePoint = firstByte 10429 } 10430 break 10431 case 2: 10432 secondByte = buf[i + 1] 10433 if ((secondByte & 0xC0) === 0x80) { 10434 tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) 10435 if (tempCodePoint > 0x7F) { 10436 codePoint = tempCodePoint 10437 } 10438 } 10439 break 10440 case 3: 10441 secondByte = buf[i + 1] 10442 thirdByte = buf[i + 2] 10443 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { 10444 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) 10445 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { 10446 codePoint = tempCodePoint 10447 } 10448 } 10449 break 10450 case 4: 10451 secondByte = buf[i + 1] 10452 thirdByte = buf[i + 2] 10453 fourthByte = buf[i + 3] 10454 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { 10455 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) 10456 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { 10457 codePoint = tempCodePoint 10458 } 10459 } 10460 } 10461 } 10462 10463 if (codePoint === null) { 10464 // we did not generate a valid codePoint so insert a 10465 // replacement char (U+FFFD) and advance only 1 byte 10466 codePoint = 0xFFFD 10467 bytesPerSequence = 1 10468 } else if (codePoint > 0xFFFF) { 10469 // encode to utf16 (surrogate pair dance) 10470 codePoint -= 0x10000 10471 res.push(codePoint >>> 10 & 0x3FF | 0xD800) 10472 codePoint = 0xDC00 | codePoint & 0x3FF 10473 } 10474 10475 res.push(codePoint) 10476 i += bytesPerSequence 10477 } 10478 10479 return decodeCodePointsArray(res) 10480} 10481 10482// Based on http://stackoverflow.com/a/22747272/680742, the browser with 10483// the lowest limit is Chrome, with 0x10000 args. 10484// We go 1 magnitude less, for safety 10485var MAX_ARGUMENTS_LENGTH = 0x1000 10486 10487function decodeCodePointsArray (codePoints) { 10488 var len = codePoints.length 10489 if (len <= MAX_ARGUMENTS_LENGTH) { 10490 return String.fromCharCode.apply(String, codePoints) // avoid extra slice() 10491 } 10492 10493 // Decode in chunks to avoid "call stack size exceeded". 10494 var res = '' 10495 var i = 0 10496 while (i < len) { 10497 res += String.fromCharCode.apply( 10498 String, 10499 codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) 10500 ) 10501 } 10502 return res 10503} 10504 10505function asciiSlice (buf, start, end) { 10506 var ret = '' 10507 end = Math.min(buf.length, end) 10508 10509 for (var i = start; i < end; ++i) { 10510 ret += String.fromCharCode(buf[i] & 0x7F) 10511 } 10512 return ret 10513} 10514 10515function latin1Slice (buf, start, end) { 10516 var ret = '' 10517 end = Math.min(buf.length, end) 10518 10519 for (var i = start; i < end; ++i) { 10520 ret += String.fromCharCode(buf[i]) 10521 } 10522 return ret 10523} 10524 10525function hexSlice (buf, start, end) { 10526 var len = buf.length 10527 10528 if (!start || start < 0) start = 0 10529 if (!end || end < 0 || end > len) end = len 10530 10531 var out = '' 10532 for (var i = start; i < end; ++i) { 10533 out += toHex(buf[i]) 10534 } 10535 return out 10536} 10537 10538function utf16leSlice (buf, start, end) { 10539 var bytes = buf.slice(start, end) 10540 var res = '' 10541 for (var i = 0; i < bytes.length; i += 2) { 10542 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) 10543 } 10544 return res 10545} 10546 10547Buffer.prototype.slice = function slice (start, end) { 10548 var len = this.length 10549 start = ~~start 10550 end = end === undefined ? len : ~~end 10551 10552 if (start < 0) { 10553 start += len 10554 if (start < 0) start = 0 10555 } else if (start > len) { 10556 start = len 10557 } 10558 10559 if (end < 0) { 10560 end += len 10561 if (end < 0) end = 0 10562 } else if (end > len) { 10563 end = len 10564 } 10565 10566 if (end < start) end = start 10567 10568 var newBuf 10569 if (Buffer.TYPED_ARRAY_SUPPORT) { 10570 newBuf = this.subarray(start, end) 10571 newBuf.__proto__ = Buffer.prototype 10572 } else { 10573 var sliceLen = end - start 10574 newBuf = new Buffer(sliceLen, undefined) 10575 for (var i = 0; i < sliceLen; ++i) { 10576 newBuf[i] = this[i + start] 10577 } 10578 } 10579 10580 return newBuf 10581} 10582 10583/* 10584 * Need to make sure that buffer isn't trying to write out of bounds. 10585 */ 10586function checkOffset (offset, ext, length) { 10587 if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') 10588 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') 10589} 10590 10591Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { 10592 offset = offset | 0 10593 byteLength = byteLength | 0 10594 if (!noAssert) checkOffset(offset, byteLength, this.length) 10595 10596 var val = this[offset] 10597 var mul = 1 10598 var i = 0 10599 while (++i < byteLength && (mul *= 0x100)) { 10600 val += this[offset + i] * mul 10601 } 10602 10603 return val 10604} 10605 10606Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { 10607 offset = offset | 0 10608 byteLength = byteLength | 0 10609 if (!noAssert) { 10610 checkOffset(offset, byteLength, this.length) 10611 } 10612 10613 var val = this[offset + --byteLength] 10614 var mul = 1 10615 while (byteLength > 0 && (mul *= 0x100)) { 10616 val += this[offset + --byteLength] * mul 10617 } 10618 10619 return val 10620} 10621 10622Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { 10623 if (!noAssert) checkOffset(offset, 1, this.length) 10624 return this[offset] 10625} 10626 10627Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { 10628 if (!noAssert) checkOffset(offset, 2, this.length) 10629 return this[offset] | (this[offset + 1] << 8) 10630} 10631 10632Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { 10633 if (!noAssert) checkOffset(offset, 2, this.length) 10634 return (this[offset] << 8) | this[offset + 1] 10635} 10636 10637Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { 10638 if (!noAssert) checkOffset(offset, 4, this.length) 10639 10640 return ((this[offset]) | 10641 (this[offset + 1] << 8) | 10642 (this[offset + 2] << 16)) + 10643 (this[offset + 3] * 0x1000000) 10644} 10645 10646Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { 10647 if (!noAssert) checkOffset(offset, 4, this.length) 10648 10649 return (this[offset] * 0x1000000) + 10650 ((this[offset + 1] << 16) | 10651 (this[offset + 2] << 8) | 10652 this[offset + 3]) 10653} 10654 10655Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { 10656 offset = offset | 0 10657 byteLength = byteLength | 0 10658 if (!noAssert) checkOffset(offset, byteLength, this.length) 10659 10660 var val = this[offset] 10661 var mul = 1 10662 var i = 0 10663 while (++i < byteLength && (mul *= 0x100)) { 10664 val += this[offset + i] * mul 10665 } 10666 mul *= 0x80 10667 10668 if (val >= mul) val -= Math.pow(2, 8 * byteLength) 10669 10670 return val 10671} 10672 10673Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { 10674 offset = offset | 0 10675 byteLength = byteLength | 0 10676 if (!noAssert) checkOffset(offset, byteLength, this.length) 10677 10678 var i = byteLength 10679 var mul = 1 10680 var val = this[offset + --i] 10681 while (i > 0 && (mul *= 0x100)) { 10682 val += this[offset + --i] * mul 10683 } 10684 mul *= 0x80 10685 10686 if (val >= mul) val -= Math.pow(2, 8 * byteLength) 10687 10688 return val 10689} 10690 10691Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { 10692 if (!noAssert) checkOffset(offset, 1, this.length) 10693 if (!(this[offset] & 0x80)) return (this[offset]) 10694 return ((0xff - this[offset] + 1) * -1) 10695} 10696 10697Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { 10698 if (!noAssert) checkOffset(offset, 2, this.length) 10699 var val = this[offset] | (this[offset + 1] << 8) 10700 return (val & 0x8000) ? val | 0xFFFF0000 : val 10701} 10702 10703Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { 10704 if (!noAssert) checkOffset(offset, 2, this.length) 10705 var val = this[offset + 1] | (this[offset] << 8) 10706 return (val & 0x8000) ? val | 0xFFFF0000 : val 10707} 10708 10709Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { 10710 if (!noAssert) checkOffset(offset, 4, this.length) 10711 10712 return (this[offset]) | 10713 (this[offset + 1] << 8) | 10714 (this[offset + 2] << 16) | 10715 (this[offset + 3] << 24) 10716} 10717 10718Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { 10719 if (!noAssert) checkOffset(offset, 4, this.length) 10720 10721 return (this[offset] << 24) | 10722 (this[offset + 1] << 16) | 10723 (this[offset + 2] << 8) | 10724 (this[offset + 3]) 10725} 10726 10727Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { 10728 if (!noAssert) checkOffset(offset, 4, this.length) 10729 return ieee754.read(this, offset, true, 23, 4) 10730} 10731 10732Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { 10733 if (!noAssert) checkOffset(offset, 4, this.length) 10734 return ieee754.read(this, offset, false, 23, 4) 10735} 10736 10737Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { 10738 if (!noAssert) checkOffset(offset, 8, this.length) 10739 return ieee754.read(this, offset, true, 52, 8) 10740} 10741 10742Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { 10743 if (!noAssert) checkOffset(offset, 8, this.length) 10744 return ieee754.read(this, offset, false, 52, 8) 10745} 10746 10747function checkInt (buf, value, offset, ext, max, min) { 10748 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') 10749 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') 10750 if (offset + ext > buf.length) throw new RangeError('Index out of range') 10751} 10752 10753Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { 10754 value = +value 10755 offset = offset | 0 10756 byteLength = byteLength | 0 10757 if (!noAssert) { 10758 var maxBytes = Math.pow(2, 8 * byteLength) - 1 10759 checkInt(this, value, offset, byteLength, maxBytes, 0) 10760 } 10761 10762 var mul = 1 10763 var i = 0 10764 this[offset] = value & 0xFF 10765 while (++i < byteLength && (mul *= 0x100)) { 10766 this[offset + i] = (value / mul) & 0xFF 10767 } 10768 10769 return offset + byteLength 10770} 10771 10772Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { 10773 value = +value 10774 offset = offset | 0 10775 byteLength = byteLength | 0 10776 if (!noAssert) { 10777 var maxBytes = Math.pow(2, 8 * byteLength) - 1 10778 checkInt(this, value, offset, byteLength, maxBytes, 0) 10779 } 10780 10781 var i = byteLength - 1 10782 var mul = 1 10783 this[offset + i] = value & 0xFF 10784 while (--i >= 0 && (mul *= 0x100)) { 10785 this[offset + i] = (value / mul) & 0xFF 10786 } 10787 10788 return offset + byteLength 10789} 10790 10791Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { 10792 value = +value 10793 offset = offset | 0 10794 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) 10795 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) 10796 this[offset] = (value & 0xff) 10797 return offset + 1 10798} 10799 10800function objectWriteUInt16 (buf, value, offset, littleEndian) { 10801 if (value < 0) value = 0xffff + value + 1 10802 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { 10803 buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> 10804 (littleEndian ? i : 1 - i) * 8 10805 } 10806} 10807 10808Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { 10809 value = +value 10810 offset = offset | 0 10811 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) 10812 if (Buffer.TYPED_ARRAY_SUPPORT) { 10813 this[offset] = (value & 0xff) 10814 this[offset + 1] = (value >>> 8) 10815 } else { 10816 objectWriteUInt16(this, value, offset, true) 10817 } 10818 return offset + 2 10819} 10820 10821Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { 10822 value = +value 10823 offset = offset | 0 10824 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) 10825 if (Buffer.TYPED_ARRAY_SUPPORT) { 10826 this[offset] = (value >>> 8) 10827 this[offset + 1] = (value & 0xff) 10828 } else { 10829 objectWriteUInt16(this, value, offset, false) 10830 } 10831 return offset + 2 10832} 10833 10834function objectWriteUInt32 (buf, value, offset, littleEndian) { 10835 if (value < 0) value = 0xffffffff + value + 1 10836 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { 10837 buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff 10838 } 10839} 10840 10841Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { 10842 value = +value 10843 offset = offset | 0 10844 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) 10845 if (Buffer.TYPED_ARRAY_SUPPORT) { 10846 this[offset + 3] = (value >>> 24) 10847 this[offset + 2] = (value >>> 16) 10848 this[offset + 1] = (value >>> 8) 10849 this[offset] = (value & 0xff) 10850 } else { 10851 objectWriteUInt32(this, value, offset, true) 10852 } 10853 return offset + 4 10854} 10855 10856Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { 10857 value = +value 10858 offset = offset | 0 10859 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) 10860 if (Buffer.TYPED_ARRAY_SUPPORT) { 10861 this[offset] = (value >>> 24) 10862 this[offset + 1] = (value >>> 16) 10863 this[offset + 2] = (value >>> 8) 10864 this[offset + 3] = (value & 0xff) 10865 } else { 10866 objectWriteUInt32(this, value, offset, false) 10867 } 10868 return offset + 4 10869} 10870 10871Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { 10872 value = +value 10873 offset = offset | 0 10874 if (!noAssert) { 10875 var limit = Math.pow(2, 8 * byteLength - 1) 10876 10877 checkInt(this, value, offset, byteLength, limit - 1, -limit) 10878 } 10879 10880 var i = 0 10881 var mul = 1 10882 var sub = 0 10883 this[offset] = value & 0xFF 10884 while (++i < byteLength && (mul *= 0x100)) { 10885 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { 10886 sub = 1 10887 } 10888 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF 10889 } 10890 10891 return offset + byteLength 10892} 10893 10894Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { 10895 value = +value 10896 offset = offset | 0 10897 if (!noAssert) { 10898 var limit = Math.pow(2, 8 * byteLength - 1) 10899 10900 checkInt(this, value, offset, byteLength, limit - 1, -limit) 10901 } 10902 10903 var i = byteLength - 1 10904 var mul = 1 10905 var sub = 0 10906 this[offset + i] = value & 0xFF 10907 while (--i >= 0 && (mul *= 0x100)) { 10908 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { 10909 sub = 1 10910 } 10911 this[offset + i] = ((value / mul) >> 0) - sub & 0xFF 10912 } 10913 10914 return offset + byteLength 10915} 10916 10917Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { 10918 value = +value 10919 offset = offset | 0 10920 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) 10921 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) 10922 if (value < 0) value = 0xff + value + 1 10923 this[offset] = (value & 0xff) 10924 return offset + 1 10925} 10926 10927Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { 10928 value = +value 10929 offset = offset | 0 10930 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) 10931 if (Buffer.TYPED_ARRAY_SUPPORT) { 10932 this[offset] = (value & 0xff) 10933 this[offset + 1] = (value >>> 8) 10934 } else { 10935 objectWriteUInt16(this, value, offset, true) 10936 } 10937 return offset + 2 10938} 10939 10940Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { 10941 value = +value 10942 offset = offset | 0 10943 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) 10944 if (Buffer.TYPED_ARRAY_SUPPORT) { 10945 this[offset] = (value >>> 8) 10946 this[offset + 1] = (value & 0xff) 10947 } else { 10948 objectWriteUInt16(this, value, offset, false) 10949 } 10950 return offset + 2 10951} 10952 10953Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { 10954 value = +value 10955 offset = offset | 0 10956 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) 10957 if (Buffer.TYPED_ARRAY_SUPPORT) { 10958 this[offset] = (value & 0xff) 10959 this[offset + 1] = (value >>> 8) 10960 this[offset + 2] = (value >>> 16) 10961 this[offset + 3] = (value >>> 24) 10962 } else { 10963 objectWriteUInt32(this, value, offset, true) 10964 } 10965 return offset + 4 10966} 10967 10968Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { 10969 value = +value 10970 offset = offset | 0 10971 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) 10972 if (value < 0) value = 0xffffffff + value + 1 10973 if (Buffer.TYPED_ARRAY_SUPPORT) { 10974 this[offset] = (value >>> 24) 10975 this[offset + 1] = (value >>> 16) 10976 this[offset + 2] = (value >>> 8) 10977 this[offset + 3] = (value & 0xff) 10978 } else { 10979 objectWriteUInt32(this, value, offset, false) 10980 } 10981 return offset + 4 10982} 10983 10984function checkIEEE754 (buf, value, offset, ext, max, min) { 10985 if (offset + ext > buf.length) throw new RangeError('Index out of range') 10986 if (offset < 0) throw new RangeError('Index out of range') 10987} 10988 10989function writeFloat (buf, value, offset, littleEndian, noAssert) { 10990 if (!noAssert) { 10991 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) 10992 } 10993 ieee754.write(buf, value, offset, littleEndian, 23, 4) 10994 return offset + 4 10995} 10996 10997Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { 10998 return writeFloat(this, value, offset, true, noAssert) 10999} 11000 11001Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { 11002 return writeFloat(this, value, offset, false, noAssert) 11003} 11004 11005function writeDouble (buf, value, offset, littleEndian, noAssert) { 11006 if (!noAssert) { 11007 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) 11008 } 11009 ieee754.write(buf, value, offset, littleEndian, 52, 8) 11010 return offset + 8 11011} 11012 11013Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { 11014 return writeDouble(this, value, offset, true, noAssert) 11015} 11016 11017Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { 11018 return writeDouble(this, value, offset, false, noAssert) 11019} 11020 11021// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) 11022Buffer.prototype.copy = function copy (target, targetStart, start, end) { 11023 if (!start) start = 0 11024 if (!end && end !== 0) end = this.length 11025 if (targetStart >= target.length) targetStart = target.length 11026 if (!targetStart) targetStart = 0 11027 if (end > 0 && end < start) end = start 11028 11029 // Copy 0 bytes; we're done 11030 if (end === start) return 0 11031 if (target.length === 0 || this.length === 0) return 0 11032 11033 // Fatal error conditions 11034 if (targetStart < 0) { 11035 throw new RangeError('targetStart out of bounds') 11036 } 11037 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') 11038 if (end < 0) throw new RangeError('sourceEnd out of bounds') 11039 11040 // Are we oob? 11041 if (end > this.length) end = this.length 11042 if (target.length - targetStart < end - start) { 11043 end = target.length - targetStart + start 11044 } 11045 11046 var len = end - start 11047 var i 11048 11049 if (this === target && start < targetStart && targetStart < end) { 11050 // descending copy from end 11051 for (i = len - 1; i >= 0; --i) { 11052 target[i + targetStart] = this[i + start] 11053 } 11054 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { 11055 // ascending copy from start 11056 for (i = 0; i < len; ++i) { 11057 target[i + targetStart] = this[i + start] 11058 } 11059 } else { 11060 Uint8Array.prototype.set.call( 11061 target, 11062 this.subarray(start, start + len), 11063 targetStart 11064 ) 11065 } 11066 11067 return len 11068} 11069 11070// Usage: 11071// buffer.fill(number[, offset[, end]]) 11072// buffer.fill(buffer[, offset[, end]]) 11073// buffer.fill(string[, offset[, end]][, encoding]) 11074Buffer.prototype.fill = function fill (val, start, end, encoding) { 11075 // Handle string cases: 11076 if (typeof val === 'string') { 11077 if (typeof start === 'string') { 11078 encoding = start 11079 start = 0 11080 end = this.length 11081 } else if (typeof end === 'string') { 11082 encoding = end 11083 end = this.length 11084 } 11085 if (val.length === 1) { 11086 var code = val.charCodeAt(0) 11087 if (code < 256) { 11088 val = code 11089 } 11090 } 11091 if (encoding !== undefined && typeof encoding !== 'string') { 11092 throw new TypeError('encoding must be a string') 11093 } 11094 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { 11095 throw new TypeError('Unknown encoding: ' + encoding) 11096 } 11097 } else if (typeof val === 'number') { 11098 val = val & 255 11099 } 11100 11101 // Invalid ranges are not set to a default, so can range check early. 11102 if (start < 0 || this.length < start || this.length < end) { 11103 throw new RangeError('Out of range index') 11104 } 11105 11106 if (end <= start) { 11107 return this 11108 } 11109 11110 start = start >>> 0 11111 end = end === undefined ? this.length : end >>> 0 11112 11113 if (!val) val = 0 11114 11115 var i 11116 if (typeof val === 'number') { 11117 for (i = start; i < end; ++i) { 11118 this[i] = val 11119 } 11120 } else { 11121 var bytes = Buffer.isBuffer(val) 11122 ? val 11123 : utf8ToBytes(new Buffer(val, encoding).toString()) 11124 var len = bytes.length 11125 for (i = 0; i < end - start; ++i) { 11126 this[i + start] = bytes[i % len] 11127 } 11128 } 11129 11130 return this 11131} 11132 11133// HELPER FUNCTIONS 11134// ================ 11135 11136var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g 11137 11138function base64clean (str) { 11139 // Node strips out invalid characters like \n and \t from the string, base64-js does not 11140 str = stringtrim(str).replace(INVALID_BASE64_RE, '') 11141 // Node converts strings with length < 2 to '' 11142 if (str.length < 2) return '' 11143 // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not 11144 while (str.length % 4 !== 0) { 11145 str = str + '=' 11146 } 11147 return str 11148} 11149 11150function stringtrim (str) { 11151 if (str.trim) return str.trim() 11152 return str.replace(/^\s+|\s+$/g, '') 11153} 11154 11155function toHex (n) { 11156 if (n < 16) return '0' + n.toString(16) 11157 return n.toString(16) 11158} 11159 11160function utf8ToBytes (string, units) { 11161 units = units || Infinity 11162 var codePoint 11163 var length = string.length 11164 var leadSurrogate = null 11165 var bytes = [] 11166 11167 for (var i = 0; i < length; ++i) { 11168 codePoint = string.charCodeAt(i) 11169 11170 // is surrogate component 11171 if (codePoint > 0xD7FF && codePoint < 0xE000) { 11172 // last char was a lead 11173 if (!leadSurrogate) { 11174 // no lead yet 11175 if (codePoint > 0xDBFF) { 11176 // unexpected trail 11177 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) 11178 continue 11179 } else if (i + 1 === length) { 11180 // unpaired lead 11181 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) 11182 continue 11183 } 11184 11185 // valid lead 11186 leadSurrogate = codePoint 11187 11188 continue 11189 } 11190 11191 // 2 leads in a row 11192 if (codePoint < 0xDC00) { 11193 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) 11194 leadSurrogate = codePoint 11195 continue 11196 } 11197 11198 // valid surrogate pair 11199 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 11200 } else if (leadSurrogate) { 11201 // valid bmp char, but last char was a lead 11202 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) 11203 } 11204 11205 leadSurrogate = null 11206 11207 // encode utf8 11208 if (codePoint < 0x80) { 11209 if ((units -= 1) < 0) break 11210 bytes.push(codePoint) 11211 } else if (codePoint < 0x800) { 11212 if ((units -= 2) < 0) break 11213 bytes.push( 11214 codePoint >> 0x6 | 0xC0, 11215 codePoint & 0x3F | 0x80 11216 ) 11217 } else if (codePoint < 0x10000) { 11218 if ((units -= 3) < 0) break 11219 bytes.push( 11220 codePoint >> 0xC | 0xE0, 11221 codePoint >> 0x6 & 0x3F | 0x80, 11222 codePoint & 0x3F | 0x80 11223 ) 11224 } else if (codePoint < 0x110000) { 11225 if ((units -= 4) < 0) break 11226 bytes.push( 11227 codePoint >> 0x12 | 0xF0, 11228 codePoint >> 0xC & 0x3F | 0x80, 11229 codePoint >> 0x6 & 0x3F | 0x80, 11230 codePoint & 0x3F | 0x80 11231 ) 11232 } else { 11233 throw new Error('Invalid code point') 11234 } 11235 } 11236 11237 return bytes 11238} 11239 11240function asciiToBytes (str) { 11241 var byteArray = [] 11242 for (var i = 0; i < str.length; ++i) { 11243 // Node's code seems to be doing this and not & 0x7F.. 11244 byteArray.push(str.charCodeAt(i) & 0xFF) 11245 } 11246 return byteArray 11247} 11248 11249function utf16leToBytes (str, units) { 11250 var c, hi, lo 11251 var byteArray = [] 11252 for (var i = 0; i < str.length; ++i) { 11253 if ((units -= 2) < 0) break 11254 11255 c = str.charCodeAt(i) 11256 hi = c >> 8 11257 lo = c % 256 11258 byteArray.push(lo) 11259 byteArray.push(hi) 11260 } 11261 11262 return byteArray 11263} 11264 11265function base64ToBytes (str) { 11266 return base64.toByteArray(base64clean(str)) 11267} 11268 11269function blitBuffer (src, dst, offset, length) { 11270 for (var i = 0; i < length; ++i) { 11271 if ((i + offset >= dst.length) || (i >= src.length)) break 11272 dst[i + offset] = src[i] 11273 } 11274 return i 11275} 11276 11277function isnan (val) { 11278 return val !== val // eslint-disable-line no-self-compare 11279} 11280 11281/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 11282 11283/***/ }), 11284
vendor: 46,380 bytes, lines 11285-12864
11285/***/ "./node_modules/dom7/dom7.esm.js": 11286/*!***************************************!*\ 11287 !*** ./node_modules/dom7/dom7.esm.js ***! 11288 \***************************************/ 11289/*! exports provided: default, $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width */ 11290/***/ (function(module, __webpack_exports__, __webpack_require__) { 11291 11292"use strict"; 11293__webpack_require__.r(__webpack_exports__); 11294/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$", function() { return $; }); 11295/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "add", function() { return add; }); 11296/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; }); 11297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animate", function() { return animate; }); 11298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationEnd", function() { return animationEnd; }); 11299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "append", function() { return append; }); 11300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendTo", function() { return appendTo; }); 11301/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attr", function() { return attr; }); 11302/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "blur", function() { return blur; }); 11303/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "change", function() { return change; }); 11304/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "children", function() { return children; }); 11305/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "click", function() { return click; }); 11306/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closest", function() { return closest; }); 11307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; }); 11308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "data", function() { return data; }); 11309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dataset", function() { return dataset; }); 11310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detach", function() { return detach; }); 11311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "each", function() { return each; }); 11312/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); 11313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "eq", function() { return eq; }); 11314/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; }); 11315/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; }); 11316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focus", function() { return focus; }); 11317/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusin", function() { return focusin; }); 11318/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "focusout", function() { return focusout; }); 11319/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasClass", function() { return hasClass; }); 11320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "height", function() { return height; }); 11321/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hide", function() { return hide; }); 11322/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "html", function() { return html; }); 11323/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "index", function() { return index; }); 11324/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertAfter", function() { return insertAfter; }); 11325/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertBefore", function() { return insertBefore; }); 11326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "is", function() { return is; }); 11327/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keydown", function() { return keydown; }); 11328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keypress", function() { return keypress; }); 11329/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyup", function() { return keyup; }); 11330/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousedown", function() { return mousedown; }); 11331/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseenter", function() { return mouseenter; }); 11332/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseleave", function() { return mouseleave; }); 11333/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mousemove", function() { return mousemove; }); 11334/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseout", function() { return mouseout; }); 11335/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseover", function() { return mouseover; }); 11336/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mouseup", function() { return mouseup; }); 11337/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "next", function() { return next; }); 11338/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextAll", function() { return nextAll; }); 11339/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "off", function() { return off; }); 11340/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offset", function() { return offset; }); 11341/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "on", function() { return on; }); 11342/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "once", function() { return once; }); 11343/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerHeight", function() { return outerHeight; }); 11344/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "outerWidth", function() { return outerWidth; }); 11345/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parent", function() { return parent; }); 11346/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parents", function() { return parents; }); 11347/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prepend", function() { return prepend; }); 11348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prependTo", function() { return prependTo; }); 11349/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prev", function() { return prev; }); 11350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prevAll", function() { return prevAll; }); 11351/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prop", function() { return prop; }); 11352/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return remove; }); 11353/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAttr", function() { return removeAttr; }); 11354/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeClass", function() { return removeClass; }); 11355/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeData", function() { return removeData; }); 11356/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resize", function() { return resize; }); 11357/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scroll", function() { return scroll; }); 11358/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollLeft", function() { return scrollLeft; }); 11359/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTo", function() { return scrollTo; }); 11360/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scrollTop", function() { return scrollTop; }); 11361/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "show", function() { return show; }); 11362/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "siblings", function() { return siblings; }); 11363/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stop", function() { return stop; }); 11364/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "styles", function() { return styles; }); 11365/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "submit", function() { return submit; }); 11366/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "text", function() { return text; }); 11367/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toggleClass", function() { return toggleClass; }); 11368/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchend", function() { return touchend; }); 11369/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchmove", function() { return touchmove; }); 11370/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "touchstart", function() { return touchstart; }); 11371/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transform", function() { return transform; }); 11372/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transition", function() { return transition; }); 11373/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionEnd", function() { return transitionEnd; }); 11374/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trigger", function() { return trigger; }); 11375/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "val", function() { return val; }); 11376/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "value", function() { return value; }); 11377/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "width", function() { return width; }); 11378/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 11379/** 11380 * Dom7 4.0.4 11381 * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API 11382 * https://framework7.io/docs/dom7.html 11383 * 11384 * Copyright 2022, Vladimir Kharlampidi 11385 * 11386 * Licensed under MIT 11387 * 11388 * Released on: January 11, 2022 11389 */ 11390 11391 11392/* eslint-disable no-proto */ 11393function makeReactive(obj) { 11394 const proto = obj.__proto__; 11395 Object.defineProperty(obj, '__proto__', { 11396 get() { 11397 return proto; 11398 }, 11399 11400 set(value) { 11401 proto.__proto__ = value; 11402 } 11403 11404 }); 11405} 11406 11407class Dom7 extends Array { 11408 constructor(items) { 11409 if (typeof items === 'number') { 11410 super(items); 11411 } else { 11412 super(...(items || [])); 11413 makeReactive(this); 11414 } 11415 } 11416 11417} 11418 11419function arrayFlat(arr = []) { 11420 const res = []; 11421 arr.forEach(el => { 11422 if (Array.isArray(el)) { 11423 res.push(...arrayFlat(el)); 11424 } else { 11425 res.push(el); 11426 } 11427 }); 11428 return res; 11429} 11430function arrayFilter(arr, callback) { 11431 return Array.prototype.filter.call(arr, callback); 11432} 11433function arrayUnique(arr) { 11434 const uniqueArray = []; 11435 11436 for (let i = 0; i < arr.length; i += 1) { 11437 if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]); 11438 } 11439 11440 return uniqueArray; 11441} 11442function toCamelCase(string) { 11443 return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase()); 11444} 11445 11446// eslint-disable-next-line 11447 11448function qsa(selector, context) { 11449 if (typeof selector !== 'string') { 11450 return [selector]; 11451 } 11452 11453 const a = []; 11454 const res = context.querySelectorAll(selector); 11455 11456 for (let i = 0; i < res.length; i += 1) { 11457 a.push(res[i]); 11458 } 11459 11460 return a; 11461} 11462 11463function $(selector, context) { 11464 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 11465 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 11466 let arr = []; 11467 11468 if (!context && selector instanceof Dom7) { 11469 return selector; 11470 } 11471 11472 if (!selector) { 11473 return new Dom7(arr); 11474 } 11475 11476 if (typeof selector === 'string') { 11477 const html = selector.trim(); 11478 11479 if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) { 11480 let toCreate = 'div'; 11481 if (html.indexOf('<li') === 0) toCreate = 'ul'; 11482 if (html.indexOf('<tr') === 0) toCreate = 'tbody'; 11483 if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr'; 11484 if (html.indexOf('<tbody') === 0) toCreate = 'table'; 11485 if (html.indexOf('<option') === 0) toCreate = 'select'; 11486 const tempParent = document.createElement(toCreate); 11487 tempParent.innerHTML = html; 11488 11489 for (let i = 0; i < tempParent.childNodes.length; i += 1) { 11490 arr.push(tempParent.childNodes[i]); 11491 } 11492 } else { 11493 arr = qsa(selector.trim(), context || document); 11494 } // arr = qsa(selector, document); 11495 11496 } else if (selector.nodeType || selector === window || selector === document) { 11497 arr.push(selector); 11498 } else if (Array.isArray(selector)) { 11499 if (selector instanceof Dom7) return selector; 11500 arr = selector; 11501 } 11502 11503 return new Dom7(arrayUnique(arr)); 11504} 11505 11506$.fn = Dom7.prototype; 11507 11508// eslint-disable-next-line 11509 11510function addClass(...classes) { 11511 const classNames = arrayFlat(classes.map(c => c.split(' '))); 11512 this.forEach(el => { 11513 el.classList.add(...classNames); 11514 }); 11515 return this; 11516} 11517 11518function removeClass(...classes) { 11519 const classNames = arrayFlat(classes.map(c => c.split(' '))); 11520 this.forEach(el => { 11521 el.classList.remove(...classNames); 11522 }); 11523 return this; 11524} 11525 11526function toggleClass(...classes) { 11527 const classNames = arrayFlat(classes.map(c => c.split(' '))); 11528 this.forEach(el => { 11529 classNames.forEach(className => { 11530 el.classList.toggle(className); 11531 }); 11532 }); 11533} 11534 11535function hasClass(...classes) { 11536 const classNames = arrayFlat(classes.map(c => c.split(' '))); 11537 return arrayFilter(this, el => { 11538 return classNames.filter(className => el.classList.contains(className)).length > 0; 11539 }).length > 0; 11540} 11541 11542function attr(attrs, value) { 11543 if (arguments.length === 1 && typeof attrs === 'string') { 11544 // Get attr 11545 if (this[0]) return this[0].getAttribute(attrs); 11546 return undefined; 11547 } // Set attrs 11548 11549 11550 for (let i = 0; i < this.length; i += 1) { 11551 if (arguments.length === 2) { 11552 // String 11553 this[i].setAttribute(attrs, value); 11554 } else { 11555 // Object 11556 for (const attrName in attrs) { 11557 this[i][attrName] = attrs[attrName]; 11558 this[i].setAttribute(attrName, attrs[attrName]); 11559 } 11560 } 11561 } 11562 11563 return this; 11564} 11565 11566function removeAttr(attr) { 11567 for (let i = 0; i < this.length; i += 1) { 11568 this[i].removeAttribute(attr); 11569 } 11570 11571 return this; 11572} 11573 11574function prop(props, value) { 11575 if (arguments.length === 1 && typeof props === 'string') { 11576 // Get prop 11577 if (this[0]) return this[0][props]; 11578 } else { 11579 // Set props 11580 for (let i = 0; i < this.length; i += 1) { 11581 if (arguments.length === 2) { 11582 // String 11583 this[i][props] = value; 11584 } else { 11585 // Object 11586 for (const propName in props) { 11587 this[i][propName] = props[propName]; 11588 } 11589 } 11590 } 11591 11592 return this; 11593 } 11594 11595 return this; 11596} 11597 11598function data(key, value) { 11599 let el; 11600 11601 if (typeof value === 'undefined') { 11602 el = this[0]; 11603 if (!el) return undefined; // Get value 11604 11605 if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) { 11606 return el.dom7ElementDataStorage[key]; 11607 } 11608 11609 const dataKey = el.getAttribute(`data-${key}`); 11610 11611 if (dataKey) { 11612 return dataKey; 11613 } 11614 11615 return undefined; 11616 } // Set value 11617 11618 11619 for (let i = 0; i < this.length; i += 1) { 11620 el = this[i]; 11621 if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {}; 11622 el.dom7ElementDataStorage[key] = value; 11623 } 11624 11625 return this; 11626} 11627 11628function removeData(key) { 11629 for (let i = 0; i < this.length; i += 1) { 11630 const el = this[i]; 11631 11632 if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) { 11633 el.dom7ElementDataStorage[key] = null; 11634 delete el.dom7ElementDataStorage[key]; 11635 } 11636 } 11637} 11638 11639function dataset() { 11640 const el = this[0]; 11641 if (!el) return undefined; 11642 const dataset = {}; // eslint-disable-line 11643 11644 if (el.dataset) { 11645 for (const dataKey in el.dataset) { 11646 dataset[dataKey] = el.dataset[dataKey]; 11647 } 11648 } else { 11649 for (let i = 0; i < el.attributes.length; i += 1) { 11650 const attr = el.attributes[i]; 11651 11652 if (attr.name.indexOf('data-') >= 0) { 11653 dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value; 11654 } 11655 } 11656 } 11657 11658 for (const key in dataset) { 11659 if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1; 11660 } 11661 11662 return dataset; 11663} 11664 11665function val(value) { 11666 if (typeof value === 'undefined') { 11667 // get value 11668 const el = this[0]; 11669 if (!el) return undefined; 11670 11671 if (el.multiple && el.nodeName.toLowerCase() === 'select') { 11672 const values = []; 11673 11674 for (let i = 0; i < el.selectedOptions.length; i += 1) { 11675 values.push(el.selectedOptions[i].value); 11676 } 11677 11678 return values; 11679 } 11680 11681 return el.value; 11682 } // set value 11683 11684 11685 for (let i = 0; i < this.length; i += 1) { 11686 const el = this[i]; 11687 11688 if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') { 11689 for (let j = 0; j < el.options.length; j += 1) { 11690 el.options[j].selected = value.indexOf(el.options[j].value) >= 0; 11691 } 11692 } else { 11693 el.value = value; 11694 } 11695 } 11696 11697 return this; 11698} 11699 11700function value(value) { 11701 return this.val(value); 11702} 11703 11704function transform(transform) { 11705 for (let i = 0; i < this.length; i += 1) { 11706 this[i].style.transform = transform; 11707 } 11708 11709 return this; 11710} 11711 11712function transition(duration) { 11713 for (let i = 0; i < this.length; i += 1) { 11714 this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration; 11715 } 11716 11717 return this; 11718} 11719 11720function on(...args) { 11721 let [eventType, targetSelector, listener, capture] = args; 11722 11723 if (typeof args[1] === 'function') { 11724 [eventType, listener, capture] = args; 11725 targetSelector = undefined; 11726 } 11727 11728 if (!capture) capture = false; 11729 11730 function handleLiveEvent(e) { 11731 const target = e.target; 11732 if (!target) return; 11733 const eventData = e.target.dom7EventData || []; 11734 11735 if (eventData.indexOf(e) < 0) { 11736 eventData.unshift(e); 11737 } 11738 11739 if ($(target).is(targetSelector)) listener.apply(target, eventData);else { 11740 const parents = $(target).parents(); // eslint-disable-line 11741 11742 for (let k = 0; k < parents.length; k += 1) { 11743 if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData); 11744 } 11745 } 11746 } 11747 11748 function handleEvent(e) { 11749 const eventData = e && e.target ? e.target.dom7EventData || [] : []; 11750 11751 if (eventData.indexOf(e) < 0) { 11752 eventData.unshift(e); 11753 } 11754 11755 listener.apply(this, eventData); 11756 } 11757 11758 const events = eventType.split(' '); 11759 let j; 11760 11761 for (let i = 0; i < this.length; i += 1) { 11762 const el = this[i]; 11763 11764 if (!targetSelector) { 11765 for (j = 0; j < events.length; j += 1) { 11766 const event = events[j]; 11767 if (!el.dom7Listeners) el.dom7Listeners = {}; 11768 if (!el.dom7Listeners[event]) el.dom7Listeners[event] = []; 11769 el.dom7Listeners[event].push({ 11770 listener, 11771 proxyListener: handleEvent 11772 }); 11773 el.addEventListener(event, handleEvent, capture); 11774 } 11775 } else { 11776 // Live events 11777 for (j = 0; j < events.length; j += 1) { 11778 const event = events[j]; 11779 if (!el.dom7LiveListeners) el.dom7LiveListeners = {}; 11780 if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = []; 11781 el.dom7LiveListeners[event].push({ 11782 listener, 11783 proxyListener: handleLiveEvent 11784 }); 11785 el.addEventListener(event, handleLiveEvent, capture); 11786 } 11787 } 11788 } 11789 11790 return this; 11791} 11792 11793function off(...args) { 11794 let [eventType, targetSelector, listener, capture] = args; 11795 11796 if (typeof args[1] === 'function') { 11797 [eventType, listener, capture] = args; 11798 targetSelector = undefined; 11799 } 11800 11801 if (!capture) capture = false; 11802 const events = eventType.split(' '); 11803 11804 for (let i = 0; i < events.length; i += 1) { 11805 const event = events[i]; 11806 11807 for (let j = 0; j < this.length; j += 1) { 11808 const el = this[j]; 11809 let handlers; 11810 11811 if (!targetSelector && el.dom7Listeners) { 11812 handlers = el.dom7Listeners[event]; 11813 } else if (targetSelector && el.dom7LiveListeners) { 11814 handlers = el.dom7LiveListeners[event]; 11815 } 11816 11817 if (handlers && handlers.length) { 11818 for (let k = handlers.length - 1; k >= 0; k -= 1) { 11819 const handler = handlers[k]; 11820 11821 if (listener && handler.listener === listener) { 11822 el.removeEventListener(event, handler.proxyListener, capture); 11823 handlers.splice(k, 1); 11824 } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { 11825 el.removeEventListener(event, handler.proxyListener, capture); 11826 handlers.splice(k, 1); 11827 } else if (!listener) { 11828 el.removeEventListener(event, handler.proxyListener, capture); 11829 handlers.splice(k, 1); 11830 } 11831 } 11832 } 11833 } 11834 } 11835 11836 return this; 11837} 11838 11839function once(...args) { 11840 const dom = this; 11841 let [eventName, targetSelector, listener, capture] = args; 11842 11843 if (typeof args[1] === 'function') { 11844 [eventName, listener, capture] = args; 11845 targetSelector = undefined; 11846 } 11847 11848 function onceHandler(...eventArgs) { 11849 listener.apply(this, eventArgs); 11850 dom.off(eventName, targetSelector, onceHandler, capture); 11851 11852 if (onceHandler.dom7proxy) { 11853 delete onceHandler.dom7proxy; 11854 } 11855 } 11856 11857 onceHandler.dom7proxy = listener; 11858 return dom.on(eventName, targetSelector, onceHandler, capture); 11859} 11860 11861function trigger(...args) { 11862 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 11863 const events = args[0].split(' '); 11864 const eventData = args[1]; 11865 11866 for (let i = 0; i < events.length; i += 1) { 11867 const event = events[i]; 11868 11869 for (let j = 0; j < this.length; j += 1) { 11870 const el = this[j]; 11871 11872 if (window.CustomEvent) { 11873 const evt = new window.CustomEvent(event, { 11874 detail: eventData, 11875 bubbles: true, 11876 cancelable: true 11877 }); 11878 el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0); 11879 el.dispatchEvent(evt); 11880 el.dom7EventData = []; 11881 delete el.dom7EventData; 11882 } 11883 } 11884 } 11885 11886 return this; 11887} 11888 11889function transitionEnd(callback) { 11890 const dom = this; 11891 11892 function fireCallBack(e) { 11893 if (e.target !== this) return; 11894 callback.call(this, e); 11895 dom.off('transitionend', fireCallBack); 11896 } 11897 11898 if (callback) { 11899 dom.on('transitionend', fireCallBack); 11900 } 11901 11902 return this; 11903} 11904 11905function animationEnd(callback) { 11906 const dom = this; 11907 11908 function fireCallBack(e) { 11909 if (e.target !== this) return; 11910 callback.call(this, e); 11911 dom.off('animationend', fireCallBack); 11912 } 11913 11914 if (callback) { 11915 dom.on('animationend', fireCallBack); 11916 } 11917 11918 return this; 11919} 11920 11921function width() { 11922 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 11923 11924 if (this[0] === window) { 11925 return window.innerWidth; 11926 } 11927 11928 if (this.length > 0) { 11929 return parseFloat(this.css('width')); 11930 } 11931 11932 return null; 11933} 11934 11935function outerWidth(includeMargins) { 11936 if (this.length > 0) { 11937 if (includeMargins) { 11938 const styles = this.styles(); 11939 return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left')); 11940 } 11941 11942 return this[0].offsetWidth; 11943 } 11944 11945 return null; 11946} 11947 11948function height() { 11949 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 11950 11951 if (this[0] === window) { 11952 return window.innerHeight; 11953 } 11954 11955 if (this.length > 0) { 11956 return parseFloat(this.css('height')); 11957 } 11958 11959 return null; 11960} 11961 11962function outerHeight(includeMargins) { 11963 if (this.length > 0) { 11964 if (includeMargins) { 11965 const styles = this.styles(); 11966 return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom')); 11967 } 11968 11969 return this[0].offsetHeight; 11970 } 11971 11972 return null; 11973} 11974 11975function offset() { 11976 if (this.length > 0) { 11977 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 11978 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 11979 const el = this[0]; 11980 const box = el.getBoundingClientRect(); 11981 const body = document.body; 11982 const clientTop = el.clientTop || body.clientTop || 0; 11983 const clientLeft = el.clientLeft || body.clientLeft || 0; 11984 const scrollTop = el === window ? window.scrollY : el.scrollTop; 11985 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 11986 return { 11987 top: box.top + scrollTop - clientTop, 11988 left: box.left + scrollLeft - clientLeft 11989 }; 11990 } 11991 11992 return null; 11993} 11994 11995function hide() { 11996 for (let i = 0; i < this.length; i += 1) { 11997 this[i].style.display = 'none'; 11998 } 11999 12000 return this; 12001} 12002 12003function show() { 12004 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 12005 12006 for (let i = 0; i < this.length; i += 1) { 12007 const el = this[i]; 12008 12009 if (el.style.display === 'none') { 12010 el.style.display = ''; 12011 } 12012 12013 if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') { 12014 // Still not visible 12015 el.style.display = 'block'; 12016 } 12017 } 12018 12019 return this; 12020} 12021 12022function styles() { 12023 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 12024 if (this[0]) return window.getComputedStyle(this[0], null); 12025 return {}; 12026} 12027 12028function css(props, value) { 12029 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 12030 let i; 12031 12032 if (arguments.length === 1) { 12033 if (typeof props === 'string') { 12034 // .css('width') 12035 if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props); 12036 } else { 12037 // .css({ width: '100px' }) 12038 for (i = 0; i < this.length; i += 1) { 12039 for (const prop in props) { 12040 this[i].style[prop] = props[prop]; 12041 } 12042 } 12043 12044 return this; 12045 } 12046 } 12047 12048 if (arguments.length === 2 && typeof props === 'string') { 12049 // .css('width', '100px') 12050 for (i = 0; i < this.length; i += 1) { 12051 this[i].style[props] = value; 12052 } 12053 12054 return this; 12055 } 12056 12057 return this; 12058} 12059 12060function each(callback) { 12061 if (!callback) return this; 12062 this.forEach((el, index) => { 12063 callback.apply(el, [el, index]); 12064 }); 12065 return this; 12066} 12067 12068function filter(callback) { 12069 const result = arrayFilter(this, callback); 12070 return $(result); 12071} 12072 12073function html(html) { 12074 if (typeof html === 'undefined') { 12075 return this[0] ? this[0].innerHTML : null; 12076 } 12077 12078 for (let i = 0; i < this.length; i += 1) { 12079 this[i].innerHTML = html; 12080 } 12081 12082 return this; 12083} 12084 12085function text(text) { 12086 if (typeof text === 'undefined') { 12087 return this[0] ? this[0].textContent.trim() : null; 12088 } 12089 12090 for (let i = 0; i < this.length; i += 1) { 12091 this[i].textContent = text; 12092 } 12093 12094 return this; 12095} 12096 12097function is(selector) { 12098 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 12099 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 12100 const el = this[0]; 12101 let compareWith; 12102 let i; 12103 if (!el || typeof selector === 'undefined') return false; 12104 12105 if (typeof selector === 'string') { 12106 if (el.matches) return el.matches(selector); 12107 if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector); 12108 if (el.msMatchesSelector) return el.msMatchesSelector(selector); 12109 compareWith = $(selector); 12110 12111 for (i = 0; i < compareWith.length; i += 1) { 12112 if (compareWith[i] === el) return true; 12113 } 12114 12115 return false; 12116 } 12117 12118 if (selector === document) { 12119 return el === document; 12120 } 12121 12122 if (selector === window) { 12123 return el === window; 12124 } 12125 12126 if (selector.nodeType || selector instanceof Dom7) { 12127 compareWith = selector.nodeType ? [selector] : selector; 12128 12129 for (i = 0; i < compareWith.length; i += 1) { 12130 if (compareWith[i] === el) return true; 12131 } 12132 12133 return false; 12134 } 12135 12136 return false; 12137} 12138 12139function index() { 12140 let child = this[0]; 12141 let i; 12142 12143 if (child) { 12144 i = 0; // eslint-disable-next-line 12145 12146 while ((child = child.previousSibling) !== null) { 12147 if (child.nodeType === 1) i += 1; 12148 } 12149 12150 return i; 12151 } 12152 12153 return undefined; 12154} 12155 12156function eq(index) { 12157 if (typeof index === 'undefined') return this; 12158 const length = this.length; 12159 12160 if (index > length - 1) { 12161 return $([]); 12162 } 12163 12164 if (index < 0) { 12165 const returnIndex = length + index; 12166 if (returnIndex < 0) return $([]); 12167 return $([this[returnIndex]]); 12168 } 12169 12170 return $([this[index]]); 12171} 12172 12173function append(...els) { 12174 let newChild; 12175 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 12176 12177 for (let k = 0; k < els.length; k += 1) { 12178 newChild = els[k]; 12179 12180 for (let i = 0; i < this.length; i += 1) { 12181 if (typeof newChild === 'string') { 12182 const tempDiv = document.createElement('div'); 12183 tempDiv.innerHTML = newChild; 12184 12185 while (tempDiv.firstChild) { 12186 this[i].appendChild(tempDiv.firstChild); 12187 } 12188 } else if (newChild instanceof Dom7) { 12189 for (let j = 0; j < newChild.length; j += 1) { 12190 this[i].appendChild(newChild[j]); 12191 } 12192 } else { 12193 this[i].appendChild(newChild); 12194 } 12195 } 12196 } 12197 12198 return this; 12199} 12200 12201function appendTo(parent) { 12202 $(parent).append(this); 12203 return this; 12204} 12205 12206function prepend(newChild) { 12207 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 12208 let i; 12209 let j; 12210 12211 for (i = 0; i < this.length; i += 1) { 12212 if (typeof newChild === 'string') { 12213 const tempDiv = document.createElement('div'); 12214 tempDiv.innerHTML = newChild; 12215 12216 for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { 12217 this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]); 12218 } 12219 } else if (newChild instanceof Dom7) { 12220 for (j = 0; j < newChild.length; j += 1) { 12221 this[i].insertBefore(newChild[j], this[i].childNodes[0]); 12222 } 12223 } else { 12224 this[i].insertBefore(newChild, this[i].childNodes[0]); 12225 } 12226 } 12227 12228 return this; 12229} 12230 12231function prependTo(parent) { 12232 $(parent).prepend(this); 12233 return this; 12234} 12235 12236function insertBefore(selector) { 12237 const before = $(selector); 12238 12239 for (let i = 0; i < this.length; i += 1) { 12240 if (before.length === 1) { 12241 before[0].parentNode.insertBefore(this[i], before[0]); 12242 } else if (before.length > 1) { 12243 for (let j = 0; j < before.length; j += 1) { 12244 before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]); 12245 } 12246 } 12247 } 12248} 12249 12250function insertAfter(selector) { 12251 const after = $(selector); 12252 12253 for (let i = 0; i < this.length; i += 1) { 12254 if (after.length === 1) { 12255 after[0].parentNode.insertBefore(this[i], after[0].nextSibling); 12256 } else if (after.length > 1) { 12257 for (let j = 0; j < after.length; j += 1) { 12258 after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling); 12259 } 12260 } 12261 } 12262} 12263 12264function next(selector) { 12265 if (this.length > 0) { 12266 if (selector) { 12267 if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { 12268 return $([this[0].nextElementSibling]); 12269 } 12270 12271 return $([]); 12272 } 12273 12274 if (this[0].nextElementSibling) return $([this[0].nextElementSibling]); 12275 return $([]); 12276 } 12277 12278 return $([]); 12279} 12280 12281function nextAll(selector) { 12282 const nextEls = []; 12283 let el = this[0]; 12284 if (!el) return $([]); 12285 12286 while (el.nextElementSibling) { 12287 const next = el.nextElementSibling; // eslint-disable-line 12288 12289 if (selector) { 12290 if ($(next).is(selector)) nextEls.push(next); 12291 } else nextEls.push(next); 12292 12293 el = next; 12294 } 12295 12296 return $(nextEls); 12297} 12298 12299function prev(selector) { 12300 if (this.length > 0) { 12301 const el = this[0]; 12302 12303 if (selector) { 12304 if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { 12305 return $([el.previousElementSibling]); 12306 } 12307 12308 return $([]); 12309 } 12310 12311 if (el.previousElementSibling) return $([el.previousElementSibling]); 12312 return $([]); 12313 } 12314 12315 return $([]); 12316} 12317 12318function prevAll(selector) { 12319 const prevEls = []; 12320 let el = this[0]; 12321 if (!el) return $([]); 12322 12323 while (el.previousElementSibling) { 12324 const prev = el.previousElementSibling; // eslint-disable-line 12325 12326 if (selector) { 12327 if ($(prev).is(selector)) prevEls.push(prev); 12328 } else prevEls.push(prev); 12329 12330 el = prev; 12331 } 12332 12333 return $(prevEls); 12334} 12335 12336function siblings(selector) { 12337 return this.nextAll(selector).add(this.prevAll(selector)); 12338} 12339 12340function parent(selector) { 12341 const parents = []; // eslint-disable-line 12342 12343 for (let i = 0; i < this.length; i += 1) { 12344 if (this[i].parentNode !== null) { 12345 if (selector) { 12346 if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode); 12347 } else { 12348 parents.push(this[i].parentNode); 12349 } 12350 } 12351 } 12352 12353 return $(parents); 12354} 12355 12356function parents(selector) { 12357 const parents = []; // eslint-disable-line 12358 12359 for (let i = 0; i < this.length; i += 1) { 12360 let parent = this[i].parentNode; // eslint-disable-line 12361 12362 while (parent) { 12363 if (selector) { 12364 if ($(parent).is(selector)) parents.push(parent); 12365 } else { 12366 parents.push(parent); 12367 } 12368 12369 parent = parent.parentNode; 12370 } 12371 } 12372 12373 return $(parents); 12374} 12375 12376function closest(selector) { 12377 let closest = this; // eslint-disable-line 12378 12379 if (typeof selector === 'undefined') { 12380 return $([]); 12381 } 12382 12383 if (!closest.is(selector)) { 12384 closest = closest.parents(selector).eq(0); 12385 } 12386 12387 return closest; 12388} 12389 12390function find(selector) { 12391 const foundElements = []; 12392 12393 for (let i = 0; i < this.length; i += 1) { 12394 const found = this[i].querySelectorAll(selector); 12395 12396 for (let j = 0; j < found.length; j += 1) { 12397 foundElements.push(found[j]); 12398 } 12399 } 12400 12401 return $(foundElements); 12402} 12403 12404function children(selector) { 12405 const children = []; // eslint-disable-line 12406 12407 for (let i = 0; i < this.length; i += 1) { 12408 const childNodes = this[i].children; 12409 12410 for (let j = 0; j < childNodes.length; j += 1) { 12411 if (!selector || $(childNodes[j]).is(selector)) { 12412 children.push(childNodes[j]); 12413 } 12414 } 12415 } 12416 12417 return $(children); 12418} 12419 12420function remove() { 12421 for (let i = 0; i < this.length; i += 1) { 12422 if (this[i].parentNode) this[i].parentNode.removeChild(this[i]); 12423 } 12424 12425 return this; 12426} 12427 12428function detach() { 12429 return this.remove(); 12430} 12431 12432function add(...els) { 12433 const dom = this; 12434 let i; 12435 let j; 12436 12437 for (i = 0; i < els.length; i += 1) { 12438 const toAdd = $(els[i]); 12439 12440 for (j = 0; j < toAdd.length; j += 1) { 12441 dom.push(toAdd[j]); 12442 } 12443 } 12444 12445 return dom; 12446} 12447 12448function empty() { 12449 for (let i = 0; i < this.length; i += 1) { 12450 const el = this[i]; 12451 12452 if (el.nodeType === 1) { 12453 for (let j = 0; j < el.childNodes.length; j += 1) { 12454 if (el.childNodes[j].parentNode) { 12455 el.childNodes[j].parentNode.removeChild(el.childNodes[j]); 12456 } 12457 } 12458 12459 el.textContent = ''; 12460 } 12461 } 12462 12463 return this; 12464} 12465 12466// eslint-disable-next-line 12467 12468function scrollTo(...args) { 12469 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 12470 let [left, top, duration, easing, callback] = args; 12471 12472 if (args.length === 4 && typeof easing === 'function') { 12473 callback = easing; 12474 [left, top, duration, callback, easing] = args; 12475 } 12476 12477 if (typeof easing === 'undefined') easing = 'swing'; 12478 return this.each(function animate() { 12479 const el = this; 12480 let currentTop; 12481 let currentLeft; 12482 let maxTop; 12483 let maxLeft; 12484 let newTop; 12485 let newLeft; 12486 let scrollTop; // eslint-disable-line 12487 12488 let scrollLeft; // eslint-disable-line 12489 12490 let animateTop = top > 0 || top === 0; 12491 let animateLeft = left > 0 || left === 0; 12492 12493 if (typeof easing === 'undefined') { 12494 easing = 'swing'; 12495 } 12496 12497 if (animateTop) { 12498 currentTop = el.scrollTop; 12499 12500 if (!duration) { 12501 el.scrollTop = top; 12502 } 12503 } 12504 12505 if (animateLeft) { 12506 currentLeft = el.scrollLeft; 12507 12508 if (!duration) { 12509 el.scrollLeft = left; 12510 } 12511 } 12512 12513 if (!duration) return; 12514 12515 if (animateTop) { 12516 maxTop = el.scrollHeight - el.offsetHeight; 12517 newTop = Math.max(Math.min(top, maxTop), 0); 12518 } 12519 12520 if (animateLeft) { 12521 maxLeft = el.scrollWidth - el.offsetWidth; 12522 newLeft = Math.max(Math.min(left, maxLeft), 0); 12523 } 12524 12525 let startTime = null; 12526 if (animateTop && newTop === currentTop) animateTop = false; 12527 if (animateLeft && newLeft === currentLeft) animateLeft = false; 12528 12529 function render(time = new Date().getTime()) { 12530 if (startTime === null) { 12531 startTime = time; 12532 } 12533 12534 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 12535 const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2; 12536 let done; 12537 if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop); 12538 if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft); 12539 12540 if (animateTop && newTop > currentTop && scrollTop >= newTop) { 12541 el.scrollTop = newTop; 12542 done = true; 12543 } 12544 12545 if (animateTop && newTop < currentTop && scrollTop <= newTop) { 12546 el.scrollTop = newTop; 12547 done = true; 12548 } 12549 12550 if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) { 12551 el.scrollLeft = newLeft; 12552 done = true; 12553 } 12554 12555 if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) { 12556 el.scrollLeft = newLeft; 12557 done = true; 12558 } 12559 12560 if (done) { 12561 if (callback) callback(); 12562 return; 12563 } 12564 12565 if (animateTop) el.scrollTop = scrollTop; 12566 if (animateLeft) el.scrollLeft = scrollLeft; 12567 window.requestAnimationFrame(render); 12568 } 12569 12570 window.requestAnimationFrame(render); 12571 }); 12572} // scrollTop(top, duration, easing, callback) { 12573 12574 12575function scrollTop(...args) { 12576 let [top, duration, easing, callback] = args; 12577 12578 if (args.length === 3 && typeof easing === 'function') { 12579 [top, duration, callback, easing] = args; 12580 } 12581 12582 const dom = this; 12583 12584 if (typeof top === 'undefined') { 12585 if (dom.length > 0) return dom[0].scrollTop; 12586 return null; 12587 } 12588 12589 return dom.scrollTo(undefined, top, duration, easing, callback); 12590} 12591 12592function scrollLeft(...args) { 12593 let [left, duration, easing, callback] = args; 12594 12595 if (args.length === 3 && typeof easing === 'function') { 12596 [left, duration, callback, easing] = args; 12597 } 12598 12599 const dom = this; 12600 12601 if (typeof left === 'undefined') { 12602 if (dom.length > 0) return dom[0].scrollLeft; 12603 return null; 12604 } 12605 12606 return dom.scrollTo(left, undefined, duration, easing, callback); 12607} 12608 12609// eslint-disable-next-line 12610 12611function animate(initialProps, initialParams) { 12612 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 12613 const els = this; 12614 const a = { 12615 props: Object.assign({}, initialProps), 12616 params: Object.assign({ 12617 duration: 300, 12618 easing: 'swing' // or 'linear' 12619 12620 /* Callbacks 12621 begin(elements) 12622 complete(elements) 12623 progress(elements, complete, remaining, start, tweenValue) 12624 */ 12625 12626 }, initialParams), 12627 elements: els, 12628 animating: false, 12629 que: [], 12630 12631 easingProgress(easing, progress) { 12632 if (easing === 'swing') { 12633 return 0.5 - Math.cos(progress * Math.PI) / 2; 12634 } 12635 12636 if (typeof easing === 'function') { 12637 return easing(progress); 12638 } 12639 12640 return progress; 12641 }, 12642 12643 stop() { 12644 if (a.frameId) { 12645 window.cancelAnimationFrame(a.frameId); 12646 } 12647 12648 a.animating = false; 12649 a.elements.each(el => { 12650 const element = el; 12651 delete element.dom7AnimateInstance; 12652 }); 12653 a.que = []; 12654 }, 12655 12656 done(complete) { 12657 a.animating = false; 12658 a.elements.each(el => { 12659 const element = el; 12660 delete element.dom7AnimateInstance; 12661 }); 12662 if (complete) complete(els); 12663 12664 if (a.que.length > 0) { 12665 const que = a.que.shift(); 12666 a.animate(que[0], que[1]); 12667 } 12668 }, 12669 12670 animate(props, params) { 12671 if (a.animating) { 12672 a.que.push([props, params]); 12673 return a; 12674 } 12675 12676 const elements = []; // Define & Cache Initials & Units 12677 12678 a.elements.each((el, index) => { 12679 let initialFullValue; 12680 let initialValue; 12681 let unit; 12682 let finalValue; 12683 let finalFullValue; 12684 if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a; 12685 elements[index] = { 12686 container: el 12687 }; 12688 Object.keys(props).forEach(prop => { 12689 initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.'); 12690 initialValue = parseFloat(initialFullValue); 12691 unit = initialFullValue.replace(initialValue, ''); 12692 finalValue = parseFloat(props[prop]); 12693 finalFullValue = props[prop] + unit; 12694 elements[index][prop] = { 12695 initialFullValue, 12696 initialValue, 12697 unit, 12698 finalValue, 12699 finalFullValue, 12700 currentValue: initialValue 12701 }; 12702 }); 12703 }); 12704 let startTime = null; 12705 let time; 12706 let elementsDone = 0; 12707 let propsDone = 0; 12708 let done; 12709 let began = false; 12710 a.animating = true; 12711 12712 function render() { 12713 time = new Date().getTime(); 12714 let progress; 12715 let easeProgress; // let el; 12716 12717 if (!began) { 12718 began = true; 12719 if (params.begin) params.begin(els); 12720 } 12721 12722 if (startTime === null) { 12723 startTime = time; 12724 } 12725 12726 if (params.progress) { 12727 // eslint-disable-next-line 12728 params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime); 12729 } 12730 12731 elements.forEach(element => { 12732 const el = element; 12733 if (done || el.done) return; 12734 Object.keys(props).forEach(prop => { 12735 if (done || el.done) return; 12736 progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0); 12737 easeProgress = a.easingProgress(params.easing, progress); 12738 const { 12739 initialValue, 12740 finalValue, 12741 unit 12742 } = el[prop]; 12743 el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue); 12744 const currentValue = el[prop].currentValue; 12745 12746 if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) { 12747 el.container.style[prop] = finalValue + unit; 12748 propsDone += 1; 12749 12750 if (propsDone === Object.keys(props).length) { 12751 el.done = true; 12752 elementsDone += 1; 12753 } 12754 12755 if (elementsDone === elements.length) { 12756 done = true; 12757 } 12758 } 12759 12760 if (done) { 12761 a.done(params.complete); 12762 return; 12763 } 12764 12765 el.container.style[prop] = currentValue + unit; 12766 }); 12767 }); 12768 if (done) return; // Then call 12769 12770 a.frameId = window.requestAnimationFrame(render); 12771 } 12772 12773 a.frameId = window.requestAnimationFrame(render); 12774 return a; 12775 } 12776 12777 }; 12778 12779 if (a.elements.length === 0) { 12780 return els; 12781 } 12782 12783 let animateInstance; 12784 12785 for (let i = 0; i < a.elements.length; i += 1) { 12786 if (a.elements[i].dom7AnimateInstance) { 12787 animateInstance = a.elements[i].dom7AnimateInstance; 12788 } else a.elements[i].dom7AnimateInstance = a; 12789 } 12790 12791 if (!animateInstance) { 12792 animateInstance = a; 12793 } 12794 12795 if (initialProps === 'stop') { 12796 animateInstance.stop(); 12797 } else { 12798 animateInstance.animate(a.props, a.params); 12799 } 12800 12801 return els; 12802} 12803 12804function stop() { 12805 const els = this; 12806 12807 for (let i = 0; i < els.length; i += 1) { 12808 if (els[i].dom7AnimateInstance) { 12809 els[i].dom7AnimateInstance.stop(); 12810 } 12811 } 12812} 12813 12814const noTrigger = 'resize scroll'.split(' '); 12815 12816function shortcut(name) { 12817 function eventHandler(...args) { 12818 if (typeof args[0] === 'undefined') { 12819 for (let i = 0; i < this.length; i += 1) { 12820 if (noTrigger.indexOf(name) < 0) { 12821 if (name in this[i]) this[i][name]();else { 12822 $(this[i]).trigger(name); 12823 } 12824 } 12825 } 12826 12827 return this; 12828 } 12829 12830 return this.on(name, ...args); 12831 } 12832 12833 return eventHandler; 12834} 12835 12836const click = shortcut('click'); 12837const blur = shortcut('blur'); 12838const focus = shortcut('focus'); 12839const focusin = shortcut('focusin'); 12840const focusout = shortcut('focusout'); 12841const keyup = shortcut('keyup'); 12842const keydown = shortcut('keydown'); 12843const keypress = shortcut('keypress'); 12844const submit = shortcut('submit'); 12845const change = shortcut('change'); 12846const mousedown = shortcut('mousedown'); 12847const mousemove = shortcut('mousemove'); 12848const mouseup = shortcut('mouseup'); 12849const mouseenter = shortcut('mouseenter'); 12850const mouseleave = shortcut('mouseleave'); 12851const mouseout = shortcut('mouseout'); 12852const mouseover = shortcut('mouseover'); 12853const touchstart = shortcut('touchstart'); 12854const touchend = shortcut('touchend'); 12855const touchmove = shortcut('touchmove'); 12856const resize = shortcut('resize'); 12857const scroll = shortcut('scroll'); 12858 12859/* harmony default export */ __webpack_exports__["default"] = ($); 12860 12861 12862 12863/***/ }), 12864
vendor: 388 bytes, lines 12865-12877
12865/***/ "./node_modules/form-data/lib/browser.js": 12866/*!***********************************************!*\ 12867 !*** ./node_modules/form-data/lib/browser.js ***! 12868 \***********************************************/ 12869/*! no static exports found */ 12870/***/ (function(module, exports) { 12871 12872/* eslint-env browser */ 12873module.exports = typeof self == 'object' ? self.FormData : window.FormData; 12874 12875 12876/***/ }), 12877
vendor: 2,409 bytes, lines 12878-12973
12878/***/ "./node_modules/ieee754/index.js": 12879/*!***************************************!*\ 12880 !*** ./node_modules/ieee754/index.js ***! 12881 \***************************************/ 12882/*! no static exports found */ 12883/***/ (function(module, exports) { 12884 12885/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */ 12886exports.read = function (buffer, offset, isLE, mLen, nBytes) { 12887 var e, m 12888 var eLen = (nBytes * 8) - mLen - 1 12889 var eMax = (1 << eLen) - 1 12890 var eBias = eMax >> 1 12891 var nBits = -7 12892 var i = isLE ? (nBytes - 1) : 0 12893 var d = isLE ? -1 : 1 12894 var s = buffer[offset + i] 12895 12896 i += d 12897 12898 e = s & ((1 << (-nBits)) - 1) 12899 s >>= (-nBits) 12900 nBits += eLen 12901 for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {} 12902 12903 m = e & ((1 << (-nBits)) - 1) 12904 e >>= (-nBits) 12905 nBits += mLen 12906 for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {} 12907 12908 if (e === 0) { 12909 e = 1 - eBias 12910 } else if (e === eMax) { 12911 return m ? NaN : ((s ? -1 : 1) * Infinity) 12912 } else { 12913 m = m + Math.pow(2, mLen) 12914 e = e - eBias 12915 } 12916 return (s ? -1 : 1) * m * Math.pow(2, e - mLen) 12917} 12918 12919exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { 12920 var e, m, c 12921 var eLen = (nBytes * 8) - mLen - 1 12922 var eMax = (1 << eLen) - 1 12923 var eBias = eMax >> 1 12924 var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) 12925 var i = isLE ? 0 : (nBytes - 1) 12926 var d = isLE ? 1 : -1 12927 var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 12928 12929 value = Math.abs(value) 12930 12931 if (isNaN(value) || value === Infinity) { 12932 m = isNaN(value) ? 1 : 0 12933 e = eMax 12934 } else { 12935 e = Math.floor(Math.log(value) / Math.LN2) 12936 if (value * (c = Math.pow(2, -e)) < 1) { 12937 e-- 12938 c *= 2 12939 } 12940 if (e + eBias >= 1) { 12941 value += rt / c 12942 } else { 12943 value += rt * Math.pow(2, 1 - eBias) 12944 } 12945 if (value * c >= 2) { 12946 e++ 12947 c /= 2 12948 } 12949 12950 if (e + eBias >= eMax) { 12951 m = 0 12952 e = eMax 12953 } else if (e + eBias >= 1) { 12954 m = ((value * c) - 1) * Math.pow(2, mLen) 12955 e = e + eBias 12956 } else { 12957 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) 12958 e = 0 12959 } 12960 } 12961 12962 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} 12963 12964 e = (e << mLen) | m 12965 eLen += mLen 12966 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} 12967 12968 buffer[offset + i - d] |= s * 128 12969} 12970 12971 12972/***/ }), 12973
vendor: 387 bytes, lines 12974-12989
12974/***/ "./node_modules/isarray/index.js": 12975/*!***************************************!*\ 12976 !*** ./node_modules/isarray/index.js ***! 12977 \***************************************/ 12978/*! no static exports found */ 12979/***/ (function(module, exports) { 12980 12981var toString = {}.toString; 12982 12983module.exports = Array.isArray || function (arr) { 12984 return toString.call(arr) == '[object Array]'; 12985}; 12986 12987 12988/***/ }), 12989
vendor: 294,166 bytes, lines 12990-23994
12990/***/ "./node_modules/jquery/dist/jquery.js": 12991/*!********************************************!*\ 12992 !*** ./node_modules/jquery/dist/jquery.js ***! 12993 \********************************************/ 12994/*! no static exports found */ 12995/***/ (function(module, exports, __webpack_require__) { 12996 12997var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! 12998 * jQuery JavaScript Library v3.6.3 12999 * https://jquery.com/ 13000 * 13001 * Includes Sizzle.js 13002 * https://sizzlejs.com/ 13003 * 13004 * Copyright OpenJS Foundation and other contributors 13005 * Released under the MIT license 13006 * https://jquery.org/license 13007 * 13008 * Date: 2022-12-20T21:28Z 13009 */ 13010( function( global, factory ) { 13011 13012 "use strict"; 13013 13014 if ( true && typeof module.exports === "object" ) { 13015 13016 // For CommonJS and CommonJS-like environments where a proper `window` 13017 // is present, execute the factory and get jQuery. 13018 // For environments that do not have a `window` with a `document` 13019 // (such as Node.js), expose a factory as module.exports. 13020 // This accentuates the need for the creation of a real `window`. 13021 // e.g. var jQuery = require("jquery")(window); 13022 // See ticket trac-14549 for more info. 13023 module.exports = global.document ? 13024 factory( global, true ) : 13025 function( w ) { 13026 if ( !w.document ) { 13027 throw new Error( "jQuery requires a window with a document" ); 13028 } 13029 return factory( w ); 13030 }; 13031 } else { 13032 factory( global ); 13033 } 13034 13035// Pass this if window is not defined yet 13036} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { 13037 13038// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 13039// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode 13040// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common 13041// enough that all such attempts are guarded in a try block. 13042"use strict"; 13043 13044var arr = []; 13045 13046var getProto = Object.getPrototypeOf; 13047 13048var slice = arr.slice; 13049 13050var flat = arr.flat ? function( array ) { 13051 return arr.flat.call( array ); 13052} : function( array ) { 13053 return arr.concat.apply( [], array ); 13054}; 13055 13056 13057var push = arr.push; 13058 13059var indexOf = arr.indexOf; 13060 13061var class2type = {}; 13062 13063var toString = class2type.toString; 13064 13065var hasOwn = class2type.hasOwnProperty; 13066 13067var fnToString = hasOwn.toString; 13068 13069var ObjectFunctionString = fnToString.call( Object ); 13070 13071var support = {}; 13072 13073var isFunction = function isFunction( obj ) { 13074 13075 // Support: Chrome <=57, Firefox <=52 13076 // In some browsers, typeof returns "function" for HTML <object> elements 13077 // (i.e., `typeof document.createElement( "object" ) === "function"`). 13078 // We don't want to classify *any* DOM node as a function. 13079 // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 13080 // Plus for old WebKit, typeof returns "function" for HTML collections 13081 // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) 13082 return typeof obj === "function" && typeof obj.nodeType !== "number" && 13083 typeof obj.item !== "function"; 13084 }; 13085 13086 13087var isWindow = function isWindow( obj ) { 13088 return obj != null && obj === obj.window; 13089 }; 13090 13091 13092var document = window.document; 13093 13094 13095 13096 var preservedScriptAttributes = { 13097 type: true, 13098 src: true, 13099 nonce: true, 13100 noModule: true 13101 }; 13102 13103 function DOMEval( code, node, doc ) { 13104 doc = doc || document; 13105 13106 var i, val, 13107 script = doc.createElement( "script" ); 13108 13109 script.text = code; 13110 if ( node ) { 13111 for ( i in preservedScriptAttributes ) { 13112 13113 // Support: Firefox 64+, Edge 18+ 13114 // Some browsers don't support the "nonce" property on scripts. 13115 // On the other hand, just using `getAttribute` is not enough as 13116 // the `nonce` attribute is reset to an empty string whenever it 13117 // becomes browsing-context connected. 13118 // See https://github.com/whatwg/html/issues/2369 13119 // See https://html.spec.whatwg.org/#nonce-attributes 13120 // The `node.getAttribute` check was added for the sake of 13121 // `jQuery.globalEval` so that it can fake a nonce-containing node 13122 // via an object. 13123 val = node[ i ] || node.getAttribute && node.getAttribute( i ); 13124 if ( val ) { 13125 script.setAttribute( i, val ); 13126 } 13127 } 13128 } 13129 doc.head.appendChild( script ).parentNode.removeChild( script ); 13130 } 13131 13132 13133function toType( obj ) { 13134 if ( obj == null ) { 13135 return obj + ""; 13136 } 13137 13138 // Support: Android <=2.3 only (functionish RegExp) 13139 return typeof obj === "object" || typeof obj === "function" ? 13140 class2type[ toString.call( obj ) ] || "object" : 13141 typeof obj; 13142} 13143/* global Symbol */ 13144// Defining this global in .eslintrc.json would create a danger of using the global 13145// unguarded in another place, it seems safer to define global only for this module 13146 13147 13148 13149var 13150 version = "3.6.3", 13151 13152 // Define a local copy of jQuery 13153 jQuery = function( selector, context ) { 13154 13155 // The jQuery object is actually just the init constructor 'enhanced' 13156 // Need init if jQuery is called (just allow error to be thrown if not included) 13157 return new jQuery.fn.init( selector, context ); 13158 }; 13159 13160jQuery.fn = jQuery.prototype = { 13161 13162 // The current version of jQuery being used 13163 jquery: version, 13164 13165 constructor: jQuery, 13166 13167 // The default length of a jQuery object is 0 13168 length: 0, 13169 13170 toArray: function() { 13171 return slice.call( this ); 13172 }, 13173 13174 // Get the Nth element in the matched element set OR 13175 // Get the whole matched element set as a clean array 13176 get: function( num ) { 13177 13178 // Return all the elements in a clean array 13179 if ( num == null ) { 13180 return slice.call( this ); 13181 } 13182 13183 // Return just the one element from the set 13184 return num < 0 ? this[ num + this.length ] : this[ num ]; 13185 }, 13186 13187 // Take an array of elements and push it onto the stack 13188 // (returning the new matched element set) 13189 pushStack: function( elems ) { 13190 13191 // Build a new jQuery matched element set 13192 var ret = jQuery.merge( this.constructor(), elems ); 13193 13194 // Add the old object onto the stack (as a reference) 13195 ret.prevObject = this; 13196 13197 // Return the newly-formed element set 13198 return ret; 13199 }, 13200 13201 // Execute a callback for every element in the matched set. 13202 each: function( callback ) { 13203 return jQuery.each( this, callback ); 13204 }, 13205 13206 map: function( callback ) { 13207 return this.pushStack( jQuery.map( this, function( elem, i ) { 13208 return callback.call( elem, i, elem ); 13209 } ) ); 13210 }, 13211 13212 slice: function() { 13213 return this.pushStack( slice.apply( this, arguments ) ); 13214 }, 13215 13216 first: function() { 13217 return this.eq( 0 ); 13218 }, 13219 13220 last: function() { 13221 return this.eq( -1 ); 13222 }, 13223 13224 even: function() { 13225 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 13226 return ( i + 1 ) % 2; 13227 } ) ); 13228 }, 13229 13230 odd: function() { 13231 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 13232 return i % 2; 13233 } ) ); 13234 }, 13235 13236 eq: function( i ) { 13237 var len = this.length, 13238 j = +i + ( i < 0 ? len : 0 ); 13239 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); 13240 }, 13241 13242 end: function() { 13243 return this.prevObject || this.constructor(); 13244 }, 13245 13246 // For internal use only. 13247 // Behaves like an Array's method, not like a jQuery method. 13248 push: push, 13249 sort: arr.sort, 13250 splice: arr.splice 13251}; 13252 13253jQuery.extend = jQuery.fn.extend = function() { 13254 var options, name, src, copy, copyIsArray, clone, 13255 target = arguments[ 0 ] || {}, 13256 i = 1, 13257 length = arguments.length, 13258 deep = false; 13259 13260 // Handle a deep copy situation 13261 if ( typeof target === "boolean" ) { 13262 deep = target; 13263 13264 // Skip the boolean and the target 13265 target = arguments[ i ] || {}; 13266 i++; 13267 } 13268 13269 // Handle case when target is a string or something (possible in deep copy) 13270 if ( typeof target !== "object" && !isFunction( target ) ) { 13271 target = {}; 13272 } 13273 13274 // Extend jQuery itself if only one argument is passed 13275 if ( i === length ) { 13276 target = this; 13277 i--; 13278 } 13279 13280 for ( ; i < length; i++ ) { 13281 13282 // Only deal with non-null/undefined values 13283 if ( ( options = arguments[ i ] ) != null ) { 13284 13285 // Extend the base object 13286 for ( name in options ) { 13287 copy = options[ name ]; 13288 13289 // Prevent Object.prototype pollution 13290 // Prevent never-ending loop 13291 if ( name === "__proto__" || target === copy ) { 13292 continue; 13293 } 13294 13295 // Recurse if we're merging plain objects or arrays 13296 if ( deep && copy && ( jQuery.isPlainObject( copy ) || 13297 ( copyIsArray = Array.isArray( copy ) ) ) ) { 13298 src = target[ name ]; 13299 13300 // Ensure proper type for the source value 13301 if ( copyIsArray && !Array.isArray( src ) ) { 13302 clone = []; 13303 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { 13304 clone = {}; 13305 } else { 13306 clone = src; 13307 } 13308 copyIsArray = false; 13309 13310 // Never move original objects, clone them 13311 target[ name ] = jQuery.extend( deep, clone, copy ); 13312 13313 // Don't bring in undefined values 13314 } else if ( copy !== undefined ) { 13315 target[ name ] = copy; 13316 } 13317 } 13318 } 13319 } 13320 13321 // Return the modified object 13322 return target; 13323}; 13324 13325jQuery.extend( { 13326 13327 // Unique for each copy of jQuery on the page 13328 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), 13329 13330 // Assume jQuery is ready without the ready module 13331 isReady: true, 13332 13333 error: function( msg ) { 13334 throw new Error( msg ); 13335 }, 13336 13337 noop: function() {}, 13338 13339 isPlainObject: function( obj ) { 13340 var proto, Ctor; 13341 13342 // Detect obvious negatives 13343 // Use toString instead of jQuery.type to catch host objects 13344 if ( !obj || toString.call( obj ) !== "[object Object]" ) { 13345 return false; 13346 } 13347 13348 proto = getProto( obj ); 13349 13350 // Objects with no prototype (e.g., `Object.create( null )`) are plain 13351 if ( !proto ) { 13352 return true; 13353 } 13354 13355 // Objects with prototype are plain iff they were constructed by a global Object function 13356 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; 13357 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; 13358 }, 13359 13360 isEmptyObject: function( obj ) { 13361 var name; 13362 13363 for ( name in obj ) { 13364 return false; 13365 } 13366 return true; 13367 }, 13368 13369 // Evaluates a script in a provided context; falls back to the global one 13370 // if not specified. 13371 globalEval: function( code, options, doc ) { 13372 DOMEval( code, { nonce: options && options.nonce }, doc ); 13373 }, 13374 13375 each: function( obj, callback ) { 13376 var length, i = 0; 13377 13378 if ( isArrayLike( obj ) ) { 13379 length = obj.length; 13380 for ( ; i < length; i++ ) { 13381 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 13382 break; 13383 } 13384 } 13385 } else { 13386 for ( i in obj ) { 13387 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 13388 break; 13389 } 13390 } 13391 } 13392 13393 return obj; 13394 }, 13395 13396 // results is for internal usage only 13397 makeArray: function( arr, results ) { 13398 var ret = results || []; 13399 13400 if ( arr != null ) { 13401 if ( isArrayLike( Object( arr ) ) ) { 13402 jQuery.merge( ret, 13403 typeof arr === "string" ? 13404 [ arr ] : arr 13405 ); 13406 } else { 13407 push.call( ret, arr ); 13408 } 13409 } 13410 13411 return ret; 13412 }, 13413 13414 inArray: function( elem, arr, i ) { 13415 return arr == null ? -1 : indexOf.call( arr, elem, i ); 13416 }, 13417 13418 // Support: Android <=4.0 only, PhantomJS 1 only 13419 // push.apply(_, arraylike) throws on ancient WebKit 13420 merge: function( first, second ) { 13421 var len = +second.length, 13422 j = 0, 13423 i = first.length; 13424 13425 for ( ; j < len; j++ ) { 13426 first[ i++ ] = second[ j ]; 13427 } 13428 13429 first.length = i; 13430 13431 return first; 13432 }, 13433 13434 grep: function( elems, callback, invert ) { 13435 var callbackInverse, 13436 matches = [], 13437 i = 0, 13438 length = elems.length, 13439 callbackExpect = !invert; 13440 13441 // Go through the array, only saving the items 13442 // that pass the validator function 13443 for ( ; i < length; i++ ) { 13444 callbackInverse = !callback( elems[ i ], i ); 13445 if ( callbackInverse !== callbackExpect ) { 13446 matches.push( elems[ i ] ); 13447 } 13448 } 13449 13450 return matches; 13451 }, 13452 13453 // arg is for internal usage only 13454 map: function( elems, callback, arg ) { 13455 var length, value, 13456 i = 0, 13457 ret = []; 13458 13459 // Go through the array, translating each of the items to their new values 13460 if ( isArrayLike( elems ) ) { 13461 length = elems.length; 13462 for ( ; i < length; i++ ) { 13463 value = callback( elems[ i ], i, arg ); 13464 13465 if ( value != null ) { 13466 ret.push( value ); 13467 } 13468 } 13469 13470 // Go through every key on the object, 13471 } else { 13472 for ( i in elems ) { 13473 value = callback( elems[ i ], i, arg ); 13474 13475 if ( value != null ) { 13476 ret.push( value ); 13477 } 13478 } 13479 } 13480 13481 // Flatten any nested arrays 13482 return flat( ret ); 13483 }, 13484 13485 // A global GUID counter for objects 13486 guid: 1, 13487 13488 // jQuery.support is not used in Core but other projects attach their 13489 // properties to it so it needs to exist. 13490 support: support 13491} ); 13492 13493if ( typeof Symbol === "function" ) { 13494 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; 13495} 13496 13497// Populate the class2type map 13498jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), 13499 function( _i, name ) { 13500 class2type[ "[object " + name + "]" ] = name.toLowerCase(); 13501 } ); 13502 13503function isArrayLike( obj ) { 13504 13505 // Support: real iOS 8.2 only (not reproducible in simulator) 13506 // `in` check used to prevent JIT error (gh-2145) 13507 // hasOwn isn't used here due to false negatives 13508 // regarding Nodelist length in IE 13509 var length = !!obj && "length" in obj && obj.length, 13510 type = toType( obj ); 13511 13512 if ( isFunction( obj ) || isWindow( obj ) ) { 13513 return false; 13514 } 13515 13516 return type === "array" || length === 0 || 13517 typeof length === "number" && length > 0 && ( length - 1 ) in obj; 13518} 13519var Sizzle = 13520/*! 13521 * Sizzle CSS Selector Engine v2.3.9 13522 * https://sizzlejs.com/ 13523 * 13524 * Copyright JS Foundation and other contributors 13525 * Released under the MIT license 13526 * https://js.foundation/ 13527 * 13528 * Date: 2022-12-19 13529 */ 13530( function( window ) { 13531var i, 13532 support, 13533 Expr, 13534 getText, 13535 isXML, 13536 tokenize, 13537 compile, 13538 select, 13539 outermostContext, 13540 sortInput, 13541 hasDuplicate, 13542 13543 // Local document vars 13544 setDocument, 13545 document, 13546 docElem, 13547 documentIsHTML, 13548 rbuggyQSA, 13549 rbuggyMatches, 13550 matches, 13551 contains, 13552 13553 // Instance-specific data 13554 expando = "sizzle" + 1 * new Date(), 13555 preferredDoc = window.document, 13556 dirruns = 0, 13557 done = 0, 13558 classCache = createCache(), 13559 tokenCache = createCache(), 13560 compilerCache = createCache(), 13561 nonnativeSelectorCache = createCache(), 13562 sortOrder = function( a, b ) { 13563 if ( a === b ) { 13564 hasDuplicate = true; 13565 } 13566 return 0; 13567 }, 13568 13569 // Instance methods 13570 hasOwn = ( {} ).hasOwnProperty, 13571 arr = [], 13572 pop = arr.pop, 13573 pushNative = arr.push, 13574 push = arr.push, 13575 slice = arr.slice, 13576 13577 // Use a stripped-down indexOf as it's faster than native 13578 // https://jsperf.com/thor-indexof-vs-for/5 13579 indexOf = function( list, elem ) { 13580 var i = 0, 13581 len = list.length; 13582 for ( ; i < len; i++ ) { 13583 if ( list[ i ] === elem ) { 13584 return i; 13585 } 13586 } 13587 return -1; 13588 }, 13589 13590 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + 13591 "ismap|loop|multiple|open|readonly|required|scoped", 13592 13593 // Regular expressions 13594 13595 // http://www.w3.org/TR/css3-selectors/#whitespace 13596 whitespace = "[\\x20\\t\\r\\n\\f]", 13597 13598 // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram 13599 identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + 13600 "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", 13601 13602 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors 13603 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + 13604 13605 // Operator (capture 2) 13606 "*([*^$|!~]?=)" + whitespace + 13607 13608 // "Attribute values must be CSS identifiers [capture 5] 13609 // or strings [capture 3 or capture 4]" 13610 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + 13611 whitespace + "*\\]", 13612 13613 pseudos = ":(" + identifier + ")(?:\\((" + 13614 13615 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: 13616 // 1. quoted (capture 3; capture 4 or capture 5) 13617 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + 13618 13619 // 2. simple (capture 6) 13620 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + 13621 13622 // 3. anything else (capture 2) 13623 ".*" + 13624 ")\\)|)", 13625 13626 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter 13627 rwhitespace = new RegExp( whitespace + "+", "g" ), 13628 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + 13629 whitespace + "+$", "g" ), 13630 13631 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), 13632 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + 13633 "*" ), 13634 rdescend = new RegExp( whitespace + "|>" ), 13635 13636 rpseudo = new RegExp( pseudos ), 13637 ridentifier = new RegExp( "^" + identifier + "$" ), 13638 13639 matchExpr = { 13640 "ID": new RegExp( "^#(" + identifier + ")" ), 13641 "CLASS": new RegExp( "^\\.(" + identifier + ")" ), 13642 "TAG": new RegExp( "^(" + identifier + "|[*])" ), 13643 "ATTR": new RegExp( "^" + attributes ), 13644 "PSEUDO": new RegExp( "^" + pseudos ), 13645 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + 13646 whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + 13647 whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), 13648 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), 13649 13650 // For use in libraries implementing .is() 13651 // We use this for POS matching in `select` 13652 "needsContext": new RegExp( "^" + whitespace + 13653 "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + 13654 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) 13655 }, 13656 13657 rhtml = /HTML$/i, 13658 rinputs = /^(?:input|select|textarea|button)$/i, 13659 rheader = /^h\d$/i, 13660 13661 rnative = /^[^{]+\{\s*\[native \w/, 13662 13663 // Easily-parseable/retrievable ID or TAG or CLASS selectors 13664 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, 13665 13666 rsibling = /[+~]/, 13667 13668 // CSS escapes 13669 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters 13670 runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), 13671 funescape = function( escape, nonHex ) { 13672 var high = "0x" + escape.slice( 1 ) - 0x10000; 13673 13674 return nonHex ? 13675 13676 // Strip the backslash prefix from a non-hex escape sequence 13677 nonHex : 13678 13679 // Replace a hexadecimal escape sequence with the encoded Unicode code point 13680 // Support: IE <=11+ 13681 // For values outside the Basic Multilingual Plane (BMP), manually construct a 13682 // surrogate pair 13683 high < 0 ? 13684 String.fromCharCode( high + 0x10000 ) : 13685 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); 13686 }, 13687 13688 // CSS string/identifier serialization 13689 // https://drafts.csswg.org/cssom/#common-serializing-idioms 13690 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, 13691 fcssescape = function( ch, asCodePoint ) { 13692 if ( asCodePoint ) { 13693 13694 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER 13695 if ( ch === "\0" ) { 13696 return "\uFFFD"; 13697 } 13698 13699 // Control characters and (dependent upon position) numbers get escaped as code points 13700 return ch.slice( 0, -1 ) + "\\" + 13701 ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; 13702 } 13703 13704 // Other potentially-special ASCII characters get backslash-escaped 13705 return "\\" + ch; 13706 }, 13707 13708 // Used for iframes 13709 // See setDocument() 13710 // Removing the function wrapper causes a "Permission Denied" 13711 // error in IE 13712 unloadHandler = function() { 13713 setDocument(); 13714 }, 13715 13716 inDisabledFieldset = addCombinator( 13717 function( elem ) { 13718 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; 13719 }, 13720 { dir: "parentNode", next: "legend" } 13721 ); 13722 13723// Optimize for push.apply( _, NodeList ) 13724try { 13725 push.apply( 13726 ( arr = slice.call( preferredDoc.childNodes ) ), 13727 preferredDoc.childNodes 13728 ); 13729 13730 // Support: Android<4.0 13731 // Detect silently failing push.apply 13732 // eslint-disable-next-line no-unused-expressions 13733 arr[ preferredDoc.childNodes.length ].nodeType; 13734} catch ( e ) { 13735 push = { apply: arr.length ? 13736 13737 // Leverage slice if possible 13738 function( target, els ) { 13739 pushNative.apply( target, slice.call( els ) ); 13740 } : 13741 13742 // Support: IE<9 13743 // Otherwise append directly 13744 function( target, els ) { 13745 var j = target.length, 13746 i = 0; 13747 13748 // Can't trust NodeList.length 13749 while ( ( target[ j++ ] = els[ i++ ] ) ) {} 13750 target.length = j - 1; 13751 } 13752 }; 13753} 13754 13755function Sizzle( selector, context, results, seed ) { 13756 var m, i, elem, nid, match, groups, newSelector, 13757 newContext = context && context.ownerDocument, 13758 13759 // nodeType defaults to 9, since context defaults to document 13760 nodeType = context ? context.nodeType : 9; 13761 13762 results = results || []; 13763 13764 // Return early from calls with invalid selector or context 13765 if ( typeof selector !== "string" || !selector || 13766 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { 13767 13768 return results; 13769 } 13770 13771 // Try to shortcut find operations (as opposed to filters) in HTML documents 13772 if ( !seed ) { 13773 setDocument( context ); 13774 context = context || document; 13775 13776 if ( documentIsHTML ) { 13777 13778 // If the selector is sufficiently simple, try using a "get*By*" DOM method 13779 // (excepting DocumentFragment context, where the methods don't exist) 13780 if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { 13781 13782 // ID selector 13783 if ( ( m = match[ 1 ] ) ) { 13784 13785 // Document context 13786 if ( nodeType === 9 ) { 13787 if ( ( elem = context.getElementById( m ) ) ) { 13788 13789 // Support: IE, Opera, Webkit 13790 // TODO: identify versions 13791 // getElementById can match elements by name instead of ID 13792 if ( elem.id === m ) { 13793 results.push( elem ); 13794 return results; 13795 } 13796 } else { 13797 return results; 13798 } 13799 13800 // Element context 13801 } else { 13802 13803 // Support: IE, Opera, Webkit 13804 // TODO: identify versions 13805 // getElementById can match elements by name instead of ID 13806 if ( newContext && ( elem = newContext.getElementById( m ) ) && 13807 contains( context, elem ) && 13808 elem.id === m ) { 13809 13810 results.push( elem ); 13811 return results; 13812 } 13813 } 13814 13815 // Type selector 13816 } else if ( match[ 2 ] ) { 13817 push.apply( results, context.getElementsByTagName( selector ) ); 13818 return results; 13819 13820 // Class selector 13821 } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && 13822 context.getElementsByClassName ) { 13823 13824 push.apply( results, context.getElementsByClassName( m ) ); 13825 return results; 13826 } 13827 } 13828 13829 // Take advantage of querySelectorAll 13830 if ( support.qsa && 13831 !nonnativeSelectorCache[ selector + " " ] && 13832 ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && 13833 13834 // Support: IE 8 only 13835 // Exclude object elements 13836 ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { 13837 13838 newSelector = selector; 13839 newContext = context; 13840 13841 // qSA considers elements outside a scoping root when evaluating child or 13842 // descendant combinators, which is not what we want. 13843 // In such cases, we work around the behavior by prefixing every selector in the 13844 // list with an ID selector referencing the scope context. 13845 // The technique has to be used as well when a leading combinator is used 13846 // as such selectors are not recognized by querySelectorAll. 13847 // Thanks to Andrew Dupont for this technique. 13848 if ( nodeType === 1 && 13849 ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { 13850 13851 // Expand context for sibling selectors 13852 newContext = rsibling.test( selector ) && testContext( context.parentNode ) || 13853 context; 13854 13855 // We can use :scope instead of the ID hack if the browser 13856 // supports it & if we're not changing the context. 13857 if ( newContext !== context || !support.scope ) { 13858 13859 // Capture the context ID, setting it first if necessary 13860 if ( ( nid = context.getAttribute( "id" ) ) ) { 13861 nid = nid.replace( rcssescape, fcssescape ); 13862 } else { 13863 context.setAttribute( "id", ( nid = expando ) ); 13864 } 13865 } 13866 13867 // Prefix every selector in the list 13868 groups = tokenize( selector ); 13869 i = groups.length; 13870 while ( i-- ) { 13871 groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + 13872 toSelector( groups[ i ] ); 13873 } 13874 newSelector = groups.join( "," ); 13875 } 13876 13877 try { 13878 13879 // `qSA` may not throw for unrecognized parts using forgiving parsing: 13880 // https://drafts.csswg.org/selectors/#forgiving-selector 13881 // like the `:has()` pseudo-class: 13882 // https://drafts.csswg.org/selectors/#relational 13883 // `CSS.supports` is still expected to return `false` then: 13884 // https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn 13885 // https://drafts.csswg.org/css-conditional-4/#dfn-support-selector 13886 if ( support.cssSupportsSelector && 13887 13888 // eslint-disable-next-line no-undef 13889 !CSS.supports( "selector(:is(" + newSelector + "))" ) ) { 13890 13891 // Support: IE 11+ 13892 // Throw to get to the same code path as an error directly in qSA. 13893 // Note: once we only support browser supporting 13894 // `CSS.supports('selector(...)')`, we can most likely drop 13895 // the `try-catch`. IE doesn't implement the API. 13896 throw new Error(); 13897 } 13898 13899 push.apply( results, 13900 newContext.querySelectorAll( newSelector ) 13901 ); 13902 return results; 13903 } catch ( qsaError ) { 13904 nonnativeSelectorCache( selector, true ); 13905 } finally { 13906 if ( nid === expando ) { 13907 context.removeAttribute( "id" ); 13908 } 13909 } 13910 } 13911 } 13912 } 13913 13914 // All others 13915 return select( selector.replace( rtrim, "$1" ), context, results, seed ); 13916} 13917 13918/** 13919 * Create key-value caches of limited size 13920 * @returns {function(string, object)} Returns the Object data after storing it on itself with 13921 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) 13922 * deleting the oldest entry 13923 */ 13924function createCache() { 13925 var keys = []; 13926 13927 function cache( key, value ) { 13928 13929 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) 13930 if ( keys.push( key + " " ) > Expr.cacheLength ) { 13931 13932 // Only keep the most recent entries 13933 delete cache[ keys.shift() ]; 13934 } 13935 return ( cache[ key + " " ] = value ); 13936 } 13937 return cache; 13938} 13939 13940/** 13941 * Mark a function for special use by Sizzle 13942 * @param {Function} fn The function to mark 13943 */ 13944function markFunction( fn ) { 13945 fn[ expando ] = true; 13946 return fn; 13947} 13948 13949/** 13950 * Support testing using an element 13951 * @param {Function} fn Passed the created element and returns a boolean result 13952 */ 13953function assert( fn ) { 13954 var el = document.createElement( "fieldset" ); 13955 13956 try { 13957 return !!fn( el ); 13958 } catch ( e ) { 13959 return false; 13960 } finally { 13961 13962 // Remove from its parent by default 13963 if ( el.parentNode ) { 13964 el.parentNode.removeChild( el ); 13965 } 13966 13967 // release memory in IE 13968 el = null; 13969 } 13970} 13971 13972/** 13973 * Adds the same handler for all of the specified attrs 13974 * @param {String} attrs Pipe-separated list of attributes 13975 * @param {Function} handler The method that will be applied 13976 */ 13977function addHandle( attrs, handler ) { 13978 var arr = attrs.split( "|" ), 13979 i = arr.length; 13980 13981 while ( i-- ) { 13982 Expr.attrHandle[ arr[ i ] ] = handler; 13983 } 13984} 13985 13986/** 13987 * Checks document order of two siblings 13988 * @param {Element} a 13989 * @param {Element} b 13990 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b 13991 */ 13992function siblingCheck( a, b ) { 13993 var cur = b && a, 13994 diff = cur && a.nodeType === 1 && b.nodeType === 1 && 13995 a.sourceIndex - b.sourceIndex; 13996 13997 // Use IE sourceIndex if available on both nodes 13998 if ( diff ) { 13999 return diff; 14000 } 14001 14002 // Check if b follows a 14003 if ( cur ) { 14004 while ( ( cur = cur.nextSibling ) ) { 14005 if ( cur === b ) { 14006 return -1; 14007 } 14008 } 14009 } 14010 14011 return a ? 1 : -1; 14012} 14013 14014/** 14015 * Returns a function to use in pseudos for input types 14016 * @param {String} type 14017 */ 14018function createInputPseudo( type ) { 14019 return function( elem ) { 14020 var name = elem.nodeName.toLowerCase(); 14021 return name === "input" && elem.type === type; 14022 }; 14023} 14024 14025/** 14026 * Returns a function to use in pseudos for buttons 14027 * @param {String} type 14028 */ 14029function createButtonPseudo( type ) { 14030 return function( elem ) { 14031 var name = elem.nodeName.toLowerCase(); 14032 return ( name === "input" || name === "button" ) && elem.type === type; 14033 }; 14034} 14035 14036/** 14037 * Returns a function to use in pseudos for :enabled/:disabled 14038 * @param {Boolean} disabled true for :disabled; false for :enabled 14039 */ 14040function createDisabledPseudo( disabled ) { 14041 14042 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable 14043 return function( elem ) { 14044 14045 // Only certain elements can match :enabled or :disabled 14046 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled 14047 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled 14048 if ( "form" in elem ) { 14049 14050 // Check for inherited disabledness on relevant non-disabled elements: 14051 // * listed form-associated elements in a disabled fieldset 14052 // https://html.spec.whatwg.org/multipage/forms.html#category-listed 14053 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled 14054 // * option elements in a disabled optgroup 14055 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled 14056 // All such elements have a "form" property. 14057 if ( elem.parentNode && elem.disabled === false ) { 14058 14059 // Option elements defer to a parent optgroup if present 14060 if ( "label" in elem ) { 14061 if ( "label" in elem.parentNode ) { 14062 return elem.parentNode.disabled === disabled; 14063 } else { 14064 return elem.disabled === disabled; 14065 } 14066 } 14067 14068 // Support: IE 6 - 11 14069 // Use the isDisabled shortcut property to check for disabled fieldset ancestors 14070 return elem.isDisabled === disabled || 14071 14072 // Where there is no isDisabled, check manually 14073 /* jshint -W018 */ 14074 elem.isDisabled !== !disabled && 14075 inDisabledFieldset( elem ) === disabled; 14076 } 14077 14078 return elem.disabled === disabled; 14079 14080 // Try to winnow out elements that can't be disabled before trusting the disabled property. 14081 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't 14082 // even exist on them, let alone have a boolean value. 14083 } else if ( "label" in elem ) { 14084 return elem.disabled === disabled; 14085 } 14086 14087 // Remaining elements are neither :enabled nor :disabled 14088 return false; 14089 }; 14090} 14091 14092/** 14093 * Returns a function to use in pseudos for positionals 14094 * @param {Function} fn 14095 */ 14096function createPositionalPseudo( fn ) { 14097 return markFunction( function( argument ) { 14098 argument = +argument; 14099 return markFunction( function( seed, matches ) { 14100 var j, 14101 matchIndexes = fn( [], seed.length, argument ), 14102 i = matchIndexes.length; 14103 14104 // Match elements found at the specified indexes 14105 while ( i-- ) { 14106 if ( seed[ ( j = matchIndexes[ i ] ) ] ) { 14107 seed[ j ] = !( matches[ j ] = seed[ j ] ); 14108 } 14109 } 14110 } ); 14111 } ); 14112} 14113 14114/** 14115 * Checks a node for validity as a Sizzle context 14116 * @param {Element|Object=} context 14117 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value 14118 */ 14119function testContext( context ) { 14120 return context && typeof context.getElementsByTagName !== "undefined" && context; 14121} 14122 14123// Expose support vars for convenience 14124support = Sizzle.support = {}; 14125 14126/** 14127 * Detects XML nodes 14128 * @param {Element|Object} elem An element or a document 14129 * @returns {Boolean} True iff elem is a non-HTML XML node 14130 */ 14131isXML = Sizzle.isXML = function( elem ) { 14132 var namespace = elem && elem.namespaceURI, 14133 docElem = elem && ( elem.ownerDocument || elem ).documentElement; 14134 14135 // Support: IE <=8 14136 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes 14137 // https://bugs.jquery.com/ticket/4833 14138 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); 14139}; 14140 14141/** 14142 * Sets document-related variables once based on the current document 14143 * @param {Element|Object} [doc] An element or document object to use to set the document 14144 * @returns {Object} Returns the current document 14145 */ 14146setDocument = Sizzle.setDocument = function( node ) { 14147 var hasCompare, subWindow, 14148 doc = node ? node.ownerDocument || node : preferredDoc; 14149 14150 // Return early if doc is invalid or already selected 14151 // Support: IE 11+, Edge 17 - 18+ 14152 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14153 // two documents; shallow comparisons work. 14154 // eslint-disable-next-line eqeqeq 14155 if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { 14156 return document; 14157 } 14158 14159 // Update global variables 14160 document = doc; 14161 docElem = document.documentElement; 14162 documentIsHTML = !isXML( document ); 14163 14164 // Support: IE 9 - 11+, Edge 12 - 18+ 14165 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) 14166 // Support: IE 11+, Edge 17 - 18+ 14167 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14168 // two documents; shallow comparisons work. 14169 // eslint-disable-next-line eqeqeq 14170 if ( preferredDoc != document && 14171 ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { 14172 14173 // Support: IE 11, Edge 14174 if ( subWindow.addEventListener ) { 14175 subWindow.addEventListener( "unload", unloadHandler, false ); 14176 14177 // Support: IE 9 - 10 only 14178 } else if ( subWindow.attachEvent ) { 14179 subWindow.attachEvent( "onunload", unloadHandler ); 14180 } 14181 } 14182 14183 // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, 14184 // Safari 4 - 5 only, Opera <=11.6 - 12.x only 14185 // IE/Edge & older browsers don't support the :scope pseudo-class. 14186 // Support: Safari 6.0 only 14187 // Safari 6.0 supports :scope but it's an alias of :root there. 14188 support.scope = assert( function( el ) { 14189 docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); 14190 return typeof el.querySelectorAll !== "undefined" && 14191 !el.querySelectorAll( ":scope fieldset div" ).length; 14192 } ); 14193 14194 // Support: Chrome 105+, Firefox 104+, Safari 15.4+ 14195 // Make sure forgiving mode is not used in `CSS.supports( "selector(...)" )`. 14196 // 14197 // `:is()` uses a forgiving selector list as an argument and is widely 14198 // implemented, so it's a good one to test against. 14199 support.cssSupportsSelector = assert( function() { 14200 /* eslint-disable no-undef */ 14201 14202 return CSS.supports( "selector(*)" ) && 14203 14204 // Support: Firefox 78-81 only 14205 // In old Firefox, `:is()` didn't use forgiving parsing. In that case, 14206 // fail this test as there's no selector to test against that. 14207 // `CSS.supports` uses unforgiving parsing 14208 document.querySelectorAll( ":is(:jqfake)" ) && 14209 14210 // `*` is needed as Safari & newer Chrome implemented something in between 14211 // for `:has()` - it throws in `qSA` if it only contains an unsupported 14212 // argument but multiple ones, one of which is supported, are fine. 14213 // We want to play safe in case `:is()` gets the same treatment. 14214 !CSS.supports( "selector(:is(*,:jqfake))" ); 14215 14216 /* eslint-enable */ 14217 } ); 14218 14219 /* Attributes 14220 ---------------------------------------------------------------------- */ 14221 14222 // Support: IE<8 14223 // Verify that getAttribute really returns attributes and not properties 14224 // (excepting IE8 booleans) 14225 support.attributes = assert( function( el ) { 14226 el.className = "i"; 14227 return !el.getAttribute( "className" ); 14228 } ); 14229 14230 /* getElement(s)By* 14231 ---------------------------------------------------------------------- */ 14232 14233 // Check if getElementsByTagName("*") returns only elements 14234 support.getElementsByTagName = assert( function( el ) { 14235 el.appendChild( document.createComment( "" ) ); 14236 return !el.getElementsByTagName( "*" ).length; 14237 } ); 14238 14239 // Support: IE<9 14240 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); 14241 14242 // Support: IE<10 14243 // Check if getElementById returns elements by name 14244 // The broken getElementById methods don't pick up programmatically-set names, 14245 // so use a roundabout getElementsByName test 14246 support.getById = assert( function( el ) { 14247 docElem.appendChild( el ).id = expando; 14248 return !document.getElementsByName || !document.getElementsByName( expando ).length; 14249 } ); 14250 14251 // ID filter and find 14252 if ( support.getById ) { 14253 Expr.filter[ "ID" ] = function( id ) { 14254 var attrId = id.replace( runescape, funescape ); 14255 return function( elem ) { 14256 return elem.getAttribute( "id" ) === attrId; 14257 }; 14258 }; 14259 Expr.find[ "ID" ] = function( id, context ) { 14260 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 14261 var elem = context.getElementById( id ); 14262 return elem ? [ elem ] : []; 14263 } 14264 }; 14265 } else { 14266 Expr.filter[ "ID" ] = function( id ) { 14267 var attrId = id.replace( runescape, funescape ); 14268 return function( elem ) { 14269 var node = typeof elem.getAttributeNode !== "undefined" && 14270 elem.getAttributeNode( "id" ); 14271 return node && node.value === attrId; 14272 }; 14273 }; 14274 14275 // Support: IE 6 - 7 only 14276 // getElementById is not reliable as a find shortcut 14277 Expr.find[ "ID" ] = function( id, context ) { 14278 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 14279 var node, i, elems, 14280 elem = context.getElementById( id ); 14281 14282 if ( elem ) { 14283 14284 // Verify the id attribute 14285 node = elem.getAttributeNode( "id" ); 14286 if ( node && node.value === id ) { 14287 return [ elem ]; 14288 } 14289 14290 // Fall back on getElementsByName 14291 elems = context.getElementsByName( id ); 14292 i = 0; 14293 while ( ( elem = elems[ i++ ] ) ) { 14294 node = elem.getAttributeNode( "id" ); 14295 if ( node && node.value === id ) { 14296 return [ elem ]; 14297 } 14298 } 14299 } 14300 14301 return []; 14302 } 14303 }; 14304 } 14305 14306 // Tag 14307 Expr.find[ "TAG" ] = support.getElementsByTagName ? 14308 function( tag, context ) { 14309 if ( typeof context.getElementsByTagName !== "undefined" ) { 14310 return context.getElementsByTagName( tag ); 14311 14312 // DocumentFragment nodes don't have gEBTN 14313 } else if ( support.qsa ) { 14314 return context.querySelectorAll( tag ); 14315 } 14316 } : 14317 14318 function( tag, context ) { 14319 var elem, 14320 tmp = [], 14321 i = 0, 14322 14323 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too 14324 results = context.getElementsByTagName( tag ); 14325 14326 // Filter out possible comments 14327 if ( tag === "*" ) { 14328 while ( ( elem = results[ i++ ] ) ) { 14329 if ( elem.nodeType === 1 ) { 14330 tmp.push( elem ); 14331 } 14332 } 14333 14334 return tmp; 14335 } 14336 return results; 14337 }; 14338 14339 // Class 14340 Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { 14341 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { 14342 return context.getElementsByClassName( className ); 14343 } 14344 }; 14345 14346 /* QSA/matchesSelector 14347 ---------------------------------------------------------------------- */ 14348 14349 // QSA and matchesSelector support 14350 14351 // matchesSelector(:active) reports false when true (IE9/Opera 11.5) 14352 rbuggyMatches = []; 14353 14354 // qSa(:focus) reports false when true (Chrome 21) 14355 // We allow this because of a bug in IE8/9 that throws an error 14356 // whenever `document.activeElement` is accessed on an iframe 14357 // So, we allow :focus to pass through QSA all the time to avoid the IE error 14358 // See https://bugs.jquery.com/ticket/13378 14359 rbuggyQSA = []; 14360 14361 if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { 14362 14363 // Build QSA regex 14364 // Regex strategy adopted from Diego Perini 14365 assert( function( el ) { 14366 14367 var input; 14368 14369 // Select is set to empty string on purpose 14370 // This is to test IE's treatment of not explicitly 14371 // setting a boolean content attribute, 14372 // since its presence should be enough 14373 // https://bugs.jquery.com/ticket/12359 14374 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" + 14375 "<select id='" + expando + "-\r\\' msallowcapture=''>" + 14376 "<option selected=''></option></select>"; 14377 14378 // Support: IE8, Opera 11-12.16 14379 // Nothing should be selected when empty strings follow ^= or $= or *= 14380 // The test attribute must be unknown in Opera but "safe" for WinRT 14381 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section 14382 if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { 14383 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); 14384 } 14385 14386 // Support: IE8 14387 // Boolean attributes and "value" are not treated correctly 14388 if ( !el.querySelectorAll( "[selected]" ).length ) { 14389 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); 14390 } 14391 14392 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ 14393 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { 14394 rbuggyQSA.push( "~=" ); 14395 } 14396 14397 // Support: IE 11+, Edge 15 - 18+ 14398 // IE 11/Edge don't find elements on a `[name='']` query in some cases. 14399 // Adding a temporary attribute to the document before the selection works 14400 // around the issue. 14401 // Interestingly, IE 10 & older don't seem to have the issue. 14402 input = document.createElement( "input" ); 14403 input.setAttribute( "name", "" ); 14404 el.appendChild( input ); 14405 if ( !el.querySelectorAll( "[name='']" ).length ) { 14406 rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + 14407 whitespace + "*(?:''|\"\")" ); 14408 } 14409 14410 // Webkit/Opera - :checked should return selected option elements 14411 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 14412 // IE8 throws error here and will not see later tests 14413 if ( !el.querySelectorAll( ":checked" ).length ) { 14414 rbuggyQSA.push( ":checked" ); 14415 } 14416 14417 // Support: Safari 8+, iOS 8+ 14418 // https://bugs.webkit.org/show_bug.cgi?id=136851 14419 // In-page `selector#id sibling-combinator selector` fails 14420 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { 14421 rbuggyQSA.push( ".#.+[+~]" ); 14422 } 14423 14424 // Support: Firefox <=3.6 - 5 only 14425 // Old Firefox doesn't throw on a badly-escaped identifier. 14426 el.querySelectorAll( "\\\f" ); 14427 rbuggyQSA.push( "[\\r\\n\\f]" ); 14428 } ); 14429 14430 assert( function( el ) { 14431 el.innerHTML = "<a href='' disabled='disabled'></a>" + 14432 "<select disabled='disabled'><option/></select>"; 14433 14434 // Support: Windows 8 Native Apps 14435 // The type and name attributes are restricted during .innerHTML assignment 14436 var input = document.createElement( "input" ); 14437 input.setAttribute( "type", "hidden" ); 14438 el.appendChild( input ).setAttribute( "name", "D" ); 14439 14440 // Support: IE8 14441 // Enforce case-sensitivity of name attribute 14442 if ( el.querySelectorAll( "[name=d]" ).length ) { 14443 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); 14444 } 14445 14446 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) 14447 // IE8 throws error here and will not see later tests 14448 if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { 14449 rbuggyQSA.push( ":enabled", ":disabled" ); 14450 } 14451 14452 // Support: IE9-11+ 14453 // IE's :disabled selector does not pick up the children of disabled fieldsets 14454 docElem.appendChild( el ).disabled = true; 14455 if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { 14456 rbuggyQSA.push( ":enabled", ":disabled" ); 14457 } 14458 14459 // Support: Opera 10 - 11 only 14460 // Opera 10-11 does not throw on post-comma invalid pseudos 14461 el.querySelectorAll( "*,:x" ); 14462 rbuggyQSA.push( ",.*:" ); 14463 } ); 14464 } 14465 14466 if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || 14467 docElem.webkitMatchesSelector || 14468 docElem.mozMatchesSelector || 14469 docElem.oMatchesSelector || 14470 docElem.msMatchesSelector ) ) ) ) { 14471 14472 assert( function( el ) { 14473 14474 // Check to see if it's possible to do matchesSelector 14475 // on a disconnected node (IE 9) 14476 support.disconnectedMatch = matches.call( el, "*" ); 14477 14478 // This should fail with an exception 14479 // Gecko does not error, returns false instead 14480 matches.call( el, "[s!='']:x" ); 14481 rbuggyMatches.push( "!=", pseudos ); 14482 } ); 14483 } 14484 14485 if ( !support.cssSupportsSelector ) { 14486 14487 // Support: Chrome 105+, Safari 15.4+ 14488 // `:has()` uses a forgiving selector list as an argument so our regular 14489 // `try-catch` mechanism fails to catch `:has()` with arguments not supported 14490 // natively like `:has(:contains("Foo"))`. Where supported & spec-compliant, 14491 // we now use `CSS.supports("selector(:is(SELECTOR_TO_BE_TESTED))")`, but 14492 // outside that we mark `:has` as buggy. 14493 rbuggyQSA.push( ":has" ); 14494 } 14495 14496 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); 14497 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); 14498 14499 /* Contains 14500 ---------------------------------------------------------------------- */ 14501 hasCompare = rnative.test( docElem.compareDocumentPosition ); 14502 14503 // Element contains another 14504 // Purposefully self-exclusive 14505 // As in, an element does not contain itself 14506 contains = hasCompare || rnative.test( docElem.contains ) ? 14507 function( a, b ) { 14508 14509 // Support: IE <9 only 14510 // IE doesn't have `contains` on `document` so we need to check for 14511 // `documentElement` presence. 14512 // We need to fall back to `a` when `documentElement` is missing 14513 // as `ownerDocument` of elements within `<template/>` may have 14514 // a null one - a default behavior of all modern browsers. 14515 var adown = a.nodeType === 9 && a.documentElement || a, 14516 bup = b && b.parentNode; 14517 return a === bup || !!( bup && bup.nodeType === 1 && ( 14518 adown.contains ? 14519 adown.contains( bup ) : 14520 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 14521 ) ); 14522 } : 14523 function( a, b ) { 14524 if ( b ) { 14525 while ( ( b = b.parentNode ) ) { 14526 if ( b === a ) { 14527 return true; 14528 } 14529 } 14530 } 14531 return false; 14532 }; 14533 14534 /* Sorting 14535 ---------------------------------------------------------------------- */ 14536 14537 // Document order sorting 14538 sortOrder = hasCompare ? 14539 function( a, b ) { 14540 14541 // Flag for duplicate removal 14542 if ( a === b ) { 14543 hasDuplicate = true; 14544 return 0; 14545 } 14546 14547 // Sort on method existence if only one input has compareDocumentPosition 14548 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 14549 if ( compare ) { 14550 return compare; 14551 } 14552 14553 // Calculate position if both inputs belong to the same document 14554 // Support: IE 11+, Edge 17 - 18+ 14555 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14556 // two documents; shallow comparisons work. 14557 // eslint-disable-next-line eqeqeq 14558 compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? 14559 a.compareDocumentPosition( b ) : 14560 14561 // Otherwise we know they are disconnected 14562 1; 14563 14564 // Disconnected nodes 14565 if ( compare & 1 || 14566 ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { 14567 14568 // Choose the first element that is related to our preferred document 14569 // Support: IE 11+, Edge 17 - 18+ 14570 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14571 // two documents; shallow comparisons work. 14572 // eslint-disable-next-line eqeqeq 14573 if ( a == document || a.ownerDocument == preferredDoc && 14574 contains( preferredDoc, a ) ) { 14575 return -1; 14576 } 14577 14578 // Support: IE 11+, Edge 17 - 18+ 14579 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14580 // two documents; shallow comparisons work. 14581 // eslint-disable-next-line eqeqeq 14582 if ( b == document || b.ownerDocument == preferredDoc && 14583 contains( preferredDoc, b ) ) { 14584 return 1; 14585 } 14586 14587 // Maintain original order 14588 return sortInput ? 14589 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 14590 0; 14591 } 14592 14593 return compare & 4 ? -1 : 1; 14594 } : 14595 function( a, b ) { 14596 14597 // Exit early if the nodes are identical 14598 if ( a === b ) { 14599 hasDuplicate = true; 14600 return 0; 14601 } 14602 14603 var cur, 14604 i = 0, 14605 aup = a.parentNode, 14606 bup = b.parentNode, 14607 ap = [ a ], 14608 bp = [ b ]; 14609 14610 // Parentless nodes are either documents or disconnected 14611 if ( !aup || !bup ) { 14612 14613 // Support: IE 11+, Edge 17 - 18+ 14614 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14615 // two documents; shallow comparisons work. 14616 /* eslint-disable eqeqeq */ 14617 return a == document ? -1 : 14618 b == document ? 1 : 14619 /* eslint-enable eqeqeq */ 14620 aup ? -1 : 14621 bup ? 1 : 14622 sortInput ? 14623 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 14624 0; 14625 14626 // If the nodes are siblings, we can do a quick check 14627 } else if ( aup === bup ) { 14628 return siblingCheck( a, b ); 14629 } 14630 14631 // Otherwise we need full lists of their ancestors for comparison 14632 cur = a; 14633 while ( ( cur = cur.parentNode ) ) { 14634 ap.unshift( cur ); 14635 } 14636 cur = b; 14637 while ( ( cur = cur.parentNode ) ) { 14638 bp.unshift( cur ); 14639 } 14640 14641 // Walk down the tree looking for a discrepancy 14642 while ( ap[ i ] === bp[ i ] ) { 14643 i++; 14644 } 14645 14646 return i ? 14647 14648 // Do a sibling check if the nodes have a common ancestor 14649 siblingCheck( ap[ i ], bp[ i ] ) : 14650 14651 // Otherwise nodes in our document sort first 14652 // Support: IE 11+, Edge 17 - 18+ 14653 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14654 // two documents; shallow comparisons work. 14655 /* eslint-disable eqeqeq */ 14656 ap[ i ] == preferredDoc ? -1 : 14657 bp[ i ] == preferredDoc ? 1 : 14658 /* eslint-enable eqeqeq */ 14659 0; 14660 }; 14661 14662 return document; 14663}; 14664 14665Sizzle.matches = function( expr, elements ) { 14666 return Sizzle( expr, null, null, elements ); 14667}; 14668 14669Sizzle.matchesSelector = function( elem, expr ) { 14670 setDocument( elem ); 14671 14672 if ( support.matchesSelector && documentIsHTML && 14673 !nonnativeSelectorCache[ expr + " " ] && 14674 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && 14675 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { 14676 14677 try { 14678 var ret = matches.call( elem, expr ); 14679 14680 // IE 9's matchesSelector returns false on disconnected nodes 14681 if ( ret || support.disconnectedMatch || 14682 14683 // As well, disconnected nodes are said to be in a document 14684 // fragment in IE 9 14685 elem.document && elem.document.nodeType !== 11 ) { 14686 return ret; 14687 } 14688 } catch ( e ) { 14689 nonnativeSelectorCache( expr, true ); 14690 } 14691 } 14692 14693 return Sizzle( expr, document, null, [ elem ] ).length > 0; 14694}; 14695 14696Sizzle.contains = function( context, elem ) { 14697 14698 // Set document vars if needed 14699 // Support: IE 11+, Edge 17 - 18+ 14700 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14701 // two documents; shallow comparisons work. 14702 // eslint-disable-next-line eqeqeq 14703 if ( ( context.ownerDocument || context ) != document ) { 14704 setDocument( context ); 14705 } 14706 return contains( context, elem ); 14707}; 14708 14709Sizzle.attr = function( elem, name ) { 14710 14711 // Set document vars if needed 14712 // Support: IE 11+, Edge 17 - 18+ 14713 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 14714 // two documents; shallow comparisons work. 14715 // eslint-disable-next-line eqeqeq 14716 if ( ( elem.ownerDocument || elem ) != document ) { 14717 setDocument( elem ); 14718 } 14719 14720 var fn = Expr.attrHandle[ name.toLowerCase() ], 14721 14722 // Don't get fooled by Object.prototype properties (jQuery #13807) 14723 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? 14724 fn( elem, name, !documentIsHTML ) : 14725 undefined; 14726 14727 return val !== undefined ? 14728 val : 14729 support.attributes || !documentIsHTML ? 14730 elem.getAttribute( name ) : 14731 ( val = elem.getAttributeNode( name ) ) && val.specified ? 14732 val.value : 14733 null; 14734}; 14735 14736Sizzle.escape = function( sel ) { 14737 return ( sel + "" ).replace( rcssescape, fcssescape ); 14738}; 14739 14740Sizzle.error = function( msg ) { 14741 throw new Error( "Syntax error, unrecognized expression: " + msg ); 14742}; 14743 14744/** 14745 * Document sorting and removing duplicates 14746 * @param {ArrayLike} results 14747 */ 14748Sizzle.uniqueSort = function( results ) { 14749 var elem, 14750 duplicates = [], 14751 j = 0, 14752 i = 0; 14753 14754 // Unless we *know* we can detect duplicates, assume their presence 14755 hasDuplicate = !support.detectDuplicates; 14756 sortInput = !support.sortStable && results.slice( 0 ); 14757 results.sort( sortOrder ); 14758 14759 if ( hasDuplicate ) { 14760 while ( ( elem = results[ i++ ] ) ) { 14761 if ( elem === results[ i ] ) { 14762 j = duplicates.push( i ); 14763 } 14764 } 14765 while ( j-- ) { 14766 results.splice( duplicates[ j ], 1 ); 14767 } 14768 } 14769 14770 // Clear input after sorting to release objects 14771 // See https://github.com/jquery/sizzle/pull/225 14772 sortInput = null; 14773 14774 return results; 14775}; 14776 14777/** 14778 * Utility function for retrieving the text value of an array of DOM nodes 14779 * @param {Array|Element} elem 14780 */ 14781getText = Sizzle.getText = function( elem ) { 14782 var node, 14783 ret = "", 14784 i = 0, 14785 nodeType = elem.nodeType; 14786 14787 if ( !nodeType ) { 14788 14789 // If no nodeType, this is expected to be an array 14790 while ( ( node = elem[ i++ ] ) ) { 14791 14792 // Do not traverse comment nodes 14793 ret += getText( node ); 14794 } 14795 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { 14796 14797 // Use textContent for elements 14798 // innerText usage removed for consistency of new lines (jQuery #11153) 14799 if ( typeof elem.textContent === "string" ) { 14800 return elem.textContent; 14801 } else { 14802 14803 // Traverse its children 14804 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 14805 ret += getText( elem ); 14806 } 14807 } 14808 } else if ( nodeType === 3 || nodeType === 4 ) { 14809 return elem.nodeValue; 14810 } 14811 14812 // Do not include comment or processing instruction nodes 14813 14814 return ret; 14815}; 14816 14817Expr = Sizzle.selectors = { 14818 14819 // Can be adjusted by the user 14820 cacheLength: 50, 14821 14822 createPseudo: markFunction, 14823 14824 match: matchExpr, 14825 14826 attrHandle: {}, 14827 14828 find: {}, 14829 14830 relative: { 14831 ">": { dir: "parentNode", first: true }, 14832 " ": { dir: "parentNode" }, 14833 "+": { dir: "previousSibling", first: true }, 14834 "~": { dir: "previousSibling" } 14835 }, 14836 14837 preFilter: { 14838 "ATTR": function( match ) { 14839 match[ 1 ] = match[ 1 ].replace( runescape, funescape ); 14840 14841 // Move the given value to match[3] whether quoted or unquoted 14842 match[ 3 ] = ( match[ 3 ] || match[ 4 ] || 14843 match[ 5 ] || "" ).replace( runescape, funescape ); 14844 14845 if ( match[ 2 ] === "~=" ) { 14846 match[ 3 ] = " " + match[ 3 ] + " "; 14847 } 14848 14849 return match.slice( 0, 4 ); 14850 }, 14851 14852 "CHILD": function( match ) { 14853 14854 /* matches from matchExpr["CHILD"] 14855 1 type (only|nth|...) 14856 2 what (child|of-type) 14857 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 14858 4 xn-component of xn+y argument ([+-]?\d*n|) 14859 5 sign of xn-component 14860 6 x of xn-component 14861 7 sign of y-component 14862 8 y of y-component 14863 */ 14864 match[ 1 ] = match[ 1 ].toLowerCase(); 14865 14866 if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { 14867 14868 // nth-* requires argument 14869 if ( !match[ 3 ] ) { 14870 Sizzle.error( match[ 0 ] ); 14871 } 14872 14873 // numeric x and y parameters for Expr.filter.CHILD 14874 // remember that false/true cast respectively to 0/1 14875 match[ 4 ] = +( match[ 4 ] ? 14876 match[ 5 ] + ( match[ 6 ] || 1 ) : 14877 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); 14878 match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); 14879 14880 // other types prohibit arguments 14881 } else if ( match[ 3 ] ) { 14882 Sizzle.error( match[ 0 ] ); 14883 } 14884 14885 return match; 14886 }, 14887 14888 "PSEUDO": function( match ) { 14889 var excess, 14890 unquoted = !match[ 6 ] && match[ 2 ]; 14891 14892 if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { 14893 return null; 14894 } 14895 14896 // Accept quoted arguments as-is 14897 if ( match[ 3 ] ) { 14898 match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; 14899 14900 // Strip excess characters from unquoted arguments 14901 } else if ( unquoted && rpseudo.test( unquoted ) && 14902 14903 // Get excess from tokenize (recursively) 14904 ( excess = tokenize( unquoted, true ) ) && 14905 14906 // advance to the next closing parenthesis 14907 ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { 14908 14909 // excess is a negative index 14910 match[ 0 ] = match[ 0 ].slice( 0, excess ); 14911 match[ 2 ] = unquoted.slice( 0, excess ); 14912 } 14913 14914 // Return only captures needed by the pseudo filter method (type and argument) 14915 return match.slice( 0, 3 ); 14916 } 14917 }, 14918 14919 filter: { 14920 14921 "TAG": function( nodeNameSelector ) { 14922 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); 14923 return nodeNameSelector === "*" ? 14924 function() { 14925 return true; 14926 } : 14927 function( elem ) { 14928 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; 14929 }; 14930 }, 14931 14932 "CLASS": function( className ) { 14933 var pattern = classCache[ className + " " ]; 14934 14935 return pattern || 14936 ( pattern = new RegExp( "(^|" + whitespace + 14937 ")" + className + "(" + whitespace + "|$)" ) ) && classCache( 14938 className, function( elem ) { 14939 return pattern.test( 14940 typeof elem.className === "string" && elem.className || 14941 typeof elem.getAttribute !== "undefined" && 14942 elem.getAttribute( "class" ) || 14943 "" 14944 ); 14945 } ); 14946 }, 14947 14948 "ATTR": function( name, operator, check ) { 14949 return function( elem ) { 14950 var result = Sizzle.attr( elem, name ); 14951 14952 if ( result == null ) { 14953 return operator === "!="; 14954 } 14955 if ( !operator ) { 14956 return true; 14957 } 14958 14959 result += ""; 14960 14961 /* eslint-disable max-len */ 14962 14963 return operator === "=" ? result === check : 14964 operator === "!=" ? result !== check : 14965 operator === "^=" ? check && result.indexOf( check ) === 0 : 14966 operator === "*=" ? check && result.indexOf( check ) > -1 : 14967 operator === "$=" ? check && result.slice( -check.length ) === check : 14968 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : 14969 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : 14970 false; 14971 /* eslint-enable max-len */ 14972 14973 }; 14974 }, 14975 14976 "CHILD": function( type, what, _argument, first, last ) { 14977 var simple = type.slice( 0, 3 ) !== "nth", 14978 forward = type.slice( -4 ) !== "last", 14979 ofType = what === "of-type"; 14980 14981 return first === 1 && last === 0 ? 14982 14983 // Shortcut for :nth-*(n) 14984 function( elem ) { 14985 return !!elem.parentNode; 14986 } : 14987 14988 function( elem, _context, xml ) { 14989 var cache, uniqueCache, outerCache, node, nodeIndex, start, 14990 dir = simple !== forward ? "nextSibling" : "previousSibling", 14991 parent = elem.parentNode, 14992 name = ofType && elem.nodeName.toLowerCase(), 14993 useCache = !xml && !ofType, 14994 diff = false; 14995 14996 if ( parent ) { 14997 14998 // :(first|last|only)-(child|of-type) 14999 if ( simple ) { 15000 while ( dir ) { 15001 node = elem; 15002 while ( ( node = node[ dir ] ) ) { 15003 if ( ofType ? 15004 node.nodeName.toLowerCase() === name : 15005 node.nodeType === 1 ) { 15006 15007 return false; 15008 } 15009 } 15010 15011 // Reverse direction for :only-* (if we haven't yet done so) 15012 start = dir = type === "only" && !start && "nextSibling"; 15013 } 15014 return true; 15015 } 15016 15017 start = [ forward ? parent.firstChild : parent.lastChild ]; 15018 15019 // non-xml :nth-child(...) stores cache data on `parent` 15020 if ( forward && useCache ) { 15021 15022 // Seek `elem` from a previously-cached index 15023 15024 // ...in a gzip-friendly way 15025 node = parent; 15026 outerCache = node[ expando ] || ( node[ expando ] = {} ); 15027 15028 // Support: IE <9 only 15029 // Defend against cloned attroperties (jQuery gh-1709) 15030 uniqueCache = outerCache[ node.uniqueID ] || 15031 ( outerCache[ node.uniqueID ] = {} ); 15032 15033 cache = uniqueCache[ type ] || []; 15034 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 15035 diff = nodeIndex && cache[ 2 ]; 15036 node = nodeIndex && parent.childNodes[ nodeIndex ]; 15037 15038 while ( ( node = ++nodeIndex && node && node[ dir ] || 15039 15040 // Fallback to seeking `elem` from the start 15041 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 15042 15043 // When found, cache indexes on `parent` and break 15044 if ( node.nodeType === 1 && ++diff && node === elem ) { 15045 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; 15046 break; 15047 } 15048 } 15049 15050 } else { 15051 15052 // Use previously-cached element index if available 15053 if ( useCache ) { 15054 15055 // ...in a gzip-friendly way 15056 node = elem; 15057 outerCache = node[ expando ] || ( node[ expando ] = {} ); 15058 15059 // Support: IE <9 only 15060 // Defend against cloned attroperties (jQuery gh-1709) 15061 uniqueCache = outerCache[ node.uniqueID ] || 15062 ( outerCache[ node.uniqueID ] = {} ); 15063 15064 cache = uniqueCache[ type ] || []; 15065 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 15066 diff = nodeIndex; 15067 } 15068 15069 // xml :nth-child(...) 15070 // or :nth-last-child(...) or :nth(-last)?-of-type(...) 15071 if ( diff === false ) { 15072 15073 // Use the same loop as above to seek `elem` from the start 15074 while ( ( node = ++nodeIndex && node && node[ dir ] || 15075 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 15076 15077 if ( ( ofType ? 15078 node.nodeName.toLowerCase() === name : 15079 node.nodeType === 1 ) && 15080 ++diff ) { 15081 15082 // Cache the index of each encountered element 15083 if ( useCache ) { 15084 outerCache = node[ expando ] || 15085 ( node[ expando ] = {} ); 15086 15087 // Support: IE <9 only 15088 // Defend against cloned attroperties (jQuery gh-1709) 15089 uniqueCache = outerCache[ node.uniqueID ] || 15090 ( outerCache[ node.uniqueID ] = {} ); 15091 15092 uniqueCache[ type ] = [ dirruns, diff ]; 15093 } 15094 15095 if ( node === elem ) { 15096 break; 15097 } 15098 } 15099 } 15100 } 15101 } 15102 15103 // Incorporate the offset, then check against cycle size 15104 diff -= last; 15105 return diff === first || ( diff % first === 0 && diff / first >= 0 ); 15106 } 15107 }; 15108 }, 15109 15110 "PSEUDO": function( pseudo, argument ) { 15111 15112 // pseudo-class names are case-insensitive 15113 // http://www.w3.org/TR/selectors/#pseudo-classes 15114 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters 15115 // Remember that setFilters inherits from pseudos 15116 var args, 15117 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || 15118 Sizzle.error( "unsupported pseudo: " + pseudo ); 15119 15120 // The user may use createPseudo to indicate that 15121 // arguments are needed to create the filter function 15122 // just as Sizzle does 15123 if ( fn[ expando ] ) { 15124 return fn( argument ); 15125 } 15126 15127 // But maintain support for old signatures 15128 if ( fn.length > 1 ) { 15129 args = [ pseudo, pseudo, "", argument ]; 15130 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? 15131 markFunction( function( seed, matches ) { 15132 var idx, 15133 matched = fn( seed, argument ), 15134 i = matched.length; 15135 while ( i-- ) { 15136 idx = indexOf( seed, matched[ i ] ); 15137 seed[ idx ] = !( matches[ idx ] = matched[ i ] ); 15138 } 15139 } ) : 15140 function( elem ) { 15141 return fn( elem, 0, args ); 15142 }; 15143 } 15144 15145 return fn; 15146 } 15147 }, 15148 15149 pseudos: { 15150 15151 // Potentially complex pseudos 15152 "not": markFunction( function( selector ) { 15153 15154 // Trim the selector passed to compile 15155 // to avoid treating leading and trailing 15156 // spaces as combinators 15157 var input = [], 15158 results = [], 15159 matcher = compile( selector.replace( rtrim, "$1" ) ); 15160 15161 return matcher[ expando ] ? 15162 markFunction( function( seed, matches, _context, xml ) { 15163 var elem, 15164 unmatched = matcher( seed, null, xml, [] ), 15165 i = seed.length; 15166 15167 // Match elements unmatched by `matcher` 15168 while ( i-- ) { 15169 if ( ( elem = unmatched[ i ] ) ) { 15170 seed[ i ] = !( matches[ i ] = elem ); 15171 } 15172 } 15173 } ) : 15174 function( elem, _context, xml ) { 15175 input[ 0 ] = elem; 15176 matcher( input, null, xml, results ); 15177 15178 // Don't keep the element (issue #299) 15179 input[ 0 ] = null; 15180 return !results.pop(); 15181 }; 15182 } ), 15183 15184 "has": markFunction( function( selector ) { 15185 return function( elem ) { 15186 return Sizzle( selector, elem ).length > 0; 15187 }; 15188 } ), 15189 15190 "contains": markFunction( function( text ) { 15191 text = text.replace( runescape, funescape ); 15192 return function( elem ) { 15193 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; 15194 }; 15195 } ), 15196 15197 // "Whether an element is represented by a :lang() selector 15198 // is based solely on the element's language value 15199 // being equal to the identifier C, 15200 // or beginning with the identifier C immediately followed by "-". 15201 // The matching of C against the element's language value is performed case-insensitively. 15202 // The identifier C does not have to be a valid language name." 15203 // http://www.w3.org/TR/selectors/#lang-pseudo 15204 "lang": markFunction( function( lang ) { 15205 15206 // lang value must be a valid identifier 15207 if ( !ridentifier.test( lang || "" ) ) { 15208 Sizzle.error( "unsupported lang: " + lang ); 15209 } 15210 lang = lang.replace( runescape, funescape ).toLowerCase(); 15211 return function( elem ) { 15212 var elemLang; 15213 do { 15214 if ( ( elemLang = documentIsHTML ? 15215 elem.lang : 15216 elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { 15217 15218 elemLang = elemLang.toLowerCase(); 15219 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; 15220 } 15221 } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); 15222 return false; 15223 }; 15224 } ), 15225 15226 // Miscellaneous 15227 "target": function( elem ) { 15228 var hash = window.location && window.location.hash; 15229 return hash && hash.slice( 1 ) === elem.id; 15230 }, 15231 15232 "root": function( elem ) { 15233 return elem === docElem; 15234 }, 15235 15236 "focus": function( elem ) { 15237 return elem === document.activeElement && 15238 ( !document.hasFocus || document.hasFocus() ) && 15239 !!( elem.type || elem.href || ~elem.tabIndex ); 15240 }, 15241 15242 // Boolean properties 15243 "enabled": createDisabledPseudo( false ), 15244 "disabled": createDisabledPseudo( true ), 15245 15246 "checked": function( elem ) { 15247 15248 // In CSS3, :checked should return both checked and selected elements 15249 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 15250 var nodeName = elem.nodeName.toLowerCase(); 15251 return ( nodeName === "input" && !!elem.checked ) || 15252 ( nodeName === "option" && !!elem.selected ); 15253 }, 15254 15255 "selected": function( elem ) { 15256 15257 // Accessing this property makes selected-by-default 15258 // options in Safari work properly 15259 if ( elem.parentNode ) { 15260 // eslint-disable-next-line no-unused-expressions 15261 elem.parentNode.selectedIndex; 15262 } 15263 15264 return elem.selected === true; 15265 }, 15266 15267 // Contents 15268 "empty": function( elem ) { 15269 15270 // http://www.w3.org/TR/selectors/#empty-pseudo 15271 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), 15272 // but not by others (comment: 8; processing instruction: 7; etc.) 15273 // nodeType < 6 works because attributes (2) do not appear as children 15274 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 15275 if ( elem.nodeType < 6 ) { 15276 return false; 15277 } 15278 } 15279 return true; 15280 }, 15281 15282 "parent": function( elem ) { 15283 return !Expr.pseudos[ "empty" ]( elem ); 15284 }, 15285 15286 // Element/input types 15287 "header": function( elem ) { 15288 return rheader.test( elem.nodeName ); 15289 }, 15290 15291 "input": function( elem ) { 15292 return rinputs.test( elem.nodeName ); 15293 }, 15294 15295 "button": function( elem ) { 15296 var name = elem.nodeName.toLowerCase(); 15297 return name === "input" && elem.type === "button" || name === "button"; 15298 }, 15299 15300 "text": function( elem ) { 15301 var attr; 15302 return elem.nodeName.toLowerCase() === "input" && 15303 elem.type === "text" && 15304 15305 // Support: IE <10 only 15306 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" 15307 ( ( attr = elem.getAttribute( "type" ) ) == null || 15308 attr.toLowerCase() === "text" ); 15309 }, 15310 15311 // Position-in-collection 15312 "first": createPositionalPseudo( function() { 15313 return [ 0 ]; 15314 } ), 15315 15316 "last": createPositionalPseudo( function( _matchIndexes, length ) { 15317 return [ length - 1 ]; 15318 } ), 15319 15320 "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { 15321 return [ argument < 0 ? argument + length : argument ]; 15322 } ), 15323 15324 "even": createPositionalPseudo( function( matchIndexes, length ) { 15325 var i = 0; 15326 for ( ; i < length; i += 2 ) { 15327 matchIndexes.push( i ); 15328 } 15329 return matchIndexes; 15330 } ), 15331 15332 "odd": createPositionalPseudo( function( matchIndexes, length ) { 15333 var i = 1; 15334 for ( ; i < length; i += 2 ) { 15335 matchIndexes.push( i ); 15336 } 15337 return matchIndexes; 15338 } ), 15339 15340 "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { 15341 var i = argument < 0 ? 15342 argument + length : 15343 argument > length ? 15344 length : 15345 argument; 15346 for ( ; --i >= 0; ) { 15347 matchIndexes.push( i ); 15348 } 15349 return matchIndexes; 15350 } ), 15351 15352 "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { 15353 var i = argument < 0 ? argument + length : argument; 15354 for ( ; ++i < length; ) { 15355 matchIndexes.push( i ); 15356 } 15357 return matchIndexes; 15358 } ) 15359 } 15360}; 15361 15362Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; 15363 15364// Add button/input type pseudos 15365for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { 15366 Expr.pseudos[ i ] = createInputPseudo( i ); 15367} 15368for ( i in { submit: true, reset: true } ) { 15369 Expr.pseudos[ i ] = createButtonPseudo( i ); 15370} 15371 15372// Easy API for creating new setFilters 15373function setFilters() {} 15374setFilters.prototype = Expr.filters = Expr.pseudos; 15375Expr.setFilters = new setFilters(); 15376 15377tokenize = Sizzle.tokenize = function( selector, parseOnly ) { 15378 var matched, match, tokens, type, 15379 soFar, groups, preFilters, 15380 cached = tokenCache[ selector + " " ]; 15381 15382 if ( cached ) { 15383 return parseOnly ? 0 : cached.slice( 0 ); 15384 } 15385 15386 soFar = selector; 15387 groups = []; 15388 preFilters = Expr.preFilter; 15389 15390 while ( soFar ) { 15391 15392 // Comma and first run 15393 if ( !matched || ( match = rcomma.exec( soFar ) ) ) { 15394 if ( match ) { 15395 15396 // Don't consume trailing commas as valid 15397 soFar = soFar.slice( match[ 0 ].length ) || soFar; 15398 } 15399 groups.push( ( tokens = [] ) ); 15400 } 15401 15402 matched = false; 15403 15404 // Combinators 15405 if ( ( match = rcombinators.exec( soFar ) ) ) { 15406 matched = match.shift(); 15407 tokens.push( { 15408 value: matched, 15409 15410 // Cast descendant combinators to space 15411 type: match[ 0 ].replace( rtrim, " " ) 15412 } ); 15413 soFar = soFar.slice( matched.length ); 15414 } 15415 15416 // Filters 15417 for ( type in Expr.filter ) { 15418 if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || 15419 ( match = preFilters[ type ]( match ) ) ) ) { 15420 matched = match.shift(); 15421 tokens.push( { 15422 value: matched, 15423 type: type, 15424 matches: match 15425 } ); 15426 soFar = soFar.slice( matched.length ); 15427 } 15428 } 15429 15430 if ( !matched ) { 15431 break; 15432 } 15433 } 15434 15435 // Return the length of the invalid excess 15436 // if we're just parsing 15437 // Otherwise, throw an error or return tokens 15438 return parseOnly ? 15439 soFar.length : 15440 soFar ? 15441 Sizzle.error( selector ) : 15442 15443 // Cache the tokens 15444 tokenCache( selector, groups ).slice( 0 ); 15445}; 15446 15447function toSelector( tokens ) { 15448 var i = 0, 15449 len = tokens.length, 15450 selector = ""; 15451 for ( ; i < len; i++ ) { 15452 selector += tokens[ i ].value; 15453 } 15454 return selector; 15455} 15456 15457function addCombinator( matcher, combinator, base ) { 15458 var dir = combinator.dir, 15459 skip = combinator.next, 15460 key = skip || dir, 15461 checkNonElements = base && key === "parentNode", 15462 doneName = done++; 15463 15464 return combinator.first ? 15465 15466 // Check against closest ancestor/preceding element 15467 function( elem, context, xml ) { 15468 while ( ( elem = elem[ dir ] ) ) { 15469 if ( elem.nodeType === 1 || checkNonElements ) { 15470 return matcher( elem, context, xml ); 15471 } 15472 } 15473 return false; 15474 } : 15475 15476 // Check against all ancestor/preceding elements 15477 function( elem, context, xml ) { 15478 var oldCache, uniqueCache, outerCache, 15479 newCache = [ dirruns, doneName ]; 15480 15481 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching 15482 if ( xml ) { 15483 while ( ( elem = elem[ dir ] ) ) { 15484 if ( elem.nodeType === 1 || checkNonElements ) { 15485 if ( matcher( elem, context, xml ) ) { 15486 return true; 15487 } 15488 } 15489 } 15490 } else { 15491 while ( ( elem = elem[ dir ] ) ) { 15492 if ( elem.nodeType === 1 || checkNonElements ) { 15493 outerCache = elem[ expando ] || ( elem[ expando ] = {} ); 15494 15495 // Support: IE <9 only 15496 // Defend against cloned attroperties (jQuery gh-1709) 15497 uniqueCache = outerCache[ elem.uniqueID ] || 15498 ( outerCache[ elem.uniqueID ] = {} ); 15499 15500 if ( skip && skip === elem.nodeName.toLowerCase() ) { 15501 elem = elem[ dir ] || elem; 15502 } else if ( ( oldCache = uniqueCache[ key ] ) && 15503 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { 15504 15505 // Assign to newCache so results back-propagate to previous elements 15506 return ( newCache[ 2 ] = oldCache[ 2 ] ); 15507 } else { 15508 15509 // Reuse newcache so results back-propagate to previous elements 15510 uniqueCache[ key ] = newCache; 15511 15512 // A match means we're done; a fail means we have to keep checking 15513 if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { 15514 return true; 15515 } 15516 } 15517 } 15518 } 15519 } 15520 return false; 15521 }; 15522} 15523 15524function elementMatcher( matchers ) { 15525 return matchers.length > 1 ? 15526 function( elem, context, xml ) { 15527 var i = matchers.length; 15528 while ( i-- ) { 15529 if ( !matchers[ i ]( elem, context, xml ) ) { 15530 return false; 15531 } 15532 } 15533 return true; 15534 } : 15535 matchers[ 0 ]; 15536} 15537 15538function multipleContexts( selector, contexts, results ) { 15539 var i = 0, 15540 len = contexts.length; 15541 for ( ; i < len; i++ ) { 15542 Sizzle( selector, contexts[ i ], results ); 15543 } 15544 return results; 15545} 15546 15547function condense( unmatched, map, filter, context, xml ) { 15548 var elem, 15549 newUnmatched = [], 15550 i = 0, 15551 len = unmatched.length, 15552 mapped = map != null; 15553 15554 for ( ; i < len; i++ ) { 15555 if ( ( elem = unmatched[ i ] ) ) { 15556 if ( !filter || filter( elem, context, xml ) ) { 15557 newUnmatched.push( elem ); 15558 if ( mapped ) { 15559 map.push( i ); 15560 } 15561 } 15562 } 15563 } 15564 15565 return newUnmatched; 15566} 15567 15568function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { 15569 if ( postFilter && !postFilter[ expando ] ) { 15570 postFilter = setMatcher( postFilter ); 15571 } 15572 if ( postFinder && !postFinder[ expando ] ) { 15573 postFinder = setMatcher( postFinder, postSelector ); 15574 } 15575 return markFunction( function( seed, results, context, xml ) { 15576 var temp, i, elem, 15577 preMap = [], 15578 postMap = [], 15579 preexisting = results.length, 15580 15581 // Get initial elements from seed or context 15582 elems = seed || multipleContexts( 15583 selector || "*", 15584 context.nodeType ? [ context ] : context, 15585 [] 15586 ), 15587 15588 // Prefilter to get matcher input, preserving a map for seed-results synchronization 15589 matcherIn = preFilter && ( seed || !selector ) ? 15590 condense( elems, preMap, preFilter, context, xml ) : 15591 elems, 15592 15593 matcherOut = matcher ? 15594 15595 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, 15596 postFinder || ( seed ? preFilter : preexisting || postFilter ) ? 15597 15598 // ...intermediate processing is necessary 15599 [] : 15600 15601 // ...otherwise use results directly 15602 results : 15603 matcherIn; 15604 15605 // Find primary matches 15606 if ( matcher ) { 15607 matcher( matcherIn, matcherOut, context, xml ); 15608 } 15609 15610 // Apply postFilter 15611 if ( postFilter ) { 15612 temp = condense( matcherOut, postMap ); 15613 postFilter( temp, [], context, xml ); 15614 15615 // Un-match failing elements by moving them back to matcherIn 15616 i = temp.length; 15617 while ( i-- ) { 15618 if ( ( elem = temp[ i ] ) ) { 15619 matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); 15620 } 15621 } 15622 } 15623 15624 if ( seed ) { 15625 if ( postFinder || preFilter ) { 15626 if ( postFinder ) { 15627 15628 // Get the final matcherOut by condensing this intermediate into postFinder contexts 15629 temp = []; 15630 i = matcherOut.length; 15631 while ( i-- ) { 15632 if ( ( elem = matcherOut[ i ] ) ) { 15633 15634 // Restore matcherIn since elem is not yet a final match 15635 temp.push( ( matcherIn[ i ] = elem ) ); 15636 } 15637 } 15638 postFinder( null, ( matcherOut = [] ), temp, xml ); 15639 } 15640 15641 // Move matched elements from seed to results to keep them synchronized 15642 i = matcherOut.length; 15643 while ( i-- ) { 15644 if ( ( elem = matcherOut[ i ] ) && 15645 ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { 15646 15647 seed[ temp ] = !( results[ temp ] = elem ); 15648 } 15649 } 15650 } 15651 15652 // Add elements to results, through postFinder if defined 15653 } else { 15654 matcherOut = condense( 15655 matcherOut === results ? 15656 matcherOut.splice( preexisting, matcherOut.length ) : 15657 matcherOut 15658 ); 15659 if ( postFinder ) { 15660 postFinder( null, results, matcherOut, xml ); 15661 } else { 15662 push.apply( results, matcherOut ); 15663 } 15664 } 15665 } ); 15666} 15667 15668function matcherFromTokens( tokens ) { 15669 var checkContext, matcher, j, 15670 len = tokens.length, 15671 leadingRelative = Expr.relative[ tokens[ 0 ].type ], 15672 implicitRelative = leadingRelative || Expr.relative[ " " ], 15673 i = leadingRelative ? 1 : 0, 15674 15675 // The foundational matcher ensures that elements are reachable from top-level context(s) 15676 matchContext = addCombinator( function( elem ) { 15677 return elem === checkContext; 15678 }, implicitRelative, true ), 15679 matchAnyContext = addCombinator( function( elem ) { 15680 return indexOf( checkContext, elem ) > -1; 15681 }, implicitRelative, true ), 15682 matchers = [ function( elem, context, xml ) { 15683 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( 15684 ( checkContext = context ).nodeType ? 15685 matchContext( elem, context, xml ) : 15686 matchAnyContext( elem, context, xml ) ); 15687 15688 // Avoid hanging onto element (issue #299) 15689 checkContext = null; 15690 return ret; 15691 } ]; 15692 15693 for ( ; i < len; i++ ) { 15694 if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { 15695 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; 15696 } else { 15697 matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); 15698 15699 // Return special upon seeing a positional matcher 15700 if ( matcher[ expando ] ) { 15701 15702 // Find the next relative operator (if any) for proper handling 15703 j = ++i; 15704 for ( ; j < len; j++ ) { 15705 if ( Expr.relative[ tokens[ j ].type ] ) { 15706 break; 15707 } 15708 } 15709 return setMatcher( 15710 i > 1 && elementMatcher( matchers ), 15711 i > 1 && toSelector( 15712 15713 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 15714 tokens 15715 .slice( 0, i - 1 ) 15716 .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) 15717 ).replace( rtrim, "$1" ), 15718 matcher, 15719 i < j && matcherFromTokens( tokens.slice( i, j ) ), 15720 j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), 15721 j < len && toSelector( tokens ) 15722 ); 15723 } 15724 matchers.push( matcher ); 15725 } 15726 } 15727 15728 return elementMatcher( matchers ); 15729} 15730 15731function matcherFromGroupMatchers( elementMatchers, setMatchers ) { 15732 var bySet = setMatchers.length > 0, 15733 byElement = elementMatchers.length > 0, 15734 superMatcher = function( seed, context, xml, results, outermost ) { 15735 var elem, j, matcher, 15736 matchedCount = 0, 15737 i = "0", 15738 unmatched = seed && [], 15739 setMatched = [], 15740 contextBackup = outermostContext, 15741 15742 // We must always have either seed elements or outermost context 15743 elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), 15744 15745 // Use integer dirruns iff this is the outermost matcher 15746 dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), 15747 len = elems.length; 15748 15749 if ( outermost ) { 15750 15751 // Support: IE 11+, Edge 17 - 18+ 15752 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 15753 // two documents; shallow comparisons work. 15754 // eslint-disable-next-line eqeqeq 15755 outermostContext = context == document || context || outermost; 15756 } 15757 15758 // Add elements passing elementMatchers directly to results 15759 // Support: IE<9, Safari 15760 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id 15761 for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { 15762 if ( byElement && elem ) { 15763 j = 0; 15764 15765 // Support: IE 11+, Edge 17 - 18+ 15766 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 15767 // two documents; shallow comparisons work. 15768 // eslint-disable-next-line eqeqeq 15769 if ( !context && elem.ownerDocument != document ) { 15770 setDocument( elem ); 15771 xml = !documentIsHTML; 15772 } 15773 while ( ( matcher = elementMatchers[ j++ ] ) ) { 15774 if ( matcher( elem, context || document, xml ) ) { 15775 results.push( elem ); 15776 break; 15777 } 15778 } 15779 if ( outermost ) { 15780 dirruns = dirrunsUnique; 15781 } 15782 } 15783 15784 // Track unmatched elements for set filters 15785 if ( bySet ) { 15786 15787 // They will have gone through all possible matchers 15788 if ( ( elem = !matcher && elem ) ) { 15789 matchedCount--; 15790 } 15791 15792 // Lengthen the array for every element, matched or not 15793 if ( seed ) { 15794 unmatched.push( elem ); 15795 } 15796 } 15797 } 15798 15799 // `i` is now the count of elements visited above, and adding it to `matchedCount` 15800 // makes the latter nonnegative. 15801 matchedCount += i; 15802 15803 // Apply set filters to unmatched elements 15804 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` 15805 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have 15806 // no element matchers and no seed. 15807 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that 15808 // case, which will result in a "00" `matchedCount` that differs from `i` but is also 15809 // numerically zero. 15810 if ( bySet && i !== matchedCount ) { 15811 j = 0; 15812 while ( ( matcher = setMatchers[ j++ ] ) ) { 15813 matcher( unmatched, setMatched, context, xml ); 15814 } 15815 15816 if ( seed ) { 15817 15818 // Reintegrate element matches to eliminate the need for sorting 15819 if ( matchedCount > 0 ) { 15820 while ( i-- ) { 15821 if ( !( unmatched[ i ] || setMatched[ i ] ) ) { 15822 setMatched[ i ] = pop.call( results ); 15823 } 15824 } 15825 } 15826 15827 // Discard index placeholder values to get only actual matches 15828 setMatched = condense( setMatched ); 15829 } 15830 15831 // Add matches to results 15832 push.apply( results, setMatched ); 15833 15834 // Seedless set matches succeeding multiple successful matchers stipulate sorting 15835 if ( outermost && !seed && setMatched.length > 0 && 15836 ( matchedCount + setMatchers.length ) > 1 ) { 15837 15838 Sizzle.uniqueSort( results ); 15839 } 15840 } 15841 15842 // Override manipulation of globals by nested matchers 15843 if ( outermost ) { 15844 dirruns = dirrunsUnique; 15845 outermostContext = contextBackup; 15846 } 15847 15848 return unmatched; 15849 }; 15850 15851 return bySet ? 15852 markFunction( superMatcher ) : 15853 superMatcher; 15854} 15855 15856compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { 15857 var i, 15858 setMatchers = [], 15859 elementMatchers = [], 15860 cached = compilerCache[ selector + " " ]; 15861 15862 if ( !cached ) { 15863 15864 // Generate a function of recursive functions that can be used to check each element 15865 if ( !match ) { 15866 match = tokenize( selector ); 15867 } 15868 i = match.length; 15869 while ( i-- ) { 15870 cached = matcherFromTokens( match[ i ] ); 15871 if ( cached[ expando ] ) { 15872 setMatchers.push( cached ); 15873 } else { 15874 elementMatchers.push( cached ); 15875 } 15876 } 15877 15878 // Cache the compiled function 15879 cached = compilerCache( 15880 selector, 15881 matcherFromGroupMatchers( elementMatchers, setMatchers ) 15882 ); 15883 15884 // Save selector and tokenization 15885 cached.selector = selector; 15886 } 15887 return cached; 15888}; 15889 15890/** 15891 * A low-level selection function that works with Sizzle's compiled 15892 * selector functions 15893 * @param {String|Function} selector A selector or a pre-compiled 15894 * selector function built with Sizzle.compile 15895 * @param {Element} context 15896 * @param {Array} [results] 15897 * @param {Array} [seed] A set of elements to match against 15898 */ 15899select = Sizzle.select = function( selector, context, results, seed ) { 15900 var i, tokens, token, type, find, 15901 compiled = typeof selector === "function" && selector, 15902 match = !seed && tokenize( ( selector = compiled.selector || selector ) ); 15903 15904 results = results || []; 15905 15906 // Try to minimize operations if there is only one selector in the list and no seed 15907 // (the latter of which guarantees us context) 15908 if ( match.length === 1 ) { 15909 15910 // Reduce context if the leading compound selector is an ID 15911 tokens = match[ 0 ] = match[ 0 ].slice( 0 ); 15912 if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && 15913 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { 15914 15915 context = ( Expr.find[ "ID" ]( token.matches[ 0 ] 15916 .replace( runescape, funescape ), context ) || [] )[ 0 ]; 15917 if ( !context ) { 15918 return results; 15919 15920 // Precompiled matchers will still verify ancestry, so step up a level 15921 } else if ( compiled ) { 15922 context = context.parentNode; 15923 } 15924 15925 selector = selector.slice( tokens.shift().value.length ); 15926 } 15927 15928 // Fetch a seed set for right-to-left matching 15929 i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; 15930 while ( i-- ) { 15931 token = tokens[ i ]; 15932 15933 // Abort if we hit a combinator 15934 if ( Expr.relative[ ( type = token.type ) ] ) { 15935 break; 15936 } 15937 if ( ( find = Expr.find[ type ] ) ) { 15938 15939 // Search, expanding context for leading sibling combinators 15940 if ( ( seed = find( 15941 token.matches[ 0 ].replace( runescape, funescape ), 15942 rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || 15943 context 15944 ) ) ) { 15945 15946 // If seed is empty or no tokens remain, we can return early 15947 tokens.splice( i, 1 ); 15948 selector = seed.length && toSelector( tokens ); 15949 if ( !selector ) { 15950 push.apply( results, seed ); 15951 return results; 15952 } 15953 15954 break; 15955 } 15956 } 15957 } 15958 } 15959 15960 // Compile and execute a filtering function if one is not provided 15961 // Provide `match` to avoid retokenization if we modified the selector above 15962 ( compiled || compile( selector, match ) )( 15963 seed, 15964 context, 15965 !documentIsHTML, 15966 results, 15967 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context 15968 ); 15969 return results; 15970}; 15971 15972// One-time assignments 15973 15974// Sort stability 15975support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; 15976 15977// Support: Chrome 14-35+ 15978// Always assume duplicates if they aren't passed to the comparison function 15979support.detectDuplicates = !!hasDuplicate; 15980 15981// Initialize against the default document 15982setDocument(); 15983 15984// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) 15985// Detached nodes confoundingly follow *each other* 15986support.sortDetached = assert( function( el ) { 15987 15988 // Should return 1, but returns 4 (following) 15989 return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; 15990} ); 15991 15992// Support: IE<8 15993// Prevent attribute/property "interpolation" 15994// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx 15995if ( !assert( function( el ) { 15996 el.innerHTML = "<a href='#'></a>"; 15997 return el.firstChild.getAttribute( "href" ) === "#"; 15998} ) ) { 15999 addHandle( "type|href|height|width", function( elem, name, isXML ) { 16000 if ( !isXML ) { 16001 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); 16002 } 16003 } ); 16004} 16005 16006// Support: IE<9 16007// Use defaultValue in place of getAttribute("value") 16008if ( !support.attributes || !assert( function( el ) { 16009 el.innerHTML = "<input/>"; 16010 el.firstChild.setAttribute( "value", "" ); 16011 return el.firstChild.getAttribute( "value" ) === ""; 16012} ) ) { 16013 addHandle( "value", function( elem, _name, isXML ) { 16014 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { 16015 return elem.defaultValue; 16016 } 16017 } ); 16018} 16019 16020// Support: IE<9 16021// Use getAttributeNode to fetch booleans when getAttribute lies 16022if ( !assert( function( el ) { 16023 return el.getAttribute( "disabled" ) == null; 16024} ) ) { 16025 addHandle( booleans, function( elem, name, isXML ) { 16026 var val; 16027 if ( !isXML ) { 16028 return elem[ name ] === true ? name.toLowerCase() : 16029 ( val = elem.getAttributeNode( name ) ) && val.specified ? 16030 val.value : 16031 null; 16032 } 16033 } ); 16034} 16035 16036return Sizzle; 16037 16038} )( window ); 16039 16040 16041 16042jQuery.find = Sizzle; 16043jQuery.expr = Sizzle.selectors; 16044 16045// Deprecated 16046jQuery.expr[ ":" ] = jQuery.expr.pseudos; 16047jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 16048jQuery.text = Sizzle.getText; 16049jQuery.isXMLDoc = Sizzle.isXML; 16050jQuery.contains = Sizzle.contains; 16051jQuery.escapeSelector = Sizzle.escape; 16052 16053 16054 16055 16056var dir = function( elem, dir, until ) { 16057 var matched = [], 16058 truncate = until !== undefined; 16059 16060 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { 16061 if ( elem.nodeType === 1 ) { 16062 if ( truncate && jQuery( elem ).is( until ) ) { 16063 break; 16064 } 16065 matched.push( elem ); 16066 } 16067 } 16068 return matched; 16069}; 16070 16071 16072var siblings = function( n, elem ) { 16073 var matched = []; 16074 16075 for ( ; n; n = n.nextSibling ) { 16076 if ( n.nodeType === 1 && n !== elem ) { 16077 matched.push( n ); 16078 } 16079 } 16080 16081 return matched; 16082}; 16083 16084 16085var rneedsContext = jQuery.expr.match.needsContext; 16086 16087 16088 16089function nodeName( elem, name ) { 16090 16091 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 16092 16093} 16094var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); 16095 16096 16097 16098// Implement the identical functionality for filter and not 16099function winnow( elements, qualifier, not ) { 16100 if ( isFunction( qualifier ) ) { 16101 return jQuery.grep( elements, function( elem, i ) { 16102 return !!qualifier.call( elem, i, elem ) !== not; 16103 } ); 16104 } 16105 16106 // Single element 16107 if ( qualifier.nodeType ) { 16108 return jQuery.grep( elements, function( elem ) { 16109 return ( elem === qualifier ) !== not; 16110 } ); 16111 } 16112 16113 // Arraylike of elements (jQuery, arguments, Array) 16114 if ( typeof qualifier !== "string" ) { 16115 return jQuery.grep( elements, function( elem ) { 16116 return ( indexOf.call( qualifier, elem ) > -1 ) !== not; 16117 } ); 16118 } 16119 16120 // Filtered directly for both simple and complex selectors 16121 return jQuery.filter( qualifier, elements, not ); 16122} 16123 16124jQuery.filter = function( expr, elems, not ) { 16125 var elem = elems[ 0 ]; 16126 16127 if ( not ) { 16128 expr = ":not(" + expr + ")"; 16129 } 16130 16131 if ( elems.length === 1 && elem.nodeType === 1 ) { 16132 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; 16133 } 16134 16135 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { 16136 return elem.nodeType === 1; 16137 } ) ); 16138}; 16139 16140jQuery.fn.extend( { 16141 find: function( selector ) { 16142 var i, ret, 16143 len = this.length, 16144 self = this; 16145 16146 if ( typeof selector !== "string" ) { 16147 return this.pushStack( jQuery( selector ).filter( function() { 16148 for ( i = 0; i < len; i++ ) { 16149 if ( jQuery.contains( self[ i ], this ) ) { 16150 return true; 16151 } 16152 } 16153 } ) ); 16154 } 16155 16156 ret = this.pushStack( [] ); 16157 16158 for ( i = 0; i < len; i++ ) { 16159 jQuery.find( selector, self[ i ], ret ); 16160 } 16161 16162 return len > 1 ? jQuery.uniqueSort( ret ) : ret; 16163 }, 16164 filter: function( selector ) { 16165 return this.pushStack( winnow( this, selector || [], false ) ); 16166 }, 16167 not: function( selector ) { 16168 return this.pushStack( winnow( this, selector || [], true ) ); 16169 }, 16170 is: function( selector ) { 16171 return !!winnow( 16172 this, 16173 16174 // If this is a positional/relative selector, check membership in the returned set 16175 // so $("p:first").is("p:last") won't return true for a doc with two "p". 16176 typeof selector === "string" && rneedsContext.test( selector ) ? 16177 jQuery( selector ) : 16178 selector || [], 16179 false 16180 ).length; 16181 } 16182} ); 16183 16184 16185// Initialize a jQuery object 16186 16187 16188// A central reference to the root jQuery(document) 16189var rootjQuery, 16190 16191 // A simple way to check for HTML strings 16192 // Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521) 16193 // Strict HTML recognition (trac-11290: must start with <) 16194 // Shortcut simple #id case for speed 16195 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, 16196 16197 init = jQuery.fn.init = function( selector, context, root ) { 16198 var match, elem; 16199 16200 // HANDLE: $(""), $(null), $(undefined), $(false) 16201 if ( !selector ) { 16202 return this; 16203 } 16204 16205 // Method init() accepts an alternate rootjQuery 16206 // so migrate can support jQuery.sub (gh-2101) 16207 root = root || rootjQuery; 16208 16209 // Handle HTML strings 16210 if ( typeof selector === "string" ) { 16211 if ( selector[ 0 ] === "<" && 16212 selector[ selector.length - 1 ] === ">" && 16213 selector.length >= 3 ) { 16214 16215 // Assume that strings that start and end with <> are HTML and skip the regex check 16216 match = [ null, selector, null ]; 16217 16218 } else { 16219 match = rquickExpr.exec( selector ); 16220 } 16221 16222 // Match html or make sure no context is specified for #id 16223 if ( match && ( match[ 1 ] || !context ) ) { 16224 16225 // HANDLE: $(html) -> $(array) 16226 if ( match[ 1 ] ) { 16227 context = context instanceof jQuery ? context[ 0 ] : context; 16228 16229 // Option to run scripts is true for back-compat 16230 // Intentionally let the error be thrown if parseHTML is not present 16231 jQuery.merge( this, jQuery.parseHTML( 16232 match[ 1 ], 16233 context && context.nodeType ? context.ownerDocument || context : document, 16234 true 16235 ) ); 16236 16237 // HANDLE: $(html, props) 16238 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { 16239 for ( match in context ) { 16240 16241 // Properties of context are called as methods if possible 16242 if ( isFunction( this[ match ] ) ) { 16243 this[ match ]( context[ match ] ); 16244 16245 // ...and otherwise set as attributes 16246 } else { 16247 this.attr( match, context[ match ] ); 16248 } 16249 } 16250 } 16251 16252 return this; 16253 16254 // HANDLE: $(#id) 16255 } else { 16256 elem = document.getElementById( match[ 2 ] ); 16257 16258 if ( elem ) { 16259 16260 // Inject the element directly into the jQuery object 16261 this[ 0 ] = elem; 16262 this.length = 1; 16263 } 16264 return this; 16265 } 16266 16267 // HANDLE: $(expr, $(...)) 16268 } else if ( !context || context.jquery ) { 16269 return ( context || root ).find( selector ); 16270 16271 // HANDLE: $(expr, context) 16272 // (which is just equivalent to: $(context).find(expr) 16273 } else { 16274 return this.constructor( context ).find( selector ); 16275 } 16276 16277 // HANDLE: $(DOMElement) 16278 } else if ( selector.nodeType ) { 16279 this[ 0 ] = selector; 16280 this.length = 1; 16281 return this; 16282 16283 // HANDLE: $(function) 16284 // Shortcut for document ready 16285 } else if ( isFunction( selector ) ) { 16286 return root.ready !== undefined ? 16287 root.ready( selector ) : 16288 16289 // Execute immediately if ready is not present 16290 selector( jQuery ); 16291 } 16292 16293 return jQuery.makeArray( selector, this ); 16294 }; 16295 16296// Give the init function the jQuery prototype for later instantiation 16297init.prototype = jQuery.fn; 16298 16299// Initialize central reference 16300rootjQuery = jQuery( document ); 16301 16302 16303var rparentsprev = /^(?:parents|prev(?:Until|All))/, 16304 16305 // Methods guaranteed to produce a unique set when starting from a unique set 16306 guaranteedUnique = { 16307 children: true, 16308 contents: true, 16309 next: true, 16310 prev: true 16311 }; 16312 16313jQuery.fn.extend( { 16314 has: function( target ) { 16315 var targets = jQuery( target, this ), 16316 l = targets.length; 16317 16318 return this.filter( function() { 16319 var i = 0; 16320 for ( ; i < l; i++ ) { 16321 if ( jQuery.contains( this, targets[ i ] ) ) { 16322 return true; 16323 } 16324 } 16325 } ); 16326 }, 16327 16328 closest: function( selectors, context ) { 16329 var cur, 16330 i = 0, 16331 l = this.length, 16332 matched = [], 16333 targets = typeof selectors !== "string" && jQuery( selectors ); 16334 16335 // Positional selectors never match, since there's no _selection_ context 16336 if ( !rneedsContext.test( selectors ) ) { 16337 for ( ; i < l; i++ ) { 16338 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { 16339 16340 // Always skip document fragments 16341 if ( cur.nodeType < 11 && ( targets ? 16342 targets.index( cur ) > -1 : 16343 16344 // Don't pass non-elements to Sizzle 16345 cur.nodeType === 1 && 16346 jQuery.find.matchesSelector( cur, selectors ) ) ) { 16347 16348 matched.push( cur ); 16349 break; 16350 } 16351 } 16352 } 16353 } 16354 16355 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); 16356 }, 16357 16358 // Determine the position of an element within the set 16359 index: function( elem ) { 16360 16361 // No argument, return index in parent 16362 if ( !elem ) { 16363 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; 16364 } 16365 16366 // Index in selector 16367 if ( typeof elem === "string" ) { 16368 return indexOf.call( jQuery( elem ), this[ 0 ] ); 16369 } 16370 16371 // Locate the position of the desired element 16372 return indexOf.call( this, 16373 16374 // If it receives a jQuery object, the first element is used 16375 elem.jquery ? elem[ 0 ] : elem 16376 ); 16377 }, 16378 16379 add: function( selector, context ) { 16380 return this.pushStack( 16381 jQuery.uniqueSort( 16382 jQuery.merge( this.get(), jQuery( selector, context ) ) 16383 ) 16384 ); 16385 }, 16386 16387 addBack: function( selector ) { 16388 return this.add( selector == null ? 16389 this.prevObject : this.prevObject.filter( selector ) 16390 ); 16391 } 16392} ); 16393 16394function sibling( cur, dir ) { 16395 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} 16396 return cur; 16397} 16398 16399jQuery.each( { 16400 parent: function( elem ) { 16401 var parent = elem.parentNode; 16402 return parent && parent.nodeType !== 11 ? parent : null; 16403 }, 16404 parents: function( elem ) { 16405 return dir( elem, "parentNode" ); 16406 }, 16407 parentsUntil: function( elem, _i, until ) { 16408 return dir( elem, "parentNode", until ); 16409 }, 16410 next: function( elem ) { 16411 return sibling( elem, "nextSibling" ); 16412 }, 16413 prev: function( elem ) { 16414 return sibling( elem, "previousSibling" ); 16415 }, 16416 nextAll: function( elem ) { 16417 return dir( elem, "nextSibling" ); 16418 }, 16419 prevAll: function( elem ) { 16420 return dir( elem, "previousSibling" ); 16421 }, 16422 nextUntil: function( elem, _i, until ) { 16423 return dir( elem, "nextSibling", until ); 16424 }, 16425 prevUntil: function( elem, _i, until ) { 16426 return dir( elem, "previousSibling", until ); 16427 }, 16428 siblings: function( elem ) { 16429 return siblings( ( elem.parentNode || {} ).firstChild, elem ); 16430 }, 16431 children: function( elem ) { 16432 return siblings( elem.firstChild ); 16433 }, 16434 contents: function( elem ) { 16435 if ( elem.contentDocument != null && 16436 16437 // Support: IE 11+ 16438 // <object> elements with no `data` attribute has an object 16439 // `contentDocument` with a `null` prototype. 16440 getProto( elem.contentDocument ) ) { 16441 16442 return elem.contentDocument; 16443 } 16444 16445 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only 16446 // Treat the template element as a regular one in browsers that 16447 // don't support it. 16448 if ( nodeName( elem, "template" ) ) { 16449 elem = elem.content || elem; 16450 } 16451 16452 return jQuery.merge( [], elem.childNodes ); 16453 } 16454}, function( name, fn ) { 16455 jQuery.fn[ name ] = function( until, selector ) { 16456 var matched = jQuery.map( this, fn, until ); 16457 16458 if ( name.slice( -5 ) !== "Until" ) { 16459 selector = until; 16460 } 16461 16462 if ( selector && typeof selector === "string" ) { 16463 matched = jQuery.filter( selector, matched ); 16464 } 16465 16466 if ( this.length > 1 ) { 16467 16468 // Remove duplicates 16469 if ( !guaranteedUnique[ name ] ) { 16470 jQuery.uniqueSort( matched ); 16471 } 16472 16473 // Reverse order for parents* and prev-derivatives 16474 if ( rparentsprev.test( name ) ) { 16475 matched.reverse(); 16476 } 16477 } 16478 16479 return this.pushStack( matched ); 16480 }; 16481} ); 16482var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); 16483 16484 16485 16486// Convert String-formatted options into Object-formatted ones 16487function createOptions( options ) { 16488 var object = {}; 16489 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { 16490 object[ flag ] = true; 16491 } ); 16492 return object; 16493} 16494 16495/* 16496 * Create a callback list using the following parameters: 16497 * 16498 * options: an optional list of space-separated options that will change how 16499 * the callback list behaves or a more traditional option object 16500 * 16501 * By default a callback list will act like an event callback list and can be 16502 * "fired" multiple times. 16503 * 16504 * Possible options: 16505 * 16506 * once: will ensure the callback list can only be fired once (like a Deferred) 16507 * 16508 * memory: will keep track of previous values and will call any callback added 16509 * after the list has been fired right away with the latest "memorized" 16510 * values (like a Deferred) 16511 * 16512 * unique: will ensure a callback can only be added once (no duplicate in the list) 16513 * 16514 * stopOnFalse: interrupt callings when a callback returns false 16515 * 16516 */ 16517jQuery.Callbacks = function( options ) { 16518 16519 // Convert options from String-formatted to Object-formatted if needed 16520 // (we check in cache first) 16521 options = typeof options === "string" ? 16522 createOptions( options ) : 16523 jQuery.extend( {}, options ); 16524 16525 var // Flag to know if list is currently firing 16526 firing, 16527 16528 // Last fire value for non-forgettable lists 16529 memory, 16530 16531 // Flag to know if list was already fired 16532 fired, 16533 16534 // Flag to prevent firing 16535 locked, 16536 16537 // Actual callback list 16538 list = [], 16539 16540 // Queue of execution data for repeatable lists 16541 queue = [], 16542 16543 // Index of currently firing callback (modified by add/remove as needed) 16544 firingIndex = -1, 16545 16546 // Fire callbacks 16547 fire = function() { 16548 16549 // Enforce single-firing 16550 locked = locked || options.once; 16551 16552 // Execute callbacks for all pending executions, 16553 // respecting firingIndex overrides and runtime changes 16554 fired = firing = true; 16555 for ( ; queue.length; firingIndex = -1 ) { 16556 memory = queue.shift(); 16557 while ( ++firingIndex < list.length ) { 16558 16559 // Run callback and check for early termination 16560 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && 16561 options.stopOnFalse ) { 16562 16563 // Jump to end and forget the data so .add doesn't re-fire 16564 firingIndex = list.length; 16565 memory = false; 16566 } 16567 } 16568 } 16569 16570 // Forget the data if we're done with it 16571 if ( !options.memory ) { 16572 memory = false; 16573 } 16574 16575 firing = false; 16576 16577 // Clean up if we're done firing for good 16578 if ( locked ) { 16579 16580 // Keep an empty list if we have data for future add calls 16581 if ( memory ) { 16582 list = []; 16583 16584 // Otherwise, this object is spent 16585 } else { 16586 list = ""; 16587 } 16588 } 16589 }, 16590 16591 // Actual Callbacks object 16592 self = { 16593 16594 // Add a callback or a collection of callbacks to the list 16595 add: function() { 16596 if ( list ) { 16597 16598 // If we have memory from a past run, we should fire after adding 16599 if ( memory && !firing ) { 16600 firingIndex = list.length - 1; 16601 queue.push( memory ); 16602 } 16603 16604 ( function add( args ) { 16605 jQuery.each( args, function( _, arg ) { 16606 if ( isFunction( arg ) ) { 16607 if ( !options.unique || !self.has( arg ) ) { 16608 list.push( arg ); 16609 } 16610 } else if ( arg && arg.length && toType( arg ) !== "string" ) { 16611 16612 // Inspect recursively 16613 add( arg ); 16614 } 16615 } ); 16616 } )( arguments ); 16617 16618 if ( memory && !firing ) { 16619 fire(); 16620 } 16621 } 16622 return this; 16623 }, 16624 16625 // Remove a callback from the list 16626 remove: function() { 16627 jQuery.each( arguments, function( _, arg ) { 16628 var index; 16629 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { 16630 list.splice( index, 1 ); 16631 16632 // Handle firing indexes 16633 if ( index <= firingIndex ) { 16634 firingIndex--; 16635 } 16636 } 16637 } ); 16638 return this; 16639 }, 16640 16641 // Check if a given callback is in the list. 16642 // If no argument is given, return whether or not list has callbacks attached. 16643 has: function( fn ) { 16644 return fn ? 16645 jQuery.inArray( fn, list ) > -1 : 16646 list.length > 0; 16647 }, 16648 16649 // Remove all callbacks from the list 16650 empty: function() { 16651 if ( list ) { 16652 list = []; 16653 } 16654 return this; 16655 }, 16656 16657 // Disable .fire and .add 16658 // Abort any current/pending executions 16659 // Clear all callbacks and values 16660 disable: function() { 16661 locked = queue = []; 16662 list = memory = ""; 16663 return this; 16664 }, 16665 disabled: function() { 16666 return !list; 16667 }, 16668 16669 // Disable .fire 16670 // Also disable .add unless we have memory (since it would have no effect) 16671 // Abort any pending executions 16672 lock: function() { 16673 locked = queue = []; 16674 if ( !memory && !firing ) { 16675 list = memory = ""; 16676 } 16677 return this; 16678 }, 16679 locked: function() { 16680 return !!locked; 16681 }, 16682 16683 // Call all callbacks with the given context and arguments 16684 fireWith: function( context, args ) { 16685 if ( !locked ) { 16686 args = args || []; 16687 args = [ context, args.slice ? args.slice() : args ]; 16688 queue.push( args ); 16689 if ( !firing ) { 16690 fire(); 16691 } 16692 } 16693 return this; 16694 }, 16695 16696 // Call all the callbacks with the given arguments 16697 fire: function() { 16698 self.fireWith( this, arguments ); 16699 return this; 16700 }, 16701 16702 // To know if the callbacks have already been called at least once 16703 fired: function() { 16704 return !!fired; 16705 } 16706 }; 16707 16708 return self; 16709}; 16710 16711 16712function Identity( v ) { 16713 return v; 16714} 16715function Thrower( ex ) { 16716 throw ex; 16717} 16718 16719function adoptValue( value, resolve, reject, noValue ) { 16720 var method; 16721 16722 try { 16723 16724 // Check for promise aspect first to privilege synchronous behavior 16725 if ( value && isFunction( ( method = value.promise ) ) ) { 16726 method.call( value ).done( resolve ).fail( reject ); 16727 16728 // Other thenables 16729 } else if ( value && isFunction( ( method = value.then ) ) ) { 16730 method.call( value, resolve, reject ); 16731 16732 // Other non-thenables 16733 } else { 16734 16735 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: 16736 // * false: [ value ].slice( 0 ) => resolve( value ) 16737 // * true: [ value ].slice( 1 ) => resolve() 16738 resolve.apply( undefined, [ value ].slice( noValue ) ); 16739 } 16740 16741 // For Promises/A+, convert exceptions into rejections 16742 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in 16743 // Deferred#then to conditionally suppress rejection. 16744 } catch ( value ) { 16745 16746 // Support: Android 4.0 only 16747 // Strict mode functions invoked without .call/.apply get global-object context 16748 reject.apply( undefined, [ value ] ); 16749 } 16750} 16751 16752jQuery.extend( { 16753 16754 Deferred: function( func ) { 16755 var tuples = [ 16756 16757 // action, add listener, callbacks, 16758 // ... .then handlers, argument index, [final state] 16759 [ "notify", "progress", jQuery.Callbacks( "memory" ), 16760 jQuery.Callbacks( "memory" ), 2 ], 16761 [ "resolve", "done", jQuery.Callbacks( "once memory" ), 16762 jQuery.Callbacks( "once memory" ), 0, "resolved" ], 16763 [ "reject", "fail", jQuery.Callbacks( "once memory" ), 16764 jQuery.Callbacks( "once memory" ), 1, "rejected" ] 16765 ], 16766 state = "pending", 16767 promise = { 16768 state: function() { 16769 return state; 16770 }, 16771 always: function() { 16772 deferred.done( arguments ).fail( arguments ); 16773 return this; 16774 }, 16775 "catch": function( fn ) { 16776 return promise.then( null, fn ); 16777 }, 16778 16779 // Keep pipe for back-compat 16780 pipe: function( /* fnDone, fnFail, fnProgress */ ) { 16781 var fns = arguments; 16782 16783 return jQuery.Deferred( function( newDefer ) { 16784 jQuery.each( tuples, function( _i, tuple ) { 16785 16786 // Map tuples (progress, done, fail) to arguments (done, fail, progress) 16787 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; 16788 16789 // deferred.progress(function() { bind to newDefer or newDefer.notify }) 16790 // deferred.done(function() { bind to newDefer or newDefer.resolve }) 16791 // deferred.fail(function() { bind to newDefer or newDefer.reject }) 16792 deferred[ tuple[ 1 ] ]( function() { 16793 var returned = fn && fn.apply( this, arguments ); 16794 if ( returned && isFunction( returned.promise ) ) { 16795 returned.promise() 16796 .progress( newDefer.notify ) 16797 .done( newDefer.resolve ) 16798 .fail( newDefer.reject ); 16799 } else { 16800 newDefer[ tuple[ 0 ] + "With" ]( 16801 this, 16802 fn ? [ returned ] : arguments 16803 ); 16804 } 16805 } ); 16806 } ); 16807 fns = null; 16808 } ).promise(); 16809 }, 16810 then: function( onFulfilled, onRejected, onProgress ) { 16811 var maxDepth = 0; 16812 function resolve( depth, deferred, handler, special ) { 16813 return function() { 16814 var that = this, 16815 args = arguments, 16816 mightThrow = function() { 16817 var returned, then; 16818 16819 // Support: Promises/A+ section 2.3.3.3.3 16820 // https://promisesaplus.com/#point-59 16821 // Ignore double-resolution attempts 16822 if ( depth < maxDepth ) { 16823 return; 16824 } 16825 16826 returned = handler.apply( that, args ); 16827 16828 // Support: Promises/A+ section 2.3.1 16829 // https://promisesaplus.com/#point-48 16830 if ( returned === deferred.promise() ) { 16831 throw new TypeError( "Thenable self-resolution" ); 16832 } 16833 16834 // Support: Promises/A+ sections 2.3.3.1, 3.5 16835 // https://promisesaplus.com/#point-54 16836 // https://promisesaplus.com/#point-75 16837 // Retrieve `then` only once 16838 then = returned && 16839 16840 // Support: Promises/A+ section 2.3.4 16841 // https://promisesaplus.com/#point-64 16842 // Only check objects and functions for thenability 16843 ( typeof returned === "object" || 16844 typeof returned === "function" ) && 16845 returned.then; 16846 16847 // Handle a returned thenable 16848 if ( isFunction( then ) ) { 16849 16850 // Special processors (notify) just wait for resolution 16851 if ( special ) { 16852 then.call( 16853 returned, 16854 resolve( maxDepth, deferred, Identity, special ), 16855 resolve( maxDepth, deferred, Thrower, special ) 16856 ); 16857 16858 // Normal processors (resolve) also hook into progress 16859 } else { 16860 16861 // ...and disregard older resolution values 16862 maxDepth++; 16863 16864 then.call( 16865 returned, 16866 resolve( maxDepth, deferred, Identity, special ), 16867 resolve( maxDepth, deferred, Thrower, special ), 16868 resolve( maxDepth, deferred, Identity, 16869 deferred.notifyWith ) 16870 ); 16871 } 16872 16873 // Handle all other returned values 16874 } else { 16875 16876 // Only substitute handlers pass on context 16877 // and multiple values (non-spec behavior) 16878 if ( handler !== Identity ) { 16879 that = undefined; 16880 args = [ returned ]; 16881 } 16882 16883 // Process the value(s) 16884 // Default process is resolve 16885 ( special || deferred.resolveWith )( that, args ); 16886 } 16887 }, 16888 16889 // Only normal processors (resolve) catch and reject exceptions 16890 process = special ? 16891 mightThrow : 16892 function() { 16893 try { 16894 mightThrow(); 16895 } catch ( e ) { 16896 16897 if ( jQuery.Deferred.exceptionHook ) { 16898 jQuery.Deferred.exceptionHook( e, 16899 process.stackTrace ); 16900 } 16901 16902 // Support: Promises/A+ section 2.3.3.3.4.1 16903 // https://promisesaplus.com/#point-61 16904 // Ignore post-resolution exceptions 16905 if ( depth + 1 >= maxDepth ) { 16906 16907 // Only substitute handlers pass on context 16908 // and multiple values (non-spec behavior) 16909 if ( handler !== Thrower ) { 16910 that = undefined; 16911 args = [ e ]; 16912 } 16913 16914 deferred.rejectWith( that, args ); 16915 } 16916 } 16917 }; 16918 16919 // Support: Promises/A+ section 2.3.3.3.1 16920 // https://promisesaplus.com/#point-57 16921 // Re-resolve promises immediately to dodge false rejection from 16922 // subsequent errors 16923 if ( depth ) { 16924 process(); 16925 } else { 16926 16927 // Call an optional hook to record the stack, in case of exception 16928 // since it's otherwise lost when execution goes async 16929 if ( jQuery.Deferred.getStackHook ) { 16930 process.stackTrace = jQuery.Deferred.getStackHook(); 16931 } 16932 window.setTimeout( process ); 16933 } 16934 }; 16935 } 16936 16937 return jQuery.Deferred( function( newDefer ) { 16938 16939 // progress_handlers.add( ... ) 16940 tuples[ 0 ][ 3 ].add( 16941 resolve( 16942 0, 16943 newDefer, 16944 isFunction( onProgress ) ? 16945 onProgress : 16946 Identity, 16947 newDefer.notifyWith 16948 ) 16949 ); 16950 16951 // fulfilled_handlers.add( ... ) 16952 tuples[ 1 ][ 3 ].add( 16953 resolve( 16954 0, 16955 newDefer, 16956 isFunction( onFulfilled ) ? 16957 onFulfilled : 16958 Identity 16959 ) 16960 ); 16961 16962 // rejected_handlers.add( ... ) 16963 tuples[ 2 ][ 3 ].add( 16964 resolve( 16965 0, 16966 newDefer, 16967 isFunction( onRejected ) ? 16968 onRejected : 16969 Thrower 16970 ) 16971 ); 16972 } ).promise(); 16973 }, 16974 16975 // Get a promise for this deferred 16976 // If obj is provided, the promise aspect is added to the object 16977 promise: function( obj ) { 16978 return obj != null ? jQuery.extend( obj, promise ) : promise; 16979 } 16980 }, 16981 deferred = {}; 16982 16983 // Add list-specific methods 16984 jQuery.each( tuples, function( i, tuple ) { 16985 var list = tuple[ 2 ], 16986 stateString = tuple[ 5 ]; 16987 16988 // promise.progress = list.add 16989 // promise.done = list.add 16990 // promise.fail = list.add 16991 promise[ tuple[ 1 ] ] = list.add; 16992 16993 // Handle state 16994 if ( stateString ) { 16995 list.add( 16996 function() { 16997 16998 // state = "resolved" (i.e., fulfilled) 16999 // state = "rejected" 17000 state = stateString; 17001 }, 17002 17003 // rejected_callbacks.disable 17004 // fulfilled_callbacks.disable 17005 tuples[ 3 - i ][ 2 ].disable, 17006 17007 // rejected_handlers.disable 17008 // fulfilled_handlers.disable 17009 tuples[ 3 - i ][ 3 ].disable, 17010 17011 // progress_callbacks.lock 17012 tuples[ 0 ][ 2 ].lock, 17013 17014 // progress_handlers.lock 17015 tuples[ 0 ][ 3 ].lock 17016 ); 17017 } 17018 17019 // progress_handlers.fire 17020 // fulfilled_handlers.fire 17021 // rejected_handlers.fire 17022 list.add( tuple[ 3 ].fire ); 17023 17024 // deferred.notify = function() { deferred.notifyWith(...) } 17025 // deferred.resolve = function() { deferred.resolveWith(...) } 17026 // deferred.reject = function() { deferred.rejectWith(...) } 17027 deferred[ tuple[ 0 ] ] = function() { 17028 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); 17029 return this; 17030 }; 17031 17032 // deferred.notifyWith = list.fireWith 17033 // deferred.resolveWith = list.fireWith 17034 // deferred.rejectWith = list.fireWith 17035 deferred[ tuple[ 0 ] + "With" ] = list.fireWith; 17036 } ); 17037 17038 // Make the deferred a promise 17039 promise.promise( deferred ); 17040 17041 // Call given func if any 17042 if ( func ) { 17043 func.call( deferred, deferred ); 17044 } 17045 17046 // All done! 17047 return deferred; 17048 }, 17049 17050 // Deferred helper 17051 when: function( singleValue ) { 17052 var 17053 17054 // count of uncompleted subordinates 17055 remaining = arguments.length, 17056 17057 // count of unprocessed arguments 17058 i = remaining, 17059 17060 // subordinate fulfillment data 17061 resolveContexts = Array( i ), 17062 resolveValues = slice.call( arguments ), 17063 17064 // the primary Deferred 17065 primary = jQuery.Deferred(), 17066 17067 // subordinate callback factory 17068 updateFunc = function( i ) { 17069 return function( value ) { 17070 resolveContexts[ i ] = this; 17071 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; 17072 if ( !( --remaining ) ) { 17073 primary.resolveWith( resolveContexts, resolveValues ); 17074 } 17075 }; 17076 }; 17077 17078 // Single- and empty arguments are adopted like Promise.resolve 17079 if ( remaining <= 1 ) { 17080 adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, 17081 !remaining ); 17082 17083 // Use .then() to unwrap secondary thenables (cf. gh-3000) 17084 if ( primary.state() === "pending" || 17085 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { 17086 17087 return primary.then(); 17088 } 17089 } 17090 17091 // Multiple arguments are aggregated like Promise.all array elements 17092 while ( i-- ) { 17093 adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); 17094 } 17095 17096 return primary.promise(); 17097 } 17098} ); 17099 17100 17101// These usually indicate a programmer mistake during development, 17102// warn about them ASAP rather than swallowing them by default. 17103var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 17104 17105jQuery.Deferred.exceptionHook = function( error, stack ) { 17106 17107 // Support: IE 8 - 9 only 17108 // Console exists when dev tools are open, which can happen at any time 17109 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { 17110 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); 17111 } 17112}; 17113 17114 17115 17116 17117jQuery.readyException = function( error ) { 17118 window.setTimeout( function() { 17119 throw error; 17120 } ); 17121}; 17122 17123 17124 17125 17126// The deferred used on DOM ready 17127var readyList = jQuery.Deferred(); 17128 17129jQuery.fn.ready = function( fn ) { 17130 17131 readyList 17132 .then( fn ) 17133 17134 // Wrap jQuery.readyException in a function so that the lookup 17135 // happens at the time of error handling instead of callback 17136 // registration. 17137 .catch( function( error ) { 17138 jQuery.readyException( error ); 17139 } ); 17140 17141 return this; 17142}; 17143 17144jQuery.extend( { 17145 17146 // Is the DOM ready to be used? Set to true once it occurs. 17147 isReady: false, 17148 17149 // A counter to track how many items to wait for before 17150 // the ready event fires. See trac-6781 17151 readyWait: 1, 17152 17153 // Handle when the DOM is ready 17154 ready: function( wait ) { 17155 17156 // Abort if there are pending holds or we're already ready 17157 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { 17158 return; 17159 } 17160 17161 // Remember that the DOM is ready 17162 jQuery.isReady = true; 17163 17164 // If a normal DOM Ready event fired, decrement, and wait if need be 17165 if ( wait !== true && --jQuery.readyWait > 0 ) { 17166 return; 17167 } 17168 17169 // If there are functions bound, to execute 17170 readyList.resolveWith( document, [ jQuery ] ); 17171 } 17172} ); 17173 17174jQuery.ready.then = readyList.then; 17175 17176// The ready event handler and self cleanup method 17177function completed() { 17178 document.removeEventListener( "DOMContentLoaded", completed ); 17179 window.removeEventListener( "load", completed ); 17180 jQuery.ready(); 17181} 17182 17183// Catch cases where $(document).ready() is called 17184// after the browser event has already occurred. 17185// Support: IE <=9 - 10 only 17186// Older IE sometimes signals "interactive" too soon 17187if ( document.readyState === "complete" || 17188 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { 17189 17190 // Handle it asynchronously to allow scripts the opportunity to delay ready 17191 window.setTimeout( jQuery.ready ); 17192 17193} else { 17194 17195 // Use the handy event callback 17196 document.addEventListener( "DOMContentLoaded", completed ); 17197 17198 // A fallback to window.onload, that will always work 17199 window.addEventListener( "load", completed ); 17200} 17201 17202 17203 17204 17205// Multifunctional method to get and set values of a collection 17206// The value/s can optionally be executed if it's a function 17207var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 17208 var i = 0, 17209 len = elems.length, 17210 bulk = key == null; 17211 17212 // Sets many values 17213 if ( toType( key ) === "object" ) { 17214 chainable = true; 17215 for ( i in key ) { 17216 access( elems, fn, i, key[ i ], true, emptyGet, raw ); 17217 } 17218 17219 // Sets one value 17220 } else if ( value !== undefined ) { 17221 chainable = true; 17222 17223 if ( !isFunction( value ) ) { 17224 raw = true; 17225 } 17226 17227 if ( bulk ) { 17228 17229 // Bulk operations run against the entire set 17230 if ( raw ) { 17231 fn.call( elems, value ); 17232 fn = null; 17233 17234 // ...except when executing function values 17235 } else { 17236 bulk = fn; 17237 fn = function( elem, _key, value ) { 17238 return bulk.call( jQuery( elem ), value ); 17239 }; 17240 } 17241 } 17242 17243 if ( fn ) { 17244 for ( ; i < len; i++ ) { 17245 fn( 17246 elems[ i ], key, raw ? 17247 value : 17248 value.call( elems[ i ], i, fn( elems[ i ], key ) ) 17249 ); 17250 } 17251 } 17252 } 17253 17254 if ( chainable ) { 17255 return elems; 17256 } 17257 17258 // Gets 17259 if ( bulk ) { 17260 return fn.call( elems ); 17261 } 17262 17263 return len ? fn( elems[ 0 ], key ) : emptyGet; 17264}; 17265 17266 17267// Matches dashed string for camelizing 17268var rmsPrefix = /^-ms-/, 17269 rdashAlpha = /-([a-z])/g; 17270 17271// Used by camelCase as callback to replace() 17272function fcamelCase( _all, letter ) { 17273 return letter.toUpperCase(); 17274} 17275 17276// Convert dashed to camelCase; used by the css and data modules 17277// Support: IE <=9 - 11, Edge 12 - 15 17278// Microsoft forgot to hump their vendor prefix (trac-9572) 17279function camelCase( string ) { 17280 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 17281} 17282var acceptData = function( owner ) { 17283 17284 // Accepts only: 17285 // - Node 17286 // - Node.ELEMENT_NODE 17287 // - Node.DOCUMENT_NODE 17288 // - Object 17289 // - Any 17290 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 17291}; 17292 17293 17294 17295 17296function Data() { 17297 this.expando = jQuery.expando + Data.uid++; 17298} 17299 17300Data.uid = 1; 17301 17302Data.prototype = { 17303 17304 cache: function( owner ) { 17305 17306 // Check if the owner object already has a cache 17307 var value = owner[ this.expando ]; 17308 17309 // If not, create one 17310 if ( !value ) { 17311 value = {}; 17312 17313 // We can accept data for non-element nodes in modern browsers, 17314 // but we should not, see trac-8335. 17315 // Always return an empty object. 17316 if ( acceptData( owner ) ) { 17317 17318 // If it is a node unlikely to be stringify-ed or looped over 17319 // use plain assignment 17320 if ( owner.nodeType ) { 17321 owner[ this.expando ] = value; 17322 17323 // Otherwise secure it in a non-enumerable property 17324 // configurable must be true to allow the property to be 17325 // deleted when data is removed 17326 } else { 17327 Object.defineProperty( owner, this.expando, { 17328 value: value, 17329 configurable: true 17330 } ); 17331 } 17332 } 17333 } 17334 17335 return value; 17336 }, 17337 set: function( owner, data, value ) { 17338 var prop, 17339 cache = this.cache( owner ); 17340 17341 // Handle: [ owner, key, value ] args 17342 // Always use camelCase key (gh-2257) 17343 if ( typeof data === "string" ) { 17344 cache[ camelCase( data ) ] = value; 17345 17346 // Handle: [ owner, { properties } ] args 17347 } else { 17348 17349 // Copy the properties one-by-one to the cache object 17350 for ( prop in data ) { 17351 cache[ camelCase( prop ) ] = data[ prop ]; 17352 } 17353 } 17354 return cache; 17355 }, 17356 get: function( owner, key ) { 17357 return key === undefined ? 17358 this.cache( owner ) : 17359 17360 // Always use camelCase key (gh-2257) 17361 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; 17362 }, 17363 access: function( owner, key, value ) { 17364 17365 // In cases where either: 17366 // 17367 // 1. No key was specified 17368 // 2. A string key was specified, but no value provided 17369 // 17370 // Take the "read" path and allow the get method to determine 17371 // which value to return, respectively either: 17372 // 17373 // 1. The entire cache object 17374 // 2. The data stored at the key 17375 // 17376 if ( key === undefined || 17377 ( ( key && typeof key === "string" ) && value === undefined ) ) { 17378 17379 return this.get( owner, key ); 17380 } 17381 17382 // When the key is not a string, or both a key and value 17383 // are specified, set or extend (existing objects) with either: 17384 // 17385 // 1. An object of properties 17386 // 2. A key and value 17387 // 17388 this.set( owner, key, value ); 17389 17390 // Since the "set" path can have two possible entry points 17391 // return the expected data based on which path was taken[*] 17392 return value !== undefined ? value : key; 17393 }, 17394 remove: function( owner, key ) { 17395 var i, 17396 cache = owner[ this.expando ]; 17397 17398 if ( cache === undefined ) { 17399 return; 17400 } 17401 17402 if ( key !== undefined ) { 17403 17404 // Support array or space separated string of keys 17405 if ( Array.isArray( key ) ) { 17406 17407 // If key is an array of keys... 17408 // We always set camelCase keys, so remove that. 17409 key = key.map( camelCase ); 17410 } else { 17411 key = camelCase( key ); 17412 17413 // If a key with the spaces exists, use it. 17414 // Otherwise, create an array by matching non-whitespace 17415 key = key in cache ? 17416 [ key ] : 17417 ( key.match( rnothtmlwhite ) || [] ); 17418 } 17419 17420 i = key.length; 17421 17422 while ( i-- ) { 17423 delete cache[ key[ i ] ]; 17424 } 17425 } 17426 17427 // Remove the expando if there's no more data 17428 if ( key === undefined || jQuery.isEmptyObject( cache ) ) { 17429 17430 // Support: Chrome <=35 - 45 17431 // Webkit & Blink performance suffers when deleting properties 17432 // from DOM nodes, so set to undefined instead 17433 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) 17434 if ( owner.nodeType ) { 17435 owner[ this.expando ] = undefined; 17436 } else { 17437 delete owner[ this.expando ]; 17438 } 17439 } 17440 }, 17441 hasData: function( owner ) { 17442 var cache = owner[ this.expando ]; 17443 return cache !== undefined && !jQuery.isEmptyObject( cache ); 17444 } 17445}; 17446var dataPriv = new Data(); 17447 17448var dataUser = new Data(); 17449 17450 17451 17452// Implementation Summary 17453// 17454// 1. Enforce API surface and semantic compatibility with 1.9.x branch 17455// 2. Improve the module's maintainability by reducing the storage 17456// paths to a single mechanism. 17457// 3. Use the same single mechanism to support "private" and "user" data. 17458// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) 17459// 5. Avoid exposing implementation details on user objects (eg. expando properties) 17460// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 17461 17462var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, 17463 rmultiDash = /[A-Z]/g; 17464 17465function getData( data ) { 17466 if ( data === "true" ) { 17467 return true; 17468 } 17469 17470 if ( data === "false" ) { 17471 return false; 17472 } 17473 17474 if ( data === "null" ) { 17475 return null; 17476 } 17477 17478 // Only convert to a number if it doesn't change the string 17479 if ( data === +data + "" ) { 17480 return +data; 17481 } 17482 17483 if ( rbrace.test( data ) ) { 17484 return JSON.parse( data ); 17485 } 17486 17487 return data; 17488} 17489 17490function dataAttr( elem, key, data ) { 17491 var name; 17492 17493 // If nothing was found internally, try to fetch any 17494 // data from the HTML5 data-* attribute 17495 if ( data === undefined && elem.nodeType === 1 ) { 17496 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); 17497 data = elem.getAttribute( name ); 17498 17499 if ( typeof data === "string" ) { 17500 try { 17501 data = getData( data ); 17502 } catch ( e ) {} 17503 17504 // Make sure we set the data so it isn't changed later 17505 dataUser.set( elem, key, data ); 17506 } else { 17507 data = undefined; 17508 } 17509 } 17510 return data; 17511} 17512 17513jQuery.extend( { 17514 hasData: function( elem ) { 17515 return dataUser.hasData( elem ) || dataPriv.hasData( elem ); 17516 }, 17517 17518 data: function( elem, name, data ) { 17519 return dataUser.access( elem, name, data ); 17520 }, 17521 17522 removeData: function( elem, name ) { 17523 dataUser.remove( elem, name ); 17524 }, 17525 17526 // TODO: Now that all calls to _data and _removeData have been replaced 17527 // with direct calls to dataPriv methods, these can be deprecated. 17528 _data: function( elem, name, data ) { 17529 return dataPriv.access( elem, name, data ); 17530 }, 17531 17532 _removeData: function( elem, name ) { 17533 dataPriv.remove( elem, name ); 17534 } 17535} ); 17536 17537jQuery.fn.extend( { 17538 data: function( key, value ) { 17539 var i, name, data, 17540 elem = this[ 0 ], 17541 attrs = elem && elem.attributes; 17542 17543 // Gets all values 17544 if ( key === undefined ) { 17545 if ( this.length ) { 17546 data = dataUser.get( elem ); 17547 17548 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { 17549 i = attrs.length; 17550 while ( i-- ) { 17551 17552 // Support: IE 11 only 17553 // The attrs elements can be null (trac-14894) 17554 if ( attrs[ i ] ) { 17555 name = attrs[ i ].name; 17556 if ( name.indexOf( "data-" ) === 0 ) { 17557 name = camelCase( name.slice( 5 ) ); 17558 dataAttr( elem, name, data[ name ] ); 17559 } 17560 } 17561 } 17562 dataPriv.set( elem, "hasDataAttrs", true ); 17563 } 17564 } 17565 17566 return data; 17567 } 17568 17569 // Sets multiple values 17570 if ( typeof key === "object" ) { 17571 return this.each( function() { 17572 dataUser.set( this, key ); 17573 } ); 17574 } 17575 17576 return access( this, function( value ) { 17577 var data; 17578 17579 // The calling jQuery object (element matches) is not empty 17580 // (and therefore has an element appears at this[ 0 ]) and the 17581 // `value` parameter was not undefined. An empty jQuery object 17582 // will result in `undefined` for elem = this[ 0 ] which will 17583 // throw an exception if an attempt to read a data cache is made. 17584 if ( elem && value === undefined ) { 17585 17586 // Attempt to get data from the cache 17587 // The key will always be camelCased in Data 17588 data = dataUser.get( elem, key ); 17589 if ( data !== undefined ) { 17590 return data; 17591 } 17592 17593 // Attempt to "discover" the data in 17594 // HTML5 custom data-* attrs 17595 data = dataAttr( elem, key ); 17596 if ( data !== undefined ) { 17597 return data; 17598 } 17599 17600 // We tried really hard, but the data doesn't exist. 17601 return; 17602 } 17603 17604 // Set the data... 17605 this.each( function() { 17606 17607 // We always store the camelCased key 17608 dataUser.set( this, key, value ); 17609 } ); 17610 }, null, value, arguments.length > 1, null, true ); 17611 }, 17612 17613 removeData: function( key ) { 17614 return this.each( function() { 17615 dataUser.remove( this, key ); 17616 } ); 17617 } 17618} ); 17619 17620 17621jQuery.extend( { 17622 queue: function( elem, type, data ) { 17623 var queue; 17624 17625 if ( elem ) { 17626 type = ( type || "fx" ) + "queue"; 17627 queue = dataPriv.get( elem, type ); 17628 17629 // Speed up dequeue by getting out quickly if this is just a lookup 17630 if ( data ) { 17631 if ( !queue || Array.isArray( data ) ) { 17632 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); 17633 } else { 17634 queue.push( data ); 17635 } 17636 } 17637 return queue || []; 17638 } 17639 }, 17640 17641 dequeue: function( elem, type ) { 17642 type = type || "fx"; 17643 17644 var queue = jQuery.queue( elem, type ), 17645 startLength = queue.length, 17646 fn = queue.shift(), 17647 hooks = jQuery._queueHooks( elem, type ), 17648 next = function() { 17649 jQuery.dequeue( elem, type ); 17650 }; 17651 17652 // If the fx queue is dequeued, always remove the progress sentinel 17653 if ( fn === "inprogress" ) { 17654 fn = queue.shift(); 17655 startLength--; 17656 } 17657 17658 if ( fn ) { 17659 17660 // Add a progress sentinel to prevent the fx queue from being 17661 // automatically dequeued 17662 if ( type === "fx" ) { 17663 queue.unshift( "inprogress" ); 17664 } 17665 17666 // Clear up the last queue stop function 17667 delete hooks.stop; 17668 fn.call( elem, next, hooks ); 17669 } 17670 17671 if ( !startLength && hooks ) { 17672 hooks.empty.fire(); 17673 } 17674 }, 17675 17676 // Not public - generate a queueHooks object, or return the current one 17677 _queueHooks: function( elem, type ) { 17678 var key = type + "queueHooks"; 17679 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { 17680 empty: jQuery.Callbacks( "once memory" ).add( function() { 17681 dataPriv.remove( elem, [ type + "queue", key ] ); 17682 } ) 17683 } ); 17684 } 17685} ); 17686 17687jQuery.fn.extend( { 17688 queue: function( type, data ) { 17689 var setter = 2; 17690 17691 if ( typeof type !== "string" ) { 17692 data = type; 17693 type = "fx"; 17694 setter--; 17695 } 17696 17697 if ( arguments.length < setter ) { 17698 return jQuery.queue( this[ 0 ], type ); 17699 } 17700 17701 return data === undefined ? 17702 this : 17703 this.each( function() { 17704 var queue = jQuery.queue( this, type, data ); 17705 17706 // Ensure a hooks for this queue 17707 jQuery._queueHooks( this, type ); 17708 17709 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { 17710 jQuery.dequeue( this, type ); 17711 } 17712 } ); 17713 }, 17714 dequeue: function( type ) { 17715 return this.each( function() { 17716 jQuery.dequeue( this, type ); 17717 } ); 17718 }, 17719 clearQueue: function( type ) { 17720 return this.queue( type || "fx", [] ); 17721 }, 17722 17723 // Get a promise resolved when queues of a certain type 17724 // are emptied (fx is the type by default) 17725 promise: function( type, obj ) { 17726 var tmp, 17727 count = 1, 17728 defer = jQuery.Deferred(), 17729 elements = this, 17730 i = this.length, 17731 resolve = function() { 17732 if ( !( --count ) ) { 17733 defer.resolveWith( elements, [ elements ] ); 17734 } 17735 }; 17736 17737 if ( typeof type !== "string" ) { 17738 obj = type; 17739 type = undefined; 17740 } 17741 type = type || "fx"; 17742 17743 while ( i-- ) { 17744 tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); 17745 if ( tmp && tmp.empty ) { 17746 count++; 17747 tmp.empty.add( resolve ); 17748 } 17749 } 17750 resolve(); 17751 return defer.promise( obj ); 17752 } 17753} ); 17754var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; 17755 17756var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); 17757 17758 17759var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; 17760 17761var documentElement = document.documentElement; 17762 17763 17764 17765 var isAttached = function( elem ) { 17766 return jQuery.contains( elem.ownerDocument, elem ); 17767 }, 17768 composed = { composed: true }; 17769 17770 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only 17771 // Check attachment across shadow DOM boundaries when possible (gh-3504) 17772 // Support: iOS 10.0-10.2 only 17773 // Early iOS 10 versions support `attachShadow` but not `getRootNode`, 17774 // leading to errors. We need to check for `getRootNode`. 17775 if ( documentElement.getRootNode ) { 17776 isAttached = function( elem ) { 17777 return jQuery.contains( elem.ownerDocument, elem ) || 17778 elem.getRootNode( composed ) === elem.ownerDocument; 17779 }; 17780 } 17781var isHiddenWithinTree = function( elem, el ) { 17782 17783 // isHiddenWithinTree might be called from jQuery#filter function; 17784 // in that case, element will be second argument 17785 elem = el || elem; 17786 17787 // Inline style trumps all 17788 return elem.style.display === "none" || 17789 elem.style.display === "" && 17790 17791 // Otherwise, check computed style 17792 // Support: Firefox <=43 - 45 17793 // Disconnected elements can have computed display: none, so first confirm that elem is 17794 // in the document. 17795 isAttached( elem ) && 17796 17797 jQuery.css( elem, "display" ) === "none"; 17798 }; 17799 17800 17801 17802function adjustCSS( elem, prop, valueParts, tween ) { 17803 var adjusted, scale, 17804 maxIterations = 20, 17805 currentValue = tween ? 17806 function() { 17807 return tween.cur(); 17808 } : 17809 function() { 17810 return jQuery.css( elem, prop, "" ); 17811 }, 17812 initial = currentValue(), 17813 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), 17814 17815 // Starting value computation is required for potential unit mismatches 17816 initialInUnit = elem.nodeType && 17817 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && 17818 rcssNum.exec( jQuery.css( elem, prop ) ); 17819 17820 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { 17821 17822 // Support: Firefox <=54 17823 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) 17824 initial = initial / 2; 17825 17826 // Trust units reported by jQuery.css 17827 unit = unit || initialInUnit[ 3 ]; 17828 17829 // Iteratively approximate from a nonzero starting point 17830 initialInUnit = +initial || 1; 17831 17832 while ( maxIterations-- ) { 17833 17834 // Evaluate and update our best guess (doubling guesses that zero out). 17835 // Finish if the scale equals or crosses 1 (making the old*new product non-positive). 17836 jQuery.style( elem, prop, initialInUnit + unit ); 17837 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { 17838 maxIterations = 0; 17839 } 17840 initialInUnit = initialInUnit / scale; 17841 17842 } 17843 17844 initialInUnit = initialInUnit * 2; 17845 jQuery.style( elem, prop, initialInUnit + unit ); 17846 17847 // Make sure we update the tween properties later on 17848 valueParts = valueParts || []; 17849 } 17850 17851 if ( valueParts ) { 17852 initialInUnit = +initialInUnit || +initial || 0; 17853 17854 // Apply relative offset (+=/-=) if specified 17855 adjusted = valueParts[ 1 ] ? 17856 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : 17857 +valueParts[ 2 ]; 17858 if ( tween ) { 17859 tween.unit = unit; 17860 tween.start = initialInUnit; 17861 tween.end = adjusted; 17862 } 17863 } 17864 return adjusted; 17865} 17866 17867 17868var defaultDisplayMap = {}; 17869 17870function getDefaultDisplay( elem ) { 17871 var temp, 17872 doc = elem.ownerDocument, 17873 nodeName = elem.nodeName, 17874 display = defaultDisplayMap[ nodeName ]; 17875 17876 if ( display ) { 17877 return display; 17878 } 17879 17880 temp = doc.body.appendChild( doc.createElement( nodeName ) ); 17881 display = jQuery.css( temp, "display" ); 17882 17883 temp.parentNode.removeChild( temp ); 17884 17885 if ( display === "none" ) { 17886 display = "block"; 17887 } 17888 defaultDisplayMap[ nodeName ] = display; 17889 17890 return display; 17891} 17892 17893function showHide( elements, show ) { 17894 var display, elem, 17895 values = [], 17896 index = 0, 17897 length = elements.length; 17898 17899 // Determine new display value for elements that need to change 17900 for ( ; index < length; index++ ) { 17901 elem = elements[ index ]; 17902 if ( !elem.style ) { 17903 continue; 17904 } 17905 17906 display = elem.style.display; 17907 if ( show ) { 17908 17909 // Since we force visibility upon cascade-hidden elements, an immediate (and slow) 17910 // check is required in this first loop unless we have a nonempty display value (either 17911 // inline or about-to-be-restored) 17912 if ( display === "none" ) { 17913 values[ index ] = dataPriv.get( elem, "display" ) || null; 17914 if ( !values[ index ] ) { 17915 elem.style.display = ""; 17916 } 17917 } 17918 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { 17919 values[ index ] = getDefaultDisplay( elem ); 17920 } 17921 } else { 17922 if ( display !== "none" ) { 17923 values[ index ] = "none"; 17924 17925 // Remember what we're overwriting 17926 dataPriv.set( elem, "display", display ); 17927 } 17928 } 17929 } 17930 17931 // Set the display of the elements in a second loop to avoid constant reflow 17932 for ( index = 0; index < length; index++ ) { 17933 if ( values[ index ] != null ) { 17934 elements[ index ].style.display = values[ index ]; 17935 } 17936 } 17937 17938 return elements; 17939} 17940 17941jQuery.fn.extend( { 17942 show: function() { 17943 return showHide( this, true ); 17944 }, 17945 hide: function() { 17946 return showHide( this ); 17947 }, 17948 toggle: function( state ) { 17949 if ( typeof state === "boolean" ) { 17950 return state ? this.show() : this.hide(); 17951 } 17952 17953 return this.each( function() { 17954 if ( isHiddenWithinTree( this ) ) { 17955 jQuery( this ).show(); 17956 } else { 17957 jQuery( this ).hide(); 17958 } 17959 } ); 17960 } 17961} ); 17962var rcheckableType = ( /^(?:checkbox|radio)$/i ); 17963 17964var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); 17965 17966var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); 17967 17968 17969 17970( function() { 17971 var fragment = document.createDocumentFragment(), 17972 div = fragment.appendChild( document.createElement( "div" ) ), 17973 input = document.createElement( "input" ); 17974 17975 // Support: Android 4.0 - 4.3 only 17976 // Check state lost if the name is set (trac-11217) 17977 // Support: Windows Web Apps (WWA) 17978 // `name` and `type` must use .setAttribute for WWA (trac-14901) 17979 input.setAttribute( "type", "radio" ); 17980 input.setAttribute( "checked", "checked" ); 17981 input.setAttribute( "name", "t" ); 17982 17983 div.appendChild( input ); 17984 17985 // Support: Android <=4.1 only 17986 // Older WebKit doesn't clone checked state correctly in fragments 17987 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 17988 17989 // Support: IE <=11 only 17990 // Make sure textarea (and checkbox) defaultValue is properly cloned 17991 div.innerHTML = "<textarea>x</textarea>"; 17992 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 17993 17994 // Support: IE <=9 only 17995 // IE <=9 replaces <option> tags with their contents when inserted outside of 17996 // the select element. 17997 div.innerHTML = "<option></option>"; 17998 support.option = !!div.lastChild; 17999} )(); 18000 18001 18002// We have to close these tags to support XHTML (trac-13200) 18003var wrapMap = { 18004 18005 // XHTML parsers do not magically insert elements in the 18006 // same way that tag soup parsers do. So we cannot shorten 18007 // this by omitting <tbody> or other required elements. 18008 thead: [ 1, "<table>", "</table>" ], 18009 col: [ 2, "<table><colgroup>", "</colgroup></table>" ], 18010 tr: [ 2, "<table><tbody>", "</tbody></table>" ], 18011 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 18012 18013 _default: [ 0, "", "" ] 18014}; 18015 18016wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 18017wrapMap.th = wrapMap.td; 18018 18019// Support: IE <=9 only 18020if ( !support.option ) { 18021 wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; 18022} 18023 18024 18025function getAll( context, tag ) { 18026 18027 // Support: IE <=9 - 11 only 18028 // Use typeof to avoid zero-argument method invocation on host objects (trac-15151) 18029 var ret; 18030 18031 if ( typeof context.getElementsByTagName !== "undefined" ) { 18032 ret = context.getElementsByTagName( tag || "*" ); 18033 18034 } else if ( typeof context.querySelectorAll !== "undefined" ) { 18035 ret = context.querySelectorAll( tag || "*" ); 18036 18037 } else { 18038 ret = []; 18039 } 18040 18041 if ( tag === undefined || tag && nodeName( context, tag ) ) { 18042 return jQuery.merge( [ context ], ret ); 18043 } 18044 18045 return ret; 18046} 18047 18048 18049// Mark scripts as having already been evaluated 18050function setGlobalEval( elems, refElements ) { 18051 var i = 0, 18052 l = elems.length; 18053 18054 for ( ; i < l; i++ ) { 18055 dataPriv.set( 18056 elems[ i ], 18057 "globalEval", 18058 !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 18059 ); 18060 } 18061} 18062 18063 18064var rhtml = /<|&#?\w+;/; 18065 18066function buildFragment( elems, context, scripts, selection, ignored ) { 18067 var elem, tmp, tag, wrap, attached, j, 18068 fragment = context.createDocumentFragment(), 18069 nodes = [], 18070 i = 0, 18071 l = elems.length; 18072 18073 for ( ; i < l; i++ ) { 18074 elem = elems[ i ]; 18075 18076 if ( elem || elem === 0 ) { 18077 18078 // Add nodes directly 18079 if ( toType( elem ) === "object" ) { 18080 18081 // Support: Android <=4.0 only, PhantomJS 1 only 18082 // push.apply(_, arraylike) throws on ancient WebKit 18083 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); 18084 18085 // Convert non-html into a text node 18086 } else if ( !rhtml.test( elem ) ) { 18087 nodes.push( context.createTextNode( elem ) ); 18088 18089 // Convert html into DOM nodes 18090 } else { 18091 tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); 18092 18093 // Deserialize a standard representation 18094 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); 18095 wrap = wrapMap[ tag ] || wrapMap._default; 18096 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; 18097 18098 // Descend through wrappers to the right content 18099 j = wrap[ 0 ]; 18100 while ( j-- ) { 18101 tmp = tmp.lastChild; 18102 } 18103 18104 // Support: Android <=4.0 only, PhantomJS 1 only 18105 // push.apply(_, arraylike) throws on ancient WebKit 18106 jQuery.merge( nodes, tmp.childNodes ); 18107 18108 // Remember the top-level container 18109 tmp = fragment.firstChild; 18110 18111 // Ensure the created nodes are orphaned (trac-12392) 18112 tmp.textContent = ""; 18113 } 18114 } 18115 } 18116 18117 // Remove wrapper from fragment 18118 fragment.textContent = ""; 18119 18120 i = 0; 18121 while ( ( elem = nodes[ i++ ] ) ) { 18122 18123 // Skip elements already in the context collection (trac-4087) 18124 if ( selection && jQuery.inArray( elem, selection ) > -1 ) { 18125 if ( ignored ) { 18126 ignored.push( elem ); 18127 } 18128 continue; 18129 } 18130 18131 attached = isAttached( elem ); 18132 18133 // Append to fragment 18134 tmp = getAll( fragment.appendChild( elem ), "script" ); 18135 18136 // Preserve script evaluation history 18137 if ( attached ) { 18138 setGlobalEval( tmp ); 18139 } 18140 18141 // Capture executables 18142 if ( scripts ) { 18143 j = 0; 18144 while ( ( elem = tmp[ j++ ] ) ) { 18145 if ( rscriptType.test( elem.type || "" ) ) { 18146 scripts.push( elem ); 18147 } 18148 } 18149 } 18150 } 18151 18152 return fragment; 18153} 18154 18155 18156var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 18157 18158function returnTrue() { 18159 return true; 18160} 18161 18162function returnFalse() { 18163 return false; 18164} 18165 18166// Support: IE <=9 - 11+ 18167// focus() and blur() are asynchronous, except when they are no-op. 18168// So expect focus to be synchronous when the element is already active, 18169// and blur to be synchronous when the element is not already active. 18170// (focus and blur are always synchronous in other supported browsers, 18171// this just defines when we can count on it). 18172function expectSync( elem, type ) { 18173 return ( elem === safeActiveElement() ) === ( type === "focus" ); 18174} 18175 18176// Support: IE <=9 only 18177// Accessing document.activeElement can throw unexpectedly 18178// https://bugs.jquery.com/ticket/13393 18179function safeActiveElement() { 18180 try { 18181 return document.activeElement; 18182 } catch ( err ) { } 18183} 18184 18185function on( elem, types, selector, data, fn, one ) { 18186 var origFn, type; 18187 18188 // Types can be a map of types/handlers 18189 if ( typeof types === "object" ) { 18190 18191 // ( types-Object, selector, data ) 18192 if ( typeof selector !== "string" ) { 18193 18194 // ( types-Object, data ) 18195 data = data || selector; 18196 selector = undefined; 18197 } 18198 for ( type in types ) { 18199 on( elem, type, selector, data, types[ type ], one ); 18200 } 18201 return elem; 18202 } 18203 18204 if ( data == null && fn == null ) { 18205 18206 // ( types, fn ) 18207 fn = selector; 18208 data = selector = undefined; 18209 } else if ( fn == null ) { 18210 if ( typeof selector === "string" ) { 18211 18212 // ( types, selector, fn ) 18213 fn = data; 18214 data = undefined; 18215 } else { 18216 18217 // ( types, data, fn ) 18218 fn = data; 18219 data = selector; 18220 selector = undefined; 18221 } 18222 } 18223 if ( fn === false ) { 18224 fn = returnFalse; 18225 } else if ( !fn ) { 18226 return elem; 18227 } 18228 18229 if ( one === 1 ) { 18230 origFn = fn; 18231 fn = function( event ) { 18232 18233 // Can use an empty set, since event contains the info 18234 jQuery().off( event ); 18235 return origFn.apply( this, arguments ); 18236 }; 18237 18238 // Use same guid so caller can remove using origFn 18239 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); 18240 } 18241 return elem.each( function() { 18242 jQuery.event.add( this, types, fn, data, selector ); 18243 } ); 18244} 18245 18246/* 18247 * Helper functions for managing events -- not part of the public interface. 18248 * Props to Dean Edwards' addEvent library for many of the ideas. 18249 */ 18250jQuery.event = { 18251 18252 global: {}, 18253 18254 add: function( elem, types, handler, data, selector ) { 18255 18256 var handleObjIn, eventHandle, tmp, 18257 events, t, handleObj, 18258 special, handlers, type, namespaces, origType, 18259 elemData = dataPriv.get( elem ); 18260 18261 // Only attach events to objects that accept data 18262 if ( !acceptData( elem ) ) { 18263 return; 18264 } 18265 18266 // Caller can pass in an object of custom data in lieu of the handler 18267 if ( handler.handler ) { 18268 handleObjIn = handler; 18269 handler = handleObjIn.handler; 18270 selector = handleObjIn.selector; 18271 } 18272 18273 // Ensure that invalid selectors throw exceptions at attach time 18274 // Evaluate against documentElement in case elem is a non-element node (e.g., document) 18275 if ( selector ) { 18276 jQuery.find.matchesSelector( documentElement, selector ); 18277 } 18278 18279 // Make sure that the handler has a unique ID, used to find/remove it later 18280 if ( !handler.guid ) { 18281 handler.guid = jQuery.guid++; 18282 } 18283 18284 // Init the element's event structure and main handler, if this is the first 18285 if ( !( events = elemData.events ) ) { 18286 events = elemData.events = Object.create( null ); 18287 } 18288 if ( !( eventHandle = elemData.handle ) ) { 18289 eventHandle = elemData.handle = function( e ) { 18290 18291 // Discard the second event of a jQuery.event.trigger() and 18292 // when an event is called after a page has unloaded 18293 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? 18294 jQuery.event.dispatch.apply( elem, arguments ) : undefined; 18295 }; 18296 } 18297 18298 // Handle multiple events separated by a space 18299 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 18300 t = types.length; 18301 while ( t-- ) { 18302 tmp = rtypenamespace.exec( types[ t ] ) || []; 18303 type = origType = tmp[ 1 ]; 18304 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 18305 18306 // There *must* be a type, no attaching namespace-only handlers 18307 if ( !type ) { 18308 continue; 18309 } 18310 18311 // If event changes its type, use the special event handlers for the changed type 18312 special = jQuery.event.special[ type ] || {}; 18313 18314 // If selector defined, determine special event api type, otherwise given type 18315 type = ( selector ? special.delegateType : special.bindType ) || type; 18316 18317 // Update special based on newly reset type 18318 special = jQuery.event.special[ type ] || {}; 18319 18320 // handleObj is passed to all event handlers 18321 handleObj = jQuery.extend( { 18322 type: type, 18323 origType: origType, 18324 data: data, 18325 handler: handler, 18326 guid: handler.guid, 18327 selector: selector, 18328 needsContext: selector && jQuery.expr.match.needsContext.test( selector ), 18329 namespace: namespaces.join( "." ) 18330 }, handleObjIn ); 18331 18332 // Init the event handler queue if we're the first 18333 if ( !( handlers = events[ type ] ) ) { 18334 handlers = events[ type ] = []; 18335 handlers.delegateCount = 0; 18336 18337 // Only use addEventListener if the special events handler returns false 18338 if ( !special.setup || 18339 special.setup.call( elem, data, namespaces, eventHandle ) === false ) { 18340 18341 if ( elem.addEventListener ) { 18342 elem.addEventListener( type, eventHandle ); 18343 } 18344 } 18345 } 18346 18347 if ( special.add ) { 18348 special.add.call( elem, handleObj ); 18349 18350 if ( !handleObj.handler.guid ) { 18351 handleObj.handler.guid = handler.guid; 18352 } 18353 } 18354 18355 // Add to the element's handler list, delegates in front 18356 if ( selector ) { 18357 handlers.splice( handlers.delegateCount++, 0, handleObj ); 18358 } else { 18359 handlers.push( handleObj ); 18360 } 18361 18362 // Keep track of which events have ever been used, for event optimization 18363 jQuery.event.global[ type ] = true; 18364 } 18365 18366 }, 18367 18368 // Detach an event or set of events from an element 18369 remove: function( elem, types, handler, selector, mappedTypes ) { 18370 18371 var j, origCount, tmp, 18372 events, t, handleObj, 18373 special, handlers, type, namespaces, origType, 18374 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); 18375 18376 if ( !elemData || !( events = elemData.events ) ) { 18377 return; 18378 } 18379 18380 // Once for each type.namespace in types; type may be omitted 18381 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 18382 t = types.length; 18383 while ( t-- ) { 18384 tmp = rtypenamespace.exec( types[ t ] ) || []; 18385 type = origType = tmp[ 1 ]; 18386 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 18387 18388 // Unbind all events (on this namespace, if provided) for the element 18389 if ( !type ) { 18390 for ( type in events ) { 18391 jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); 18392 } 18393 continue; 18394 } 18395 18396 special = jQuery.event.special[ type ] || {}; 18397 type = ( selector ? special.delegateType : special.bindType ) || type; 18398 handlers = events[ type ] || []; 18399 tmp = tmp[ 2 ] && 18400 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); 18401 18402 // Remove matching events 18403 origCount = j = handlers.length; 18404 while ( j-- ) { 18405 handleObj = handlers[ j ]; 18406 18407 if ( ( mappedTypes || origType === handleObj.origType ) && 18408 ( !handler || handler.guid === handleObj.guid ) && 18409 ( !tmp || tmp.test( handleObj.namespace ) ) && 18410 ( !selector || selector === handleObj.selector || 18411 selector === "**" && handleObj.selector ) ) { 18412 handlers.splice( j, 1 ); 18413 18414 if ( handleObj.selector ) { 18415 handlers.delegateCount--; 18416 } 18417 if ( special.remove ) { 18418 special.remove.call( elem, handleObj ); 18419 } 18420 } 18421 } 18422 18423 // Remove generic event handler if we removed something and no more handlers exist 18424 // (avoids potential for endless recursion during removal of special event handlers) 18425 if ( origCount && !handlers.length ) { 18426 if ( !special.teardown || 18427 special.teardown.call( elem, namespaces, elemData.handle ) === false ) { 18428 18429 jQuery.removeEvent( elem, type, elemData.handle ); 18430 } 18431 18432 delete events[ type ]; 18433 } 18434 } 18435 18436 // Remove data and the expando if it's no longer used 18437 if ( jQuery.isEmptyObject( events ) ) { 18438 dataPriv.remove( elem, "handle events" ); 18439 } 18440 }, 18441 18442 dispatch: function( nativeEvent ) { 18443 18444 var i, j, ret, matched, handleObj, handlerQueue, 18445 args = new Array( arguments.length ), 18446 18447 // Make a writable jQuery.Event from the native event object 18448 event = jQuery.event.fix( nativeEvent ), 18449 18450 handlers = ( 18451 dataPriv.get( this, "events" ) || Object.create( null ) 18452 )[ event.type ] || [], 18453 special = jQuery.event.special[ event.type ] || {}; 18454 18455 // Use the fix-ed jQuery.Event rather than the (read-only) native event 18456 args[ 0 ] = event; 18457 18458 for ( i = 1; i < arguments.length; i++ ) { 18459 args[ i ] = arguments[ i ]; 18460 } 18461 18462 event.delegateTarget = this; 18463 18464 // Call the preDispatch hook for the mapped type, and let it bail if desired 18465 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { 18466 return; 18467 } 18468 18469 // Determine handlers 18470 handlerQueue = jQuery.event.handlers.call( this, event, handlers ); 18471 18472 // Run delegates first; they may want to stop propagation beneath us 18473 i = 0; 18474 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { 18475 event.currentTarget = matched.elem; 18476 18477 j = 0; 18478 while ( ( handleObj = matched.handlers[ j++ ] ) && 18479 !event.isImmediatePropagationStopped() ) { 18480 18481 // If the event is namespaced, then each handler is only invoked if it is 18482 // specially universal or its namespaces are a superset of the event's. 18483 if ( !event.rnamespace || handleObj.namespace === false || 18484 event.rnamespace.test( handleObj.namespace ) ) { 18485 18486 event.handleObj = handleObj; 18487 event.data = handleObj.data; 18488 18489 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || 18490 handleObj.handler ).apply( matched.elem, args ); 18491 18492 if ( ret !== undefined ) { 18493 if ( ( event.result = ret ) === false ) { 18494 event.preventDefault(); 18495 event.stopPropagation(); 18496 } 18497 } 18498 } 18499 } 18500 } 18501 18502 // Call the postDispatch hook for the mapped type 18503 if ( special.postDispatch ) { 18504 special.postDispatch.call( this, event ); 18505 } 18506 18507 return event.result; 18508 }, 18509 18510 handlers: function( event, handlers ) { 18511 var i, handleObj, sel, matchedHandlers, matchedSelectors, 18512 handlerQueue = [], 18513 delegateCount = handlers.delegateCount, 18514 cur = event.target; 18515 18516 // Find delegate handlers 18517 if ( delegateCount && 18518 18519 // Support: IE <=9 18520 // Black-hole SVG <use> instance trees (trac-13180) 18521 cur.nodeType && 18522 18523 // Support: Firefox <=42 18524 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 18525 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 18526 // Support: IE 11 only 18527 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 18528 !( event.type === "click" && event.button >= 1 ) ) { 18529 18530 for ( ; cur !== this; cur = cur.parentNode || this ) { 18531 18532 // Don't check non-elements (trac-13208) 18533 // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764) 18534 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { 18535 matchedHandlers = []; 18536 matchedSelectors = {}; 18537 for ( i = 0; i < delegateCount; i++ ) { 18538 handleObj = handlers[ i ]; 18539 18540 // Don't conflict with Object.prototype properties (trac-13203) 18541 sel = handleObj.selector + " "; 18542 18543 if ( matchedSelectors[ sel ] === undefined ) { 18544 matchedSelectors[ sel ] = handleObj.needsContext ? 18545 jQuery( sel, this ).index( cur ) > -1 : 18546 jQuery.find( sel, this, null, [ cur ] ).length; 18547 } 18548 if ( matchedSelectors[ sel ] ) { 18549 matchedHandlers.push( handleObj ); 18550 } 18551 } 18552 if ( matchedHandlers.length ) { 18553 handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); 18554 } 18555 } 18556 } 18557 } 18558 18559 // Add the remaining (directly-bound) handlers 18560 cur = this; 18561 if ( delegateCount < handlers.length ) { 18562 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); 18563 } 18564 18565 return handlerQueue; 18566 }, 18567 18568 addProp: function( name, hook ) { 18569 Object.defineProperty( jQuery.Event.prototype, name, { 18570 enumerable: true, 18571 configurable: true, 18572 18573 get: isFunction( hook ) ? 18574 function() { 18575 if ( this.originalEvent ) { 18576 return hook( this.originalEvent ); 18577 } 18578 } : 18579 function() { 18580 if ( this.originalEvent ) { 18581 return this.originalEvent[ name ]; 18582 } 18583 }, 18584 18585 set: function( value ) { 18586 Object.defineProperty( this, name, { 18587 enumerable: true, 18588 configurable: true, 18589 writable: true, 18590 value: value 18591 } ); 18592 } 18593 } ); 18594 }, 18595 18596 fix: function( originalEvent ) { 18597 return originalEvent[ jQuery.expando ] ? 18598 originalEvent : 18599 new jQuery.Event( originalEvent ); 18600 }, 18601 18602 special: { 18603 load: { 18604 18605 // Prevent triggered image.load events from bubbling to window.load 18606 noBubble: true 18607 }, 18608 click: { 18609 18610 // Utilize native event to ensure correct state for checkable inputs 18611 setup: function( data ) { 18612 18613 // For mutual compressibility with _default, replace `this` access with a local var. 18614 // `|| data` is dead code meant only to preserve the variable through minification. 18615 var el = this || data; 18616 18617 // Claim the first handler 18618 if ( rcheckableType.test( el.type ) && 18619 el.click && nodeName( el, "input" ) ) { 18620 18621 // dataPriv.set( el, "click", ... ) 18622 leverageNative( el, "click", returnTrue ); 18623 } 18624 18625 // Return false to allow normal processing in the caller 18626 return false; 18627 }, 18628 trigger: function( data ) { 18629 18630 // For mutual compressibility with _default, replace `this` access with a local var. 18631 // `|| data` is dead code meant only to preserve the variable through minification. 18632 var el = this || data; 18633 18634 // Force setup before triggering a click 18635 if ( rcheckableType.test( el.type ) && 18636 el.click && nodeName( el, "input" ) ) { 18637 18638 leverageNative( el, "click" ); 18639 } 18640 18641 // Return non-false to allow normal event-path propagation 18642 return true; 18643 }, 18644 18645 // For cross-browser consistency, suppress native .click() on links 18646 // Also prevent it if we're currently inside a leveraged native-event stack 18647 _default: function( event ) { 18648 var target = event.target; 18649 return rcheckableType.test( target.type ) && 18650 target.click && nodeName( target, "input" ) && 18651 dataPriv.get( target, "click" ) || 18652 nodeName( target, "a" ); 18653 } 18654 }, 18655 18656 beforeunload: { 18657 postDispatch: function( event ) { 18658 18659 // Support: Firefox 20+ 18660 // Firefox doesn't alert if the returnValue field is not set. 18661 if ( event.result !== undefined && event.originalEvent ) { 18662 event.originalEvent.returnValue = event.result; 18663 } 18664 } 18665 } 18666 } 18667}; 18668 18669// Ensure the presence of an event listener that handles manually-triggered 18670// synthetic events by interrupting progress until reinvoked in response to 18671// *native* events that it fires directly, ensuring that state changes have 18672// already occurred before other listeners are invoked. 18673function leverageNative( el, type, expectSync ) { 18674 18675 // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add 18676 if ( !expectSync ) { 18677 if ( dataPriv.get( el, type ) === undefined ) { 18678 jQuery.event.add( el, type, returnTrue ); 18679 } 18680 return; 18681 } 18682 18683 // Register the controller as a special universal handler for all event namespaces 18684 dataPriv.set( el, type, false ); 18685 jQuery.event.add( el, type, { 18686 namespace: false, 18687 handler: function( event ) { 18688 var notAsync, result, 18689 saved = dataPriv.get( this, type ); 18690 18691 if ( ( event.isTrigger & 1 ) && this[ type ] ) { 18692 18693 // Interrupt processing of the outer synthetic .trigger()ed event 18694 // Saved data should be false in such cases, but might be a leftover capture object 18695 // from an async native handler (gh-4350) 18696 if ( !saved.length ) { 18697 18698 // Store arguments for use when handling the inner native event 18699 // There will always be at least one argument (an event object), so this array 18700 // will not be confused with a leftover capture object. 18701 saved = slice.call( arguments ); 18702 dataPriv.set( this, type, saved ); 18703 18704 // Trigger the native event and capture its result 18705 // Support: IE <=9 - 11+ 18706 // focus() and blur() are asynchronous 18707 notAsync = expectSync( this, type ); 18708 this[ type ](); 18709 result = dataPriv.get( this, type ); 18710 if ( saved !== result || notAsync ) { 18711 dataPriv.set( this, type, false ); 18712 } else { 18713 result = {}; 18714 } 18715 if ( saved !== result ) { 18716 18717 // Cancel the outer synthetic event 18718 event.stopImmediatePropagation(); 18719 event.preventDefault(); 18720 18721 // Support: Chrome 86+ 18722 // In Chrome, if an element having a focusout handler is blurred by 18723 // clicking outside of it, it invokes the handler synchronously. If 18724 // that handler calls `.remove()` on the element, the data is cleared, 18725 // leaving `result` undefined. We need to guard against this. 18726 return result && result.value; 18727 } 18728 18729 // If this is an inner synthetic event for an event with a bubbling surrogate 18730 // (focus or blur), assume that the surrogate already propagated from triggering the 18731 // native event and prevent that from happening again here. 18732 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the 18733 // bubbling surrogate propagates *after* the non-bubbling base), but that seems 18734 // less bad than duplication. 18735 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { 18736 event.stopPropagation(); 18737 } 18738 18739 // If this is a native event triggered above, everything is now in order 18740 // Fire an inner synthetic event with the original arguments 18741 } else if ( saved.length ) { 18742 18743 // ...and capture the result 18744 dataPriv.set( this, type, { 18745 value: jQuery.event.trigger( 18746 18747 // Support: IE <=9 - 11+ 18748 // Extend with the prototype to reset the above stopImmediatePropagation() 18749 jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), 18750 saved.slice( 1 ), 18751 this 18752 ) 18753 } ); 18754 18755 // Abort handling of the native event 18756 event.stopImmediatePropagation(); 18757 } 18758 } 18759 } ); 18760} 18761 18762jQuery.removeEvent = function( elem, type, handle ) { 18763 18764 // This "if" is needed for plain objects 18765 if ( elem.removeEventListener ) { 18766 elem.removeEventListener( type, handle ); 18767 } 18768}; 18769 18770jQuery.Event = function( src, props ) { 18771 18772 // Allow instantiation without the 'new' keyword 18773 if ( !( this instanceof jQuery.Event ) ) { 18774 return new jQuery.Event( src, props ); 18775 } 18776 18777 // Event object 18778 if ( src && src.type ) { 18779 this.originalEvent = src; 18780 this.type = src.type; 18781 18782 // Events bubbling up the document may have been marked as prevented 18783 // by a handler lower down the tree; reflect the correct value. 18784 this.isDefaultPrevented = src.defaultPrevented || 18785 src.defaultPrevented === undefined && 18786 18787 // Support: Android <=2.3 only 18788 src.returnValue === false ? 18789 returnTrue : 18790 returnFalse; 18791 18792 // Create target properties 18793 // Support: Safari <=6 - 7 only 18794 // Target should not be a text node (trac-504, trac-13143) 18795 this.target = ( src.target && src.target.nodeType === 3 ) ? 18796 src.target.parentNode : 18797 src.target; 18798 18799 this.currentTarget = src.currentTarget; 18800 this.relatedTarget = src.relatedTarget; 18801 18802 // Event type 18803 } else { 18804 this.type = src; 18805 } 18806 18807 // Put explicitly provided properties onto the event object 18808 if ( props ) { 18809 jQuery.extend( this, props ); 18810 } 18811 18812 // Create a timestamp if incoming event doesn't have one 18813 this.timeStamp = src && src.timeStamp || Date.now(); 18814 18815 // Mark it as fixed 18816 this[ jQuery.expando ] = true; 18817}; 18818 18819// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 18820// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 18821jQuery.Event.prototype = { 18822 constructor: jQuery.Event, 18823 isDefaultPrevented: returnFalse, 18824 isPropagationStopped: returnFalse, 18825 isImmediatePropagationStopped: returnFalse, 18826 isSimulated: false, 18827 18828 preventDefault: function() { 18829 var e = this.originalEvent; 18830 18831 this.isDefaultPrevented = returnTrue; 18832 18833 if ( e && !this.isSimulated ) { 18834 e.preventDefault(); 18835 } 18836 }, 18837 stopPropagation: function() { 18838 var e = this.originalEvent; 18839 18840 this.isPropagationStopped = returnTrue; 18841 18842 if ( e && !this.isSimulated ) { 18843 e.stopPropagation(); 18844 } 18845 }, 18846 stopImmediatePropagation: function() { 18847 var e = this.originalEvent; 18848 18849 this.isImmediatePropagationStopped = returnTrue; 18850 18851 if ( e && !this.isSimulated ) { 18852 e.stopImmediatePropagation(); 18853 } 18854 18855 this.stopPropagation(); 18856 } 18857}; 18858 18859// Includes all common event props including KeyEvent and MouseEvent specific props 18860jQuery.each( { 18861 altKey: true, 18862 bubbles: true, 18863 cancelable: true, 18864 changedTouches: true, 18865 ctrlKey: true, 18866 detail: true, 18867 eventPhase: true, 18868 metaKey: true, 18869 pageX: true, 18870 pageY: true, 18871 shiftKey: true, 18872 view: true, 18873 "char": true, 18874 code: true, 18875 charCode: true, 18876 key: true, 18877 keyCode: true, 18878 button: true, 18879 buttons: true, 18880 clientX: true, 18881 clientY: true, 18882 offsetX: true, 18883 offsetY: true, 18884 pointerId: true, 18885 pointerType: true, 18886 screenX: true, 18887 screenY: true, 18888 targetTouches: true, 18889 toElement: true, 18890 touches: true, 18891 which: true 18892}, jQuery.event.addProp ); 18893 18894jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { 18895 jQuery.event.special[ type ] = { 18896 18897 // Utilize native event if possible so blur/focus sequence is correct 18898 setup: function() { 18899 18900 // Claim the first handler 18901 // dataPriv.set( this, "focus", ... ) 18902 // dataPriv.set( this, "blur", ... ) 18903 leverageNative( this, type, expectSync ); 18904 18905 // Return false to allow normal processing in the caller 18906 return false; 18907 }, 18908 trigger: function() { 18909 18910 // Force setup before trigger 18911 leverageNative( this, type ); 18912 18913 // Return non-false to allow normal event-path propagation 18914 return true; 18915 }, 18916 18917 // Suppress native focus or blur if we're currently inside 18918 // a leveraged native-event stack 18919 _default: function( event ) { 18920 return dataPriv.get( event.target, type ); 18921 }, 18922 18923 delegateType: delegateType 18924 }; 18925} ); 18926 18927// Create mouseenter/leave events using mouseover/out and event-time checks 18928// so that event delegation works in jQuery. 18929// Do the same for pointerenter/pointerleave and pointerover/pointerout 18930// 18931// Support: Safari 7 only 18932// Safari sends mouseenter too often; see: 18933// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 18934// for the description of the bug (it existed in older Chrome versions as well). 18935jQuery.each( { 18936 mouseenter: "mouseover", 18937 mouseleave: "mouseout", 18938 pointerenter: "pointerover", 18939 pointerleave: "pointerout" 18940}, function( orig, fix ) { 18941 jQuery.event.special[ orig ] = { 18942 delegateType: fix, 18943 bindType: fix, 18944 18945 handle: function( event ) { 18946 var ret, 18947 target = this, 18948 related = event.relatedTarget, 18949 handleObj = event.handleObj; 18950 18951 // For mouseenter/leave call the handler if related is outside the target. 18952 // NB: No relatedTarget if the mouse left/entered the browser window 18953 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { 18954 event.type = handleObj.origType; 18955 ret = handleObj.handler.apply( this, arguments ); 18956 event.type = fix; 18957 } 18958 return ret; 18959 } 18960 }; 18961} ); 18962 18963jQuery.fn.extend( { 18964 18965 on: function( types, selector, data, fn ) { 18966 return on( this, types, selector, data, fn ); 18967 }, 18968 one: function( types, selector, data, fn ) { 18969 return on( this, types, selector, data, fn, 1 ); 18970 }, 18971 off: function( types, selector, fn ) { 18972 var handleObj, type; 18973 if ( types && types.preventDefault && types.handleObj ) { 18974 18975 // ( event ) dispatched jQuery.Event 18976 handleObj = types.handleObj; 18977 jQuery( types.delegateTarget ).off( 18978 handleObj.namespace ? 18979 handleObj.origType + "." + handleObj.namespace : 18980 handleObj.origType, 18981 handleObj.selector, 18982 handleObj.handler 18983 ); 18984 return this; 18985 } 18986 if ( typeof types === "object" ) { 18987 18988 // ( types-object [, selector] ) 18989 for ( type in types ) { 18990 this.off( type, selector, types[ type ] ); 18991 } 18992 return this; 18993 } 18994 if ( selector === false || typeof selector === "function" ) { 18995 18996 // ( types [, fn] ) 18997 fn = selector; 18998 selector = undefined; 18999 } 19000 if ( fn === false ) { 19001 fn = returnFalse; 19002 } 19003 return this.each( function() { 19004 jQuery.event.remove( this, types, fn, selector ); 19005 } ); 19006 } 19007} ); 19008 19009 19010var 19011 19012 // Support: IE <=10 - 11, Edge 12 - 13 only 19013 // In IE/Edge using regex groups here causes severe slowdowns. 19014 // See https://connect.microsoft.com/IE/feedback/details/1736512/ 19015 rnoInnerhtml = /<script|<style|<link/i, 19016 19017 // checked="checked" or checked 19018 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, 19019 19020 rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g; 19021 19022// Prefer a tbody over its parent table for containing new rows 19023function manipulationTarget( elem, content ) { 19024 if ( nodeName( elem, "table" ) && 19025 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { 19026 19027 return jQuery( elem ).children( "tbody" )[ 0 ] || elem; 19028 } 19029 19030 return elem; 19031} 19032 19033// Replace/restore the type attribute of script elements for safe DOM manipulation 19034function disableScript( elem ) { 19035 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; 19036 return elem; 19037} 19038function restoreScript( elem ) { 19039 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { 19040 elem.type = elem.type.slice( 5 ); 19041 } else { 19042 elem.removeAttribute( "type" ); 19043 } 19044 19045 return elem; 19046} 19047 19048function cloneCopyEvent( src, dest ) { 19049 var i, l, type, pdataOld, udataOld, udataCur, events; 19050 19051 if ( dest.nodeType !== 1 ) { 19052 return; 19053 } 19054 19055 // 1. Copy private data: events, handlers, etc. 19056 if ( dataPriv.hasData( src ) ) { 19057 pdataOld = dataPriv.get( src ); 19058 events = pdataOld.events; 19059 19060 if ( events ) { 19061 dataPriv.remove( dest, "handle events" ); 19062 19063 for ( type in events ) { 19064 for ( i = 0, l = events[ type ].length; i < l; i++ ) { 19065 jQuery.event.add( dest, type, events[ type ][ i ] ); 19066 } 19067 } 19068 } 19069 } 19070 19071 // 2. Copy user data 19072 if ( dataUser.hasData( src ) ) { 19073 udataOld = dataUser.access( src ); 19074 udataCur = jQuery.extend( {}, udataOld ); 19075 19076 dataUser.set( dest, udataCur ); 19077 } 19078} 19079 19080// Fix IE bugs, see support tests 19081function fixInput( src, dest ) { 19082 var nodeName = dest.nodeName.toLowerCase(); 19083 19084 // Fails to persist the checked state of a cloned checkbox or radio button. 19085 if ( nodeName === "input" && rcheckableType.test( src.type ) ) { 19086 dest.checked = src.checked; 19087 19088 // Fails to return the selected option to the default selected state when cloning options 19089 } else if ( nodeName === "input" || nodeName === "textarea" ) { 19090 dest.defaultValue = src.defaultValue; 19091 } 19092} 19093 19094function domManip( collection, args, callback, ignored ) { 19095 19096 // Flatten any nested arrays 19097 args = flat( args ); 19098 19099 var fragment, first, scripts, hasScripts, node, doc, 19100 i = 0, 19101 l = collection.length, 19102 iNoClone = l - 1, 19103 value = args[ 0 ], 19104 valueIsFunction = isFunction( value ); 19105 19106 // We can't cloneNode fragments that contain checked, in WebKit 19107 if ( valueIsFunction || 19108 ( l > 1 && typeof value === "string" && 19109 !support.checkClone && rchecked.test( value ) ) ) { 19110 return collection.each( function( index ) { 19111 var self = collection.eq( index ); 19112 if ( valueIsFunction ) { 19113 args[ 0 ] = value.call( this, index, self.html() ); 19114 } 19115 domManip( self, args, callback, ignored ); 19116 } ); 19117 } 19118 19119 if ( l ) { 19120 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); 19121 first = fragment.firstChild; 19122 19123 if ( fragment.childNodes.length === 1 ) { 19124 fragment = first; 19125 } 19126 19127 // Require either new content or an interest in ignored elements to invoke the callback 19128 if ( first || ignored ) { 19129 scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); 19130 hasScripts = scripts.length; 19131 19132 // Use the original fragment for the last item 19133 // instead of the first because it can end up 19134 // being emptied incorrectly in certain situations (trac-8070). 19135 for ( ; i < l; i++ ) { 19136 node = fragment; 19137 19138 if ( i !== iNoClone ) { 19139 node = jQuery.clone( node, true, true ); 19140 19141 // Keep references to cloned scripts for later restoration 19142 if ( hasScripts ) { 19143 19144 // Support: Android <=4.0 only, PhantomJS 1 only 19145 // push.apply(_, arraylike) throws on ancient WebKit 19146 jQuery.merge( scripts, getAll( node, "script" ) ); 19147 } 19148 } 19149 19150 callback.call( collection[ i ], node, i ); 19151 } 19152 19153 if ( hasScripts ) { 19154 doc = scripts[ scripts.length - 1 ].ownerDocument; 19155 19156 // Reenable scripts 19157 jQuery.map( scripts, restoreScript ); 19158 19159 // Evaluate executable scripts on first document insertion 19160 for ( i = 0; i < hasScripts; i++ ) { 19161 node = scripts[ i ]; 19162 if ( rscriptType.test( node.type || "" ) && 19163 !dataPriv.access( node, "globalEval" ) && 19164 jQuery.contains( doc, node ) ) { 19165 19166 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { 19167 19168 // Optional AJAX dependency, but won't run scripts if not present 19169 if ( jQuery._evalUrl && !node.noModule ) { 19170 jQuery._evalUrl( node.src, { 19171 nonce: node.nonce || node.getAttribute( "nonce" ) 19172 }, doc ); 19173 } 19174 } else { 19175 19176 // Unwrap a CDATA section containing script contents. This shouldn't be 19177 // needed as in XML documents they're already not visible when 19178 // inspecting element contents and in HTML documents they have no 19179 // meaning but we're preserving that logic for backwards compatibility. 19180 // This will be removed completely in 4.0. See gh-4904. 19181 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); 19182 } 19183 } 19184 } 19185 } 19186 } 19187 } 19188 19189 return collection; 19190} 19191 19192function remove( elem, selector, keepData ) { 19193 var node, 19194 nodes = selector ? jQuery.filter( selector, elem ) : elem, 19195 i = 0; 19196 19197 for ( ; ( node = nodes[ i ] ) != null; i++ ) { 19198 if ( !keepData && node.nodeType === 1 ) { 19199 jQuery.cleanData( getAll( node ) ); 19200 } 19201 19202 if ( node.parentNode ) { 19203 if ( keepData && isAttached( node ) ) { 19204 setGlobalEval( getAll( node, "script" ) ); 19205 } 19206 node.parentNode.removeChild( node ); 19207 } 19208 } 19209 19210 return elem; 19211} 19212 19213jQuery.extend( { 19214 htmlPrefilter: function( html ) { 19215 return html; 19216 }, 19217 19218 clone: function( elem, dataAndEvents, deepDataAndEvents ) { 19219 var i, l, srcElements, destElements, 19220 clone = elem.cloneNode( true ), 19221 inPage = isAttached( elem ); 19222 19223 // Fix IE cloning issues 19224 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && 19225 !jQuery.isXMLDoc( elem ) ) { 19226 19227 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 19228 destElements = getAll( clone ); 19229 srcElements = getAll( elem ); 19230 19231 for ( i = 0, l = srcElements.length; i < l; i++ ) { 19232 fixInput( srcElements[ i ], destElements[ i ] ); 19233 } 19234 } 19235 19236 // Copy the events from the original to the clone 19237 if ( dataAndEvents ) { 19238 if ( deepDataAndEvents ) { 19239 srcElements = srcElements || getAll( elem ); 19240 destElements = destElements || getAll( clone ); 19241 19242 for ( i = 0, l = srcElements.length; i < l; i++ ) { 19243 cloneCopyEvent( srcElements[ i ], destElements[ i ] ); 19244 } 19245 } else { 19246 cloneCopyEvent( elem, clone ); 19247 } 19248 } 19249 19250 // Preserve script evaluation history 19251 destElements = getAll( clone, "script" ); 19252 if ( destElements.length > 0 ) { 19253 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); 19254 } 19255 19256 // Return the cloned set 19257 return clone; 19258 }, 19259 19260 cleanData: function( elems ) { 19261 var data, elem, type, 19262 special = jQuery.event.special, 19263 i = 0; 19264 19265 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { 19266 if ( acceptData( elem ) ) { 19267 if ( ( data = elem[ dataPriv.expando ] ) ) { 19268 if ( data.events ) { 19269 for ( type in data.events ) { 19270 if ( special[ type ] ) { 19271 jQuery.event.remove( elem, type ); 19272 19273 // This is a shortcut to avoid jQuery.event.remove's overhead 19274 } else { 19275 jQuery.removeEvent( elem, type, data.handle ); 19276 } 19277 } 19278 } 19279 19280 // Support: Chrome <=35 - 45+ 19281 // Assign undefined instead of using delete, see Data#remove 19282 elem[ dataPriv.expando ] = undefined; 19283 } 19284 if ( elem[ dataUser.expando ] ) { 19285 19286 // Support: Chrome <=35 - 45+ 19287 // Assign undefined instead of using delete, see Data#remove 19288 elem[ dataUser.expando ] = undefined; 19289 } 19290 } 19291 } 19292 } 19293} ); 19294 19295jQuery.fn.extend( { 19296 detach: function( selector ) { 19297 return remove( this, selector, true ); 19298 }, 19299 19300 remove: function( selector ) { 19301 return remove( this, selector ); 19302 }, 19303 19304 text: function( value ) { 19305 return access( this, function( value ) { 19306 return value === undefined ? 19307 jQuery.text( this ) : 19308 this.empty().each( function() { 19309 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 19310 this.textContent = value; 19311 } 19312 } ); 19313 }, null, value, arguments.length ); 19314 }, 19315 19316 append: function() { 19317 return domManip( this, arguments, function( elem ) { 19318 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 19319 var target = manipulationTarget( this, elem ); 19320 target.appendChild( elem ); 19321 } 19322 } ); 19323 }, 19324 19325 prepend: function() { 19326 return domManip( this, arguments, function( elem ) { 19327 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 19328 var target = manipulationTarget( this, elem ); 19329 target.insertBefore( elem, target.firstChild ); 19330 } 19331 } ); 19332 }, 19333 19334 before: function() { 19335 return domManip( this, arguments, function( elem ) { 19336 if ( this.parentNode ) { 19337 this.parentNode.insertBefore( elem, this ); 19338 } 19339 } ); 19340 }, 19341 19342 after: function() { 19343 return domManip( this, arguments, function( elem ) { 19344 if ( this.parentNode ) { 19345 this.parentNode.insertBefore( elem, this.nextSibling ); 19346 } 19347 } ); 19348 }, 19349 19350 empty: function() { 19351 var elem, 19352 i = 0; 19353 19354 for ( ; ( elem = this[ i ] ) != null; i++ ) { 19355 if ( elem.nodeType === 1 ) { 19356 19357 // Prevent memory leaks 19358 jQuery.cleanData( getAll( elem, false ) ); 19359 19360 // Remove any remaining nodes 19361 elem.textContent = ""; 19362 } 19363 } 19364 19365 return this; 19366 }, 19367 19368 clone: function( dataAndEvents, deepDataAndEvents ) { 19369 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 19370 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 19371 19372 return this.map( function() { 19373 return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); 19374 } ); 19375 }, 19376 19377 html: function( value ) { 19378 return access( this, function( value ) { 19379 var elem = this[ 0 ] || {}, 19380 i = 0, 19381 l = this.length; 19382 19383 if ( value === undefined && elem.nodeType === 1 ) { 19384 return elem.innerHTML; 19385 } 19386 19387 // See if we can take a shortcut and just use innerHTML 19388 if ( typeof value === "string" && !rnoInnerhtml.test( value ) && 19389 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { 19390 19391 value = jQuery.htmlPrefilter( value ); 19392 19393 try { 19394 for ( ; i < l; i++ ) { 19395 elem = this[ i ] || {}; 19396 19397 // Remove element nodes and prevent memory leaks 19398 if ( elem.nodeType === 1 ) { 19399 jQuery.cleanData( getAll( elem, false ) ); 19400 elem.innerHTML = value; 19401 } 19402 } 19403 19404 elem = 0; 19405 19406 // If using innerHTML throws an exception, use the fallback method 19407 } catch ( e ) {} 19408 } 19409 19410 if ( elem ) { 19411 this.empty().append( value ); 19412 } 19413 }, null, value, arguments.length ); 19414 }, 19415 19416 replaceWith: function() { 19417 var ignored = []; 19418 19419 // Make the changes, replacing each non-ignored context element with the new content 19420 return domManip( this, arguments, function( elem ) { 19421 var parent = this.parentNode; 19422 19423 if ( jQuery.inArray( this, ignored ) < 0 ) { 19424 jQuery.cleanData( getAll( this ) ); 19425 if ( parent ) { 19426 parent.replaceChild( elem, this ); 19427 } 19428 } 19429 19430 // Force callback invocation 19431 }, ignored ); 19432 } 19433} ); 19434 19435jQuery.each( { 19436 appendTo: "append", 19437 prependTo: "prepend", 19438 insertBefore: "before", 19439 insertAfter: "after", 19440 replaceAll: "replaceWith" 19441}, function( name, original ) { 19442 jQuery.fn[ name ] = function( selector ) { 19443 var elems, 19444 ret = [], 19445 insert = jQuery( selector ), 19446 last = insert.length - 1, 19447 i = 0; 19448 19449 for ( ; i <= last; i++ ) { 19450 elems = i === last ? this : this.clone( true ); 19451 jQuery( insert[ i ] )[ original ]( elems ); 19452 19453 // Support: Android <=4.0 only, PhantomJS 1 only 19454 // .get() because push.apply(_, arraylike) throws on ancient WebKit 19455 push.apply( ret, elems.get() ); 19456 } 19457 19458 return this.pushStack( ret ); 19459 }; 19460} ); 19461var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 19462 19463var rcustomProp = /^--/; 19464 19465 19466var getStyles = function( elem ) { 19467 19468 // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150) 19469 // IE throws on elements created in popups 19470 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 19471 var view = elem.ownerDocument.defaultView; 19472 19473 if ( !view || !view.opener ) { 19474 view = window; 19475 } 19476 19477 return view.getComputedStyle( elem ); 19478 }; 19479 19480var swap = function( elem, options, callback ) { 19481 var ret, name, 19482 old = {}; 19483 19484 // Remember the old values, and insert the new ones 19485 for ( name in options ) { 19486 old[ name ] = elem.style[ name ]; 19487 elem.style[ name ] = options[ name ]; 19488 } 19489 19490 ret = callback.call( elem ); 19491 19492 // Revert the old values 19493 for ( name in options ) { 19494 elem.style[ name ] = old[ name ]; 19495 } 19496 19497 return ret; 19498}; 19499 19500 19501var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); 19502 19503var whitespace = "[\\x20\\t\\r\\n\\f]"; 19504 19505 19506var rtrimCSS = new RegExp( 19507 "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", 19508 "g" 19509); 19510 19511 19512 19513 19514( function() { 19515 19516 // Executing both pixelPosition & boxSizingReliable tests require only one layout 19517 // so they're executed at the same time to save the second computation. 19518 function computeStyleTests() { 19519 19520 // This is a singleton, we need to execute it only once 19521 if ( !div ) { 19522 return; 19523 } 19524 19525 container.style.cssText = "position:absolute;left:-11111px;width:60px;" + 19526 "margin-top:1px;padding:0;border:0"; 19527 div.style.cssText = 19528 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + 19529 "margin:auto;border:1px;padding:1px;" + 19530 "width:60%;top:1%"; 19531 documentElement.appendChild( container ).appendChild( div ); 19532 19533 var divStyle = window.getComputedStyle( div ); 19534 pixelPositionVal = divStyle.top !== "1%"; 19535 19536 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 19537 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; 19538 19539 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 19540 // Some styles come back with percentage values, even though they shouldn't 19541 div.style.right = "60%"; 19542 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; 19543 19544 // Support: IE 9 - 11 only 19545 // Detect misreporting of content dimensions for box-sizing:border-box elements 19546 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; 19547 19548 // Support: IE 9 only 19549 // Detect overflow:scroll screwiness (gh-3699) 19550 // Support: Chrome <=64 19551 // Don't get tricked when zoom affects offsetWidth (gh-4029) 19552 div.style.position = "absolute"; 19553 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; 19554 19555 documentElement.removeChild( container ); 19556 19557 // Nullify the div so it wouldn't be stored in the memory and 19558 // it will also be a sign that checks already performed 19559 div = null; 19560 } 19561 19562 function roundPixelMeasures( measure ) { 19563 return Math.round( parseFloat( measure ) ); 19564 } 19565 19566 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, 19567 reliableTrDimensionsVal, reliableMarginLeftVal, 19568 container = document.createElement( "div" ), 19569 div = document.createElement( "div" ); 19570 19571 // Finish early in limited (non-browser) environments 19572 if ( !div.style ) { 19573 return; 19574 } 19575 19576 // Support: IE <=9 - 11 only 19577 // Style of cloned element affects source element cloned (trac-8908) 19578 div.style.backgroundClip = "content-box"; 19579 div.cloneNode( true ).style.backgroundClip = ""; 19580 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 19581 19582 jQuery.extend( support, { 19583 boxSizingReliable: function() { 19584 computeStyleTests(); 19585 return boxSizingReliableVal; 19586 }, 19587 pixelBoxStyles: function() { 19588 computeStyleTests(); 19589 return pixelBoxStylesVal; 19590 }, 19591 pixelPosition: function() { 19592 computeStyleTests(); 19593 return pixelPositionVal; 19594 }, 19595 reliableMarginLeft: function() { 19596 computeStyleTests(); 19597 return reliableMarginLeftVal; 19598 }, 19599 scrollboxSize: function() { 19600 computeStyleTests(); 19601 return scrollboxSizeVal; 19602 }, 19603 19604 // Support: IE 9 - 11+, Edge 15 - 18+ 19605 // IE/Edge misreport `getComputedStyle` of table rows with width/height 19606 // set in CSS while `offset*` properties report correct values. 19607 // Behavior in IE 9 is more subtle than in newer versions & it passes 19608 // some versions of this test; make sure not to make it pass there! 19609 // 19610 // Support: Firefox 70+ 19611 // Only Firefox includes border widths 19612 // in computed dimensions. (gh-4529) 19613 reliableTrDimensions: function() { 19614 var table, tr, trChild, trStyle; 19615 if ( reliableTrDimensionsVal == null ) { 19616 table = document.createElement( "table" ); 19617 tr = document.createElement( "tr" ); 19618 trChild = document.createElement( "div" ); 19619 19620 table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; 19621 tr.style.cssText = "border:1px solid"; 19622 19623 // Support: Chrome 86+ 19624 // Height set through cssText does not get applied. 19625 // Computed height then comes back as 0. 19626 tr.style.height = "1px"; 19627 trChild.style.height = "9px"; 19628 19629 // Support: Android 8 Chrome 86+ 19630 // In our bodyBackground.html iframe, 19631 // display for all div elements is set to "inline", 19632 // which causes a problem only in Android 8 Chrome 86. 19633 // Ensuring the div is display: block 19634 // gets around this issue. 19635 trChild.style.display = "block"; 19636 19637 documentElement 19638 .appendChild( table ) 19639 .appendChild( tr ) 19640 .appendChild( trChild ); 19641 19642 trStyle = window.getComputedStyle( tr ); 19643 reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + 19644 parseInt( trStyle.borderTopWidth, 10 ) + 19645 parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; 19646 19647 documentElement.removeChild( table ); 19648 } 19649 return reliableTrDimensionsVal; 19650 } 19651 } ); 19652} )(); 19653 19654 19655function curCSS( elem, name, computed ) { 19656 var width, minWidth, maxWidth, ret, 19657 isCustomProp = rcustomProp.test( name ), 19658 19659 // Support: Firefox 51+ 19660 // Retrieving style before computed somehow 19661 // fixes an issue with getting wrong values 19662 // on detached elements 19663 style = elem.style; 19664 19665 computed = computed || getStyles( elem ); 19666 19667 // getPropertyValue is needed for: 19668 // .css('filter') (IE 9 only, trac-12537) 19669 // .css('--customProperty) (gh-3144) 19670 if ( computed ) { 19671 19672 // Support: IE <=9 - 11+ 19673 // IE only supports `"float"` in `getPropertyValue`; in computed styles 19674 // it's only available as `"cssFloat"`. We no longer modify properties 19675 // sent to `.css()` apart from camelCasing, so we need to check both. 19676 // Normally, this would create difference in behavior: if 19677 // `getPropertyValue` returns an empty string, the value returned 19678 // by `.css()` would be `undefined`. This is usually the case for 19679 // disconnected elements. However, in IE even disconnected elements 19680 // with no styles return `"none"` for `getPropertyValue( "float" )` 19681 ret = computed.getPropertyValue( name ) || computed[ name ]; 19682 19683 if ( isCustomProp && ret ) { 19684 19685 // Support: Firefox 105+, Chrome <=105+ 19686 // Spec requires trimming whitespace for custom properties (gh-4926). 19687 // Firefox only trims leading whitespace. Chrome just collapses 19688 // both leading & trailing whitespace to a single space. 19689 // 19690 // Fall back to `undefined` if empty string returned. 19691 // This collapses a missing definition with property defined 19692 // and set to an empty string but there's no standard API 19693 // allowing us to differentiate them without a performance penalty 19694 // and returning `undefined` aligns with older jQuery. 19695 // 19696 // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED 19697 // as whitespace while CSS does not, but this is not a problem 19698 // because CSS preprocessing replaces them with U+000A LINE FEED 19699 // (which *is* CSS whitespace) 19700 // https://www.w3.org/TR/css-syntax-3/#input-preprocessing 19701 ret = ret.replace( rtrimCSS, "$1" ) || undefined; 19702 } 19703 19704 if ( ret === "" && !isAttached( elem ) ) { 19705 ret = jQuery.style( elem, name ); 19706 } 19707 19708 // A tribute to the "awesome hack by Dean Edwards" 19709 // Android Browser returns percentage for some values, 19710 // but width seems to be reliably pixels. 19711 // This is against the CSSOM draft spec: 19712 // https://drafts.csswg.org/cssom/#resolved-values 19713 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { 19714 19715 // Remember the original values 19716 width = style.width; 19717 minWidth = style.minWidth; 19718 maxWidth = style.maxWidth; 19719 19720 // Put in the new values to get a computed value out 19721 style.minWidth = style.maxWidth = style.width = ret; 19722 ret = computed.width; 19723 19724 // Revert the changed values 19725 style.width = width; 19726 style.minWidth = minWidth; 19727 style.maxWidth = maxWidth; 19728 } 19729 } 19730 19731 return ret !== undefined ? 19732 19733 // Support: IE <=9 - 11 only 19734 // IE returns zIndex value as an integer. 19735 ret + "" : 19736 ret; 19737} 19738 19739 19740function addGetHookIf( conditionFn, hookFn ) { 19741 19742 // Define the hook, we'll check on the first run if it's really needed. 19743 return { 19744 get: function() { 19745 if ( conditionFn() ) { 19746 19747 // Hook not needed (or it's not possible to use it due 19748 // to missing dependency), remove it. 19749 delete this.get; 19750 return; 19751 } 19752 19753 // Hook needed; redefine it so that the support test is not executed again. 19754 return ( this.get = hookFn ).apply( this, arguments ); 19755 } 19756 }; 19757} 19758 19759 19760var cssPrefixes = [ "Webkit", "Moz", "ms" ], 19761 emptyStyle = document.createElement( "div" ).style, 19762 vendorProps = {}; 19763 19764// Return a vendor-prefixed property or undefined 19765function vendorPropName( name ) { 19766 19767 // Check for vendor prefixed names 19768 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), 19769 i = cssPrefixes.length; 19770 19771 while ( i-- ) { 19772 name = cssPrefixes[ i ] + capName; 19773 if ( name in emptyStyle ) { 19774 return name; 19775 } 19776 } 19777} 19778 19779// Return a potentially-mapped jQuery.cssProps or vendor prefixed property 19780function finalPropName( name ) { 19781 var final = jQuery.cssProps[ name ] || vendorProps[ name ]; 19782 19783 if ( final ) { 19784 return final; 19785 } 19786 if ( name in emptyStyle ) { 19787 return name; 19788 } 19789 return vendorProps[ name ] = vendorPropName( name ) || name; 19790} 19791 19792 19793var 19794 19795 // Swappable if display is none or starts with table 19796 // except "table", "table-cell", or "table-caption" 19797 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display 19798 rdisplayswap = /^(none|table(?!-c[ea]).+)/, 19799 cssShow = { position: "absolute", visibility: "hidden", display: "block" }, 19800 cssNormalTransform = { 19801 letterSpacing: "0", 19802 fontWeight: "400" 19803 }; 19804 19805function setPositiveNumber( _elem, value, subtract ) { 19806 19807 // Any relative (+/-) values have already been 19808 // normalized at this point 19809 var matches = rcssNum.exec( value ); 19810 return matches ? 19811 19812 // Guard against undefined "subtract", e.g., when used as in cssHooks 19813 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : 19814 value; 19815} 19816 19817function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { 19818 var i = dimension === "width" ? 1 : 0, 19819 extra = 0, 19820 delta = 0; 19821 19822 // Adjustment may not be necessary 19823 if ( box === ( isBorderBox ? "border" : "content" ) ) { 19824 return 0; 19825 } 19826 19827 for ( ; i < 4; i += 2 ) { 19828 19829 // Both box models exclude margin 19830 if ( box === "margin" ) { 19831 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); 19832 } 19833 19834 // If we get here with a content-box, we're seeking "padding" or "border" or "margin" 19835 if ( !isBorderBox ) { 19836 19837 // Add padding 19838 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 19839 19840 // For "border" or "margin", add border 19841 if ( box !== "padding" ) { 19842 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 19843 19844 // But still keep track of it otherwise 19845 } else { 19846 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 19847 } 19848 19849 // If we get here with a border-box (content + padding + border), we're seeking "content" or 19850 // "padding" or "margin" 19851 } else { 19852 19853 // For "content", subtract padding 19854 if ( box === "content" ) { 19855 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 19856 } 19857 19858 // For "content" or "padding", subtract border 19859 if ( box !== "margin" ) { 19860 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 19861 } 19862 } 19863 } 19864 19865 // Account for positive content-box scroll gutter when requested by providing computedVal 19866 if ( !isBorderBox && computedVal >= 0 ) { 19867 19868 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border 19869 // Assuming integer scroll gutter, subtract the rest and round down 19870 delta += Math.max( 0, Math.ceil( 19871 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 19872 computedVal - 19873 delta - 19874 extra - 19875 0.5 19876 19877 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 19878 // Use an explicit zero to avoid NaN (gh-3964) 19879 ) ) || 0; 19880 } 19881 19882 return delta; 19883} 19884 19885function getWidthOrHeight( elem, dimension, extra ) { 19886 19887 // Start with computed style 19888 var styles = getStyles( elem ), 19889 19890 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). 19891 // Fake content-box until we know it's needed to know the true value. 19892 boxSizingNeeded = !support.boxSizingReliable() || extra, 19893 isBorderBox = boxSizingNeeded && 19894 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 19895 valueIsBorderBox = isBorderBox, 19896 19897 val = curCSS( elem, dimension, styles ), 19898 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); 19899 19900 // Support: Firefox <=54 19901 // Return a confounding non-pixel value or feign ignorance, as appropriate. 19902 if ( rnumnonpx.test( val ) ) { 19903 if ( !extra ) { 19904 return val; 19905 } 19906 val = "auto"; 19907 } 19908 19909 19910 // Support: IE 9 - 11 only 19911 // Use offsetWidth/offsetHeight for when box sizing is unreliable. 19912 // In those cases, the computed value can be trusted to be border-box. 19913 if ( ( !support.boxSizingReliable() && isBorderBox || 19914 19915 // Support: IE 10 - 11+, Edge 15 - 18+ 19916 // IE/Edge misreport `getComputedStyle` of table rows with width/height 19917 // set in CSS while `offset*` properties report correct values. 19918 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 19919 !support.reliableTrDimensions() && nodeName( elem, "tr" ) || 19920 19921 // Fall back to offsetWidth/offsetHeight when value is "auto" 19922 // This happens for inline elements with no explicit setting (gh-3571) 19923 val === "auto" || 19924 19925 // Support: Android <=4.1 - 4.3 only 19926 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 19927 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && 19928 19929 // Make sure the element is visible & connected 19930 elem.getClientRects().length ) { 19931 19932 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; 19933 19934 // Where available, offsetWidth/offsetHeight approximate border box dimensions. 19935 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the 19936 // retrieved value as a content box dimension. 19937 valueIsBorderBox = offsetProp in elem; 19938 if ( valueIsBorderBox ) { 19939 val = elem[ offsetProp ]; 19940 } 19941 } 19942 19943 // Normalize "" and auto 19944 val = parseFloat( val ) || 0; 19945 19946 // Adjust for the element's box model 19947 return ( val + 19948 boxModelAdjustment( 19949 elem, 19950 dimension, 19951 extra || ( isBorderBox ? "border" : "content" ), 19952 valueIsBorderBox, 19953 styles, 19954 19955 // Provide the current computed size to request scroll gutter calculation (gh-3589) 19956 val 19957 ) 19958 ) + "px"; 19959} 19960 19961jQuery.extend( { 19962 19963 // Add in style property hooks for overriding the default 19964 // behavior of getting and setting a style property 19965 cssHooks: { 19966 opacity: { 19967 get: function( elem, computed ) { 19968 if ( computed ) { 19969 19970 // We should always get a number back from opacity 19971 var ret = curCSS( elem, "opacity" ); 19972 return ret === "" ? "1" : ret; 19973 } 19974 } 19975 } 19976 }, 19977 19978 // Don't automatically add "px" to these possibly-unitless properties 19979 cssNumber: { 19980 "animationIterationCount": true, 19981 "columnCount": true, 19982 "fillOpacity": true, 19983 "flexGrow": true, 19984 "flexShrink": true, 19985 "fontWeight": true, 19986 "gridArea": true, 19987 "gridColumn": true, 19988 "gridColumnEnd": true, 19989 "gridColumnStart": true, 19990 "gridRow": true, 19991 "gridRowEnd": true, 19992 "gridRowStart": true, 19993 "lineHeight": true, 19994 "opacity": true, 19995 "order": true, 19996 "orphans": true, 19997 "widows": true, 19998 "zIndex": true, 19999 "zoom": true 20000 }, 20001 20002 // Add in properties whose names you wish to fix before 20003 // setting or getting the value 20004 cssProps: {}, 20005 20006 // Get and set the style property on a DOM Node 20007 style: function( elem, name, value, extra ) { 20008 20009 // Don't set styles on text and comment nodes 20010 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { 20011 return; 20012 } 20013 20014 // Make sure that we're working with the right name 20015 var ret, type, hooks, 20016 origName = camelCase( name ), 20017 isCustomProp = rcustomProp.test( name ), 20018 style = elem.style; 20019 20020 // Make sure that we're working with the right name. We don't 20021 // want to query the value if it is a CSS custom property 20022 // since they are user-defined. 20023 if ( !isCustomProp ) { 20024 name = finalPropName( origName ); 20025 } 20026 20027 // Gets hook for the prefixed version, then unprefixed version 20028 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 20029 20030 // Check if we're setting a value 20031 if ( value !== undefined ) { 20032 type = typeof value; 20033 20034 // Convert "+=" or "-=" to relative numbers (trac-7345) 20035 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { 20036 value = adjustCSS( elem, name, ret ); 20037 20038 // Fixes bug trac-9237 20039 type = "number"; 20040 } 20041 20042 // Make sure that null and NaN values aren't set (trac-7116) 20043 if ( value == null || value !== value ) { 20044 return; 20045 } 20046 20047 // If a number was passed in, add the unit (except for certain CSS properties) 20048 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append 20049 // "px" to a few hardcoded values. 20050 if ( type === "number" && !isCustomProp ) { 20051 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); 20052 } 20053 20054 // background-* props affect original clone's values 20055 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { 20056 style[ name ] = "inherit"; 20057 } 20058 20059 // If a hook was provided, use that value, otherwise just set the specified value 20060 if ( !hooks || !( "set" in hooks ) || 20061 ( value = hooks.set( elem, value, extra ) ) !== undefined ) { 20062 20063 if ( isCustomProp ) { 20064 style.setProperty( name, value ); 20065 } else { 20066 style[ name ] = value; 20067 } 20068 } 20069 20070 } else { 20071 20072 // If a hook was provided get the non-computed value from there 20073 if ( hooks && "get" in hooks && 20074 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { 20075 20076 return ret; 20077 } 20078 20079 // Otherwise just get the value from the style object 20080 return style[ name ]; 20081 } 20082 }, 20083 20084 css: function( elem, name, extra, styles ) { 20085 var val, num, hooks, 20086 origName = camelCase( name ), 20087 isCustomProp = rcustomProp.test( name ); 20088 20089 // Make sure that we're working with the right name. We don't 20090 // want to modify the value if it is a CSS custom property 20091 // since they are user-defined. 20092 if ( !isCustomProp ) { 20093 name = finalPropName( origName ); 20094 } 20095 20096 // Try prefixed name followed by the unprefixed name 20097 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 20098 20099 // If a hook was provided get the computed value from there 20100 if ( hooks && "get" in hooks ) { 20101 val = hooks.get( elem, true, extra ); 20102 } 20103 20104 // Otherwise, if a way to get the computed value exists, use that 20105 if ( val === undefined ) { 20106 val = curCSS( elem, name, styles ); 20107 } 20108 20109 // Convert "normal" to computed value 20110 if ( val === "normal" && name in cssNormalTransform ) { 20111 val = cssNormalTransform[ name ]; 20112 } 20113 20114 // Make numeric if forced or a qualifier was provided and val looks numeric 20115 if ( extra === "" || extra ) { 20116 num = parseFloat( val ); 20117 return extra === true || isFinite( num ) ? num || 0 : val; 20118 } 20119 20120 return val; 20121 } 20122} ); 20123 20124jQuery.each( [ "height", "width" ], function( _i, dimension ) { 20125 jQuery.cssHooks[ dimension ] = { 20126 get: function( elem, computed, extra ) { 20127 if ( computed ) { 20128 20129 // Certain elements can have dimension info if we invisibly show them 20130 // but it must have a current display style that would benefit 20131 return rdisplayswap.test( jQuery.css( elem, "display" ) ) && 20132 20133 // Support: Safari 8+ 20134 // Table columns in Safari have non-zero offsetWidth & zero 20135 // getBoundingClientRect().width unless display is changed. 20136 // Support: IE <=11 only 20137 // Running getBoundingClientRect on a disconnected node 20138 // in IE throws an error. 20139 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? 20140 swap( elem, cssShow, function() { 20141 return getWidthOrHeight( elem, dimension, extra ); 20142 } ) : 20143 getWidthOrHeight( elem, dimension, extra ); 20144 } 20145 }, 20146 20147 set: function( elem, value, extra ) { 20148 var matches, 20149 styles = getStyles( elem ), 20150 20151 // Only read styles.position if the test has a chance to fail 20152 // to avoid forcing a reflow. 20153 scrollboxSizeBuggy = !support.scrollboxSize() && 20154 styles.position === "absolute", 20155 20156 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) 20157 boxSizingNeeded = scrollboxSizeBuggy || extra, 20158 isBorderBox = boxSizingNeeded && 20159 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 20160 subtract = extra ? 20161 boxModelAdjustment( 20162 elem, 20163 dimension, 20164 extra, 20165 isBorderBox, 20166 styles 20167 ) : 20168 0; 20169 20170 // Account for unreliable border-box dimensions by comparing offset* to computed and 20171 // faking a content-box to get border and padding (gh-3699) 20172 if ( isBorderBox && scrollboxSizeBuggy ) { 20173 subtract -= Math.ceil( 20174 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 20175 parseFloat( styles[ dimension ] ) - 20176 boxModelAdjustment( elem, dimension, "border", false, styles ) - 20177 0.5 20178 ); 20179 } 20180 20181 // Convert to pixels if value adjustment is needed 20182 if ( subtract && ( matches = rcssNum.exec( value ) ) && 20183 ( matches[ 3 ] || "px" ) !== "px" ) { 20184 20185 elem.style[ dimension ] = value; 20186 value = jQuery.css( elem, dimension ); 20187 } 20188 20189 return setPositiveNumber( elem, value, subtract ); 20190 } 20191 }; 20192} ); 20193 20194jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, 20195 function( elem, computed ) { 20196 if ( computed ) { 20197 return ( parseFloat( curCSS( elem, "marginLeft" ) ) || 20198 elem.getBoundingClientRect().left - 20199 swap( elem, { marginLeft: 0 }, function() { 20200 return elem.getBoundingClientRect().left; 20201 } ) 20202 ) + "px"; 20203 } 20204 } 20205); 20206 20207// These hooks are used by animate to expand properties 20208jQuery.each( { 20209 margin: "", 20210 padding: "", 20211 border: "Width" 20212}, function( prefix, suffix ) { 20213 jQuery.cssHooks[ prefix + suffix ] = { 20214 expand: function( value ) { 20215 var i = 0, 20216 expanded = {}, 20217 20218 // Assumes a single number if not a string 20219 parts = typeof value === "string" ? value.split( " " ) : [ value ]; 20220 20221 for ( ; i < 4; i++ ) { 20222 expanded[ prefix + cssExpand[ i ] + suffix ] = 20223 parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; 20224 } 20225 20226 return expanded; 20227 } 20228 }; 20229 20230 if ( prefix !== "margin" ) { 20231 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; 20232 } 20233} ); 20234 20235jQuery.fn.extend( { 20236 css: function( name, value ) { 20237 return access( this, function( elem, name, value ) { 20238 var styles, len, 20239 map = {}, 20240 i = 0; 20241 20242 if ( Array.isArray( name ) ) { 20243 styles = getStyles( elem ); 20244 len = name.length; 20245 20246 for ( ; i < len; i++ ) { 20247 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); 20248 } 20249 20250 return map; 20251 } 20252 20253 return value !== undefined ? 20254 jQuery.style( elem, name, value ) : 20255 jQuery.css( elem, name ); 20256 }, name, value, arguments.length > 1 ); 20257 } 20258} ); 20259 20260 20261function Tween( elem, options, prop, end, easing ) { 20262 return new Tween.prototype.init( elem, options, prop, end, easing ); 20263} 20264jQuery.Tween = Tween; 20265 20266Tween.prototype = { 20267 constructor: Tween, 20268 init: function( elem, options, prop, end, easing, unit ) { 20269 this.elem = elem; 20270 this.prop = prop; 20271 this.easing = easing || jQuery.easing._default; 20272 this.options = options; 20273 this.start = this.now = this.cur(); 20274 this.end = end; 20275 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); 20276 }, 20277 cur: function() { 20278 var hooks = Tween.propHooks[ this.prop ]; 20279 20280 return hooks && hooks.get ? 20281 hooks.get( this ) : 20282 Tween.propHooks._default.get( this ); 20283 }, 20284 run: function( percent ) { 20285 var eased, 20286 hooks = Tween.propHooks[ this.prop ]; 20287 20288 if ( this.options.duration ) { 20289 this.pos = eased = jQuery.easing[ this.easing ]( 20290 percent, this.options.duration * percent, 0, 1, this.options.duration 20291 ); 20292 } else { 20293 this.pos = eased = percent; 20294 } 20295 this.now = ( this.end - this.start ) * eased + this.start; 20296 20297 if ( this.options.step ) { 20298 this.options.step.call( this.elem, this.now, this ); 20299 } 20300 20301 if ( hooks && hooks.set ) { 20302 hooks.set( this ); 20303 } else { 20304 Tween.propHooks._default.set( this ); 20305 } 20306 return this; 20307 } 20308}; 20309 20310Tween.prototype.init.prototype = Tween.prototype; 20311 20312Tween.propHooks = { 20313 _default: { 20314 get: function( tween ) { 20315 var result; 20316 20317 // Use a property on the element directly when it is not a DOM element, 20318 // or when there is no matching style property that exists. 20319 if ( tween.elem.nodeType !== 1 || 20320 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { 20321 return tween.elem[ tween.prop ]; 20322 } 20323 20324 // Passing an empty string as a 3rd parameter to .css will automatically 20325 // attempt a parseFloat and fallback to a string if the parse fails. 20326 // Simple values such as "10px" are parsed to Float; 20327 // complex values such as "rotate(1rad)" are returned as-is. 20328 result = jQuery.css( tween.elem, tween.prop, "" ); 20329 20330 // Empty strings, null, undefined and "auto" are converted to 0. 20331 return !result || result === "auto" ? 0 : result; 20332 }, 20333 set: function( tween ) { 20334 20335 // Use step hook for back compat. 20336 // Use cssHook if its there. 20337 // Use .style if available and use plain properties where available. 20338 if ( jQuery.fx.step[ tween.prop ] ) { 20339 jQuery.fx.step[ tween.prop ]( tween ); 20340 } else if ( tween.elem.nodeType === 1 && ( 20341 jQuery.cssHooks[ tween.prop ] || 20342 tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { 20343 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); 20344 } else { 20345 tween.elem[ tween.prop ] = tween.now; 20346 } 20347 } 20348 } 20349}; 20350 20351// Support: IE <=9 only 20352// Panic based approach to setting things on disconnected nodes 20353Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 20354 set: function( tween ) { 20355 if ( tween.elem.nodeType && tween.elem.parentNode ) { 20356 tween.elem[ tween.prop ] = tween.now; 20357 } 20358 } 20359}; 20360 20361jQuery.easing = { 20362 linear: function( p ) { 20363 return p; 20364 }, 20365 swing: function( p ) { 20366 return 0.5 - Math.cos( p * Math.PI ) / 2; 20367 }, 20368 _default: "swing" 20369}; 20370 20371jQuery.fx = Tween.prototype.init; 20372 20373// Back compat <1.8 extension point 20374jQuery.fx.step = {}; 20375 20376 20377 20378 20379var 20380 fxNow, inProgress, 20381 rfxtypes = /^(?:toggle|show|hide)$/, 20382 rrun = /queueHooks$/; 20383 20384function schedule() { 20385 if ( inProgress ) { 20386 if ( document.hidden === false && window.requestAnimationFrame ) { 20387 window.requestAnimationFrame( schedule ); 20388 } else { 20389 window.setTimeout( schedule, jQuery.fx.interval ); 20390 } 20391 20392 jQuery.fx.tick(); 20393 } 20394} 20395 20396// Animations created synchronously will run synchronously 20397function createFxNow() { 20398 window.setTimeout( function() { 20399 fxNow = undefined; 20400 } ); 20401 return ( fxNow = Date.now() ); 20402} 20403 20404// Generate parameters to create a standard animation 20405function genFx( type, includeWidth ) { 20406 var which, 20407 i = 0, 20408 attrs = { height: type }; 20409 20410 // If we include width, step value is 1 to do all cssExpand values, 20411 // otherwise step value is 2 to skip over Left and Right 20412 includeWidth = includeWidth ? 1 : 0; 20413 for ( ; i < 4; i += 2 - includeWidth ) { 20414 which = cssExpand[ i ]; 20415 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; 20416 } 20417 20418 if ( includeWidth ) { 20419 attrs.opacity = attrs.width = type; 20420 } 20421 20422 return attrs; 20423} 20424 20425function createTween( value, prop, animation ) { 20426 var tween, 20427 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), 20428 index = 0, 20429 length = collection.length; 20430 for ( ; index < length; index++ ) { 20431 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { 20432 20433 // We're done with this property 20434 return tween; 20435 } 20436 } 20437} 20438 20439function defaultPrefilter( elem, props, opts ) { 20440 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, 20441 isBox = "width" in props || "height" in props, 20442 anim = this, 20443 orig = {}, 20444 style = elem.style, 20445 hidden = elem.nodeType && isHiddenWithinTree( elem ), 20446 dataShow = dataPriv.get( elem, "fxshow" ); 20447 20448 // Queue-skipping animations hijack the fx hooks 20449 if ( !opts.queue ) { 20450 hooks = jQuery._queueHooks( elem, "fx" ); 20451 if ( hooks.unqueued == null ) { 20452 hooks.unqueued = 0; 20453 oldfire = hooks.empty.fire; 20454 hooks.empty.fire = function() { 20455 if ( !hooks.unqueued ) { 20456 oldfire(); 20457 } 20458 }; 20459 } 20460 hooks.unqueued++; 20461 20462 anim.always( function() { 20463 20464 // Ensure the complete handler is called before this completes 20465 anim.always( function() { 20466 hooks.unqueued--; 20467 if ( !jQuery.queue( elem, "fx" ).length ) { 20468 hooks.empty.fire(); 20469 } 20470 } ); 20471 } ); 20472 } 20473 20474 // Detect show/hide animations 20475 for ( prop in props ) { 20476 value = props[ prop ]; 20477 if ( rfxtypes.test( value ) ) { 20478 delete props[ prop ]; 20479 toggle = toggle || value === "toggle"; 20480 if ( value === ( hidden ? "hide" : "show" ) ) { 20481 20482 // Pretend to be hidden if this is a "show" and 20483 // there is still data from a stopped show/hide 20484 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { 20485 hidden = true; 20486 20487 // Ignore all other no-op show/hide data 20488 } else { 20489 continue; 20490 } 20491 } 20492 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); 20493 } 20494 } 20495 20496 // Bail out if this is a no-op like .hide().hide() 20497 propTween = !jQuery.isEmptyObject( props ); 20498 if ( !propTween && jQuery.isEmptyObject( orig ) ) { 20499 return; 20500 } 20501 20502 // Restrict "overflow" and "display" styles during box animations 20503 if ( isBox && elem.nodeType === 1 ) { 20504 20505 // Support: IE <=9 - 11, Edge 12 - 15 20506 // Record all 3 overflow attributes because IE does not infer the shorthand 20507 // from identically-valued overflowX and overflowY and Edge just mirrors 20508 // the overflowX value there. 20509 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; 20510 20511 // Identify a display type, preferring old show/hide data over the CSS cascade 20512 restoreDisplay = dataShow && dataShow.display; 20513 if ( restoreDisplay == null ) { 20514 restoreDisplay = dataPriv.get( elem, "display" ); 20515 } 20516 display = jQuery.css( elem, "display" ); 20517 if ( display === "none" ) { 20518 if ( restoreDisplay ) { 20519 display = restoreDisplay; 20520 } else { 20521 20522 // Get nonempty value(s) by temporarily forcing visibility 20523 showHide( [ elem ], true ); 20524 restoreDisplay = elem.style.display || restoreDisplay; 20525 display = jQuery.css( elem, "display" ); 20526 showHide( [ elem ] ); 20527 } 20528 } 20529 20530 // Animate inline elements as inline-block 20531 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { 20532 if ( jQuery.css( elem, "float" ) === "none" ) { 20533 20534 // Restore the original display value at the end of pure show/hide animations 20535 if ( !propTween ) { 20536 anim.done( function() { 20537 style.display = restoreDisplay; 20538 } ); 20539 if ( restoreDisplay == null ) { 20540 display = style.display; 20541 restoreDisplay = display === "none" ? "" : display; 20542 } 20543 } 20544 style.display = "inline-block"; 20545 } 20546 } 20547 } 20548 20549 if ( opts.overflow ) { 20550 style.overflow = "hidden"; 20551 anim.always( function() { 20552 style.overflow = opts.overflow[ 0 ]; 20553 style.overflowX = opts.overflow[ 1 ]; 20554 style.overflowY = opts.overflow[ 2 ]; 20555 } ); 20556 } 20557 20558 // Implement show/hide animations 20559 propTween = false; 20560 for ( prop in orig ) { 20561 20562 // General show/hide setup for this element animation 20563 if ( !propTween ) { 20564 if ( dataShow ) { 20565 if ( "hidden" in dataShow ) { 20566 hidden = dataShow.hidden; 20567 } 20568 } else { 20569 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); 20570 } 20571 20572 // Store hidden/visible for toggle so `.stop().toggle()` "reverses" 20573 if ( toggle ) { 20574 dataShow.hidden = !hidden; 20575 } 20576 20577 // Show elements before animating them 20578 if ( hidden ) { 20579 showHide( [ elem ], true ); 20580 } 20581 20582 /* eslint-disable no-loop-func */ 20583 20584 anim.done( function() { 20585 20586 /* eslint-enable no-loop-func */ 20587 20588 // The final step of a "hide" animation is actually hiding the element 20589 if ( !hidden ) { 20590 showHide( [ elem ] ); 20591 } 20592 dataPriv.remove( elem, "fxshow" ); 20593 for ( prop in orig ) { 20594 jQuery.style( elem, prop, orig[ prop ] ); 20595 } 20596 } ); 20597 } 20598 20599 // Per-property setup 20600 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); 20601 if ( !( prop in dataShow ) ) { 20602 dataShow[ prop ] = propTween.start; 20603 if ( hidden ) { 20604 propTween.end = propTween.start; 20605 propTween.start = 0; 20606 } 20607 } 20608 } 20609} 20610 20611function propFilter( props, specialEasing ) { 20612 var index, name, easing, value, hooks; 20613 20614 // camelCase, specialEasing and expand cssHook pass 20615 for ( index in props ) { 20616 name = camelCase( index ); 20617 easing = specialEasing[ name ]; 20618 value = props[ index ]; 20619 if ( Array.isArray( value ) ) { 20620 easing = value[ 1 ]; 20621 value = props[ index ] = value[ 0 ]; 20622 } 20623 20624 if ( index !== name ) { 20625 props[ name ] = value; 20626 delete props[ index ]; 20627 } 20628 20629 hooks = jQuery.cssHooks[ name ]; 20630 if ( hooks && "expand" in hooks ) { 20631 value = hooks.expand( value ); 20632 delete props[ name ]; 20633 20634 // Not quite $.extend, this won't overwrite existing keys. 20635 // Reusing 'index' because we have the correct "name" 20636 for ( index in value ) { 20637 if ( !( index in props ) ) { 20638 props[ index ] = value[ index ]; 20639 specialEasing[ index ] = easing; 20640 } 20641 } 20642 } else { 20643 specialEasing[ name ] = easing; 20644 } 20645 } 20646} 20647 20648function Animation( elem, properties, options ) { 20649 var result, 20650 stopped, 20651 index = 0, 20652 length = Animation.prefilters.length, 20653 deferred = jQuery.Deferred().always( function() { 20654 20655 // Don't match elem in the :animated selector 20656 delete tick.elem; 20657 } ), 20658 tick = function() { 20659 if ( stopped ) { 20660 return false; 20661 } 20662 var currentTime = fxNow || createFxNow(), 20663 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), 20664 20665 // Support: Android 2.3 only 20666 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497) 20667 temp = remaining / animation.duration || 0, 20668 percent = 1 - temp, 20669 index = 0, 20670 length = animation.tweens.length; 20671 20672 for ( ; index < length; index++ ) { 20673 animation.tweens[ index ].run( percent ); 20674 } 20675 20676 deferred.notifyWith( elem, [ animation, percent, remaining ] ); 20677 20678 // If there's more to do, yield 20679 if ( percent < 1 && length ) { 20680 return remaining; 20681 } 20682 20683 // If this was an empty animation, synthesize a final progress notification 20684 if ( !length ) { 20685 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 20686 } 20687 20688 // Resolve the animation and report its conclusion 20689 deferred.resolveWith( elem, [ animation ] ); 20690 return false; 20691 }, 20692 animation = deferred.promise( { 20693 elem: elem, 20694 props: jQuery.extend( {}, properties ), 20695 opts: jQuery.extend( true, { 20696 specialEasing: {}, 20697 easing: jQuery.easing._default 20698 }, options ), 20699 originalProperties: properties, 20700 originalOptions: options, 20701 startTime: fxNow || createFxNow(), 20702 duration: options.duration, 20703 tweens: [], 20704 createTween: function( prop, end ) { 20705 var tween = jQuery.Tween( elem, animation.opts, prop, end, 20706 animation.opts.specialEasing[ prop ] || animation.opts.easing ); 20707 animation.tweens.push( tween ); 20708 return tween; 20709 }, 20710 stop: function( gotoEnd ) { 20711 var index = 0, 20712 20713 // If we are going to the end, we want to run all the tweens 20714 // otherwise we skip this part 20715 length = gotoEnd ? animation.tweens.length : 0; 20716 if ( stopped ) { 20717 return this; 20718 } 20719 stopped = true; 20720 for ( ; index < length; index++ ) { 20721 animation.tweens[ index ].run( 1 ); 20722 } 20723 20724 // Resolve when we played the last frame; otherwise, reject 20725 if ( gotoEnd ) { 20726 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 20727 deferred.resolveWith( elem, [ animation, gotoEnd ] ); 20728 } else { 20729 deferred.rejectWith( elem, [ animation, gotoEnd ] ); 20730 } 20731 return this; 20732 } 20733 } ), 20734 props = animation.props; 20735 20736 propFilter( props, animation.opts.specialEasing ); 20737 20738 for ( ; index < length; index++ ) { 20739 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); 20740 if ( result ) { 20741 if ( isFunction( result.stop ) ) { 20742 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = 20743 result.stop.bind( result ); 20744 } 20745 return result; 20746 } 20747 } 20748 20749 jQuery.map( props, createTween, animation ); 20750 20751 if ( isFunction( animation.opts.start ) ) { 20752 animation.opts.start.call( elem, animation ); 20753 } 20754 20755 // Attach callbacks from options 20756 animation 20757 .progress( animation.opts.progress ) 20758 .done( animation.opts.done, animation.opts.complete ) 20759 .fail( animation.opts.fail ) 20760 .always( animation.opts.always ); 20761 20762 jQuery.fx.timer( 20763 jQuery.extend( tick, { 20764 elem: elem, 20765 anim: animation, 20766 queue: animation.opts.queue 20767 } ) 20768 ); 20769 20770 return animation; 20771} 20772 20773jQuery.Animation = jQuery.extend( Animation, { 20774 20775 tweeners: { 20776 "*": [ function( prop, value ) { 20777 var tween = this.createTween( prop, value ); 20778 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); 20779 return tween; 20780 } ] 20781 }, 20782 20783 tweener: function( props, callback ) { 20784 if ( isFunction( props ) ) { 20785 callback = props; 20786 props = [ "*" ]; 20787 } else { 20788 props = props.match( rnothtmlwhite ); 20789 } 20790 20791 var prop, 20792 index = 0, 20793 length = props.length; 20794 20795 for ( ; index < length; index++ ) { 20796 prop = props[ index ]; 20797 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; 20798 Animation.tweeners[ prop ].unshift( callback ); 20799 } 20800 }, 20801 20802 prefilters: [ defaultPrefilter ], 20803 20804 prefilter: function( callback, prepend ) { 20805 if ( prepend ) { 20806 Animation.prefilters.unshift( callback ); 20807 } else { 20808 Animation.prefilters.push( callback ); 20809 } 20810 } 20811} ); 20812 20813jQuery.speed = function( speed, easing, fn ) { 20814 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { 20815 complete: fn || !fn && easing || 20816 isFunction( speed ) && speed, 20817 duration: speed, 20818 easing: fn && easing || easing && !isFunction( easing ) && easing 20819 }; 20820 20821 // Go to the end state if fx are off 20822 if ( jQuery.fx.off ) { 20823 opt.duration = 0; 20824 20825 } else { 20826 if ( typeof opt.duration !== "number" ) { 20827 if ( opt.duration in jQuery.fx.speeds ) { 20828 opt.duration = jQuery.fx.speeds[ opt.duration ]; 20829 20830 } else { 20831 opt.duration = jQuery.fx.speeds._default; 20832 } 20833 } 20834 } 20835 20836 // Normalize opt.queue - true/undefined/null -> "fx" 20837 if ( opt.queue == null || opt.queue === true ) { 20838 opt.queue = "fx"; 20839 } 20840 20841 // Queueing 20842 opt.old = opt.complete; 20843 20844 opt.complete = function() { 20845 if ( isFunction( opt.old ) ) { 20846 opt.old.call( this ); 20847 } 20848 20849 if ( opt.queue ) { 20850 jQuery.dequeue( this, opt.queue ); 20851 } 20852 }; 20853 20854 return opt; 20855}; 20856 20857jQuery.fn.extend( { 20858 fadeTo: function( speed, to, easing, callback ) { 20859 20860 // Show any hidden elements after setting opacity to 0 20861 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() 20862 20863 // Animate to the value specified 20864 .end().animate( { opacity: to }, speed, easing, callback ); 20865 }, 20866 animate: function( prop, speed, easing, callback ) { 20867 var empty = jQuery.isEmptyObject( prop ), 20868 optall = jQuery.speed( speed, easing, callback ), 20869 doAnimation = function() { 20870 20871 // Operate on a copy of prop so per-property easing won't be lost 20872 var anim = Animation( this, jQuery.extend( {}, prop ), optall ); 20873 20874 // Empty animations, or finishing resolves immediately 20875 if ( empty || dataPriv.get( this, "finish" ) ) { 20876 anim.stop( true ); 20877 } 20878 }; 20879 20880 doAnimation.finish = doAnimation; 20881 20882 return empty || optall.queue === false ? 20883 this.each( doAnimation ) : 20884 this.queue( optall.queue, doAnimation ); 20885 }, 20886 stop: function( type, clearQueue, gotoEnd ) { 20887 var stopQueue = function( hooks ) { 20888 var stop = hooks.stop; 20889 delete hooks.stop; 20890 stop( gotoEnd ); 20891 }; 20892 20893 if ( typeof type !== "string" ) { 20894 gotoEnd = clearQueue; 20895 clearQueue = type; 20896 type = undefined; 20897 } 20898 if ( clearQueue ) { 20899 this.queue( type || "fx", [] ); 20900 } 20901 20902 return this.each( function() { 20903 var dequeue = true, 20904 index = type != null && type + "queueHooks", 20905 timers = jQuery.timers, 20906 data = dataPriv.get( this ); 20907 20908 if ( index ) { 20909 if ( data[ index ] && data[ index ].stop ) { 20910 stopQueue( data[ index ] ); 20911 } 20912 } else { 20913 for ( index in data ) { 20914 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { 20915 stopQueue( data[ index ] ); 20916 } 20917 } 20918 } 20919 20920 for ( index = timers.length; index--; ) { 20921 if ( timers[ index ].elem === this && 20922 ( type == null || timers[ index ].queue === type ) ) { 20923 20924 timers[ index ].anim.stop( gotoEnd ); 20925 dequeue = false; 20926 timers.splice( index, 1 ); 20927 } 20928 } 20929 20930 // Start the next in the queue if the last step wasn't forced. 20931 // Timers currently will call their complete callbacks, which 20932 // will dequeue but only if they were gotoEnd. 20933 if ( dequeue || !gotoEnd ) { 20934 jQuery.dequeue( this, type ); 20935 } 20936 } ); 20937 }, 20938 finish: function( type ) { 20939 if ( type !== false ) { 20940 type = type || "fx"; 20941 } 20942 return this.each( function() { 20943 var index, 20944 data = dataPriv.get( this ), 20945 queue = data[ type + "queue" ], 20946 hooks = data[ type + "queueHooks" ], 20947 timers = jQuery.timers, 20948 length = queue ? queue.length : 0; 20949 20950 // Enable finishing flag on private data 20951 data.finish = true; 20952 20953 // Empty the queue first 20954 jQuery.queue( this, type, [] ); 20955 20956 if ( hooks && hooks.stop ) { 20957 hooks.stop.call( this, true ); 20958 } 20959 20960 // Look for any active animations, and finish them 20961 for ( index = timers.length; index--; ) { 20962 if ( timers[ index ].elem === this && timers[ index ].queue === type ) { 20963 timers[ index ].anim.stop( true ); 20964 timers.splice( index, 1 ); 20965 } 20966 } 20967 20968 // Look for any animations in the old queue and finish them 20969 for ( index = 0; index < length; index++ ) { 20970 if ( queue[ index ] && queue[ index ].finish ) { 20971 queue[ index ].finish.call( this ); 20972 } 20973 } 20974 20975 // Turn off finishing flag 20976 delete data.finish; 20977 } ); 20978 } 20979} ); 20980 20981jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { 20982 var cssFn = jQuery.fn[ name ]; 20983 jQuery.fn[ name ] = function( speed, easing, callback ) { 20984 return speed == null || typeof speed === "boolean" ? 20985 cssFn.apply( this, arguments ) : 20986 this.animate( genFx( name, true ), speed, easing, callback ); 20987 }; 20988} ); 20989 20990// Generate shortcuts for custom animations 20991jQuery.each( { 20992 slideDown: genFx( "show" ), 20993 slideUp: genFx( "hide" ), 20994 slideToggle: genFx( "toggle" ), 20995 fadeIn: { opacity: "show" }, 20996 fadeOut: { opacity: "hide" }, 20997 fadeToggle: { opacity: "toggle" } 20998}, function( name, props ) { 20999 jQuery.fn[ name ] = function( speed, easing, callback ) { 21000 return this.animate( props, speed, easing, callback ); 21001 }; 21002} ); 21003 21004jQuery.timers = []; 21005jQuery.fx.tick = function() { 21006 var timer, 21007 i = 0, 21008 timers = jQuery.timers; 21009 21010 fxNow = Date.now(); 21011 21012 for ( ; i < timers.length; i++ ) { 21013 timer = timers[ i ]; 21014 21015 // Run the timer and safely remove it when done (allowing for external removal) 21016 if ( !timer() && timers[ i ] === timer ) { 21017 timers.splice( i--, 1 ); 21018 } 21019 } 21020 21021 if ( !timers.length ) { 21022 jQuery.fx.stop(); 21023 } 21024 fxNow = undefined; 21025}; 21026 21027jQuery.fx.timer = function( timer ) { 21028 jQuery.timers.push( timer ); 21029 jQuery.fx.start(); 21030}; 21031 21032jQuery.fx.interval = 13; 21033jQuery.fx.start = function() { 21034 if ( inProgress ) { 21035 return; 21036 } 21037 21038 inProgress = true; 21039 schedule(); 21040}; 21041 21042jQuery.fx.stop = function() { 21043 inProgress = null; 21044}; 21045 21046jQuery.fx.speeds = { 21047 slow: 600, 21048 fast: 200, 21049 21050 // Default speed 21051 _default: 400 21052}; 21053 21054 21055// Based off of the plugin by Clint Helfers, with permission. 21056jQuery.fn.delay = function( time, type ) { 21057 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 21058 type = type || "fx"; 21059 21060 return this.queue( type, function( next, hooks ) { 21061 var timeout = window.setTimeout( next, time ); 21062 hooks.stop = function() { 21063 window.clearTimeout( timeout ); 21064 }; 21065 } ); 21066}; 21067 21068 21069( function() { 21070 var input = document.createElement( "input" ), 21071 select = document.createElement( "select" ), 21072 opt = select.appendChild( document.createElement( "option" ) ); 21073 21074 input.type = "checkbox"; 21075 21076 // Support: Android <=4.3 only 21077 // Default value for a checkbox should be "on" 21078 support.checkOn = input.value !== ""; 21079 21080 // Support: IE <=11 only 21081 // Must access selectedIndex to make default options select 21082 support.optSelected = opt.selected; 21083 21084 // Support: IE <=11 only 21085 // An input loses its value after becoming a radio 21086 input = document.createElement( "input" ); 21087 input.value = "t"; 21088 input.type = "radio"; 21089 support.radioValue = input.value === "t"; 21090} )(); 21091 21092 21093var boolHook, 21094 attrHandle = jQuery.expr.attrHandle; 21095 21096jQuery.fn.extend( { 21097 attr: function( name, value ) { 21098 return access( this, jQuery.attr, name, value, arguments.length > 1 ); 21099 }, 21100 21101 removeAttr: function( name ) { 21102 return this.each( function() { 21103 jQuery.removeAttr( this, name ); 21104 } ); 21105 } 21106} ); 21107 21108jQuery.extend( { 21109 attr: function( elem, name, value ) { 21110 var ret, hooks, 21111 nType = elem.nodeType; 21112 21113 // Don't get/set attributes on text, comment and attribute nodes 21114 if ( nType === 3 || nType === 8 || nType === 2 ) { 21115 return; 21116 } 21117 21118 // Fallback to prop when attributes are not supported 21119 if ( typeof elem.getAttribute === "undefined" ) { 21120 return jQuery.prop( elem, name, value ); 21121 } 21122 21123 // Attribute hooks are determined by the lowercase version 21124 // Grab necessary hook if one is defined 21125 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 21126 hooks = jQuery.attrHooks[ name.toLowerCase() ] || 21127 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); 21128 } 21129 21130 if ( value !== undefined ) { 21131 if ( value === null ) { 21132 jQuery.removeAttr( elem, name ); 21133 return; 21134 } 21135 21136 if ( hooks && "set" in hooks && 21137 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 21138 return ret; 21139 } 21140 21141 elem.setAttribute( name, value + "" ); 21142 return value; 21143 } 21144 21145 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 21146 return ret; 21147 } 21148 21149 ret = jQuery.find.attr( elem, name ); 21150 21151 // Non-existent attributes return null, we normalize to undefined 21152 return ret == null ? undefined : ret; 21153 }, 21154 21155 attrHooks: { 21156 type: { 21157 set: function( elem, value ) { 21158 if ( !support.radioValue && value === "radio" && 21159 nodeName( elem, "input" ) ) { 21160 var val = elem.value; 21161 elem.setAttribute( "type", value ); 21162 if ( val ) { 21163 elem.value = val; 21164 } 21165 return value; 21166 } 21167 } 21168 } 21169 }, 21170 21171 removeAttr: function( elem, value ) { 21172 var name, 21173 i = 0, 21174 21175 // Attribute names can contain non-HTML whitespace characters 21176 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 21177 attrNames = value && value.match( rnothtmlwhite ); 21178 21179 if ( attrNames && elem.nodeType === 1 ) { 21180 while ( ( name = attrNames[ i++ ] ) ) { 21181 elem.removeAttribute( name ); 21182 } 21183 } 21184 } 21185} ); 21186 21187// Hooks for boolean attributes 21188boolHook = { 21189 set: function( elem, value, name ) { 21190 if ( value === false ) { 21191 21192 // Remove boolean attributes when set to false 21193 jQuery.removeAttr( elem, name ); 21194 } else { 21195 elem.setAttribute( name, name ); 21196 } 21197 return name; 21198 } 21199}; 21200 21201jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { 21202 var getter = attrHandle[ name ] || jQuery.find.attr; 21203 21204 attrHandle[ name ] = function( elem, name, isXML ) { 21205 var ret, handle, 21206 lowercaseName = name.toLowerCase(); 21207 21208 if ( !isXML ) { 21209 21210 // Avoid an infinite loop by temporarily removing this function from the getter 21211 handle = attrHandle[ lowercaseName ]; 21212 attrHandle[ lowercaseName ] = ret; 21213 ret = getter( elem, name, isXML ) != null ? 21214 lowercaseName : 21215 null; 21216 attrHandle[ lowercaseName ] = handle; 21217 } 21218 return ret; 21219 }; 21220} ); 21221 21222 21223 21224 21225var rfocusable = /^(?:input|select|textarea|button)$/i, 21226 rclickable = /^(?:a|area)$/i; 21227 21228jQuery.fn.extend( { 21229 prop: function( name, value ) { 21230 return access( this, jQuery.prop, name, value, arguments.length > 1 ); 21231 }, 21232 21233 removeProp: function( name ) { 21234 return this.each( function() { 21235 delete this[ jQuery.propFix[ name ] || name ]; 21236 } ); 21237 } 21238} ); 21239 21240jQuery.extend( { 21241 prop: function( elem, name, value ) { 21242 var ret, hooks, 21243 nType = elem.nodeType; 21244 21245 // Don't get/set properties on text, comment and attribute nodes 21246 if ( nType === 3 || nType === 8 || nType === 2 ) { 21247 return; 21248 } 21249 21250 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 21251 21252 // Fix name and attach hooks 21253 name = jQuery.propFix[ name ] || name; 21254 hooks = jQuery.propHooks[ name ]; 21255 } 21256 21257 if ( value !== undefined ) { 21258 if ( hooks && "set" in hooks && 21259 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 21260 return ret; 21261 } 21262 21263 return ( elem[ name ] = value ); 21264 } 21265 21266 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 21267 return ret; 21268 } 21269 21270 return elem[ name ]; 21271 }, 21272 21273 propHooks: { 21274 tabIndex: { 21275 get: function( elem ) { 21276 21277 // Support: IE <=9 - 11 only 21278 // elem.tabIndex doesn't always return the 21279 // correct value when it hasn't been explicitly set 21280 // Use proper attribute retrieval (trac-12072) 21281 var tabindex = jQuery.find.attr( elem, "tabindex" ); 21282 21283 if ( tabindex ) { 21284 return parseInt( tabindex, 10 ); 21285 } 21286 21287 if ( 21288 rfocusable.test( elem.nodeName ) || 21289 rclickable.test( elem.nodeName ) && 21290 elem.href 21291 ) { 21292 return 0; 21293 } 21294 21295 return -1; 21296 } 21297 } 21298 }, 21299 21300 propFix: { 21301 "for": "htmlFor", 21302 "class": "className" 21303 } 21304} ); 21305 21306// Support: IE <=11 only 21307// Accessing the selectedIndex property 21308// forces the browser to respect setting selected 21309// on the option 21310// The getter ensures a default option is selected 21311// when in an optgroup 21312// eslint rule "no-unused-expressions" is disabled for this code 21313// since it considers such accessions noop 21314if ( !support.optSelected ) { 21315 jQuery.propHooks.selected = { 21316 get: function( elem ) { 21317 21318 /* eslint no-unused-expressions: "off" */ 21319 21320 var parent = elem.parentNode; 21321 if ( parent && parent.parentNode ) { 21322 parent.parentNode.selectedIndex; 21323 } 21324 return null; 21325 }, 21326 set: function( elem ) { 21327 21328 /* eslint no-unused-expressions: "off" */ 21329 21330 var parent = elem.parentNode; 21331 if ( parent ) { 21332 parent.selectedIndex; 21333 21334 if ( parent.parentNode ) { 21335 parent.parentNode.selectedIndex; 21336 } 21337 } 21338 } 21339 }; 21340} 21341 21342jQuery.each( [ 21343 "tabIndex", 21344 "readOnly", 21345 "maxLength", 21346 "cellSpacing", 21347 "cellPadding", 21348 "rowSpan", 21349 "colSpan", 21350 "useMap", 21351 "frameBorder", 21352 "contentEditable" 21353], function() { 21354 jQuery.propFix[ this.toLowerCase() ] = this; 21355} ); 21356 21357 21358 21359 21360 // Strip and collapse whitespace according to HTML spec 21361 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace 21362 function stripAndCollapse( value ) { 21363 var tokens = value.match( rnothtmlwhite ) || []; 21364 return tokens.join( " " ); 21365 } 21366 21367 21368function getClass( elem ) { 21369 return elem.getAttribute && elem.getAttribute( "class" ) || ""; 21370} 21371 21372function classesToArray( value ) { 21373 if ( Array.isArray( value ) ) { 21374 return value; 21375 } 21376 if ( typeof value === "string" ) { 21377 return value.match( rnothtmlwhite ) || []; 21378 } 21379 return []; 21380} 21381 21382jQuery.fn.extend( { 21383 addClass: function( value ) { 21384 var classNames, cur, curValue, className, i, finalValue; 21385 21386 if ( isFunction( value ) ) { 21387 return this.each( function( j ) { 21388 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); 21389 } ); 21390 } 21391 21392 classNames = classesToArray( value ); 21393 21394 if ( classNames.length ) { 21395 return this.each( function() { 21396 curValue = getClass( this ); 21397 cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 21398 21399 if ( cur ) { 21400 for ( i = 0; i < classNames.length; i++ ) { 21401 className = classNames[ i ]; 21402 if ( cur.indexOf( " " + className + " " ) < 0 ) { 21403 cur += className + " "; 21404 } 21405 } 21406 21407 // Only assign if different to avoid unneeded rendering. 21408 finalValue = stripAndCollapse( cur ); 21409 if ( curValue !== finalValue ) { 21410 this.setAttribute( "class", finalValue ); 21411 } 21412 } 21413 } ); 21414 } 21415 21416 return this; 21417 }, 21418 21419 removeClass: function( value ) { 21420 var classNames, cur, curValue, className, i, finalValue; 21421 21422 if ( isFunction( value ) ) { 21423 return this.each( function( j ) { 21424 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); 21425 } ); 21426 } 21427 21428 if ( !arguments.length ) { 21429 return this.attr( "class", "" ); 21430 } 21431 21432 classNames = classesToArray( value ); 21433 21434 if ( classNames.length ) { 21435 return this.each( function() { 21436 curValue = getClass( this ); 21437 21438 // This expression is here for better compressibility (see addClass) 21439 cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 21440 21441 if ( cur ) { 21442 for ( i = 0; i < classNames.length; i++ ) { 21443 className = classNames[ i ]; 21444 21445 // Remove *all* instances 21446 while ( cur.indexOf( " " + className + " " ) > -1 ) { 21447 cur = cur.replace( " " + className + " ", " " ); 21448 } 21449 } 21450 21451 // Only assign if different to avoid unneeded rendering. 21452 finalValue = stripAndCollapse( cur ); 21453 if ( curValue !== finalValue ) { 21454 this.setAttribute( "class", finalValue ); 21455 } 21456 } 21457 } ); 21458 } 21459 21460 return this; 21461 }, 21462 21463 toggleClass: function( value, stateVal ) { 21464 var classNames, className, i, self, 21465 type = typeof value, 21466 isValidValue = type === "string" || Array.isArray( value ); 21467 21468 if ( isFunction( value ) ) { 21469 return this.each( function( i ) { 21470 jQuery( this ).toggleClass( 21471 value.call( this, i, getClass( this ), stateVal ), 21472 stateVal 21473 ); 21474 } ); 21475 } 21476 21477 if ( typeof stateVal === "boolean" && isValidValue ) { 21478 return stateVal ? this.addClass( value ) : this.removeClass( value ); 21479 } 21480 21481 classNames = classesToArray( value ); 21482 21483 return this.each( function() { 21484 if ( isValidValue ) { 21485 21486 // Toggle individual class names 21487 self = jQuery( this ); 21488 21489 for ( i = 0; i < classNames.length; i++ ) { 21490 className = classNames[ i ]; 21491 21492 // Check each className given, space separated list 21493 if ( self.hasClass( className ) ) { 21494 self.removeClass( className ); 21495 } else { 21496 self.addClass( className ); 21497 } 21498 } 21499 21500 // Toggle whole class name 21501 } else if ( value === undefined || type === "boolean" ) { 21502 className = getClass( this ); 21503 if ( className ) { 21504 21505 // Store className if set 21506 dataPriv.set( this, "__className__", className ); 21507 } 21508 21509 // If the element has a class name or if we're passed `false`, 21510 // then remove the whole classname (if there was one, the above saved it). 21511 // Otherwise bring back whatever was previously saved (if anything), 21512 // falling back to the empty string if nothing was stored. 21513 if ( this.setAttribute ) { 21514 this.setAttribute( "class", 21515 className || value === false ? 21516 "" : 21517 dataPriv.get( this, "__className__" ) || "" 21518 ); 21519 } 21520 } 21521 } ); 21522 }, 21523 21524 hasClass: function( selector ) { 21525 var className, elem, 21526 i = 0; 21527 21528 className = " " + selector + " "; 21529 while ( ( elem = this[ i++ ] ) ) { 21530 if ( elem.nodeType === 1 && 21531 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { 21532 return true; 21533 } 21534 } 21535 21536 return false; 21537 } 21538} ); 21539 21540 21541 21542 21543var rreturn = /\r/g; 21544 21545jQuery.fn.extend( { 21546 val: function( value ) { 21547 var hooks, ret, valueIsFunction, 21548 elem = this[ 0 ]; 21549 21550 if ( !arguments.length ) { 21551 if ( elem ) { 21552 hooks = jQuery.valHooks[ elem.type ] || 21553 jQuery.valHooks[ elem.nodeName.toLowerCase() ]; 21554 21555 if ( hooks && 21556 "get" in hooks && 21557 ( ret = hooks.get( elem, "value" ) ) !== undefined 21558 ) { 21559 return ret; 21560 } 21561 21562 ret = elem.value; 21563 21564 // Handle most common string cases 21565 if ( typeof ret === "string" ) { 21566 return ret.replace( rreturn, "" ); 21567 } 21568 21569 // Handle cases where value is null/undef or number 21570 return ret == null ? "" : ret; 21571 } 21572 21573 return; 21574 } 21575 21576 valueIsFunction = isFunction( value ); 21577 21578 return this.each( function( i ) { 21579 var val; 21580 21581 if ( this.nodeType !== 1 ) { 21582 return; 21583 } 21584 21585 if ( valueIsFunction ) { 21586 val = value.call( this, i, jQuery( this ).val() ); 21587 } else { 21588 val = value; 21589 } 21590 21591 // Treat null/undefined as ""; convert numbers to string 21592 if ( val == null ) { 21593 val = ""; 21594 21595 } else if ( typeof val === "number" ) { 21596 val += ""; 21597 21598 } else if ( Array.isArray( val ) ) { 21599 val = jQuery.map( val, function( value ) { 21600 return value == null ? "" : value + ""; 21601 } ); 21602 } 21603 21604 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; 21605 21606 // If set returns undefined, fall back to normal setting 21607 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { 21608 this.value = val; 21609 } 21610 } ); 21611 } 21612} ); 21613 21614jQuery.extend( { 21615 valHooks: { 21616 option: { 21617 get: function( elem ) { 21618 21619 var val = jQuery.find.attr( elem, "value" ); 21620 return val != null ? 21621 val : 21622 21623 // Support: IE <=10 - 11 only 21624 // option.text throws exceptions (trac-14686, trac-14858) 21625 // Strip and collapse whitespace 21626 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 21627 stripAndCollapse( jQuery.text( elem ) ); 21628 } 21629 }, 21630 select: { 21631 get: function( elem ) { 21632 var value, option, i, 21633 options = elem.options, 21634 index = elem.selectedIndex, 21635 one = elem.type === "select-one", 21636 values = one ? null : [], 21637 max = one ? index + 1 : options.length; 21638 21639 if ( index < 0 ) { 21640 i = max; 21641 21642 } else { 21643 i = one ? index : 0; 21644 } 21645 21646 // Loop through all the selected options 21647 for ( ; i < max; i++ ) { 21648 option = options[ i ]; 21649 21650 // Support: IE <=9 only 21651 // IE8-9 doesn't update selected after form reset (trac-2551) 21652 if ( ( option.selected || i === index ) && 21653 21654 // Don't return options that are disabled or in a disabled optgroup 21655 !option.disabled && 21656 ( !option.parentNode.disabled || 21657 !nodeName( option.parentNode, "optgroup" ) ) ) { 21658 21659 // Get the specific value for the option 21660 value = jQuery( option ).val(); 21661 21662 // We don't need an array for one selects 21663 if ( one ) { 21664 return value; 21665 } 21666 21667 // Multi-Selects return an array 21668 values.push( value ); 21669 } 21670 } 21671 21672 return values; 21673 }, 21674 21675 set: function( elem, value ) { 21676 var optionSet, option, 21677 options = elem.options, 21678 values = jQuery.makeArray( value ), 21679 i = options.length; 21680 21681 while ( i-- ) { 21682 option = options[ i ]; 21683 21684 /* eslint-disable no-cond-assign */ 21685 21686 if ( option.selected = 21687 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 21688 ) { 21689 optionSet = true; 21690 } 21691 21692 /* eslint-enable no-cond-assign */ 21693 } 21694 21695 // Force browsers to behave consistently when non-matching value is set 21696 if ( !optionSet ) { 21697 elem.selectedIndex = -1; 21698 } 21699 return values; 21700 } 21701 } 21702 } 21703} ); 21704 21705// Radios and checkboxes getter/setter 21706jQuery.each( [ "radio", "checkbox" ], function() { 21707 jQuery.valHooks[ this ] = { 21708 set: function( elem, value ) { 21709 if ( Array.isArray( value ) ) { 21710 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); 21711 } 21712 } 21713 }; 21714 if ( !support.checkOn ) { 21715 jQuery.valHooks[ this ].get = function( elem ) { 21716 return elem.getAttribute( "value" ) === null ? "on" : elem.value; 21717 }; 21718 } 21719} ); 21720 21721 21722 21723 21724// Return jQuery for attributes-only inclusion 21725 21726 21727support.focusin = "onfocusin" in window; 21728 21729 21730var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, 21731 stopPropagationCallback = function( e ) { 21732 e.stopPropagation(); 21733 }; 21734 21735jQuery.extend( jQuery.event, { 21736 21737 trigger: function( event, data, elem, onlyHandlers ) { 21738 21739 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, 21740 eventPath = [ elem || document ], 21741 type = hasOwn.call( event, "type" ) ? event.type : event, 21742 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; 21743 21744 cur = lastElement = tmp = elem = elem || document; 21745 21746 // Don't do events on text and comment nodes 21747 if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 21748 return; 21749 } 21750 21751 // focus/blur morphs to focusin/out; ensure we're not firing them right now 21752 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { 21753 return; 21754 } 21755 21756 if ( type.indexOf( "." ) > -1 ) { 21757 21758 // Namespaced trigger; create a regexp to match event type in handle() 21759 namespaces = type.split( "." ); 21760 type = namespaces.shift(); 21761 namespaces.sort(); 21762 } 21763 ontype = type.indexOf( ":" ) < 0 && "on" + type; 21764 21765 // Caller can pass in a jQuery.Event object, Object, or just an event type string 21766 event = event[ jQuery.expando ] ? 21767 event : 21768 new jQuery.Event( type, typeof event === "object" && event ); 21769 21770 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) 21771 event.isTrigger = onlyHandlers ? 2 : 3; 21772 event.namespace = namespaces.join( "." ); 21773 event.rnamespace = event.namespace ? 21774 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : 21775 null; 21776 21777 // Clean up the event in case it is being reused 21778 event.result = undefined; 21779 if ( !event.target ) { 21780 event.target = elem; 21781 } 21782 21783 // Clone any incoming data and prepend the event, creating the handler arg list 21784 data = data == null ? 21785 [ event ] : 21786 jQuery.makeArray( data, [ event ] ); 21787 21788 // Allow special events to draw outside the lines 21789 special = jQuery.event.special[ type ] || {}; 21790 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { 21791 return; 21792 } 21793 21794 // Determine event propagation path in advance, per W3C events spec (trac-9951) 21795 // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724) 21796 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { 21797 21798 bubbleType = special.delegateType || type; 21799 if ( !rfocusMorph.test( bubbleType + type ) ) { 21800 cur = cur.parentNode; 21801 } 21802 for ( ; cur; cur = cur.parentNode ) { 21803 eventPath.push( cur ); 21804 tmp = cur; 21805 } 21806 21807 // Only add window if we got to document (e.g., not plain obj or detached DOM) 21808 if ( tmp === ( elem.ownerDocument || document ) ) { 21809 eventPath.push( tmp.defaultView || tmp.parentWindow || window ); 21810 } 21811 } 21812 21813 // Fire handlers on the event path 21814 i = 0; 21815 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { 21816 lastElement = cur; 21817 event.type = i > 1 ? 21818 bubbleType : 21819 special.bindType || type; 21820 21821 // jQuery handler 21822 handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && 21823 dataPriv.get( cur, "handle" ); 21824 if ( handle ) { 21825 handle.apply( cur, data ); 21826 } 21827 21828 // Native handler 21829 handle = ontype && cur[ ontype ]; 21830 if ( handle && handle.apply && acceptData( cur ) ) { 21831 event.result = handle.apply( cur, data ); 21832 if ( event.result === false ) { 21833 event.preventDefault(); 21834 } 21835 } 21836 } 21837 event.type = type; 21838 21839 // If nobody prevented the default action, do it now 21840 if ( !onlyHandlers && !event.isDefaultPrevented() ) { 21841 21842 if ( ( !special._default || 21843 special._default.apply( eventPath.pop(), data ) === false ) && 21844 acceptData( elem ) ) { 21845 21846 // Call a native DOM method on the target with the same name as the event. 21847 // Don't do default actions on window, that's where global variables be (trac-6170) 21848 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { 21849 21850 // Don't re-trigger an onFOO event when we call its FOO() method 21851 tmp = elem[ ontype ]; 21852 21853 if ( tmp ) { 21854 elem[ ontype ] = null; 21855 } 21856 21857 // Prevent re-triggering of the same event, since we already bubbled it above 21858 jQuery.event.triggered = type; 21859 21860 if ( event.isPropagationStopped() ) { 21861 lastElement.addEventListener( type, stopPropagationCallback ); 21862 } 21863 21864 elem[ type ](); 21865 21866 if ( event.isPropagationStopped() ) { 21867 lastElement.removeEventListener( type, stopPropagationCallback ); 21868 } 21869 21870 jQuery.event.triggered = undefined; 21871 21872 if ( tmp ) { 21873 elem[ ontype ] = tmp; 21874 } 21875 } 21876 } 21877 } 21878 21879 return event.result; 21880 }, 21881 21882 // Piggyback on a donor event to simulate a different one 21883 // Used only for `focus(in | out)` events 21884 simulate: function( type, elem, event ) { 21885 var e = jQuery.extend( 21886 new jQuery.Event(), 21887 event, 21888 { 21889 type: type, 21890 isSimulated: true 21891 } 21892 ); 21893 21894 jQuery.event.trigger( e, null, elem ); 21895 } 21896 21897} ); 21898 21899jQuery.fn.extend( { 21900 21901 trigger: function( type, data ) { 21902 return this.each( function() { 21903 jQuery.event.trigger( type, data, this ); 21904 } ); 21905 }, 21906 triggerHandler: function( type, data ) { 21907 var elem = this[ 0 ]; 21908 if ( elem ) { 21909 return jQuery.event.trigger( type, data, elem, true ); 21910 } 21911 } 21912} ); 21913 21914 21915// Support: Firefox <=44 21916// Firefox doesn't have focus(in | out) events 21917// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 21918// 21919// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 21920// focus(in | out) events fire after focus & blur events, 21921// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order 21922// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 21923if ( !support.focusin ) { 21924 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { 21925 21926 // Attach a single capturing handler on the document while someone wants focusin/focusout 21927 var handler = function( event ) { 21928 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); 21929 }; 21930 21931 jQuery.event.special[ fix ] = { 21932 setup: function() { 21933 21934 // Handle: regular nodes (via `this.ownerDocument`), window 21935 // (via `this.document`) & document (via `this`). 21936 var doc = this.ownerDocument || this.document || this, 21937 attaches = dataPriv.access( doc, fix ); 21938 21939 if ( !attaches ) { 21940 doc.addEventListener( orig, handler, true ); 21941 } 21942 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); 21943 }, 21944 teardown: function() { 21945 var doc = this.ownerDocument || this.document || this, 21946 attaches = dataPriv.access( doc, fix ) - 1; 21947 21948 if ( !attaches ) { 21949 doc.removeEventListener( orig, handler, true ); 21950 dataPriv.remove( doc, fix ); 21951 21952 } else { 21953 dataPriv.access( doc, fix, attaches ); 21954 } 21955 } 21956 }; 21957 } ); 21958} 21959var location = window.location; 21960 21961var nonce = { guid: Date.now() }; 21962 21963var rquery = ( /\?/ ); 21964 21965 21966 21967// Cross-browser xml parsing 21968jQuery.parseXML = function( data ) { 21969 var xml, parserErrorElem; 21970 if ( !data || typeof data !== "string" ) { 21971 return null; 21972 } 21973 21974 // Support: IE 9 - 11 only 21975 // IE throws on parseFromString with invalid input. 21976 try { 21977 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 21978 } catch ( e ) {} 21979 21980 parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; 21981 if ( !xml || parserErrorElem ) { 21982 jQuery.error( "Invalid XML: " + ( 21983 parserErrorElem ? 21984 jQuery.map( parserErrorElem.childNodes, function( el ) { 21985 return el.textContent; 21986 } ).join( "\n" ) : 21987 data 21988 ) ); 21989 } 21990 return xml; 21991}; 21992 21993 21994var 21995 rbracket = /\[\]$/, 21996 rCRLF = /\r?\n/g, 21997 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, 21998 rsubmittable = /^(?:input|select|textarea|keygen)/i; 21999 22000function buildParams( prefix, obj, traditional, add ) { 22001 var name; 22002 22003 if ( Array.isArray( obj ) ) { 22004 22005 // Serialize array item. 22006 jQuery.each( obj, function( i, v ) { 22007 if ( traditional || rbracket.test( prefix ) ) { 22008 22009 // Treat each array item as a scalar. 22010 add( prefix, v ); 22011 22012 } else { 22013 22014 // Item is non-scalar (array or object), encode its numeric index. 22015 buildParams( 22016 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", 22017 v, 22018 traditional, 22019 add 22020 ); 22021 } 22022 } ); 22023 22024 } else if ( !traditional && toType( obj ) === "object" ) { 22025 22026 // Serialize object item. 22027 for ( name in obj ) { 22028 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 22029 } 22030 22031 } else { 22032 22033 // Serialize scalar item. 22034 add( prefix, obj ); 22035 } 22036} 22037 22038// Serialize an array of form elements or a set of 22039// key/values into a query string 22040jQuery.param = function( a, traditional ) { 22041 var prefix, 22042 s = [], 22043 add = function( key, valueOrFunction ) { 22044 22045 // If value is a function, invoke it and use its return value 22046 var value = isFunction( valueOrFunction ) ? 22047 valueOrFunction() : 22048 valueOrFunction; 22049 22050 s[ s.length ] = encodeURIComponent( key ) + "=" + 22051 encodeURIComponent( value == null ? "" : value ); 22052 }; 22053 22054 if ( a == null ) { 22055 return ""; 22056 } 22057 22058 // If an array was passed in, assume that it is an array of form elements. 22059 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 22060 22061 // Serialize the form elements 22062 jQuery.each( a, function() { 22063 add( this.name, this.value ); 22064 } ); 22065 22066 } else { 22067 22068 // If traditional, encode the "old" way (the way 1.3.2 or older 22069 // did it), otherwise encode params recursively. 22070 for ( prefix in a ) { 22071 buildParams( prefix, a[ prefix ], traditional, add ); 22072 } 22073 } 22074 22075 // Return the resulting serialization 22076 return s.join( "&" ); 22077}; 22078 22079jQuery.fn.extend( { 22080 serialize: function() { 22081 return jQuery.param( this.serializeArray() ); 22082 }, 22083 serializeArray: function() { 22084 return this.map( function() { 22085 22086 // Can add propHook for "elements" to filter or add form elements 22087 var elements = jQuery.prop( this, "elements" ); 22088 return elements ? jQuery.makeArray( elements ) : this; 22089 } ).filter( function() { 22090 var type = this.type; 22091 22092 // Use .is( ":disabled" ) so that fieldset[disabled] works 22093 return this.name && !jQuery( this ).is( ":disabled" ) && 22094 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && 22095 ( this.checked || !rcheckableType.test( type ) ); 22096 } ).map( function( _i, elem ) { 22097 var val = jQuery( this ).val(); 22098 22099 if ( val == null ) { 22100 return null; 22101 } 22102 22103 if ( Array.isArray( val ) ) { 22104 return jQuery.map( val, function( val ) { 22105 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 22106 } ); 22107 } 22108 22109 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 22110 } ).get(); 22111 } 22112} ); 22113 22114 22115var 22116 r20 = /%20/g, 22117 rhash = /#.*$/, 22118 rantiCache = /([?&])_=[^&]*/, 22119 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, 22120 22121 // trac-7653, trac-8125, trac-8152: local protocol detection 22122 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, 22123 rnoContent = /^(?:GET|HEAD)$/, 22124 rprotocol = /^\/\//, 22125 22126 /* Prefilters 22127 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) 22128 * 2) These are called: 22129 * - BEFORE asking for a transport 22130 * - AFTER param serialization (s.data is a string if s.processData is true) 22131 * 3) key is the dataType 22132 * 4) the catchall symbol "*" can be used 22133 * 5) execution will start with transport dataType and THEN continue down to "*" if needed 22134 */ 22135 prefilters = {}, 22136 22137 /* Transports bindings 22138 * 1) key is the dataType 22139 * 2) the catchall symbol "*" can be used 22140 * 3) selection will start with transport dataType and THEN go to "*" if needed 22141 */ 22142 transports = {}, 22143 22144 // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression 22145 allTypes = "*/".concat( "*" ), 22146 22147 // Anchor tag for parsing the document origin 22148 originAnchor = document.createElement( "a" ); 22149 22150originAnchor.href = location.href; 22151 22152// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport 22153function addToPrefiltersOrTransports( structure ) { 22154 22155 // dataTypeExpression is optional and defaults to "*" 22156 return function( dataTypeExpression, func ) { 22157 22158 if ( typeof dataTypeExpression !== "string" ) { 22159 func = dataTypeExpression; 22160 dataTypeExpression = "*"; 22161 } 22162 22163 var dataType, 22164 i = 0, 22165 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; 22166 22167 if ( isFunction( func ) ) { 22168 22169 // For each dataType in the dataTypeExpression 22170 while ( ( dataType = dataTypes[ i++ ] ) ) { 22171 22172 // Prepend if requested 22173 if ( dataType[ 0 ] === "+" ) { 22174 dataType = dataType.slice( 1 ) || "*"; 22175 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); 22176 22177 // Otherwise append 22178 } else { 22179 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); 22180 } 22181 } 22182 } 22183 }; 22184} 22185 22186// Base inspection function for prefilters and transports 22187function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { 22188 22189 var inspected = {}, 22190 seekingTransport = ( structure === transports ); 22191 22192 function inspect( dataType ) { 22193 var selected; 22194 inspected[ dataType ] = true; 22195 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { 22196 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); 22197 if ( typeof dataTypeOrTransport === "string" && 22198 !seekingTransport && !inspected[ dataTypeOrTransport ] ) { 22199 22200 options.dataTypes.unshift( dataTypeOrTransport ); 22201 inspect( dataTypeOrTransport ); 22202 return false; 22203 } else if ( seekingTransport ) { 22204 return !( selected = dataTypeOrTransport ); 22205 } 22206 } ); 22207 return selected; 22208 } 22209 22210 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); 22211} 22212 22213// A special extend for ajax options 22214// that takes "flat" options (not to be deep extended) 22215// Fixes trac-9887 22216function ajaxExtend( target, src ) { 22217 var key, deep, 22218 flatOptions = jQuery.ajaxSettings.flatOptions || {}; 22219 22220 for ( key in src ) { 22221 if ( src[ key ] !== undefined ) { 22222 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; 22223 } 22224 } 22225 if ( deep ) { 22226 jQuery.extend( true, target, deep ); 22227 } 22228 22229 return target; 22230} 22231 22232/* Handles responses to an ajax request: 22233 * - finds the right dataType (mediates between content-type and expected dataType) 22234 * - returns the corresponding response 22235 */ 22236function ajaxHandleResponses( s, jqXHR, responses ) { 22237 22238 var ct, type, finalDataType, firstDataType, 22239 contents = s.contents, 22240 dataTypes = s.dataTypes; 22241 22242 // Remove auto dataType and get content-type in the process 22243 while ( dataTypes[ 0 ] === "*" ) { 22244 dataTypes.shift(); 22245 if ( ct === undefined ) { 22246 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); 22247 } 22248 } 22249 22250 // Check if we're dealing with a known content-type 22251 if ( ct ) { 22252 for ( type in contents ) { 22253 if ( contents[ type ] && contents[ type ].test( ct ) ) { 22254 dataTypes.unshift( type ); 22255 break; 22256 } 22257 } 22258 } 22259 22260 // Check to see if we have a response for the expected dataType 22261 if ( dataTypes[ 0 ] in responses ) { 22262 finalDataType = dataTypes[ 0 ]; 22263 } else { 22264 22265 // Try convertible dataTypes 22266 for ( type in responses ) { 22267 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { 22268 finalDataType = type; 22269 break; 22270 } 22271 if ( !firstDataType ) { 22272 firstDataType = type; 22273 } 22274 } 22275 22276 // Or just use first one 22277 finalDataType = finalDataType || firstDataType; 22278 } 22279 22280 // If we found a dataType 22281 // We add the dataType to the list if needed 22282 // and return the corresponding response 22283 if ( finalDataType ) { 22284 if ( finalDataType !== dataTypes[ 0 ] ) { 22285 dataTypes.unshift( finalDataType ); 22286 } 22287 return responses[ finalDataType ]; 22288 } 22289} 22290 22291/* Chain conversions given the request and the original response 22292 * Also sets the responseXXX fields on the jqXHR instance 22293 */ 22294function ajaxConvert( s, response, jqXHR, isSuccess ) { 22295 var conv2, current, conv, tmp, prev, 22296 converters = {}, 22297 22298 // Work with a copy of dataTypes in case we need to modify it for conversion 22299 dataTypes = s.dataTypes.slice(); 22300 22301 // Create converters map with lowercased keys 22302 if ( dataTypes[ 1 ] ) { 22303 for ( conv in s.converters ) { 22304 converters[ conv.toLowerCase() ] = s.converters[ conv ]; 22305 } 22306 } 22307 22308 current = dataTypes.shift(); 22309 22310 // Convert to each sequential dataType 22311 while ( current ) { 22312 22313 if ( s.responseFields[ current ] ) { 22314 jqXHR[ s.responseFields[ current ] ] = response; 22315 } 22316 22317 // Apply the dataFilter if provided 22318 if ( !prev && isSuccess && s.dataFilter ) { 22319 response = s.dataFilter( response, s.dataType ); 22320 } 22321 22322 prev = current; 22323 current = dataTypes.shift(); 22324 22325 if ( current ) { 22326 22327 // There's only work to do if current dataType is non-auto 22328 if ( current === "*" ) { 22329 22330 current = prev; 22331 22332 // Convert response if prev dataType is non-auto and differs from current 22333 } else if ( prev !== "*" && prev !== current ) { 22334 22335 // Seek a direct converter 22336 conv = converters[ prev + " " + current ] || converters[ "* " + current ]; 22337 22338 // If none found, seek a pair 22339 if ( !conv ) { 22340 for ( conv2 in converters ) { 22341 22342 // If conv2 outputs current 22343 tmp = conv2.split( " " ); 22344 if ( tmp[ 1 ] === current ) { 22345 22346 // If prev can be converted to accepted input 22347 conv = converters[ prev + " " + tmp[ 0 ] ] || 22348 converters[ "* " + tmp[ 0 ] ]; 22349 if ( conv ) { 22350 22351 // Condense equivalence converters 22352 if ( conv === true ) { 22353 conv = converters[ conv2 ]; 22354 22355 // Otherwise, insert the intermediate dataType 22356 } else if ( converters[ conv2 ] !== true ) { 22357 current = tmp[ 0 ]; 22358 dataTypes.unshift( tmp[ 1 ] ); 22359 } 22360 break; 22361 } 22362 } 22363 } 22364 } 22365 22366 // Apply converter (if not an equivalence) 22367 if ( conv !== true ) { 22368 22369 // Unless errors are allowed to bubble, catch and return them 22370 if ( conv && s.throws ) { 22371 response = conv( response ); 22372 } else { 22373 try { 22374 response = conv( response ); 22375 } catch ( e ) { 22376 return { 22377 state: "parsererror", 22378 error: conv ? e : "No conversion from " + prev + " to " + current 22379 }; 22380 } 22381 } 22382 } 22383 } 22384 } 22385 } 22386 22387 return { state: "success", data: response }; 22388} 22389 22390jQuery.extend( { 22391 22392 // Counter for holding the number of active queries 22393 active: 0, 22394 22395 // Last-Modified header cache for next request 22396 lastModified: {}, 22397 etag: {}, 22398 22399 ajaxSettings: { 22400 url: location.href, 22401 type: "GET", 22402 isLocal: rlocalProtocol.test( location.protocol ), 22403 global: true, 22404 processData: true, 22405 async: true, 22406 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 22407 22408 /* 22409 timeout: 0, 22410 data: null, 22411 dataType: null, 22412 username: null, 22413 password: null, 22414 cache: null, 22415 throws: false, 22416 traditional: false, 22417 headers: {}, 22418 */ 22419 22420 accepts: { 22421 "*": allTypes, 22422 text: "text/plain", 22423 html: "text/html", 22424 xml: "application/xml, text/xml", 22425 json: "application/json, text/javascript" 22426 }, 22427 22428 contents: { 22429 xml: /\bxml\b/, 22430 html: /\bhtml/, 22431 json: /\bjson\b/ 22432 }, 22433 22434 responseFields: { 22435 xml: "responseXML", 22436 text: "responseText", 22437 json: "responseJSON" 22438 }, 22439 22440 // Data converters 22441 // Keys separate source (or catchall "*") and destination types with a single space 22442 converters: { 22443 22444 // Convert anything to text 22445 "* text": String, 22446 22447 // Text to html (true = no transformation) 22448 "text html": true, 22449 22450 // Evaluate text as a json expression 22451 "text json": JSON.parse, 22452 22453 // Parse text as xml 22454 "text xml": jQuery.parseXML 22455 }, 22456 22457 // For options that shouldn't be deep extended: 22458 // you can add your own custom options here if 22459 // and when you create one that shouldn't be 22460 // deep extended (see ajaxExtend) 22461 flatOptions: { 22462 url: true, 22463 context: true 22464 } 22465 }, 22466 22467 // Creates a full fledged settings object into target 22468 // with both ajaxSettings and settings fields. 22469 // If target is omitted, writes into ajaxSettings. 22470 ajaxSetup: function( target, settings ) { 22471 return settings ? 22472 22473 // Building a settings object 22474 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : 22475 22476 // Extending ajaxSettings 22477 ajaxExtend( jQuery.ajaxSettings, target ); 22478 }, 22479 22480 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), 22481 ajaxTransport: addToPrefiltersOrTransports( transports ), 22482 22483 // Main method 22484 ajax: function( url, options ) { 22485 22486 // If url is an object, simulate pre-1.5 signature 22487 if ( typeof url === "object" ) { 22488 options = url; 22489 url = undefined; 22490 } 22491 22492 // Force options to be an object 22493 options = options || {}; 22494 22495 var transport, 22496 22497 // URL without anti-cache param 22498 cacheURL, 22499 22500 // Response headers 22501 responseHeadersString, 22502 responseHeaders, 22503 22504 // timeout handle 22505 timeoutTimer, 22506 22507 // Url cleanup var 22508 urlAnchor, 22509 22510 // Request state (becomes false upon send and true upon completion) 22511 completed, 22512 22513 // To know if global events are to be dispatched 22514 fireGlobals, 22515 22516 // Loop variable 22517 i, 22518 22519 // uncached part of the url 22520 uncached, 22521 22522 // Create the final options object 22523 s = jQuery.ajaxSetup( {}, options ), 22524 22525 // Callbacks context 22526 callbackContext = s.context || s, 22527 22528 // Context for global events is callbackContext if it is a DOM node or jQuery collection 22529 globalEventContext = s.context && 22530 ( callbackContext.nodeType || callbackContext.jquery ) ? 22531 jQuery( callbackContext ) : 22532 jQuery.event, 22533 22534 // Deferreds 22535 deferred = jQuery.Deferred(), 22536 completeDeferred = jQuery.Callbacks( "once memory" ), 22537 22538 // Status-dependent callbacks 22539 statusCode = s.statusCode || {}, 22540 22541 // Headers (they are sent all at once) 22542 requestHeaders = {}, 22543 requestHeadersNames = {}, 22544 22545 // Default abort message 22546 strAbort = "canceled", 22547 22548 // Fake xhr 22549 jqXHR = { 22550 readyState: 0, 22551 22552 // Builds headers hashtable if needed 22553 getResponseHeader: function( key ) { 22554 var match; 22555 if ( completed ) { 22556 if ( !responseHeaders ) { 22557 responseHeaders = {}; 22558 while ( ( match = rheaders.exec( responseHeadersString ) ) ) { 22559 responseHeaders[ match[ 1 ].toLowerCase() + " " ] = 22560 ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) 22561 .concat( match[ 2 ] ); 22562 } 22563 } 22564 match = responseHeaders[ key.toLowerCase() + " " ]; 22565 } 22566 return match == null ? null : match.join( ", " ); 22567 }, 22568 22569 // Raw string 22570 getAllResponseHeaders: function() { 22571 return completed ? responseHeadersString : null; 22572 }, 22573 22574 // Caches the header 22575 setRequestHeader: function( name, value ) { 22576 if ( completed == null ) { 22577 name = requestHeadersNames[ name.toLowerCase() ] = 22578 requestHeadersNames[ name.toLowerCase() ] || name; 22579 requestHeaders[ name ] = value; 22580 } 22581 return this; 22582 }, 22583 22584 // Overrides response content-type header 22585 overrideMimeType: function( type ) { 22586 if ( completed == null ) { 22587 s.mimeType = type; 22588 } 22589 return this; 22590 }, 22591 22592 // Status-dependent callbacks 22593 statusCode: function( map ) { 22594 var code; 22595 if ( map ) { 22596 if ( completed ) { 22597 22598 // Execute the appropriate callbacks 22599 jqXHR.always( map[ jqXHR.status ] ); 22600 } else { 22601 22602 // Lazy-add the new callbacks in a way that preserves old ones 22603 for ( code in map ) { 22604 statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; 22605 } 22606 } 22607 } 22608 return this; 22609 }, 22610 22611 // Cancel the request 22612 abort: function( statusText ) { 22613 var finalText = statusText || strAbort; 22614 if ( transport ) { 22615 transport.abort( finalText ); 22616 } 22617 done( 0, finalText ); 22618 return this; 22619 } 22620 }; 22621 22622 // Attach deferreds 22623 deferred.promise( jqXHR ); 22624 22625 // Add protocol if not provided (prefilters might expect it) 22626 // Handle falsy url in the settings object (trac-10093: consistency with old signature) 22627 // We also use the url parameter if available 22628 s.url = ( ( url || s.url || location.href ) + "" ) 22629 .replace( rprotocol, location.protocol + "//" ); 22630 22631 // Alias method option to type as per ticket trac-12004 22632 s.type = options.method || options.type || s.method || s.type; 22633 22634 // Extract dataTypes list 22635 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; 22636 22637 // A cross-domain request is in order when the origin doesn't match the current origin. 22638 if ( s.crossDomain == null ) { 22639 urlAnchor = document.createElement( "a" ); 22640 22641 // Support: IE <=8 - 11, Edge 12 - 15 22642 // IE throws exception on accessing the href property if url is malformed, 22643 // e.g. http://example.com:80x/ 22644 try { 22645 urlAnchor.href = s.url; 22646 22647 // Support: IE <=8 - 11 only 22648 // Anchor's host property isn't correctly set when s.url is relative 22649 urlAnchor.href = urlAnchor.href; 22650 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== 22651 urlAnchor.protocol + "//" + urlAnchor.host; 22652 } catch ( e ) { 22653 22654 // If there is an error parsing the URL, assume it is crossDomain, 22655 // it can be rejected by the transport if it is invalid 22656 s.crossDomain = true; 22657 } 22658 } 22659 22660 // Convert data if not already a string 22661 if ( s.data && s.processData && typeof s.data !== "string" ) { 22662 s.data = jQuery.param( s.data, s.traditional ); 22663 } 22664 22665 // Apply prefilters 22666 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); 22667 22668 // If request was aborted inside a prefilter, stop there 22669 if ( completed ) { 22670 return jqXHR; 22671 } 22672 22673 // We can fire global events as of now if asked to 22674 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118) 22675 fireGlobals = jQuery.event && s.global; 22676 22677 // Watch for a new set of requests 22678 if ( fireGlobals && jQuery.active++ === 0 ) { 22679 jQuery.event.trigger( "ajaxStart" ); 22680 } 22681 22682 // Uppercase the type 22683 s.type = s.type.toUpperCase(); 22684 22685 // Determine if request has content 22686 s.hasContent = !rnoContent.test( s.type ); 22687 22688 // Save the URL in case we're toying with the If-Modified-Since 22689 // and/or If-None-Match header later on 22690 // Remove hash to simplify url manipulation 22691 cacheURL = s.url.replace( rhash, "" ); 22692 22693 // More options handling for requests with no content 22694 if ( !s.hasContent ) { 22695 22696 // Remember the hash so we can put it back 22697 uncached = s.url.slice( cacheURL.length ); 22698 22699 // If data is available and should be processed, append data to url 22700 if ( s.data && ( s.processData || typeof s.data === "string" ) ) { 22701 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; 22702 22703 // trac-9682: remove data so that it's not used in an eventual retry 22704 delete s.data; 22705 } 22706 22707 // Add or update anti-cache param if needed 22708 if ( s.cache === false ) { 22709 cacheURL = cacheURL.replace( rantiCache, "$1" ); 22710 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + 22711 uncached; 22712 } 22713 22714 // Put hash and anti-cache on the URL that will be requested (gh-1732) 22715 s.url = cacheURL + uncached; 22716 22717 // Change '%20' to '+' if this is encoded form body content (gh-2658) 22718 } else if ( s.data && s.processData && 22719 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { 22720 s.data = s.data.replace( r20, "+" ); 22721 } 22722 22723 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 22724 if ( s.ifModified ) { 22725 if ( jQuery.lastModified[ cacheURL ] ) { 22726 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); 22727 } 22728 if ( jQuery.etag[ cacheURL ] ) { 22729 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); 22730 } 22731 } 22732 22733 // Set the correct header, if data is being sent 22734 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { 22735 jqXHR.setRequestHeader( "Content-Type", s.contentType ); 22736 } 22737 22738 // Set the Accepts header for the server, depending on the dataType 22739 jqXHR.setRequestHeader( 22740 "Accept", 22741 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? 22742 s.accepts[ s.dataTypes[ 0 ] ] + 22743 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : 22744 s.accepts[ "*" ] 22745 ); 22746 22747 // Check for headers option 22748 for ( i in s.headers ) { 22749 jqXHR.setRequestHeader( i, s.headers[ i ] ); 22750 } 22751 22752 // Allow custom headers/mimetypes and early abort 22753 if ( s.beforeSend && 22754 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { 22755 22756 // Abort if not done already and return 22757 return jqXHR.abort(); 22758 } 22759 22760 // Aborting is no longer a cancellation 22761 strAbort = "abort"; 22762 22763 // Install callbacks on deferreds 22764 completeDeferred.add( s.complete ); 22765 jqXHR.done( s.success ); 22766 jqXHR.fail( s.error ); 22767 22768 // Get transport 22769 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); 22770 22771 // If no transport, we auto-abort 22772 if ( !transport ) { 22773 done( -1, "No Transport" ); 22774 } else { 22775 jqXHR.readyState = 1; 22776 22777 // Send global event 22778 if ( fireGlobals ) { 22779 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); 22780 } 22781 22782 // If request was aborted inside ajaxSend, stop there 22783 if ( completed ) { 22784 return jqXHR; 22785 } 22786 22787 // Timeout 22788 if ( s.async && s.timeout > 0 ) { 22789 timeoutTimer = window.setTimeout( function() { 22790 jqXHR.abort( "timeout" ); 22791 }, s.timeout ); 22792 } 22793 22794 try { 22795 completed = false; 22796 transport.send( requestHeaders, done ); 22797 } catch ( e ) { 22798 22799 // Rethrow post-completion exceptions 22800 if ( completed ) { 22801 throw e; 22802 } 22803 22804 // Propagate others as results 22805 done( -1, e ); 22806 } 22807 } 22808 22809 // Callback for when everything is done 22810 function done( status, nativeStatusText, responses, headers ) { 22811 var isSuccess, success, error, response, modified, 22812 statusText = nativeStatusText; 22813 22814 // Ignore repeat invocations 22815 if ( completed ) { 22816 return; 22817 } 22818 22819 completed = true; 22820 22821 // Clear timeout if it exists 22822 if ( timeoutTimer ) { 22823 window.clearTimeout( timeoutTimer ); 22824 } 22825 22826 // Dereference transport for early garbage collection 22827 // (no matter how long the jqXHR object will be used) 22828 transport = undefined; 22829 22830 // Cache response headers 22831 responseHeadersString = headers || ""; 22832 22833 // Set readyState 22834 jqXHR.readyState = status > 0 ? 4 : 0; 22835 22836 // Determine if successful 22837 isSuccess = status >= 200 && status < 300 || status === 304; 22838 22839 // Get response data 22840 if ( responses ) { 22841 response = ajaxHandleResponses( s, jqXHR, responses ); 22842 } 22843 22844 // Use a noop converter for missing script but not if jsonp 22845 if ( !isSuccess && 22846 jQuery.inArray( "script", s.dataTypes ) > -1 && 22847 jQuery.inArray( "json", s.dataTypes ) < 0 ) { 22848 s.converters[ "text script" ] = function() {}; 22849 } 22850 22851 // Convert no matter what (that way responseXXX fields are always set) 22852 response = ajaxConvert( s, response, jqXHR, isSuccess ); 22853 22854 // If successful, handle type chaining 22855 if ( isSuccess ) { 22856 22857 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 22858 if ( s.ifModified ) { 22859 modified = jqXHR.getResponseHeader( "Last-Modified" ); 22860 if ( modified ) { 22861 jQuery.lastModified[ cacheURL ] = modified; 22862 } 22863 modified = jqXHR.getResponseHeader( "etag" ); 22864 if ( modified ) { 22865 jQuery.etag[ cacheURL ] = modified; 22866 } 22867 } 22868 22869 // if no content 22870 if ( status === 204 || s.type === "HEAD" ) { 22871 statusText = "nocontent"; 22872 22873 // if not modified 22874 } else if ( status === 304 ) { 22875 statusText = "notmodified"; 22876 22877 // If we have data, let's convert it 22878 } else { 22879 statusText = response.state; 22880 success = response.data; 22881 error = response.error; 22882 isSuccess = !error; 22883 } 22884 } else { 22885 22886 // Extract error from statusText and normalize for non-aborts 22887 error = statusText; 22888 if ( status || !statusText ) { 22889 statusText = "error"; 22890 if ( status < 0 ) { 22891 status = 0; 22892 } 22893 } 22894 } 22895 22896 // Set data for the fake xhr object 22897 jqXHR.status = status; 22898 jqXHR.statusText = ( nativeStatusText || statusText ) + ""; 22899 22900 // Success/Error 22901 if ( isSuccess ) { 22902 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); 22903 } else { 22904 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); 22905 } 22906 22907 // Status-dependent callbacks 22908 jqXHR.statusCode( statusCode ); 22909 statusCode = undefined; 22910 22911 if ( fireGlobals ) { 22912 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", 22913 [ jqXHR, s, isSuccess ? success : error ] ); 22914 } 22915 22916 // Complete 22917 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); 22918 22919 if ( fireGlobals ) { 22920 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); 22921 22922 // Handle the global AJAX counter 22923 if ( !( --jQuery.active ) ) { 22924 jQuery.event.trigger( "ajaxStop" ); 22925 } 22926 } 22927 } 22928 22929 return jqXHR; 22930 }, 22931 22932 getJSON: function( url, data, callback ) { 22933 return jQuery.get( url, data, callback, "json" ); 22934 }, 22935 22936 getScript: function( url, callback ) { 22937 return jQuery.get( url, undefined, callback, "script" ); 22938 } 22939} ); 22940 22941jQuery.each( [ "get", "post" ], function( _i, method ) { 22942 jQuery[ method ] = function( url, data, callback, type ) { 22943 22944 // Shift arguments if data argument was omitted 22945 if ( isFunction( data ) ) { 22946 type = type || callback; 22947 callback = data; 22948 data = undefined; 22949 } 22950 22951 // The url can be an options object (which then must have .url) 22952 return jQuery.ajax( jQuery.extend( { 22953 url: url, 22954 type: method, 22955 dataType: type, 22956 data: data, 22957 success: callback 22958 }, jQuery.isPlainObject( url ) && url ) ); 22959 }; 22960} ); 22961 22962jQuery.ajaxPrefilter( function( s ) { 22963 var i; 22964 for ( i in s.headers ) { 22965 if ( i.toLowerCase() === "content-type" ) { 22966 s.contentType = s.headers[ i ] || ""; 22967 } 22968 } 22969} ); 22970 22971 22972jQuery._evalUrl = function( url, options, doc ) { 22973 return jQuery.ajax( { 22974 url: url, 22975 22976 // Make this explicit, since user can override this through ajaxSetup (trac-11264) 22977 type: "GET", 22978 dataType: "script", 22979 cache: true, 22980 async: false, 22981 global: false, 22982 22983 // Only evaluate the response if it is successful (gh-4126) 22984 // dataFilter is not invoked for failure responses, so using it instead 22985 // of the default converter is kludgy but it works. 22986 converters: { 22987 "text script": function() {} 22988 }, 22989 dataFilter: function( response ) { 22990 jQuery.globalEval( response, options, doc ); 22991 } 22992 } ); 22993}; 22994 22995 22996jQuery.fn.extend( { 22997 wrapAll: function( html ) { 22998 var wrap; 22999 23000 if ( this[ 0 ] ) { 23001 if ( isFunction( html ) ) { 23002 html = html.call( this[ 0 ] ); 23003 } 23004 23005 // The elements to wrap the target around 23006 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 23007 23008 if ( this[ 0 ].parentNode ) { 23009 wrap.insertBefore( this[ 0 ] ); 23010 } 23011 23012 wrap.map( function() { 23013 var elem = this; 23014 23015 while ( elem.firstElementChild ) { 23016 elem = elem.firstElementChild; 23017 } 23018 23019 return elem; 23020 } ).append( this ); 23021 } 23022 23023 return this; 23024 }, 23025 23026 wrapInner: function( html ) { 23027 if ( isFunction( html ) ) { 23028 return this.each( function( i ) { 23029 jQuery( this ).wrapInner( html.call( this, i ) ); 23030 } ); 23031 } 23032 23033 return this.each( function() { 23034 var self = jQuery( this ), 23035 contents = self.contents(); 23036 23037 if ( contents.length ) { 23038 contents.wrapAll( html ); 23039 23040 } else { 23041 self.append( html ); 23042 } 23043 } ); 23044 }, 23045 23046 wrap: function( html ) { 23047 var htmlIsFunction = isFunction( html ); 23048 23049 return this.each( function( i ) { 23050 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); 23051 } ); 23052 }, 23053 23054 unwrap: function( selector ) { 23055 this.parent( selector ).not( "body" ).each( function() { 23056 jQuery( this ).replaceWith( this.childNodes ); 23057 } ); 23058 return this; 23059 } 23060} ); 23061 23062 23063jQuery.expr.pseudos.hidden = function( elem ) { 23064 return !jQuery.expr.pseudos.visible( elem ); 23065}; 23066jQuery.expr.pseudos.visible = function( elem ) { 23067 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 23068}; 23069 23070 23071 23072 23073jQuery.ajaxSettings.xhr = function() { 23074 try { 23075 return new window.XMLHttpRequest(); 23076 } catch ( e ) {} 23077}; 23078 23079var xhrSuccessStatus = { 23080 23081 // File protocol always yields status code 0, assume 200 23082 0: 200, 23083 23084 // Support: IE <=9 only 23085 // trac-1450: sometimes IE returns 1223 when it should be 204 23086 1223: 204 23087 }, 23088 xhrSupported = jQuery.ajaxSettings.xhr(); 23089 23090support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); 23091support.ajax = xhrSupported = !!xhrSupported; 23092 23093jQuery.ajaxTransport( function( options ) { 23094 var callback, errorCallback; 23095 23096 // Cross domain only allowed if supported through XMLHttpRequest 23097 if ( support.cors || xhrSupported && !options.crossDomain ) { 23098 return { 23099 send: function( headers, complete ) { 23100 var i, 23101 xhr = options.xhr(); 23102 23103 xhr.open( 23104 options.type, 23105 options.url, 23106 options.async, 23107 options.username, 23108 options.password 23109 ); 23110 23111 // Apply custom fields if provided 23112 if ( options.xhrFields ) { 23113 for ( i in options.xhrFields ) { 23114 xhr[ i ] = options.xhrFields[ i ]; 23115 } 23116 } 23117 23118 // Override mime type if needed 23119 if ( options.mimeType && xhr.overrideMimeType ) { 23120 xhr.overrideMimeType( options.mimeType ); 23121 } 23122 23123 // X-Requested-With header 23124 // For cross-domain requests, seeing as conditions for a preflight are 23125 // akin to a jigsaw puzzle, we simply never set it to be sure. 23126 // (it can always be set on a per-request basis or even using ajaxSetup) 23127 // For same-domain requests, won't change header if already provided. 23128 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { 23129 headers[ "X-Requested-With" ] = "XMLHttpRequest"; 23130 } 23131 23132 // Set headers 23133 for ( i in headers ) { 23134 xhr.setRequestHeader( i, headers[ i ] ); 23135 } 23136 23137 // Callback 23138 callback = function( type ) { 23139 return function() { 23140 if ( callback ) { 23141 callback = errorCallback = xhr.onload = 23142 xhr.onerror = xhr.onabort = xhr.ontimeout = 23143 xhr.onreadystatechange = null; 23144 23145 if ( type === "abort" ) { 23146 xhr.abort(); 23147 } else if ( type === "error" ) { 23148 23149 // Support: IE <=9 only 23150 // On a manual native abort, IE9 throws 23151 // errors on any property access that is not readyState 23152 if ( typeof xhr.status !== "number" ) { 23153 complete( 0, "error" ); 23154 } else { 23155 complete( 23156 23157 // File: protocol always yields status 0; see trac-8605, trac-14207 23158 xhr.status, 23159 xhr.statusText 23160 ); 23161 } 23162 } else { 23163 complete( 23164 xhrSuccessStatus[ xhr.status ] || xhr.status, 23165 xhr.statusText, 23166 23167 // Support: IE <=9 only 23168 // IE9 has no XHR2 but throws on binary (trac-11426) 23169 // For XHR2 non-text, let the caller handle it (gh-2498) 23170 ( xhr.responseType || "text" ) !== "text" || 23171 typeof xhr.responseText !== "string" ? 23172 { binary: xhr.response } : 23173 { text: xhr.responseText }, 23174 xhr.getAllResponseHeaders() 23175 ); 23176 } 23177 } 23178 }; 23179 }; 23180 23181 // Listen to events 23182 xhr.onload = callback(); 23183 errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); 23184 23185 // Support: IE 9 only 23186 // Use onreadystatechange to replace onabort 23187 // to handle uncaught aborts 23188 if ( xhr.onabort !== undefined ) { 23189 xhr.onabort = errorCallback; 23190 } else { 23191 xhr.onreadystatechange = function() { 23192 23193 // Check readyState before timeout as it changes 23194 if ( xhr.readyState === 4 ) { 23195 23196 // Allow onerror to be called first, 23197 // but that will not handle a native abort 23198 // Also, save errorCallback to a variable 23199 // as xhr.onerror cannot be accessed 23200 window.setTimeout( function() { 23201 if ( callback ) { 23202 errorCallback(); 23203 } 23204 } ); 23205 } 23206 }; 23207 } 23208 23209 // Create the abort callback 23210 callback = callback( "abort" ); 23211 23212 try { 23213 23214 // Do send the request (this may raise an exception) 23215 xhr.send( options.hasContent && options.data || null ); 23216 } catch ( e ) { 23217 23218 // trac-14683: Only rethrow if this hasn't been notified as an error yet 23219 if ( callback ) { 23220 throw e; 23221 } 23222 } 23223 }, 23224 23225 abort: function() { 23226 if ( callback ) { 23227 callback(); 23228 } 23229 } 23230 }; 23231 } 23232} ); 23233 23234 23235 23236 23237// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) 23238jQuery.ajaxPrefilter( function( s ) { 23239 if ( s.crossDomain ) { 23240 s.contents.script = false; 23241 } 23242} ); 23243 23244// Install script dataType 23245jQuery.ajaxSetup( { 23246 accepts: { 23247 script: "text/javascript, application/javascript, " + 23248 "application/ecmascript, application/x-ecmascript" 23249 }, 23250 contents: { 23251 script: /\b(?:java|ecma)script\b/ 23252 }, 23253 converters: { 23254 "text script": function( text ) { 23255 jQuery.globalEval( text ); 23256 return text; 23257 } 23258 } 23259} ); 23260 23261// Handle cache's special case and crossDomain 23262jQuery.ajaxPrefilter( "script", function( s ) { 23263 if ( s.cache === undefined ) { 23264 s.cache = false; 23265 } 23266 if ( s.crossDomain ) { 23267 s.type = "GET"; 23268 } 23269} ); 23270 23271// Bind script tag hack transport 23272jQuery.ajaxTransport( "script", function( s ) { 23273 23274 // This transport only deals with cross domain or forced-by-attrs requests 23275 if ( s.crossDomain || s.scriptAttrs ) { 23276 var script, callback; 23277 return { 23278 send: function( _, complete ) { 23279 script = jQuery( "<script>" ) 23280 .attr( s.scriptAttrs || {} ) 23281 .prop( { charset: s.scriptCharset, src: s.url } ) 23282 .on( "load error", callback = function( evt ) { 23283 script.remove(); 23284 callback = null; 23285 if ( evt ) { 23286 complete( evt.type === "error" ? 404 : 200, evt.type ); 23287 } 23288 } ); 23289 23290 // Use native DOM manipulation to avoid our domManip AJAX trickery 23291 document.head.appendChild( script[ 0 ] ); 23292 }, 23293 abort: function() { 23294 if ( callback ) { 23295 callback(); 23296 } 23297 } 23298 }; 23299 } 23300} ); 23301 23302 23303 23304 23305var oldCallbacks = [], 23306 rjsonp = /(=)\?(?=&|$)|\?\?/; 23307 23308// Default jsonp settings 23309jQuery.ajaxSetup( { 23310 jsonp: "callback", 23311 jsonpCallback: function() { 23312 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); 23313 this[ callback ] = true; 23314 return callback; 23315 } 23316} ); 23317 23318// Detect, normalize options and install callbacks for jsonp requests 23319jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 23320 23321 var callbackName, overwritten, responseContainer, 23322 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 23323 "url" : 23324 typeof s.data === "string" && 23325 ( s.contentType || "" ) 23326 .indexOf( "application/x-www-form-urlencoded" ) === 0 && 23327 rjsonp.test( s.data ) && "data" 23328 ); 23329 23330 // Handle iff the expected data type is "jsonp" or we have a parameter to set 23331 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 23332 23333 // Get callback name, remembering preexisting value associated with it 23334 callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? 23335 s.jsonpCallback() : 23336 s.jsonpCallback; 23337 23338 // Insert callback into url or form data 23339 if ( jsonProp ) { 23340 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 23341 } else if ( s.jsonp !== false ) { 23342 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 23343 } 23344 23345 // Use data converter to retrieve json after script execution 23346 s.converters[ "script json" ] = function() { 23347 if ( !responseContainer ) { 23348 jQuery.error( callbackName + " was not called" ); 23349 } 23350 return responseContainer[ 0 ]; 23351 }; 23352 23353 // Force json dataType 23354 s.dataTypes[ 0 ] = "json"; 23355 23356 // Install callback 23357 overwritten = window[ callbackName ]; 23358 window[ callbackName ] = function() { 23359 responseContainer = arguments; 23360 }; 23361 23362 // Clean-up function (fires after converters) 23363 jqXHR.always( function() { 23364 23365 // If previous value didn't exist - remove it 23366 if ( overwritten === undefined ) { 23367 jQuery( window ).removeProp( callbackName ); 23368 23369 // Otherwise restore preexisting value 23370 } else { 23371 window[ callbackName ] = overwritten; 23372 } 23373 23374 // Save back as free 23375 if ( s[ callbackName ] ) { 23376 23377 // Make sure that re-using the options doesn't screw things around 23378 s.jsonpCallback = originalSettings.jsonpCallback; 23379 23380 // Save the callback name for future use 23381 oldCallbacks.push( callbackName ); 23382 } 23383 23384 // Call if it was a function and we have a response 23385 if ( responseContainer && isFunction( overwritten ) ) { 23386 overwritten( responseContainer[ 0 ] ); 23387 } 23388 23389 responseContainer = overwritten = undefined; 23390 } ); 23391 23392 // Delegate to script 23393 return "script"; 23394 } 23395} ); 23396 23397 23398 23399 23400// Support: Safari 8 only 23401// In Safari 8 documents created via document.implementation.createHTMLDocument 23402// collapse sibling forms: the second one becomes a child of the first one. 23403// Because of that, this security measure has to be disabled in Safari 8. 23404// https://bugs.webkit.org/show_bug.cgi?id=137337 23405support.createHTMLDocument = ( function() { 23406 var body = document.implementation.createHTMLDocument( "" ).body; 23407 body.innerHTML = "<form></form><form></form>"; 23408 return body.childNodes.length === 2; 23409} )(); 23410 23411 23412// Argument "data" should be string of html 23413// context (optional): If specified, the fragment will be created in this context, 23414// defaults to document 23415// keepScripts (optional): If true, will include scripts passed in the html string 23416jQuery.parseHTML = function( data, context, keepScripts ) { 23417 if ( typeof data !== "string" ) { 23418 return []; 23419 } 23420 if ( typeof context === "boolean" ) { 23421 keepScripts = context; 23422 context = false; 23423 } 23424 23425 var base, parsed, scripts; 23426 23427 if ( !context ) { 23428 23429 // Stop scripts or inline event handlers from being executed immediately 23430 // by using document.implementation 23431 if ( support.createHTMLDocument ) { 23432 context = document.implementation.createHTMLDocument( "" ); 23433 23434 // Set the base href for the created document 23435 // so any parsed elements with URLs 23436 // are based on the document's URL (gh-2965) 23437 base = context.createElement( "base" ); 23438 base.href = document.location.href; 23439 context.head.appendChild( base ); 23440 } else { 23441 context = document; 23442 } 23443 } 23444 23445 parsed = rsingleTag.exec( data ); 23446 scripts = !keepScripts && []; 23447 23448 // Single tag 23449 if ( parsed ) { 23450 return [ context.createElement( parsed[ 1 ] ) ]; 23451 } 23452 23453 parsed = buildFragment( [ data ], context, scripts ); 23454 23455 if ( scripts && scripts.length ) { 23456 jQuery( scripts ).remove(); 23457 } 23458 23459 return jQuery.merge( [], parsed.childNodes ); 23460}; 23461 23462 23463/** 23464 * Load a url into a page 23465 */ 23466jQuery.fn.load = function( url, params, callback ) { 23467 var selector, type, response, 23468 self = this, 23469 off = url.indexOf( " " ); 23470 23471 if ( off > -1 ) { 23472 selector = stripAndCollapse( url.slice( off ) ); 23473 url = url.slice( 0, off ); 23474 } 23475 23476 // If it's a function 23477 if ( isFunction( params ) ) { 23478 23479 // We assume that it's the callback 23480 callback = params; 23481 params = undefined; 23482 23483 // Otherwise, build a param string 23484 } else if ( params && typeof params === "object" ) { 23485 type = "POST"; 23486 } 23487 23488 // If we have elements to modify, make the request 23489 if ( self.length > 0 ) { 23490 jQuery.ajax( { 23491 url: url, 23492 23493 // If "type" variable is undefined, then "GET" method will be used. 23494 // Make value of this field explicit since 23495 // user can override it through ajaxSetup method 23496 type: type || "GET", 23497 dataType: "html", 23498 data: params 23499 } ).done( function( responseText ) { 23500 23501 // Save response for use in complete callback 23502 response = arguments; 23503 23504 self.html( selector ? 23505 23506 // If a selector was specified, locate the right elements in a dummy div 23507 // Exclude scripts to avoid IE 'Permission Denied' errors 23508 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : 23509 23510 // Otherwise use the full result 23511 responseText ); 23512 23513 // If the request succeeds, this function gets "data", "status", "jqXHR" 23514 // but they are ignored because response was set above. 23515 // If it fails, this function gets "jqXHR", "status", "error" 23516 } ).always( callback && function( jqXHR, status ) { 23517 self.each( function() { 23518 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); 23519 } ); 23520 } ); 23521 } 23522 23523 return this; 23524}; 23525 23526 23527 23528 23529jQuery.expr.pseudos.animated = function( elem ) { 23530 return jQuery.grep( jQuery.timers, function( fn ) { 23531 return elem === fn.elem; 23532 } ).length; 23533}; 23534 23535 23536 23537 23538jQuery.offset = { 23539 setOffset: function( elem, options, i ) { 23540 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, 23541 position = jQuery.css( elem, "position" ), 23542 curElem = jQuery( elem ), 23543 props = {}; 23544 23545 // Set position first, in-case top/left are set even on static elem 23546 if ( position === "static" ) { 23547 elem.style.position = "relative"; 23548 } 23549 23550 curOffset = curElem.offset(); 23551 curCSSTop = jQuery.css( elem, "top" ); 23552 curCSSLeft = jQuery.css( elem, "left" ); 23553 calculatePosition = ( position === "absolute" || position === "fixed" ) && 23554 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; 23555 23556 // Need to be able to calculate position if either 23557 // top or left is auto and position is either absolute or fixed 23558 if ( calculatePosition ) { 23559 curPosition = curElem.position(); 23560 curTop = curPosition.top; 23561 curLeft = curPosition.left; 23562 23563 } else { 23564 curTop = parseFloat( curCSSTop ) || 0; 23565 curLeft = parseFloat( curCSSLeft ) || 0; 23566 } 23567 23568 if ( isFunction( options ) ) { 23569 23570 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) 23571 options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); 23572 } 23573 23574 if ( options.top != null ) { 23575 props.top = ( options.top - curOffset.top ) + curTop; 23576 } 23577 if ( options.left != null ) { 23578 props.left = ( options.left - curOffset.left ) + curLeft; 23579 } 23580 23581 if ( "using" in options ) { 23582 options.using.call( elem, props ); 23583 23584 } else { 23585 curElem.css( props ); 23586 } 23587 } 23588}; 23589 23590jQuery.fn.extend( { 23591 23592 // offset() relates an element's border box to the document origin 23593 offset: function( options ) { 23594 23595 // Preserve chaining for setter 23596 if ( arguments.length ) { 23597 return options === undefined ? 23598 this : 23599 this.each( function( i ) { 23600 jQuery.offset.setOffset( this, options, i ); 23601 } ); 23602 } 23603 23604 var rect, win, 23605 elem = this[ 0 ]; 23606 23607 if ( !elem ) { 23608 return; 23609 } 23610 23611 // Return zeros for disconnected and hidden (display: none) elements (gh-2310) 23612 // Support: IE <=11 only 23613 // Running getBoundingClientRect on a 23614 // disconnected node in IE throws an error 23615 if ( !elem.getClientRects().length ) { 23616 return { top: 0, left: 0 }; 23617 } 23618 23619 // Get document-relative position by adding viewport scroll to viewport-relative gBCR 23620 rect = elem.getBoundingClientRect(); 23621 win = elem.ownerDocument.defaultView; 23622 return { 23623 top: rect.top + win.pageYOffset, 23624 left: rect.left + win.pageXOffset 23625 }; 23626 }, 23627 23628 // position() relates an element's margin box to its offset parent's padding box 23629 // This corresponds to the behavior of CSS absolute positioning 23630 position: function() { 23631 if ( !this[ 0 ] ) { 23632 return; 23633 } 23634 23635 var offsetParent, offset, doc, 23636 elem = this[ 0 ], 23637 parentOffset = { top: 0, left: 0 }; 23638 23639 // position:fixed elements are offset from the viewport, which itself always has zero offset 23640 if ( jQuery.css( elem, "position" ) === "fixed" ) { 23641 23642 // Assume position:fixed implies availability of getBoundingClientRect 23643 offset = elem.getBoundingClientRect(); 23644 23645 } else { 23646 offset = this.offset(); 23647 23648 // Account for the *real* offset parent, which can be the document or its root element 23649 // when a statically positioned element is identified 23650 doc = elem.ownerDocument; 23651 offsetParent = elem.offsetParent || doc.documentElement; 23652 while ( offsetParent && 23653 ( offsetParent === doc.body || offsetParent === doc.documentElement ) && 23654 jQuery.css( offsetParent, "position" ) === "static" ) { 23655 23656 offsetParent = offsetParent.parentNode; 23657 } 23658 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { 23659 23660 // Incorporate borders into its offset, since they are outside its content origin 23661 parentOffset = jQuery( offsetParent ).offset(); 23662 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); 23663 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); 23664 } 23665 } 23666 23667 // Subtract parent offsets and element margins 23668 return { 23669 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), 23670 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) 23671 }; 23672 }, 23673 23674 // This method will return documentElement in the following cases: 23675 // 1) For the element inside the iframe without offsetParent, this method will return 23676 // documentElement of the parent window 23677 // 2) For the hidden or detached element 23678 // 3) For body or html element, i.e. in case of the html node - it will return itself 23679 // 23680 // but those exceptions were never presented as a real life use-cases 23681 // and might be considered as more preferable results. 23682 // 23683 // This logic, however, is not guaranteed and can change at any point in the future 23684 offsetParent: function() { 23685 return this.map( function() { 23686 var offsetParent = this.offsetParent; 23687 23688 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { 23689 offsetParent = offsetParent.offsetParent; 23690 } 23691 23692 return offsetParent || documentElement; 23693 } ); 23694 } 23695} ); 23696 23697// Create scrollLeft and scrollTop methods 23698jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { 23699 var top = "pageYOffset" === prop; 23700 23701 jQuery.fn[ method ] = function( val ) { 23702 return access( this, function( elem, method, val ) { 23703 23704 // Coalesce documents and windows 23705 var win; 23706 if ( isWindow( elem ) ) { 23707 win = elem; 23708 } else if ( elem.nodeType === 9 ) { 23709 win = elem.defaultView; 23710 } 23711 23712 if ( val === undefined ) { 23713 return win ? win[ prop ] : elem[ method ]; 23714 } 23715 23716 if ( win ) { 23717 win.scrollTo( 23718 !top ? val : win.pageXOffset, 23719 top ? val : win.pageYOffset 23720 ); 23721 23722 } else { 23723 elem[ method ] = val; 23724 } 23725 }, method, val, arguments.length ); 23726 }; 23727} ); 23728 23729// Support: Safari <=7 - 9.1, Chrome <=37 - 49 23730// Add the top/left cssHooks using jQuery.fn.position 23731// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 23732// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 23733// getComputedStyle returns percent when specified for top/left/bottom/right; 23734// rather than make the css module depend on the offset module, just check for it here 23735jQuery.each( [ "top", "left" ], function( _i, prop ) { 23736 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, 23737 function( elem, computed ) { 23738 if ( computed ) { 23739 computed = curCSS( elem, prop ); 23740 23741 // If curCSS returns percentage, fallback to offset 23742 return rnumnonpx.test( computed ) ? 23743 jQuery( elem ).position()[ prop ] + "px" : 23744 computed; 23745 } 23746 } 23747 ); 23748} ); 23749 23750 23751// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 23752jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 23753 jQuery.each( { 23754 padding: "inner" + name, 23755 content: type, 23756 "": "outer" + name 23757 }, function( defaultExtra, funcName ) { 23758 23759 // Margin is only for outerHeight, outerWidth 23760 jQuery.fn[ funcName ] = function( margin, value ) { 23761 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 23762 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 23763 23764 return access( this, function( elem, type, value ) { 23765 var doc; 23766 23767 if ( isWindow( elem ) ) { 23768 23769 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) 23770 return funcName.indexOf( "outer" ) === 0 ? 23771 elem[ "inner" + name ] : 23772 elem.document.documentElement[ "client" + name ]; 23773 } 23774 23775 // Get document width or height 23776 if ( elem.nodeType === 9 ) { 23777 doc = elem.documentElement; 23778 23779 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], 23780 // whichever is greatest 23781 return Math.max( 23782 elem.body[ "scroll" + name ], doc[ "scroll" + name ], 23783 elem.body[ "offset" + name ], doc[ "offset" + name ], 23784 doc[ "client" + name ] 23785 ); 23786 } 23787 23788 return value === undefined ? 23789 23790 // Get width or height on the element, requesting but not forcing parseFloat 23791 jQuery.css( elem, type, extra ) : 23792 23793 // Set width or height on the element 23794 jQuery.style( elem, type, value, extra ); 23795 }, type, chainable ? margin : undefined, chainable ); 23796 }; 23797 } ); 23798} ); 23799 23800 23801jQuery.each( [ 23802 "ajaxStart", 23803 "ajaxStop", 23804 "ajaxComplete", 23805 "ajaxError", 23806 "ajaxSuccess", 23807 "ajaxSend" 23808], function( _i, type ) { 23809 jQuery.fn[ type ] = function( fn ) { 23810 return this.on( type, fn ); 23811 }; 23812} ); 23813 23814 23815 23816 23817jQuery.fn.extend( { 23818 23819 bind: function( types, data, fn ) { 23820 return this.on( types, null, data, fn ); 23821 }, 23822 unbind: function( types, fn ) { 23823 return this.off( types, null, fn ); 23824 }, 23825 23826 delegate: function( selector, types, data, fn ) { 23827 return this.on( types, selector, data, fn ); 23828 }, 23829 undelegate: function( selector, types, fn ) { 23830 23831 // ( namespace ) or ( selector, types [, fn] ) 23832 return arguments.length === 1 ? 23833 this.off( selector, "**" ) : 23834 this.off( types, selector || "**", fn ); 23835 }, 23836 23837 hover: function( fnOver, fnOut ) { 23838 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 23839 } 23840} ); 23841 23842jQuery.each( 23843 ( "blur focus focusin focusout resize scroll click dblclick " + 23844 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 23845 "change select submit keydown keypress keyup contextmenu" ).split( " " ), 23846 function( _i, name ) { 23847 23848 // Handle event binding 23849 jQuery.fn[ name ] = function( data, fn ) { 23850 return arguments.length > 0 ? 23851 this.on( name, null, data, fn ) : 23852 this.trigger( name ); 23853 }; 23854 } 23855); 23856 23857 23858 23859 23860// Support: Android <=4.0 only 23861// Make sure we trim BOM and NBSP 23862// Require that the "whitespace run" starts from a non-whitespace 23863// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. 23864var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; 23865 23866// Bind a function to a context, optionally partially applying any 23867// arguments. 23868// jQuery.proxy is deprecated to promote standards (specifically Function#bind) 23869// However, it is not slated for removal any time soon 23870jQuery.proxy = function( fn, context ) { 23871 var tmp, args, proxy; 23872 23873 if ( typeof context === "string" ) { 23874 tmp = fn[ context ]; 23875 context = fn; 23876 fn = tmp; 23877 } 23878 23879 // Quick check to determine if target is callable, in the spec 23880 // this throws a TypeError, but we will just return undefined. 23881 if ( !isFunction( fn ) ) { 23882 return undefined; 23883 } 23884 23885 // Simulated bind 23886 args = slice.call( arguments, 2 ); 23887 proxy = function() { 23888 return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); 23889 }; 23890 23891 // Set the guid of unique handler to the same of original handler, so it can be removed 23892 proxy.guid = fn.guid = fn.guid || jQuery.guid++; 23893 23894 return proxy; 23895}; 23896 23897jQuery.holdReady = function( hold ) { 23898 if ( hold ) { 23899 jQuery.readyWait++; 23900 } else { 23901 jQuery.ready( true ); 23902 } 23903}; 23904jQuery.isArray = Array.isArray; 23905jQuery.parseJSON = JSON.parse; 23906jQuery.nodeName = nodeName; 23907jQuery.isFunction = isFunction; 23908jQuery.isWindow = isWindow; 23909jQuery.camelCase = camelCase; 23910jQuery.type = toType; 23911 23912jQuery.now = Date.now; 23913 23914jQuery.isNumeric = function( obj ) { 23915 23916 // As of jQuery 3.0, isNumeric is limited to 23917 // strings and numbers (primitives or objects) 23918 // that can be coerced to finite numbers (gh-2662) 23919 var type = jQuery.type( obj ); 23920 return ( type === "number" || type === "string" ) && 23921 23922 // parseFloat NaNs numeric-cast false positives ("") 23923 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 23924 // subtraction forces infinities to NaN 23925 !isNaN( obj - parseFloat( obj ) ); 23926}; 23927 23928jQuery.trim = function( text ) { 23929 return text == null ? 23930 "" : 23931 ( text + "" ).replace( rtrim, "$1" ); 23932}; 23933 23934 23935 23936// Register as a named AMD module, since jQuery can be concatenated with other 23937// files that may use define, but not via a proper concatenation script that 23938// understands anonymous AMD modules. A named AMD is safest and most robust 23939// way to register. Lowercase jquery is used because AMD module names are 23940// derived from file names, and jQuery is normally delivered in a lowercase 23941// file name. Do this after creating the global so that if an AMD module wants 23942// to call noConflict to hide this version of jQuery, it will work. 23943 23944// Note that for maximum portability, libraries that are not jQuery should 23945// declare themselves as anonymous modules, and avoid setting a global if an 23946// AMD loader is present. jQuery is a special case. For more information, see 23947// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 23948 23949if ( true ) { 23950 !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() { 23951 return jQuery; 23952 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), 23953 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 23954} 23955 23956 23957 23958 23959var 23960 23961 // Map over jQuery in case of overwrite 23962 _jQuery = window.jQuery, 23963 23964 // Map over the $ in case of overwrite 23965 _$ = window.$; 23966 23967jQuery.noConflict = function( deep ) { 23968 if ( window.$ === jQuery ) { 23969 window.$ = _$; 23970 } 23971 23972 if ( deep && window.jQuery === jQuery ) { 23973 window.jQuery = _jQuery; 23974 } 23975 23976 return jQuery; 23977}; 23978 23979// Expose jQuery and $ identifiers, even in AMD 23980// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557) 23981// and CommonJS for browser emulators (trac-13566) 23982if ( typeof noGlobal === "undefined" ) { 23983 window.jQuery = window.$ = jQuery; 23984} 23985 23986 23987 23988 23989return jQuery; 23990} ); 23991 23992 23993/***/ }), 23994
vendor: 89,123 bytes, lines 23995-26624
23995/***/ "./node_modules/popper.js/dist/esm/popper.js": 23996/*!***************************************************!*\ 23997 !*** ./node_modules/popper.js/dist/esm/popper.js ***! 23998 \***************************************************/ 23999/*! exports provided: default */ 24000/***/ (function(module, __webpack_exports__, __webpack_require__) { 24001 24002"use strict"; 24003__webpack_require__.r(__webpack_exports__); 24004/* WEBPACK VAR INJECTION */(function(global) {/**! 24005 * @fileOverview Kickass library to create and place poppers near their reference elements. 24006 * @version 1.16.1 24007 * @license 24008 * Copyright (c) 2016 Federico Zivolo and contributors 24009 * 24010 * Permission is hereby granted, free of charge, to any person obtaining a copy 24011 * of this software and associated documentation files (the "Software"), to deal 24012 * in the Software without restriction, including without limitation the rights 24013 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 24014 * copies of the Software, and to permit persons to whom the Software is 24015 * furnished to do so, subject to the following conditions: 24016 * 24017 * The above copyright notice and this permission notice shall be included in all 24018 * copies or substantial portions of the Software. 24019 * 24020 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 24021 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24022 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 24023 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24024 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24025 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 24026 * SOFTWARE. 24027 */ 24028var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined'; 24029 24030var timeoutDuration = function () { 24031 var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; 24032 for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { 24033 if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { 24034 return 1; 24035 } 24036 } 24037 return 0; 24038}(); 24039 24040function microtaskDebounce(fn) { 24041 var called = false; 24042 return function () { 24043 if (called) { 24044 return; 24045 } 24046 called = true; 24047 window.Promise.resolve().then(function () { 24048 called = false; 24049 fn(); 24050 }); 24051 }; 24052} 24053 24054function taskDebounce(fn) { 24055 var scheduled = false; 24056 return function () { 24057 if (!scheduled) { 24058 scheduled = true; 24059 setTimeout(function () { 24060 scheduled = false; 24061 fn(); 24062 }, timeoutDuration); 24063 } 24064 }; 24065} 24066 24067var supportsMicroTasks = isBrowser && window.Promise; 24068 24069/** 24070* Create a debounced version of a method, that's asynchronously deferred 24071* but called in the minimum time possible. 24072* 24073* @method 24074* @memberof Popper.Utils 24075* @argument {Function} fn 24076* @returns {Function} 24077*/ 24078var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; 24079 24080/** 24081 * Check if the given variable is a function 24082 * @method 24083 * @memberof Popper.Utils 24084 * @argument {Any} functionToCheck - variable to check 24085 * @returns {Boolean} answer to: is a function? 24086 */ 24087function isFunction(functionToCheck) { 24088 var getType = {}; 24089 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; 24090} 24091 24092/** 24093 * Get CSS computed property of the given element 24094 * @method 24095 * @memberof Popper.Utils 24096 * @argument {Eement} element 24097 * @argument {String} property 24098 */ 24099function getStyleComputedProperty(element, property) { 24100 if (element.nodeType !== 1) { 24101 return []; 24102 } 24103 // NOTE: 1 DOM access here 24104 var window = element.ownerDocument.defaultView; 24105 var css = window.getComputedStyle(element, null); 24106 return property ? css[property] : css; 24107} 24108 24109/** 24110 * Returns the parentNode or the host of the element 24111 * @method 24112 * @memberof Popper.Utils 24113 * @argument {Element} element 24114 * @returns {Element} parent 24115 */ 24116function getParentNode(element) { 24117 if (element.nodeName === 'HTML') { 24118 return element; 24119 } 24120 return element.parentNode || element.host; 24121} 24122 24123/** 24124 * Returns the scrolling parent of the given element 24125 * @method 24126 * @memberof Popper.Utils 24127 * @argument {Element} element 24128 * @returns {Element} scroll parent 24129 */ 24130function getScrollParent(element) { 24131 // Return body, `getScroll` will take care to get the correct `scrollTop` from it 24132 if (!element) { 24133 return document.body; 24134 } 24135 24136 switch (element.nodeName) { 24137 case 'HTML': 24138 case 'BODY': 24139 return element.ownerDocument.body; 24140 case '#document': 24141 return element.body; 24142 } 24143 24144 // Firefox want us to check `-x` and `-y` variations as well 24145 24146 var _getStyleComputedProp = getStyleComputedProperty(element), 24147 overflow = _getStyleComputedProp.overflow, 24148 overflowX = _getStyleComputedProp.overflowX, 24149 overflowY = _getStyleComputedProp.overflowY; 24150 24151 if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { 24152 return element; 24153 } 24154 24155 return getScrollParent(getParentNode(element)); 24156} 24157 24158/** 24159 * Returns the reference node of the reference object, or the reference object itself. 24160 * @method 24161 * @memberof Popper.Utils 24162 * @param {Element|Object} reference - the reference element (the popper will be relative to this) 24163 * @returns {Element} parent 24164 */ 24165function getReferenceNode(reference) { 24166 return reference && reference.referenceNode ? reference.referenceNode : reference; 24167} 24168 24169var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode); 24170var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent); 24171 24172/** 24173 * Determines if the browser is Internet Explorer 24174 * @method 24175 * @memberof Popper.Utils 24176 * @param {Number} version to check 24177 * @returns {Boolean} isIE 24178 */ 24179function isIE(version) { 24180 if (version === 11) { 24181 return isIE11; 24182 } 24183 if (version === 10) { 24184 return isIE10; 24185 } 24186 return isIE11 || isIE10; 24187} 24188 24189/** 24190 * Returns the offset parent of the given element 24191 * @method 24192 * @memberof Popper.Utils 24193 * @argument {Element} element 24194 * @returns {Element} offset parent 24195 */ 24196function getOffsetParent(element) { 24197 if (!element) { 24198 return document.documentElement; 24199 } 24200 24201 var noOffsetParent = isIE(10) ? document.body : null; 24202 24203 // NOTE: 1 DOM access here 24204 var offsetParent = element.offsetParent || null; 24205 // Skip hidden elements which don't have an offsetParent 24206 while (offsetParent === noOffsetParent && element.nextElementSibling) { 24207 offsetParent = (element = element.nextElementSibling).offsetParent; 24208 } 24209 24210 var nodeName = offsetParent && offsetParent.nodeName; 24211 24212 if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { 24213 return element ? element.ownerDocument.documentElement : document.documentElement; 24214 } 24215 24216 // .offsetParent will return the closest TH, TD or TABLE in case 24217 // no offsetParent is present, I hate this job... 24218 if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { 24219 return getOffsetParent(offsetParent); 24220 } 24221 24222 return offsetParent; 24223} 24224 24225function isOffsetContainer(element) { 24226 var nodeName = element.nodeName; 24227 24228 if (nodeName === 'BODY') { 24229 return false; 24230 } 24231 return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; 24232} 24233 24234/** 24235 * Finds the root node (document, shadowDOM root) of the given element 24236 * @method 24237 * @memberof Popper.Utils 24238 * @argument {Element} node 24239 * @returns {Element} root node 24240 */ 24241function getRoot(node) { 24242 if (node.parentNode !== null) { 24243 return getRoot(node.parentNode); 24244 } 24245 24246 return node; 24247} 24248 24249/** 24250 * Finds the offset parent common to the two provided nodes 24251 * @method 24252 * @memberof Popper.Utils 24253 * @argument {Element} element1 24254 * @argument {Element} element2 24255 * @returns {Element} common offset parent 24256 */ 24257function findCommonOffsetParent(element1, element2) { 24258 // This check is needed to avoid errors in case one of the elements isn't defined for any reason 24259 if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { 24260 return document.documentElement; 24261 } 24262 24263 // Here we make sure to give as "start" the element that comes first in the DOM 24264 var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; 24265 var start = order ? element1 : element2; 24266 var end = order ? element2 : element1; 24267 24268 // Get common ancestor container 24269 var range = document.createRange(); 24270 range.setStart(start, 0); 24271 range.setEnd(end, 0); 24272 var commonAncestorContainer = range.commonAncestorContainer; 24273 24274 // Both nodes are inside #document 24275 24276 if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { 24277 if (isOffsetContainer(commonAncestorContainer)) { 24278 return commonAncestorContainer; 24279 } 24280 24281 return getOffsetParent(commonAncestorContainer); 24282 } 24283 24284 // one of the nodes is inside shadowDOM, find which one 24285 var element1root = getRoot(element1); 24286 if (element1root.host) { 24287 return findCommonOffsetParent(element1root.host, element2); 24288 } else { 24289 return findCommonOffsetParent(element1, getRoot(element2).host); 24290 } 24291} 24292 24293/** 24294 * Gets the scroll value of the given element in the given side (top and left) 24295 * @method 24296 * @memberof Popper.Utils 24297 * @argument {Element} element 24298 * @argument {String} side `top` or `left` 24299 * @returns {number} amount of scrolled pixels 24300 */ 24301function getScroll(element) { 24302 var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; 24303 24304 var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; 24305 var nodeName = element.nodeName; 24306 24307 if (nodeName === 'BODY' || nodeName === 'HTML') { 24308 var html = element.ownerDocument.documentElement; 24309 var scrollingElement = element.ownerDocument.scrollingElement || html; 24310 return scrollingElement[upperSide]; 24311 } 24312 24313 return element[upperSide]; 24314} 24315 24316/* 24317 * Sum or subtract the element scroll values (left and top) from a given rect object 24318 * @method 24319 * @memberof Popper.Utils 24320 * @param {Object} rect - Rect object you want to change 24321 * @param {HTMLElement} element - The element from the function reads the scroll values 24322 * @param {Boolean} subtract - set to true if you want to subtract the scroll values 24323 * @return {Object} rect - The modifier rect object 24324 */ 24325function includeScroll(rect, element) { 24326 var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 24327 24328 var scrollTop = getScroll(element, 'top'); 24329 var scrollLeft = getScroll(element, 'left'); 24330 var modifier = subtract ? -1 : 1; 24331 rect.top += scrollTop * modifier; 24332 rect.bottom += scrollTop * modifier; 24333 rect.left += scrollLeft * modifier; 24334 rect.right += scrollLeft * modifier; 24335 return rect; 24336} 24337 24338/* 24339 * Helper to detect borders of a given element 24340 * @method 24341 * @memberof Popper.Utils 24342 * @param {CSSStyleDeclaration} styles 24343 * Result of `getStyleComputedProperty` on the given element 24344 * @param {String} axis - `x` or `y` 24345 * @return {number} borders - The borders size of the given axis 24346 */ 24347 24348function getBordersSize(styles, axis) { 24349 var sideA = axis === 'x' ? 'Left' : 'Top'; 24350 var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; 24351 24352 return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']); 24353} 24354 24355function getSize(axis, body, html, computedStyle) { 24356 return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0); 24357} 24358 24359function getWindowSizes(document) { 24360 var body = document.body; 24361 var html = document.documentElement; 24362 var computedStyle = isIE(10) && getComputedStyle(html); 24363 24364 return { 24365 height: getSize('Height', body, html, computedStyle), 24366 width: getSize('Width', body, html, computedStyle) 24367 }; 24368} 24369 24370var classCallCheck = function (instance, Constructor) { 24371 if (!(instance instanceof Constructor)) { 24372 throw new TypeError("Cannot call a class as a function"); 24373 } 24374}; 24375 24376var createClass = function () { 24377 function defineProperties(target, props) { 24378 for (var i = 0; i < props.length; i++) { 24379 var descriptor = props[i]; 24380 descriptor.enumerable = descriptor.enumerable || false; 24381 descriptor.configurable = true; 24382 if ("value" in descriptor) descriptor.writable = true; 24383 Object.defineProperty(target, descriptor.key, descriptor); 24384 } 24385 } 24386 24387 return function (Constructor, protoProps, staticProps) { 24388 if (protoProps) defineProperties(Constructor.prototype, protoProps); 24389 if (staticProps) defineProperties(Constructor, staticProps); 24390 return Constructor; 24391 }; 24392}(); 24393 24394 24395 24396 24397 24398var defineProperty = function (obj, key, value) { 24399 if (key in obj) { 24400 Object.defineProperty(obj, key, { 24401 value: value, 24402 enumerable: true, 24403 configurable: true, 24404 writable: true 24405 }); 24406 } else { 24407 obj[key] = value; 24408 } 24409 24410 return obj; 24411}; 24412 24413var _extends = Object.assign || function (target) { 24414 for (var i = 1; i < arguments.length; i++) { 24415 var source = arguments[i]; 24416 24417 for (var key in source) { 24418 if (Object.prototype.hasOwnProperty.call(source, key)) { 24419 target[key] = source[key]; 24420 } 24421 } 24422 } 24423 24424 return target; 24425}; 24426 24427/** 24428 * Given element offsets, generate an output similar to getBoundingClientRect 24429 * @method 24430 * @memberof Popper.Utils 24431 * @argument {Object} offsets 24432 * @returns {Object} ClientRect like output 24433 */ 24434function getClientRect(offsets) { 24435 return _extends({}, offsets, { 24436 right: offsets.left + offsets.width, 24437 bottom: offsets.top + offsets.height 24438 }); 24439} 24440 24441/** 24442 * Get bounding client rect of given element 24443 * @method 24444 * @memberof Popper.Utils 24445 * @param {HTMLElement} element 24446 * @return {Object} client rect 24447 */ 24448function getBoundingClientRect(element) { 24449 var rect = {}; 24450 24451 // IE10 10 FIX: Please, don't ask, the element isn't 24452 // considered in DOM in some circumstances... 24453 // This isn't reproducible in IE10 compatibility mode of IE11 24454 try { 24455 if (isIE(10)) { 24456 rect = element.getBoundingClientRect(); 24457 var scrollTop = getScroll(element, 'top'); 24458 var scrollLeft = getScroll(element, 'left'); 24459 rect.top += scrollTop; 24460 rect.left += scrollLeft; 24461 rect.bottom += scrollTop; 24462 rect.right += scrollLeft; 24463 } else { 24464 rect = element.getBoundingClientRect(); 24465 } 24466 } catch (e) {} 24467 24468 var result = { 24469 left: rect.left, 24470 top: rect.top, 24471 width: rect.right - rect.left, 24472 height: rect.bottom - rect.top 24473 }; 24474 24475 // subtract scrollbar size from sizes 24476 var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {}; 24477 var width = sizes.width || element.clientWidth || result.width; 24478 var height = sizes.height || element.clientHeight || result.height; 24479 24480 var horizScrollbar = element.offsetWidth - width; 24481 var vertScrollbar = element.offsetHeight - height; 24482 24483 // if an hypothetical scrollbar is detected, we must be sure it's not a `border` 24484 // we make this check conditional for performance reasons 24485 if (horizScrollbar || vertScrollbar) { 24486 var styles = getStyleComputedProperty(element); 24487 horizScrollbar -= getBordersSize(styles, 'x'); 24488 vertScrollbar -= getBordersSize(styles, 'y'); 24489 24490 result.width -= horizScrollbar; 24491 result.height -= vertScrollbar; 24492 } 24493 24494 return getClientRect(result); 24495} 24496 24497function getOffsetRectRelativeToArbitraryNode(children, parent) { 24498 var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; 24499 24500 var isIE10 = isIE(10); 24501 var isHTML = parent.nodeName === 'HTML'; 24502 var childrenRect = getBoundingClientRect(children); 24503 var parentRect = getBoundingClientRect(parent); 24504 var scrollParent = getScrollParent(children); 24505 24506 var styles = getStyleComputedProperty(parent); 24507 var borderTopWidth = parseFloat(styles.borderTopWidth); 24508 var borderLeftWidth = parseFloat(styles.borderLeftWidth); 24509 24510 // In cases where the parent is fixed, we must ignore negative scroll in offset calc 24511 if (fixedPosition && isHTML) { 24512 parentRect.top = Math.max(parentRect.top, 0); 24513 parentRect.left = Math.max(parentRect.left, 0); 24514 } 24515 var offsets = getClientRect({ 24516 top: childrenRect.top - parentRect.top - borderTopWidth, 24517 left: childrenRect.left - parentRect.left - borderLeftWidth, 24518 width: childrenRect.width, 24519 height: childrenRect.height 24520 }); 24521 offsets.marginTop = 0; 24522 offsets.marginLeft = 0; 24523 24524 // Subtract margins of documentElement in case it's being used as parent 24525 // we do this only on HTML because it's the only element that behaves 24526 // differently when margins are applied to it. The margins are included in 24527 // the box of the documentElement, in the other cases not. 24528 if (!isIE10 && isHTML) { 24529 var marginTop = parseFloat(styles.marginTop); 24530 var marginLeft = parseFloat(styles.marginLeft); 24531 24532 offsets.top -= borderTopWidth - marginTop; 24533 offsets.bottom -= borderTopWidth - marginTop; 24534 offsets.left -= borderLeftWidth - marginLeft; 24535 offsets.right -= borderLeftWidth - marginLeft; 24536 24537 // Attach marginTop and marginLeft because in some circumstances we may need them 24538 offsets.marginTop = marginTop; 24539 offsets.marginLeft = marginLeft; 24540 } 24541 24542 if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { 24543 offsets = includeScroll(offsets, parent); 24544 } 24545 24546 return offsets; 24547} 24548 24549function getViewportOffsetRectRelativeToArtbitraryNode(element) { 24550 var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 24551 24552 var html = element.ownerDocument.documentElement; 24553 var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); 24554 var width = Math.max(html.clientWidth, window.innerWidth || 0); 24555 var height = Math.max(html.clientHeight, window.innerHeight || 0); 24556 24557 var scrollTop = !excludeScroll ? getScroll(html) : 0; 24558 var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; 24559 24560 var offset = { 24561 top: scrollTop - relativeOffset.top + relativeOffset.marginTop, 24562 left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, 24563 width: width, 24564 height: height 24565 }; 24566 24567 return getClientRect(offset); 24568} 24569 24570/** 24571 * Check if the given element is fixed or is inside a fixed parent 24572 * @method 24573 * @memberof Popper.Utils 24574 * @argument {Element} element 24575 * @argument {Element} customContainer 24576 * @returns {Boolean} answer to "isFixed?" 24577 */ 24578function isFixed(element) { 24579 var nodeName = element.nodeName; 24580 if (nodeName === 'BODY' || nodeName === 'HTML') { 24581 return false; 24582 } 24583 if (getStyleComputedProperty(element, 'position') === 'fixed') { 24584 return true; 24585 } 24586 var parentNode = getParentNode(element); 24587 if (!parentNode) { 24588 return false; 24589 } 24590 return isFixed(parentNode); 24591} 24592 24593/** 24594 * Finds the first parent of an element that has a transformed property defined 24595 * @method 24596 * @memberof Popper.Utils 24597 * @argument {Element} element 24598 * @returns {Element} first transformed parent or documentElement 24599 */ 24600 24601function getFixedPositionOffsetParent(element) { 24602 // This check is needed to avoid errors in case one of the elements isn't defined for any reason 24603 if (!element || !element.parentElement || isIE()) { 24604 return document.documentElement; 24605 } 24606 var el = element.parentElement; 24607 while (el && getStyleComputedProperty(el, 'transform') === 'none') { 24608 el = el.parentElement; 24609 } 24610 return el || document.documentElement; 24611} 24612 24613/** 24614 * Computed the boundaries limits and return them 24615 * @method 24616 * @memberof Popper.Utils 24617 * @param {HTMLElement} popper 24618 * @param {HTMLElement} reference 24619 * @param {number} padding 24620 * @param {HTMLElement} boundariesElement - Element used to define the boundaries 24621 * @param {Boolean} fixedPosition - Is in fixed position mode 24622 * @returns {Object} Coordinates of the boundaries 24623 */ 24624function getBoundaries(popper, reference, padding, boundariesElement) { 24625 var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; 24626 24627 // NOTE: 1 DOM access here 24628 24629 var boundaries = { top: 0, left: 0 }; 24630 var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); 24631 24632 // Handle viewport case 24633 if (boundariesElement === 'viewport') { 24634 boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); 24635 } else { 24636 // Handle other cases based on DOM element used as boundaries 24637 var boundariesNode = void 0; 24638 if (boundariesElement === 'scrollParent') { 24639 boundariesNode = getScrollParent(getParentNode(reference)); 24640 if (boundariesNode.nodeName === 'BODY') { 24641 boundariesNode = popper.ownerDocument.documentElement; 24642 } 24643 } else if (boundariesElement === 'window') { 24644 boundariesNode = popper.ownerDocument.documentElement; 24645 } else { 24646 boundariesNode = boundariesElement; 24647 } 24648 24649 var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); 24650 24651 // In case of HTML, we need a different computation 24652 if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { 24653 var _getWindowSizes = getWindowSizes(popper.ownerDocument), 24654 height = _getWindowSizes.height, 24655 width = _getWindowSizes.width; 24656 24657 boundaries.top += offsets.top - offsets.marginTop; 24658 boundaries.bottom = height + offsets.top; 24659 boundaries.left += offsets.left - offsets.marginLeft; 24660 boundaries.right = width + offsets.left; 24661 } else { 24662 // for all the other DOM elements, this one is good 24663 boundaries = offsets; 24664 } 24665 } 24666 24667 // Add paddings 24668 padding = padding || 0; 24669 var isPaddingNumber = typeof padding === 'number'; 24670 boundaries.left += isPaddingNumber ? padding : padding.left || 0; 24671 boundaries.top += isPaddingNumber ? padding : padding.top || 0; 24672 boundaries.right -= isPaddingNumber ? padding : padding.right || 0; 24673 boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; 24674 24675 return boundaries; 24676} 24677 24678function getArea(_ref) { 24679 var width = _ref.width, 24680 height = _ref.height; 24681 24682 return width * height; 24683} 24684 24685/** 24686 * Utility used to transform the `auto` placement to the placement with more 24687 * available space. 24688 * @method 24689 * @memberof Popper.Utils 24690 * @argument {Object} data - The data object generated by update method 24691 * @argument {Object} options - Modifiers configuration and options 24692 * @returns {Object} The data object, properly modified 24693 */ 24694function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { 24695 var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; 24696 24697 if (placement.indexOf('auto') === -1) { 24698 return placement; 24699 } 24700 24701 var boundaries = getBoundaries(popper, reference, padding, boundariesElement); 24702 24703 var rects = { 24704 top: { 24705 width: boundaries.width, 24706 height: refRect.top - boundaries.top 24707 }, 24708 right: { 24709 width: boundaries.right - refRect.right, 24710 height: boundaries.height 24711 }, 24712 bottom: { 24713 width: boundaries.width, 24714 height: boundaries.bottom - refRect.bottom 24715 }, 24716 left: { 24717 width: refRect.left - boundaries.left, 24718 height: boundaries.height 24719 } 24720 }; 24721 24722 var sortedAreas = Object.keys(rects).map(function (key) { 24723 return _extends({ 24724 key: key 24725 }, rects[key], { 24726 area: getArea(rects[key]) 24727 }); 24728 }).sort(function (a, b) { 24729 return b.area - a.area; 24730 }); 24731 24732 var filteredAreas = sortedAreas.filter(function (_ref2) { 24733 var width = _ref2.width, 24734 height = _ref2.height; 24735 return width >= popper.clientWidth && height >= popper.clientHeight; 24736 }); 24737 24738 var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; 24739 24740 var variation = placement.split('-')[1]; 24741 24742 return computedPlacement + (variation ? '-' + variation : ''); 24743} 24744 24745/** 24746 * Get offsets to the reference element 24747 * @method 24748 * @memberof Popper.Utils 24749 * @param {Object} state 24750 * @param {Element} popper - the popper element 24751 * @param {Element} reference - the reference element (the popper will be relative to this) 24752 * @param {Element} fixedPosition - is in fixed position mode 24753 * @returns {Object} An object containing the offsets which will be applied to the popper 24754 */ 24755function getReferenceOffsets(state, popper, reference) { 24756 var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; 24757 24758 var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); 24759 return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); 24760} 24761 24762/** 24763 * Get the outer sizes of the given element (offset size + margins) 24764 * @method 24765 * @memberof Popper.Utils 24766 * @argument {Element} element 24767 * @returns {Object} object containing width and height properties 24768 */ 24769function getOuterSizes(element) { 24770 var window = element.ownerDocument.defaultView; 24771 var styles = window.getComputedStyle(element); 24772 var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0); 24773 var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0); 24774 var result = { 24775 width: element.offsetWidth + y, 24776 height: element.offsetHeight + x 24777 }; 24778 return result; 24779} 24780 24781/** 24782 * Get the opposite placement of the given one 24783 * @method 24784 * @memberof Popper.Utils 24785 * @argument {String} placement 24786 * @returns {String} flipped placement 24787 */ 24788function getOppositePlacement(placement) { 24789 var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; 24790 return placement.replace(/left|right|bottom|top/g, function (matched) { 24791 return hash[matched]; 24792 }); 24793} 24794 24795/** 24796 * Get offsets to the popper 24797 * @method 24798 * @memberof Popper.Utils 24799 * @param {Object} position - CSS position the Popper will get applied 24800 * @param {HTMLElement} popper - the popper element 24801 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) 24802 * @param {String} placement - one of the valid placement options 24803 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper 24804 */ 24805function getPopperOffsets(popper, referenceOffsets, placement) { 24806 placement = placement.split('-')[0]; 24807 24808 // Get popper node sizes 24809 var popperRect = getOuterSizes(popper); 24810 24811 // Add position, width and height to our offsets object 24812 var popperOffsets = { 24813 width: popperRect.width, 24814 height: popperRect.height 24815 }; 24816 24817 // depending by the popper placement we have to compute its offsets slightly differently 24818 var isHoriz = ['right', 'left'].indexOf(placement) !== -1; 24819 var mainSide = isHoriz ? 'top' : 'left'; 24820 var secondarySide = isHoriz ? 'left' : 'top'; 24821 var measurement = isHoriz ? 'height' : 'width'; 24822 var secondaryMeasurement = !isHoriz ? 'height' : 'width'; 24823 24824 popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; 24825 if (placement === secondarySide) { 24826 popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; 24827 } else { 24828 popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; 24829 } 24830 24831 return popperOffsets; 24832} 24833 24834/** 24835 * Mimics the `find` method of Array 24836 * @method 24837 * @memberof Popper.Utils 24838 * @argument {Array} arr 24839 * @argument prop 24840 * @argument value 24841 * @returns index or -1 24842 */ 24843function find(arr, check) { 24844 // use native find if supported 24845 if (Array.prototype.find) { 24846 return arr.find(check); 24847 } 24848 24849 // use `filter` to obtain the same behavior of `find` 24850 return arr.filter(check)[0]; 24851} 24852 24853/** 24854 * Return the index of the matching object 24855 * @method 24856 * @memberof Popper.Utils 24857 * @argument {Array} arr 24858 * @argument prop 24859 * @argument value 24860 * @returns index or -1 24861 */ 24862function findIndex(arr, prop, value) { 24863 // use native findIndex if supported 24864 if (Array.prototype.findIndex) { 24865 return arr.findIndex(function (cur) { 24866 return cur[prop] === value; 24867 }); 24868 } 24869 24870 // use `find` + `indexOf` if `findIndex` isn't supported 24871 var match = find(arr, function (obj) { 24872 return obj[prop] === value; 24873 }); 24874 return arr.indexOf(match); 24875} 24876 24877/** 24878 * Loop trough the list of modifiers and run them in order, 24879 * each of them will then edit the data object. 24880 * @method 24881 * @memberof Popper.Utils 24882 * @param {dataObject} data 24883 * @param {Array} modifiers 24884 * @param {String} ends - Optional modifier name used as stopper 24885 * @returns {dataObject} 24886 */ 24887function runModifiers(modifiers, data, ends) { 24888 var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); 24889 24890 modifiersToRun.forEach(function (modifier) { 24891 if (modifier['function']) { 24892 // eslint-disable-line dot-notation 24893 console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); 24894 } 24895 var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation 24896 if (modifier.enabled && isFunction(fn)) { 24897 // Add properties to offsets to make them a complete clientRect object 24898 // we do this before each modifier to make sure the previous one doesn't 24899 // mess with these values 24900 data.offsets.popper = getClientRect(data.offsets.popper); 24901 data.offsets.reference = getClientRect(data.offsets.reference); 24902 24903 data = fn(data, modifier); 24904 } 24905 }); 24906 24907 return data; 24908} 24909 24910/** 24911 * Updates the position of the popper, computing the new offsets and applying 24912 * the new style.<br /> 24913 * Prefer `scheduleUpdate` over `update` because of performance reasons. 24914 * @method 24915 * @memberof Popper 24916 */ 24917function update() { 24918 // if popper is destroyed, don't perform any further update 24919 if (this.state.isDestroyed) { 24920 return; 24921 } 24922 24923 var data = { 24924 instance: this, 24925 styles: {}, 24926 arrowStyles: {}, 24927 attributes: {}, 24928 flipped: false, 24929 offsets: {} 24930 }; 24931 24932 // compute reference element offsets 24933 data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); 24934 24935 // compute auto placement, store placement inside the data object, 24936 // modifiers will be able to edit `placement` if needed 24937 // and refer to originalPlacement to know the original value 24938 data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); 24939 24940 // store the computed placement inside `originalPlacement` 24941 data.originalPlacement = data.placement; 24942 24943 data.positionFixed = this.options.positionFixed; 24944 24945 // compute the popper offsets 24946 data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); 24947 24948 data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; 24949 24950 // run the modifiers 24951 data = runModifiers(this.modifiers, data); 24952 24953 // the first `update` will call `onCreate` callback 24954 // the other ones will call `onUpdate` callback 24955 if (!this.state.isCreated) { 24956 this.state.isCreated = true; 24957 this.options.onCreate(data); 24958 } else { 24959 this.options.onUpdate(data); 24960 } 24961} 24962 24963/** 24964 * Helper used to know if the given modifier is enabled. 24965 * @method 24966 * @memberof Popper.Utils 24967 * @returns {Boolean} 24968 */ 24969function isModifierEnabled(modifiers, modifierName) { 24970 return modifiers.some(function (_ref) { 24971 var name = _ref.name, 24972 enabled = _ref.enabled; 24973 return enabled && name === modifierName; 24974 }); 24975} 24976 24977/** 24978 * Get the prefixed supported property name 24979 * @method 24980 * @memberof Popper.Utils 24981 * @argument {String} property (camelCase) 24982 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) 24983 */ 24984function getSupportedPropertyName(property) { 24985 var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; 24986 var upperProp = property.charAt(0).toUpperCase() + property.slice(1); 24987 24988 for (var i = 0; i < prefixes.length; i++) { 24989 var prefix = prefixes[i]; 24990 var toCheck = prefix ? '' + prefix + upperProp : property; 24991 if (typeof document.body.style[toCheck] !== 'undefined') { 24992 return toCheck; 24993 } 24994 } 24995 return null; 24996} 24997 24998/** 24999 * Destroys the popper. 25000 * @method 25001 * @memberof Popper 25002 */ 25003function destroy() { 25004 this.state.isDestroyed = true; 25005 25006 // touch DOM only if `applyStyle` modifier is enabled 25007 if (isModifierEnabled(this.modifiers, 'applyStyle')) { 25008 this.popper.removeAttribute('x-placement'); 25009 this.popper.style.position = ''; 25010 this.popper.style.top = ''; 25011 this.popper.style.left = ''; 25012 this.popper.style.right = ''; 25013 this.popper.style.bottom = ''; 25014 this.popper.style.willChange = ''; 25015 this.popper.style[getSupportedPropertyName('transform')] = ''; 25016 } 25017 25018 this.disableEventListeners(); 25019 25020 // remove the popper if user explicitly asked for the deletion on destroy 25021 // do not use `remove` because IE11 doesn't support it 25022 if (this.options.removeOnDestroy) { 25023 this.popper.parentNode.removeChild(this.popper); 25024 } 25025 return this; 25026} 25027 25028/** 25029 * Get the window associated with the element 25030 * @argument {Element} element 25031 * @returns {Window} 25032 */ 25033function getWindow(element) { 25034 var ownerDocument = element.ownerDocument; 25035 return ownerDocument ? ownerDocument.defaultView : window; 25036} 25037 25038function attachToScrollParents(scrollParent, event, callback, scrollParents) { 25039 var isBody = scrollParent.nodeName === 'BODY'; 25040 var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; 25041 target.addEventListener(event, callback, { passive: true }); 25042 25043 if (!isBody) { 25044 attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); 25045 } 25046 scrollParents.push(target); 25047} 25048 25049/** 25050 * Setup needed event listeners used to update the popper position 25051 * @method 25052 * @memberof Popper.Utils 25053 * @private 25054 */ 25055function setupEventListeners(reference, options, state, updateBound) { 25056 // Resize event listener on window 25057 state.updateBound = updateBound; 25058 getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); 25059 25060 // Scroll event listener on scroll parents 25061 var scrollElement = getScrollParent(reference); 25062 attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); 25063 state.scrollElement = scrollElement; 25064 state.eventsEnabled = true; 25065 25066 return state; 25067} 25068 25069/** 25070 * It will add resize/scroll events and start recalculating 25071 * position of the popper element when they are triggered. 25072 * @method 25073 * @memberof Popper 25074 */ 25075function enableEventListeners() { 25076 if (!this.state.eventsEnabled) { 25077 this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); 25078 } 25079} 25080 25081/** 25082 * Remove event listeners used to update the popper position 25083 * @method 25084 * @memberof Popper.Utils 25085 * @private 25086 */ 25087function removeEventListeners(reference, state) { 25088 // Remove resize event listener on window 25089 getWindow(reference).removeEventListener('resize', state.updateBound); 25090 25091 // Remove scroll event listener on scroll parents 25092 state.scrollParents.forEach(function (target) { 25093 target.removeEventListener('scroll', state.updateBound); 25094 }); 25095 25096 // Reset state 25097 state.updateBound = null; 25098 state.scrollParents = []; 25099 state.scrollElement = null; 25100 state.eventsEnabled = false; 25101 return state; 25102} 25103 25104/** 25105 * It will remove resize/scroll events and won't recalculate popper position 25106 * when they are triggered. It also won't trigger `onUpdate` callback anymore, 25107 * unless you call `update` method manually. 25108 * @method 25109 * @memberof Popper 25110 */ 25111function disableEventListeners() { 25112 if (this.state.eventsEnabled) { 25113 cancelAnimationFrame(this.scheduleUpdate); 25114 this.state = removeEventListeners(this.reference, this.state); 25115 } 25116} 25117 25118/** 25119 * Tells if a given input is a number 25120 * @method 25121 * @memberof Popper.Utils 25122 * @param {*} input to check 25123 * @return {Boolean} 25124 */ 25125function isNumeric(n) { 25126 return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); 25127} 25128 25129/** 25130 * Set the style to the given popper 25131 * @method 25132 * @memberof Popper.Utils 25133 * @argument {Element} element - Element to apply the style to 25134 * @argument {Object} styles 25135 * Object with a list of properties and values which will be applied to the element 25136 */ 25137function setStyles(element, styles) { 25138 Object.keys(styles).forEach(function (prop) { 25139 var unit = ''; 25140 // add unit if the value is numeric and is one of the following 25141 if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { 25142 unit = 'px'; 25143 } 25144 element.style[prop] = styles[prop] + unit; 25145 }); 25146} 25147 25148/** 25149 * Set the attributes to the given popper 25150 * @method 25151 * @memberof Popper.Utils 25152 * @argument {Element} element - Element to apply the attributes to 25153 * @argument {Object} styles 25154 * Object with a list of properties and values which will be applied to the element 25155 */ 25156function setAttributes(element, attributes) { 25157 Object.keys(attributes).forEach(function (prop) { 25158 var value = attributes[prop]; 25159 if (value !== false) { 25160 element.setAttribute(prop, attributes[prop]); 25161 } else { 25162 element.removeAttribute(prop); 25163 } 25164 }); 25165} 25166 25167/** 25168 * @function 25169 * @memberof Modifiers 25170 * @argument {Object} data - The data object generated by `update` method 25171 * @argument {Object} data.styles - List of style properties - values to apply to popper element 25172 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element 25173 * @argument {Object} options - Modifiers configuration and options 25174 * @returns {Object} The same data object 25175 */ 25176function applyStyle(data) { 25177 // any property present in `data.styles` will be applied to the popper, 25178 // in this way we can make the 3rd party modifiers add custom styles to it 25179 // Be aware, modifiers could override the properties defined in the previous 25180 // lines of this modifier! 25181 setStyles(data.instance.popper, data.styles); 25182 25183 // any property present in `data.attributes` will be applied to the popper, 25184 // they will be set as HTML attributes of the element 25185 setAttributes(data.instance.popper, data.attributes); 25186 25187 // if arrowElement is defined and arrowStyles has some properties 25188 if (data.arrowElement && Object.keys(data.arrowStyles).length) { 25189 setStyles(data.arrowElement, data.arrowStyles); 25190 } 25191 25192 return data; 25193} 25194 25195/** 25196 * Set the x-placement attribute before everything else because it could be used 25197 * to add margins to the popper margins needs to be calculated to get the 25198 * correct popper offsets. 25199 * @method 25200 * @memberof Popper.modifiers 25201 * @param {HTMLElement} reference - The reference element used to position the popper 25202 * @param {HTMLElement} popper - The HTML element used as popper 25203 * @param {Object} options - Popper.js options 25204 */ 25205function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { 25206 // compute reference element offsets 25207 var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); 25208 25209 // compute auto placement, store placement inside the data object, 25210 // modifiers will be able to edit `placement` if needed 25211 // and refer to originalPlacement to know the original value 25212 var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); 25213 25214 popper.setAttribute('x-placement', placement); 25215 25216 // Apply `position` to popper before anything else because 25217 // without the position applied we can't guarantee correct computations 25218 setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); 25219 25220 return options; 25221} 25222 25223/** 25224 * @function 25225 * @memberof Popper.Utils 25226 * @argument {Object} data - The data object generated by `update` method 25227 * @argument {Boolean} shouldRound - If the offsets should be rounded at all 25228 * @returns {Object} The popper's position offsets rounded 25229 * 25230 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as 25231 * good as it can be within reason. 25232 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715 25233 * 25234 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari 25235 * as well on High DPI screens). 25236 * 25237 * Firefox prefers no rounding for positioning and does not have blurriness on 25238 * high DPI screens. 25239 * 25240 * Only horizontal placement and left/right values need to be considered. 25241 */ 25242function getRoundedOffsets(data, shouldRound) { 25243 var _data$offsets = data.offsets, 25244 popper = _data$offsets.popper, 25245 reference = _data$offsets.reference; 25246 var round = Math.round, 25247 floor = Math.floor; 25248 25249 var noRound = function noRound(v) { 25250 return v; 25251 }; 25252 25253 var referenceWidth = round(reference.width); 25254 var popperWidth = round(popper.width); 25255 25256 var isVertical = ['left', 'right'].indexOf(data.placement) !== -1; 25257 var isVariation = data.placement.indexOf('-') !== -1; 25258 var sameWidthParity = referenceWidth % 2 === popperWidth % 2; 25259 var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1; 25260 25261 var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor; 25262 var verticalToInteger = !shouldRound ? noRound : round; 25263 25264 return { 25265 left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left), 25266 top: verticalToInteger(popper.top), 25267 bottom: verticalToInteger(popper.bottom), 25268 right: horizontalToInteger(popper.right) 25269 }; 25270} 25271 25272var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent); 25273 25274/** 25275 * @function 25276 * @memberof Modifiers 25277 * @argument {Object} data - The data object generated by `update` method 25278 * @argument {Object} options - Modifiers configuration and options 25279 * @returns {Object} The data object, properly modified 25280 */ 25281function computeStyle(data, options) { 25282 var x = options.x, 25283 y = options.y; 25284 var popper = data.offsets.popper; 25285 25286 // Remove this legacy support in Popper.js v2 25287 25288 var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { 25289 return modifier.name === 'applyStyle'; 25290 }).gpuAcceleration; 25291 if (legacyGpuAccelerationOption !== undefined) { 25292 console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); 25293 } 25294 var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; 25295 25296 var offsetParent = getOffsetParent(data.instance.popper); 25297 var offsetParentRect = getBoundingClientRect(offsetParent); 25298 25299 // Styles 25300 var styles = { 25301 position: popper.position 25302 }; 25303 25304 var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox); 25305 25306 var sideA = x === 'bottom' ? 'top' : 'bottom'; 25307 var sideB = y === 'right' ? 'left' : 'right'; 25308 25309 // if gpuAcceleration is set to `true` and transform is supported, 25310 // we use `translate3d` to apply the position to the popper we 25311 // automatically use the supported prefixed version if needed 25312 var prefixedProperty = getSupportedPropertyName('transform'); 25313 25314 // now, let's make a step back and look at this code closely (wtf?) 25315 // If the content of the popper grows once it's been positioned, it 25316 // may happen that the popper gets misplaced because of the new content 25317 // overflowing its reference element 25318 // To avoid this problem, we provide two options (x and y), which allow 25319 // the consumer to define the offset origin. 25320 // If we position a popper on top of a reference element, we can set 25321 // `x` to `top` to make the popper grow towards its top instead of 25322 // its bottom. 25323 var left = void 0, 25324 top = void 0; 25325 if (sideA === 'bottom') { 25326 // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar) 25327 // and not the bottom of the html element 25328 if (offsetParent.nodeName === 'HTML') { 25329 top = -offsetParent.clientHeight + offsets.bottom; 25330 } else { 25331 top = -offsetParentRect.height + offsets.bottom; 25332 } 25333 } else { 25334 top = offsets.top; 25335 } 25336 if (sideB === 'right') { 25337 if (offsetParent.nodeName === 'HTML') { 25338 left = -offsetParent.clientWidth + offsets.right; 25339 } else { 25340 left = -offsetParentRect.width + offsets.right; 25341 } 25342 } else { 25343 left = offsets.left; 25344 } 25345 if (gpuAcceleration && prefixedProperty) { 25346 styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; 25347 styles[sideA] = 0; 25348 styles[sideB] = 0; 25349 styles.willChange = 'transform'; 25350 } else { 25351 // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties 25352 var invertTop = sideA === 'bottom' ? -1 : 1; 25353 var invertLeft = sideB === 'right' ? -1 : 1; 25354 styles[sideA] = top * invertTop; 25355 styles[sideB] = left * invertLeft; 25356 styles.willChange = sideA + ', ' + sideB; 25357 } 25358 25359 // Attributes 25360 var attributes = { 25361 'x-placement': data.placement 25362 }; 25363 25364 // Update `data` attributes, styles and arrowStyles 25365 data.attributes = _extends({}, attributes, data.attributes); 25366 data.styles = _extends({}, styles, data.styles); 25367 data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles); 25368 25369 return data; 25370} 25371 25372/** 25373 * Helper used to know if the given modifier depends from another one.<br /> 25374 * It checks if the needed modifier is listed and enabled. 25375 * @method 25376 * @memberof Popper.Utils 25377 * @param {Array} modifiers - list of modifiers 25378 * @param {String} requestingName - name of requesting modifier 25379 * @param {String} requestedName - name of requested modifier 25380 * @returns {Boolean} 25381 */ 25382function isModifierRequired(modifiers, requestingName, requestedName) { 25383 var requesting = find(modifiers, function (_ref) { 25384 var name = _ref.name; 25385 return name === requestingName; 25386 }); 25387 25388 var isRequired = !!requesting && modifiers.some(function (modifier) { 25389 return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; 25390 }); 25391 25392 if (!isRequired) { 25393 var _requesting = '`' + requestingName + '`'; 25394 var requested = '`' + requestedName + '`'; 25395 console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); 25396 } 25397 return isRequired; 25398} 25399 25400/** 25401 * @function 25402 * @memberof Modifiers 25403 * @argument {Object} data - The data object generated by update method 25404 * @argument {Object} options - Modifiers configuration and options 25405 * @returns {Object} The data object, properly modified 25406 */ 25407function arrow(data, options) { 25408 var _data$offsets$arrow; 25409 25410 // arrow depends on keepTogether in order to work 25411 if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { 25412 return data; 25413 } 25414 25415 var arrowElement = options.element; 25416 25417 // if arrowElement is a string, suppose it's a CSS selector 25418 if (typeof arrowElement === 'string') { 25419 arrowElement = data.instance.popper.querySelector(arrowElement); 25420 25421 // if arrowElement is not found, don't run the modifier 25422 if (!arrowElement) { 25423 return data; 25424 } 25425 } else { 25426 // if the arrowElement isn't a query selector we must check that the 25427 // provided DOM node is child of its popper node 25428 if (!data.instance.popper.contains(arrowElement)) { 25429 console.warn('WARNING: `arrow.element` must be child of its popper element!'); 25430 return data; 25431 } 25432 } 25433 25434 var placement = data.placement.split('-')[0]; 25435 var _data$offsets = data.offsets, 25436 popper = _data$offsets.popper, 25437 reference = _data$offsets.reference; 25438 25439 var isVertical = ['left', 'right'].indexOf(placement) !== -1; 25440 25441 var len = isVertical ? 'height' : 'width'; 25442 var sideCapitalized = isVertical ? 'Top' : 'Left'; 25443 var side = sideCapitalized.toLowerCase(); 25444 var altSide = isVertical ? 'left' : 'top'; 25445 var opSide = isVertical ? 'bottom' : 'right'; 25446 var arrowElementSize = getOuterSizes(arrowElement)[len]; 25447 25448 // 25449 // extends keepTogether behavior making sure the popper and its 25450 // reference have enough pixels in conjunction 25451 // 25452 25453 // top/left side 25454 if (reference[opSide] - arrowElementSize < popper[side]) { 25455 data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); 25456 } 25457 // bottom/right side 25458 if (reference[side] + arrowElementSize > popper[opSide]) { 25459 data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; 25460 } 25461 data.offsets.popper = getClientRect(data.offsets.popper); 25462 25463 // compute center of the popper 25464 var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; 25465 25466 // Compute the sideValue using the updated popper offsets 25467 // take popper margin in account because we don't have this info available 25468 var css = getStyleComputedProperty(data.instance.popper); 25469 var popperMarginSide = parseFloat(css['margin' + sideCapitalized]); 25470 var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']); 25471 var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; 25472 25473 // prevent arrowElement from being placed not contiguously to its popper 25474 sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); 25475 25476 data.arrowElement = arrowElement; 25477 data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); 25478 25479 return data; 25480} 25481 25482/** 25483 * Get the opposite placement variation of the given one 25484 * @method 25485 * @memberof Popper.Utils 25486 * @argument {String} placement variation 25487 * @returns {String} flipped placement variation 25488 */ 25489function getOppositeVariation(variation) { 25490 if (variation === 'end') { 25491 return 'start'; 25492 } else if (variation === 'start') { 25493 return 'end'; 25494 } 25495 return variation; 25496} 25497 25498/** 25499 * List of accepted placements to use as values of the `placement` option.<br /> 25500 * Valid placements are: 25501 * - `auto` 25502 * - `top` 25503 * - `right` 25504 * - `bottom` 25505 * - `left` 25506 * 25507 * Each placement can have a variation from this list: 25508 * - `-start` 25509 * - `-end` 25510 * 25511 * Variations are interpreted easily if you think of them as the left to right 25512 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` 25513 * is right.<br /> 25514 * Vertically (`left` and `right`), `start` is top and `end` is bottom. 25515 * 25516 * Some valid examples are: 25517 * - `top-end` (on top of reference, right aligned) 25518 * - `right-start` (on right of reference, top aligned) 25519 * - `bottom` (on bottom, centered) 25520 * - `auto-end` (on the side with more space available, alignment depends by placement) 25521 * 25522 * @static 25523 * @type {Array} 25524 * @enum {String} 25525 * @readonly 25526 * @method placements 25527 * @memberof Popper 25528 */ 25529var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; 25530 25531// Get rid of `auto` `auto-start` and `auto-end` 25532var validPlacements = placements.slice(3); 25533 25534/** 25535 * Given an initial placement, returns all the subsequent placements 25536 * clockwise (or counter-clockwise). 25537 * 25538 * @method 25539 * @memberof Popper.Utils 25540 * @argument {String} placement - A valid placement (it accepts variations) 25541 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise 25542 * @returns {Array} placements including their variations 25543 */ 25544function clockwise(placement) { 25545 var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 25546 25547 var index = validPlacements.indexOf(placement); 25548 var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); 25549 return counter ? arr.reverse() : arr; 25550} 25551 25552var BEHAVIORS = { 25553 FLIP: 'flip', 25554 CLOCKWISE: 'clockwise', 25555 COUNTERCLOCKWISE: 'counterclockwise' 25556}; 25557 25558/** 25559 * @function 25560 * @memberof Modifiers 25561 * @argument {Object} data - The data object generated by update method 25562 * @argument {Object} options - Modifiers configuration and options 25563 * @returns {Object} The data object, properly modified 25564 */ 25565function flip(data, options) { 25566 // if `inner` modifier is enabled, we can't use the `flip` modifier 25567 if (isModifierEnabled(data.instance.modifiers, 'inner')) { 25568 return data; 25569 } 25570 25571 if (data.flipped && data.placement === data.originalPlacement) { 25572 // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides 25573 return data; 25574 } 25575 25576 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); 25577 25578 var placement = data.placement.split('-')[0]; 25579 var placementOpposite = getOppositePlacement(placement); 25580 var variation = data.placement.split('-')[1] || ''; 25581 25582 var flipOrder = []; 25583 25584 switch (options.behavior) { 25585 case BEHAVIORS.FLIP: 25586 flipOrder = [placement, placementOpposite]; 25587 break; 25588 case BEHAVIORS.CLOCKWISE: 25589 flipOrder = clockwise(placement); 25590 break; 25591 case BEHAVIORS.COUNTERCLOCKWISE: 25592 flipOrder = clockwise(placement, true); 25593 break; 25594 default: 25595 flipOrder = options.behavior; 25596 } 25597 25598 flipOrder.forEach(function (step, index) { 25599 if (placement !== step || flipOrder.length === index + 1) { 25600 return data; 25601 } 25602 25603 placement = data.placement.split('-')[0]; 25604 placementOpposite = getOppositePlacement(placement); 25605 25606 var popperOffsets = data.offsets.popper; 25607 var refOffsets = data.offsets.reference; 25608 25609 // using floor because the reference offsets may contain decimals we are not going to consider here 25610 var floor = Math.floor; 25611 var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); 25612 25613 var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); 25614 var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); 25615 var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); 25616 var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); 25617 25618 var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; 25619 25620 // flip the variation if required 25621 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; 25622 25623 // flips variation if reference element overflows boundaries 25624 var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); 25625 25626 // flips variation if popper content overflows boundaries 25627 var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop); 25628 25629 var flippedVariation = flippedVariationByRef || flippedVariationByContent; 25630 25631 if (overlapsRef || overflowsBoundaries || flippedVariation) { 25632 // this boolean to detect any flip loop 25633 data.flipped = true; 25634 25635 if (overlapsRef || overflowsBoundaries) { 25636 placement = flipOrder[index + 1]; 25637 } 25638 25639 if (flippedVariation) { 25640 variation = getOppositeVariation(variation); 25641 } 25642 25643 data.placement = placement + (variation ? '-' + variation : ''); 25644 25645 // this object contains `position`, we want to preserve it along with 25646 // any additional property we may add in the future 25647 data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); 25648 25649 data = runModifiers(data.instance.modifiers, data, 'flip'); 25650 } 25651 }); 25652 return data; 25653} 25654 25655/** 25656 * @function 25657 * @memberof Modifiers 25658 * @argument {Object} data - The data object generated by update method 25659 * @argument {Object} options - Modifiers configuration and options 25660 * @returns {Object} The data object, properly modified 25661 */ 25662function keepTogether(data) { 25663 var _data$offsets = data.offsets, 25664 popper = _data$offsets.popper, 25665 reference = _data$offsets.reference; 25666 25667 var placement = data.placement.split('-')[0]; 25668 var floor = Math.floor; 25669 var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; 25670 var side = isVertical ? 'right' : 'bottom'; 25671 var opSide = isVertical ? 'left' : 'top'; 25672 var measurement = isVertical ? 'width' : 'height'; 25673 25674 if (popper[side] < floor(reference[opSide])) { 25675 data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; 25676 } 25677 if (popper[opSide] > floor(reference[side])) { 25678 data.offsets.popper[opSide] = floor(reference[side]); 25679 } 25680 25681 return data; 25682} 25683 25684/** 25685 * Converts a string containing value + unit into a px value number 25686 * @function 25687 * @memberof {modifiers~offset} 25688 * @private 25689 * @argument {String} str - Value + unit string 25690 * @argument {String} measurement - `height` or `width` 25691 * @argument {Object} popperOffsets 25692 * @argument {Object} referenceOffsets 25693 * @returns {Number|String} 25694 * Value in pixels, or original string if no values were extracted 25695 */ 25696function toValue(str, measurement, popperOffsets, referenceOffsets) { 25697 // separate value from unit 25698 var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); 25699 var value = +split[1]; 25700 var unit = split[2]; 25701 25702 // If it's not a number it's an operator, I guess 25703 if (!value) { 25704 return str; 25705 } 25706 25707 if (unit.indexOf('%') === 0) { 25708 var element = void 0; 25709 switch (unit) { 25710 case '%p': 25711 element = popperOffsets; 25712 break; 25713 case '%': 25714 case '%r': 25715 default: 25716 element = referenceOffsets; 25717 } 25718 25719 var rect = getClientRect(element); 25720 return rect[measurement] / 100 * value; 25721 } else if (unit === 'vh' || unit === 'vw') { 25722 // if is a vh or vw, we calculate the size based on the viewport 25723 var size = void 0; 25724 if (unit === 'vh') { 25725 size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 25726 } else { 25727 size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 25728 } 25729 return size / 100 * value; 25730 } else { 25731 // if is an explicit pixel unit, we get rid of the unit and keep the value 25732 // if is an implicit unit, it's px, and we return just the value 25733 return value; 25734 } 25735} 25736 25737/** 25738 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. 25739 * @function 25740 * @memberof {modifiers~offset} 25741 * @private 25742 * @argument {String} offset 25743 * @argument {Object} popperOffsets 25744 * @argument {Object} referenceOffsets 25745 * @argument {String} basePlacement 25746 * @returns {Array} a two cells array with x and y offsets in numbers 25747 */ 25748function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { 25749 var offsets = [0, 0]; 25750 25751 // Use height if placement is left or right and index is 0 otherwise use width 25752 // in this way the first offset will use an axis and the second one 25753 // will use the other one 25754 var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; 25755 25756 // Split the offset string to obtain a list of values and operands 25757 // The regex addresses values with the plus or minus sign in front (+10, -20, etc) 25758 var fragments = offset.split(/(\+|\-)/).map(function (frag) { 25759 return frag.trim(); 25760 }); 25761 25762 // Detect if the offset string contains a pair of values or a single one 25763 // they could be separated by comma or space 25764 var divider = fragments.indexOf(find(fragments, function (frag) { 25765 return frag.search(/,|\s/) !== -1; 25766 })); 25767 25768 if (fragments[divider] && fragments[divider].indexOf(',') === -1) { 25769 console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); 25770 } 25771 25772 // If divider is found, we divide the list of values and operands to divide 25773 // them by ofset X and Y. 25774 var splitRegex = /\s*,\s*|\s+/; 25775 var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; 25776 25777 // Convert the values with units to absolute pixels to allow our computations 25778 ops = ops.map(function (op, index) { 25779 // Most of the units rely on the orientation of the popper 25780 var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; 25781 var mergeWithPrevious = false; 25782 return op 25783 // This aggregates any `+` or `-` sign that aren't considered operators 25784 // e.g.: 10 + +5 => [10, +, +5] 25785 .reduce(function (a, b) { 25786 if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { 25787 a[a.length - 1] = b; 25788 mergeWithPrevious = true; 25789 return a; 25790 } else if (mergeWithPrevious) { 25791 a[a.length - 1] += b; 25792 mergeWithPrevious = false; 25793 return a; 25794 } else { 25795 return a.concat(b); 25796 } 25797 }, []) 25798 // Here we convert the string values into number values (in px) 25799 .map(function (str) { 25800 return toValue(str, measurement, popperOffsets, referenceOffsets); 25801 }); 25802 }); 25803 25804 // Loop trough the offsets arrays and execute the operations 25805 ops.forEach(function (op, index) { 25806 op.forEach(function (frag, index2) { 25807 if (isNumeric(frag)) { 25808 offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); 25809 } 25810 }); 25811 }); 25812 return offsets; 25813} 25814 25815/** 25816 * @function 25817 * @memberof Modifiers 25818 * @argument {Object} data - The data object generated by update method 25819 * @argument {Object} options - Modifiers configuration and options 25820 * @argument {Number|String} options.offset=0 25821 * The offset value as described in the modifier description 25822 * @returns {Object} The data object, properly modified 25823 */ 25824function offset(data, _ref) { 25825 var offset = _ref.offset; 25826 var placement = data.placement, 25827 _data$offsets = data.offsets, 25828 popper = _data$offsets.popper, 25829 reference = _data$offsets.reference; 25830 25831 var basePlacement = placement.split('-')[0]; 25832 25833 var offsets = void 0; 25834 if (isNumeric(+offset)) { 25835 offsets = [+offset, 0]; 25836 } else { 25837 offsets = parseOffset(offset, popper, reference, basePlacement); 25838 } 25839 25840 if (basePlacement === 'left') { 25841 popper.top += offsets[0]; 25842 popper.left -= offsets[1]; 25843 } else if (basePlacement === 'right') { 25844 popper.top += offsets[0]; 25845 popper.left += offsets[1]; 25846 } else if (basePlacement === 'top') { 25847 popper.left += offsets[0]; 25848 popper.top -= offsets[1]; 25849 } else if (basePlacement === 'bottom') { 25850 popper.left += offsets[0]; 25851 popper.top += offsets[1]; 25852 } 25853 25854 data.popper = popper; 25855 return data; 25856} 25857 25858/** 25859 * @function 25860 * @memberof Modifiers 25861 * @argument {Object} data - The data object generated by `update` method 25862 * @argument {Object} options - Modifiers configuration and options 25863 * @returns {Object} The data object, properly modified 25864 */ 25865function preventOverflow(data, options) { 25866 var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); 25867 25868 // If offsetParent is the reference element, we really want to 25869 // go one step up and use the next offsetParent as reference to 25870 // avoid to make this modifier completely useless and look like broken 25871 if (data.instance.reference === boundariesElement) { 25872 boundariesElement = getOffsetParent(boundariesElement); 25873 } 25874 25875 // NOTE: DOM access here 25876 // resets the popper's position so that the document size can be calculated excluding 25877 // the size of the popper element itself 25878 var transformProp = getSupportedPropertyName('transform'); 25879 var popperStyles = data.instance.popper.style; // assignment to help minification 25880 var top = popperStyles.top, 25881 left = popperStyles.left, 25882 transform = popperStyles[transformProp]; 25883 25884 popperStyles.top = ''; 25885 popperStyles.left = ''; 25886 popperStyles[transformProp] = ''; 25887 25888 var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); 25889 25890 // NOTE: DOM access here 25891 // restores the original style properties after the offsets have been computed 25892 popperStyles.top = top; 25893 popperStyles.left = left; 25894 popperStyles[transformProp] = transform; 25895 25896 options.boundaries = boundaries; 25897 25898 var order = options.priority; 25899 var popper = data.offsets.popper; 25900 25901 var check = { 25902 primary: function primary(placement) { 25903 var value = popper[placement]; 25904 if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { 25905 value = Math.max(popper[placement], boundaries[placement]); 25906 } 25907 return defineProperty({}, placement, value); 25908 }, 25909 secondary: function secondary(placement) { 25910 var mainSide = placement === 'right' ? 'left' : 'top'; 25911 var value = popper[mainSide]; 25912 if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { 25913 value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); 25914 } 25915 return defineProperty({}, mainSide, value); 25916 } 25917 }; 25918 25919 order.forEach(function (placement) { 25920 var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; 25921 popper = _extends({}, popper, check[side](placement)); 25922 }); 25923 25924 data.offsets.popper = popper; 25925 25926 return data; 25927} 25928 25929/** 25930 * @function 25931 * @memberof Modifiers 25932 * @argument {Object} data - The data object generated by `update` method 25933 * @argument {Object} options - Modifiers configuration and options 25934 * @returns {Object} The data object, properly modified 25935 */ 25936function shift(data) { 25937 var placement = data.placement; 25938 var basePlacement = placement.split('-')[0]; 25939 var shiftvariation = placement.split('-')[1]; 25940 25941 // if shift shiftvariation is specified, run the modifier 25942 if (shiftvariation) { 25943 var _data$offsets = data.offsets, 25944 reference = _data$offsets.reference, 25945 popper = _data$offsets.popper; 25946 25947 var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; 25948 var side = isVertical ? 'left' : 'top'; 25949 var measurement = isVertical ? 'width' : 'height'; 25950 25951 var shiftOffsets = { 25952 start: defineProperty({}, side, reference[side]), 25953 end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement]) 25954 }; 25955 25956 data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]); 25957 } 25958 25959 return data; 25960} 25961 25962/** 25963 * @function 25964 * @memberof Modifiers 25965 * @argument {Object} data - The data object generated by update method 25966 * @argument {Object} options - Modifiers configuration and options 25967 * @returns {Object} The data object, properly modified 25968 */ 25969function hide(data) { 25970 if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { 25971 return data; 25972 } 25973 25974 var refRect = data.offsets.reference; 25975 var bound = find(data.instance.modifiers, function (modifier) { 25976 return modifier.name === 'preventOverflow'; 25977 }).boundaries; 25978 25979 if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { 25980 // Avoid unnecessary DOM access if visibility hasn't changed 25981 if (data.hide === true) { 25982 return data; 25983 } 25984 25985 data.hide = true; 25986 data.attributes['x-out-of-boundaries'] = ''; 25987 } else { 25988 // Avoid unnecessary DOM access if visibility hasn't changed 25989 if (data.hide === false) { 25990 return data; 25991 } 25992 25993 data.hide = false; 25994 data.attributes['x-out-of-boundaries'] = false; 25995 } 25996 25997 return data; 25998} 25999 26000/** 26001 * @function 26002 * @memberof Modifiers 26003 * @argument {Object} data - The data object generated by `update` method 26004 * @argument {Object} options - Modifiers configuration and options 26005 * @returns {Object} The data object, properly modified 26006 */ 26007function inner(data) { 26008 var placement = data.placement; 26009 var basePlacement = placement.split('-')[0]; 26010 var _data$offsets = data.offsets, 26011 popper = _data$offsets.popper, 26012 reference = _data$offsets.reference; 26013 26014 var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; 26015 26016 var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; 26017 26018 popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); 26019 26020 data.placement = getOppositePlacement(placement); 26021 data.offsets.popper = getClientRect(popper); 26022 26023 return data; 26024} 26025 26026/** 26027 * Modifier function, each modifier can have a function of this type assigned 26028 * to its `fn` property.<br /> 26029 * These functions will be called on each update, this means that you must 26030 * make sure they are performant enough to avoid performance bottlenecks. 26031 * 26032 * @function ModifierFn 26033 * @argument {dataObject} data - The data object generated by `update` method 26034 * @argument {Object} options - Modifiers configuration and options 26035 * @returns {dataObject} The data object, properly modified 26036 */ 26037 26038/** 26039 * Modifiers are plugins used to alter the behavior of your poppers.<br /> 26040 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities 26041 * needed by the library. 26042 * 26043 * Usually you don't want to override the `order`, `fn` and `onLoad` props. 26044 * All the other properties are configurations that could be tweaked. 26045 * @namespace modifiers 26046 */ 26047var modifiers = { 26048 /** 26049 * Modifier used to shift the popper on the start or end of its reference 26050 * element.<br /> 26051 * It will read the variation of the `placement` property.<br /> 26052 * It can be one either `-end` or `-start`. 26053 * @memberof modifiers 26054 * @inner 26055 */ 26056 shift: { 26057 /** @prop {number} order=100 - Index used to define the order of execution */ 26058 order: 100, 26059 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26060 enabled: true, 26061 /** @prop {ModifierFn} */ 26062 fn: shift 26063 }, 26064 26065 /** 26066 * The `offset` modifier can shift your popper on both its axis. 26067 * 26068 * It accepts the following units: 26069 * - `px` or unit-less, interpreted as pixels 26070 * - `%` or `%r`, percentage relative to the length of the reference element 26071 * - `%p`, percentage relative to the length of the popper element 26072 * - `vw`, CSS viewport width unit 26073 * - `vh`, CSS viewport height unit 26074 * 26075 * For length is intended the main axis relative to the placement of the popper.<br /> 26076 * This means that if the placement is `top` or `bottom`, the length will be the 26077 * `width`. In case of `left` or `right`, it will be the `height`. 26078 * 26079 * You can provide a single value (as `Number` or `String`), or a pair of values 26080 * as `String` divided by a comma or one (or more) white spaces.<br /> 26081 * The latter is a deprecated method because it leads to confusion and will be 26082 * removed in v2.<br /> 26083 * Additionally, it accepts additions and subtractions between different units. 26084 * Note that multiplications and divisions aren't supported. 26085 * 26086 * Valid examples are: 26087 * ``` 26088 * 10 26089 * '10%' 26090 * '10, 10' 26091 * '10%, 10' 26092 * '10 + 10%' 26093 * '10 - 5vh + 3%' 26094 * '-10px + 5vh, 5px - 6%' 26095 * ``` 26096 * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap 26097 * > with their reference element, unfortunately, you will have to disable the `flip` modifier. 26098 * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373). 26099 * 26100 * @memberof modifiers 26101 * @inner 26102 */ 26103 offset: { 26104 /** @prop {number} order=200 - Index used to define the order of execution */ 26105 order: 200, 26106 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26107 enabled: true, 26108 /** @prop {ModifierFn} */ 26109 fn: offset, 26110 /** @prop {Number|String} offset=0 26111 * The offset value as described in the modifier description 26112 */ 26113 offset: 0 26114 }, 26115 26116 /** 26117 * Modifier used to prevent the popper from being positioned outside the boundary. 26118 * 26119 * A scenario exists where the reference itself is not within the boundaries.<br /> 26120 * We can say it has "escaped the boundaries" — or just "escaped".<br /> 26121 * In this case we need to decide whether the popper should either: 26122 * 26123 * - detach from the reference and remain "trapped" in the boundaries, or 26124 * - if it should ignore the boundary and "escape with its reference" 26125 * 26126 * When `escapeWithReference` is set to`true` and reference is completely 26127 * outside its boundaries, the popper will overflow (or completely leave) 26128 * the boundaries in order to remain attached to the edge of the reference. 26129 * 26130 * @memberof modifiers 26131 * @inner 26132 */ 26133 preventOverflow: { 26134 /** @prop {number} order=300 - Index used to define the order of execution */ 26135 order: 300, 26136 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26137 enabled: true, 26138 /** @prop {ModifierFn} */ 26139 fn: preventOverflow, 26140 /** 26141 * @prop {Array} [priority=['left','right','top','bottom']] 26142 * Popper will try to prevent overflow following these priorities by default, 26143 * then, it could overflow on the left and on top of the `boundariesElement` 26144 */ 26145 priority: ['left', 'right', 'top', 'bottom'], 26146 /** 26147 * @prop {number} padding=5 26148 * Amount of pixel used to define a minimum distance between the boundaries 26149 * and the popper. This makes sure the popper always has a little padding 26150 * between the edges of its container 26151 */ 26152 padding: 5, 26153 /** 26154 * @prop {String|HTMLElement} boundariesElement='scrollParent' 26155 * Boundaries used by the modifier. Can be `scrollParent`, `window`, 26156 * `viewport` or any DOM element. 26157 */ 26158 boundariesElement: 'scrollParent' 26159 }, 26160 26161 /** 26162 * Modifier used to make sure the reference and its popper stay near each other 26163 * without leaving any gap between the two. Especially useful when the arrow is 26164 * enabled and you want to ensure that it points to its reference element. 26165 * It cares only about the first axis. You can still have poppers with margin 26166 * between the popper and its reference element. 26167 * @memberof modifiers 26168 * @inner 26169 */ 26170 keepTogether: { 26171 /** @prop {number} order=400 - Index used to define the order of execution */ 26172 order: 400, 26173 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26174 enabled: true, 26175 /** @prop {ModifierFn} */ 26176 fn: keepTogether 26177 }, 26178 26179 /** 26180 * This modifier is used to move the `arrowElement` of the popper to make 26181 * sure it is positioned between the reference element and its popper element. 26182 * It will read the outer size of the `arrowElement` node to detect how many 26183 * pixels of conjunction are needed. 26184 * 26185 * It has no effect if no `arrowElement` is provided. 26186 * @memberof modifiers 26187 * @inner 26188 */ 26189 arrow: { 26190 /** @prop {number} order=500 - Index used to define the order of execution */ 26191 order: 500, 26192 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26193 enabled: true, 26194 /** @prop {ModifierFn} */ 26195 fn: arrow, 26196 /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ 26197 element: '[x-arrow]' 26198 }, 26199 26200 /** 26201 * Modifier used to flip the popper's placement when it starts to overlap its 26202 * reference element. 26203 * 26204 * Requires the `preventOverflow` modifier before it in order to work. 26205 * 26206 * **NOTE:** this modifier will interrupt the current update cycle and will 26207 * restart it if it detects the need to flip the placement. 26208 * @memberof modifiers 26209 * @inner 26210 */ 26211 flip: { 26212 /** @prop {number} order=600 - Index used to define the order of execution */ 26213 order: 600, 26214 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26215 enabled: true, 26216 /** @prop {ModifierFn} */ 26217 fn: flip, 26218 /** 26219 * @prop {String|Array} behavior='flip' 26220 * The behavior used to change the popper's placement. It can be one of 26221 * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid 26222 * placements (with optional variations) 26223 */ 26224 behavior: 'flip', 26225 /** 26226 * @prop {number} padding=5 26227 * The popper will flip if it hits the edges of the `boundariesElement` 26228 */ 26229 padding: 5, 26230 /** 26231 * @prop {String|HTMLElement} boundariesElement='viewport' 26232 * The element which will define the boundaries of the popper position. 26233 * The popper will never be placed outside of the defined boundaries 26234 * (except if `keepTogether` is enabled) 26235 */ 26236 boundariesElement: 'viewport', 26237 /** 26238 * @prop {Boolean} flipVariations=false 26239 * The popper will switch placement variation between `-start` and `-end` when 26240 * the reference element overlaps its boundaries. 26241 * 26242 * The original placement should have a set variation. 26243 */ 26244 flipVariations: false, 26245 /** 26246 * @prop {Boolean} flipVariationsByContent=false 26247 * The popper will switch placement variation between `-start` and `-end` when 26248 * the popper element overlaps its reference boundaries. 26249 * 26250 * The original placement should have a set variation. 26251 */ 26252 flipVariationsByContent: false 26253 }, 26254 26255 /** 26256 * Modifier used to make the popper flow toward the inner of the reference element. 26257 * By default, when this modifier is disabled, the popper will be placed outside 26258 * the reference element. 26259 * @memberof modifiers 26260 * @inner 26261 */ 26262 inner: { 26263 /** @prop {number} order=700 - Index used to define the order of execution */ 26264 order: 700, 26265 /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ 26266 enabled: false, 26267 /** @prop {ModifierFn} */ 26268 fn: inner 26269 }, 26270 26271 /** 26272 * Modifier used to hide the popper when its reference element is outside of the 26273 * popper boundaries. It will set a `x-out-of-boundaries` attribute which can 26274 * be used to hide with a CSS selector the popper when its reference is 26275 * out of boundaries. 26276 * 26277 * Requires the `preventOverflow` modifier before it in order to work. 26278 * @memberof modifiers 26279 * @inner 26280 */ 26281 hide: { 26282 /** @prop {number} order=800 - Index used to define the order of execution */ 26283 order: 800, 26284 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26285 enabled: true, 26286 /** @prop {ModifierFn} */ 26287 fn: hide 26288 }, 26289 26290 /** 26291 * Computes the style that will be applied to the popper element to gets 26292 * properly positioned. 26293 * 26294 * Note that this modifier will not touch the DOM, it just prepares the styles 26295 * so that `applyStyle` modifier can apply it. This separation is useful 26296 * in case you need to replace `applyStyle` with a custom implementation. 26297 * 26298 * This modifier has `850` as `order` value to maintain backward compatibility 26299 * with previous versions of Popper.js. Expect the modifiers ordering method 26300 * to change in future major versions of the library. 26301 * 26302 * @memberof modifiers 26303 * @inner 26304 */ 26305 computeStyle: { 26306 /** @prop {number} order=850 - Index used to define the order of execution */ 26307 order: 850, 26308 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26309 enabled: true, 26310 /** @prop {ModifierFn} */ 26311 fn: computeStyle, 26312 /** 26313 * @prop {Boolean} gpuAcceleration=true 26314 * If true, it uses the CSS 3D transformation to position the popper. 26315 * Otherwise, it will use the `top` and `left` properties 26316 */ 26317 gpuAcceleration: true, 26318 /** 26319 * @prop {string} [x='bottom'] 26320 * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. 26321 * Change this if your popper should grow in a direction different from `bottom` 26322 */ 26323 x: 'bottom', 26324 /** 26325 * @prop {string} [x='left'] 26326 * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. 26327 * Change this if your popper should grow in a direction different from `right` 26328 */ 26329 y: 'right' 26330 }, 26331 26332 /** 26333 * Applies the computed styles to the popper element. 26334 * 26335 * All the DOM manipulations are limited to this modifier. This is useful in case 26336 * you want to integrate Popper.js inside a framework or view library and you 26337 * want to delegate all the DOM manipulations to it. 26338 * 26339 * Note that if you disable this modifier, you must make sure the popper element 26340 * has its position set to `absolute` before Popper.js can do its work! 26341 * 26342 * Just disable this modifier and define your own to achieve the desired effect. 26343 * 26344 * @memberof modifiers 26345 * @inner 26346 */ 26347 applyStyle: { 26348 /** @prop {number} order=900 - Index used to define the order of execution */ 26349 order: 900, 26350 /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ 26351 enabled: true, 26352 /** @prop {ModifierFn} */ 26353 fn: applyStyle, 26354 /** @prop {Function} */ 26355 onLoad: applyStyleOnLoad, 26356 /** 26357 * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier 26358 * @prop {Boolean} gpuAcceleration=true 26359 * If true, it uses the CSS 3D transformation to position the popper. 26360 * Otherwise, it will use the `top` and `left` properties 26361 */ 26362 gpuAcceleration: undefined 26363 } 26364}; 26365 26366/** 26367 * The `dataObject` is an object containing all the information used by Popper.js. 26368 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks. 26369 * @name dataObject 26370 * @property {Object} data.instance The Popper.js instance 26371 * @property {String} data.placement Placement applied to popper 26372 * @property {String} data.originalPlacement Placement originally defined on init 26373 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier 26374 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper 26375 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier 26376 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`) 26377 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`) 26378 * @property {Object} data.boundaries Offsets of the popper boundaries 26379 * @property {Object} data.offsets The measurements of popper, reference and arrow elements 26380 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values 26381 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values 26382 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 26383 */ 26384 26385/** 26386 * Default options provided to Popper.js constructor.<br /> 26387 * These can be overridden using the `options` argument of Popper.js.<br /> 26388 * To override an option, simply pass an object with the same 26389 * structure of the `options` object, as the 3rd argument. For example: 26390 * ``` 26391 * new Popper(ref, pop, { 26392 * modifiers: { 26393 * preventOverflow: { enabled: false } 26394 * } 26395 * }) 26396 * ``` 26397 * @type {Object} 26398 * @static 26399 * @memberof Popper 26400 */ 26401var Defaults = { 26402 /** 26403 * Popper's placement. 26404 * @prop {Popper.placements} placement='bottom' 26405 */ 26406 placement: 'bottom', 26407 26408 /** 26409 * Set this to true if you want popper to position it self in 'fixed' mode 26410 * @prop {Boolean} positionFixed=false 26411 */ 26412 positionFixed: false, 26413 26414 /** 26415 * Whether events (resize, scroll) are initially enabled. 26416 * @prop {Boolean} eventsEnabled=true 26417 */ 26418 eventsEnabled: true, 26419 26420 /** 26421 * Set to true if you want to automatically remove the popper when 26422 * you call the `destroy` method. 26423 * @prop {Boolean} removeOnDestroy=false 26424 */ 26425 removeOnDestroy: false, 26426 26427 /** 26428 * Callback called when the popper is created.<br /> 26429 * By default, it is set to no-op.<br /> 26430 * Access Popper.js instance with `data.instance`. 26431 * @prop {onCreate} 26432 */ 26433 onCreate: function onCreate() {}, 26434 26435 /** 26436 * Callback called when the popper is updated. This callback is not called 26437 * on the initialization/creation of the popper, but only on subsequent 26438 * updates.<br /> 26439 * By default, it is set to no-op.<br /> 26440 * Access Popper.js instance with `data.instance`. 26441 * @prop {onUpdate} 26442 */ 26443 onUpdate: function onUpdate() {}, 26444 26445 /** 26446 * List of modifiers used to modify the offsets before they are applied to the popper. 26447 * They provide most of the functionalities of Popper.js. 26448 * @prop {modifiers} 26449 */ 26450 modifiers: modifiers 26451}; 26452 26453/** 26454 * @callback onCreate 26455 * @param {dataObject} data 26456 */ 26457 26458/** 26459 * @callback onUpdate 26460 * @param {dataObject} data 26461 */ 26462 26463// Utils 26464// Methods 26465var Popper = function () { 26466 /** 26467 * Creates a new Popper.js instance. 26468 * @class Popper 26469 * @param {Element|referenceObject} reference - The reference element used to position the popper 26470 * @param {Element} popper - The HTML / XML element used as the popper 26471 * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) 26472 * @return {Object} instance - The generated Popper.js instance 26473 */ 26474 function Popper(reference, popper) { 26475 var _this = this; 26476 26477 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 26478 classCallCheck(this, Popper); 26479 26480 this.scheduleUpdate = function () { 26481 return requestAnimationFrame(_this.update); 26482 }; 26483 26484 // make update() debounced, so that it only runs at most once-per-tick 26485 this.update = debounce(this.update.bind(this)); 26486 26487 // with {} we create a new object with the options inside it 26488 this.options = _extends({}, Popper.Defaults, options); 26489 26490 // init state 26491 this.state = { 26492 isDestroyed: false, 26493 isCreated: false, 26494 scrollParents: [] 26495 }; 26496 26497 // get reference and popper elements (allow jQuery wrappers) 26498 this.reference = reference && reference.jquery ? reference[0] : reference; 26499 this.popper = popper && popper.jquery ? popper[0] : popper; 26500 26501 // Deep merge modifiers options 26502 this.options.modifiers = {}; 26503 Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { 26504 _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); 26505 }); 26506 26507 // Refactoring modifiers' list (Object => Array) 26508 this.modifiers = Object.keys(this.options.modifiers).map(function (name) { 26509 return _extends({ 26510 name: name 26511 }, _this.options.modifiers[name]); 26512 }) 26513 // sort the modifiers by order 26514 .sort(function (a, b) { 26515 return a.order - b.order; 26516 }); 26517 26518 // modifiers have the ability to execute arbitrary code when Popper.js get inited 26519 // such code is executed in the same order of its modifier 26520 // they could add new properties to their options configuration 26521 // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! 26522 this.modifiers.forEach(function (modifierOptions) { 26523 if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { 26524 modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); 26525 } 26526 }); 26527 26528 // fire the first update to position the popper in the right place 26529 this.update(); 26530 26531 var eventsEnabled = this.options.eventsEnabled; 26532 if (eventsEnabled) { 26533 // setup event listeners, they will take care of update the position in specific situations 26534 this.enableEventListeners(); 26535 } 26536 26537 this.state.eventsEnabled = eventsEnabled; 26538 } 26539 26540 // We can't use class properties because they don't get listed in the 26541 // class prototype and break stuff like Sinon stubs 26542 26543 26544 createClass(Popper, [{ 26545 key: 'update', 26546 value: function update$$1() { 26547 return update.call(this); 26548 } 26549 }, { 26550 key: 'destroy', 26551 value: function destroy$$1() { 26552 return destroy.call(this); 26553 } 26554 }, { 26555 key: 'enableEventListeners', 26556 value: function enableEventListeners$$1() { 26557 return enableEventListeners.call(this); 26558 } 26559 }, { 26560 key: 'disableEventListeners', 26561 value: function disableEventListeners$$1() { 26562 return disableEventListeners.call(this); 26563 } 26564 26565 /** 26566 * Schedules an update. It will run on the next UI update available. 26567 * @method scheduleUpdate 26568 * @memberof Popper 26569 */ 26570 26571 26572 /** 26573 * Collection of utilities useful when writing custom modifiers. 26574 * Starting from version 1.7, this method is available only if you 26575 * include `popper-utils.js` before `popper.js`. 26576 * 26577 * **DEPRECATION**: This way to access PopperUtils is deprecated 26578 * and will be removed in v2! Use the PopperUtils module directly instead. 26579 * Due to the high instability of the methods contained in Utils, we can't 26580 * guarantee them to follow semver. Use them at your own risk! 26581 * @static 26582 * @private 26583 * @type {Object} 26584 * @deprecated since version 1.8 26585 * @member Utils 26586 * @memberof Popper 26587 */ 26588 26589 }]); 26590 return Popper; 26591}(); 26592 26593/** 26594 * The `referenceObject` is an object that provides an interface compatible with Popper.js 26595 * and lets you use it as replacement of a real DOM node.<br /> 26596 * You can use this method to position a popper relatively to a set of coordinates 26597 * in case you don't have a DOM node to use as reference. 26598 * 26599 * ``` 26600 * new Popper(referenceObject, popperNode); 26601 * ``` 26602 * 26603 * NB: This feature isn't supported in Internet Explorer 10. 26604 * @name referenceObject 26605 * @property {Function} data.getBoundingClientRect 26606 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. 26607 * @property {number} data.clientWidth 26608 * An ES6 getter that will return the width of the virtual reference element. 26609 * @property {number} data.clientHeight 26610 * An ES6 getter that will return the height of the virtual reference element. 26611 */ 26612 26613 26614Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; 26615Popper.placements = placements; 26616Popper.Defaults = Defaults; 26617 26618/* harmony default export */ __webpack_exports__["default"] = (Popper); 26619//# sourceMappingURL=popper.js.map 26620 26621/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 26622 26623/***/ }), 26624
vendor: 4,174 bytes, lines 26625-26790
26625/***/ "./node_modules/ssr-window/ssr-window.esm.js": 26626/*!***************************************************!*\ 26627 !*** ./node_modules/ssr-window/ssr-window.esm.js ***! 26628 \***************************************************/ 26629/*! exports provided: extend, getDocument, getWindow, ssrDocument, ssrWindow */ 26630/***/ (function(module, __webpack_exports__, __webpack_require__) { 26631 26632"use strict"; 26633__webpack_require__.r(__webpack_exports__); 26634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; }); 26635/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDocument", function() { return getDocument; }); 26636/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getWindow", function() { return getWindow; }); 26637/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ssrDocument", function() { return ssrDocument; }); 26638/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ssrWindow", function() { return ssrWindow; }); 26639/** 26640 * SSR Window 4.0.2 26641 * Better handling for window object in SSR environment 26642 * https://github.com/nolimits4web/ssr-window 26643 * 26644 * Copyright 2021, Vladimir Kharlampidi 26645 * 26646 * Licensed under MIT 26647 * 26648 * Released on: December 13, 2021 26649 */ 26650/* eslint-disable no-param-reassign */ 26651function isObject(obj) { 26652 return (obj !== null && 26653 typeof obj === 'object' && 26654 'constructor' in obj && 26655 obj.constructor === Object); 26656} 26657function extend(target = {}, src = {}) { 26658 Object.keys(src).forEach((key) => { 26659 if (typeof target[key] === 'undefined') 26660 target[key] = src[key]; 26661 else if (isObject(src[key]) && 26662 isObject(target[key]) && 26663 Object.keys(src[key]).length > 0) { 26664 extend(target[key], src[key]); 26665 } 26666 }); 26667} 26668 26669const ssrDocument = { 26670 body: {}, 26671 addEventListener() { }, 26672 removeEventListener() { }, 26673 activeElement: { 26674 blur() { }, 26675 nodeName: '', 26676 }, 26677 querySelector() { 26678 return null; 26679 }, 26680 querySelectorAll() { 26681 return []; 26682 }, 26683 getElementById() { 26684 return null; 26685 }, 26686 createEvent() { 26687 return { 26688 initEvent() { }, 26689 }; 26690 }, 26691 createElement() { 26692 return { 26693 children: [], 26694 childNodes: [], 26695 style: {}, 26696 setAttribute() { }, 26697 getElementsByTagName() { 26698 return []; 26699 }, 26700 }; 26701 }, 26702 createElementNS() { 26703 return {}; 26704 }, 26705 importNode() { 26706 return null; 26707 }, 26708 location: { 26709 hash: '', 26710 host: '', 26711 hostname: '', 26712 href: '', 26713 origin: '', 26714 pathname: '', 26715 protocol: '', 26716 search: '', 26717 }, 26718}; 26719function getDocument() { 26720 const doc = typeof document !== 'undefined' ? document : {}; 26721 extend(doc, ssrDocument); 26722 return doc; 26723} 26724 26725const ssrWindow = { 26726 document: ssrDocument, 26727 navigator: { 26728 userAgent: '', 26729 }, 26730 location: { 26731 hash: '', 26732 host: '', 26733 hostname: '', 26734 href: '', 26735 origin: '', 26736 pathname: '', 26737 protocol: '', 26738 search: '', 26739 }, 26740 history: { 26741 replaceState() { }, 26742 pushState() { }, 26743 go() { }, 26744 back() { }, 26745 }, 26746 CustomEvent: function CustomEvent() { 26747 return this; 26748 }, 26749 addEventListener() { }, 26750 removeEventListener() { }, 26751 getComputedStyle() { 26752 return { 26753 getPropertyValue() { 26754 return ''; 26755 }, 26756 }; 26757 }, 26758 Image() { }, 26759 Date() { }, 26760 screen: {}, 26761 setTimeout() { }, 26762 clearTimeout() { }, 26763 matchMedia() { 26764 return {}; 26765 }, 26766 requestAnimationFrame(callback) { 26767 if (typeof setTimeout === 'undefined') { 26768 callback(); 26769 return null; 26770 } 26771 return setTimeout(callback, 0); 26772 }, 26773 cancelAnimationFrame(id) { 26774 if (typeof setTimeout === 'undefined') { 26775 return; 26776 } 26777 clearTimeout(id); 26778 }, 26779}; 26780function getWindow() { 26781 const win = typeof window !== 'undefined' ? window : {}; 26782 extend(win, ssrWindow); 26783 return win; 26784} 26785 26786 26787 26788 26789/***/ }), 26790
vendor: 1,831 bytes, lines 26791-26844
26791/***/ "./node_modules/swiper/core/breakpoints/getBreakpoint.js": 26792/*!***************************************************************!*\ 26793 !*** ./node_modules/swiper/core/breakpoints/getBreakpoint.js ***! 26794 \***************************************************************/ 26795/*! exports provided: default */ 26796/***/ (function(module, __webpack_exports__, __webpack_require__) { 26797 26798"use strict"; 26799__webpack_require__.r(__webpack_exports__); 26800/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getBreakpoint; }); 26801/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 26802 26803function getBreakpoint(breakpoints, base = 'window', containerEl) { 26804 if (!breakpoints || base === 'container' && !containerEl) return undefined; 26805 let breakpoint = false; 26806 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 26807 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 26808 const points = Object.keys(breakpoints).map(point => { 26809 if (typeof point === 'string' && point.indexOf('@') === 0) { 26810 const minRatio = parseFloat(point.substr(1)); 26811 const value = currentHeight * minRatio; 26812 return { 26813 value, 26814 point 26815 }; 26816 } 26817 26818 return { 26819 value: point, 26820 point 26821 }; 26822 }); 26823 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 26824 26825 for (let i = 0; i < points.length; i += 1) { 26826 const { 26827 point, 26828 value 26829 } = points[i]; 26830 26831 if (base === 'window') { 26832 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 26833 breakpoint = point; 26834 } 26835 } else if (value <= containerEl.clientWidth) { 26836 breakpoint = point; 26837 } 26838 } 26839 26840 return breakpoint || 'max'; 26841} 26842 26843/***/ }), 26844
vendor: 993 bytes, lines 26845-26864
26845/***/ "./node_modules/swiper/core/breakpoints/index.js": 26846/*!*******************************************************!*\ 26847 !*** ./node_modules/swiper/core/breakpoints/index.js ***! 26848 \*******************************************************/ 26849/*! exports provided: default */ 26850/***/ (function(module, __webpack_exports__, __webpack_require__) { 26851 26852"use strict"; 26853__webpack_require__.r(__webpack_exports__); 26854/* harmony import */ var _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setBreakpoint.js */ "./node_modules/swiper/core/breakpoints/setBreakpoint.js"); 26855/* harmony import */ var _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBreakpoint.js */ "./node_modules/swiper/core/breakpoints/getBreakpoint.js"); 26856 26857 26858/* harmony default export */ __webpack_exports__["default"] = ({ 26859 setBreakpoint: _setBreakpoint_js__WEBPACK_IMPORTED_MODULE_0__["default"], 26860 getBreakpoint: _getBreakpoint_js__WEBPACK_IMPORTED_MODULE_1__["default"] 26861}); 26862 26863/***/ }), 26864
vendor: 3,730 bytes, lines 26865-26963
26865/***/ "./node_modules/swiper/core/breakpoints/setBreakpoint.js": 26866/*!***************************************************************!*\ 26867 !*** ./node_modules/swiper/core/breakpoints/setBreakpoint.js ***! 26868 \***************************************************************/ 26869/*! exports provided: default */ 26870/***/ (function(module, __webpack_exports__, __webpack_require__) { 26871 26872"use strict"; 26873__webpack_require__.r(__webpack_exports__); 26874/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setBreakpoint; }); 26875/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 26876 26877 26878const isGridEnabled = (swiper, params) => { 26879 return swiper.grid && params.grid && params.grid.rows > 1; 26880}; 26881 26882function setBreakpoint() { 26883 const swiper = this; 26884 const { 26885 activeIndex, 26886 initialized, 26887 loopedSlides = 0, 26888 params, 26889 $el 26890 } = swiper; 26891 const breakpoints = params.breakpoints; 26892 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters 26893 26894 const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); 26895 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 26896 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 26897 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 26898 const wasMultiRow = isGridEnabled(swiper, params); 26899 const isMultiRow = isGridEnabled(swiper, breakpointParams); 26900 const wasEnabled = params.enabled; 26901 26902 if (wasMultiRow && !isMultiRow) { 26903 $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`); 26904 swiper.emitContainerClasses(); 26905 } else if (!wasMultiRow && isMultiRow) { 26906 $el.addClass(`${params.containerModifierClass}grid`); 26907 26908 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 26909 $el.addClass(`${params.containerModifierClass}grid-column`); 26910 } 26911 26912 swiper.emitContainerClasses(); 26913 } // Toggle navigation, pagination, scrollbar 26914 26915 26916 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 26917 const wasModuleEnabled = params[prop] && params[prop].enabled; 26918 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 26919 26920 if (wasModuleEnabled && !isModuleEnabled) { 26921 swiper[prop].disable(); 26922 } 26923 26924 if (!wasModuleEnabled && isModuleEnabled) { 26925 swiper[prop].enable(); 26926 } 26927 }); 26928 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 26929 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 26930 26931 if (directionChanged && initialized) { 26932 swiper.changeDirection(); 26933 } 26934 26935 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(swiper.params, breakpointParams); 26936 const isEnabled = swiper.params.enabled; 26937 Object.assign(swiper, { 26938 allowTouchMove: swiper.params.allowTouchMove, 26939 allowSlideNext: swiper.params.allowSlideNext, 26940 allowSlidePrev: swiper.params.allowSlidePrev 26941 }); 26942 26943 if (wasEnabled && !isEnabled) { 26944 swiper.disable(); 26945 } else if (!wasEnabled && isEnabled) { 26946 swiper.enable(); 26947 } 26948 26949 swiper.currentBreakpoint = breakpoint; 26950 swiper.emit('_beforeBreakpoint', breakpointParams); 26951 26952 if (needsReLoop && initialized) { 26953 swiper.loopDestroy(); 26954 swiper.loopCreate(); 26955 swiper.updateSlides(); 26956 swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false); 26957 } 26958 26959 swiper.emit('breakpoint', breakpointParams); 26960} 26961 26962/***/ }), 26963
vendor: 1,368 bytes, lines 26964-27013
26964/***/ "./node_modules/swiper/core/check-overflow/index.js": 26965/*!**********************************************************!*\ 26966 !*** ./node_modules/swiper/core/check-overflow/index.js ***! 26967 \**********************************************************/ 26968/*! exports provided: default */ 26969/***/ (function(module, __webpack_exports__, __webpack_require__) { 26970 26971"use strict"; 26972__webpack_require__.r(__webpack_exports__); 26973function checkOverflow() { 26974 const swiper = this; 26975 const { 26976 isLocked: wasLocked, 26977 params 26978 } = swiper; 26979 const { 26980 slidesOffsetBefore 26981 } = params; 26982 26983 if (slidesOffsetBefore) { 26984 const lastSlideIndex = swiper.slides.length - 1; 26985 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 26986 swiper.isLocked = swiper.size > lastSlideRightEdge; 26987 } else { 26988 swiper.isLocked = swiper.snapGrid.length === 1; 26989 } 26990 26991 if (params.allowSlideNext === true) { 26992 swiper.allowSlideNext = !swiper.isLocked; 26993 } 26994 26995 if (params.allowSlidePrev === true) { 26996 swiper.allowSlidePrev = !swiper.isLocked; 26997 } 26998 26999 if (wasLocked && wasLocked !== swiper.isLocked) { 27000 swiper.isEnd = false; 27001 } 27002 27003 if (wasLocked !== swiper.isLocked) { 27004 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 27005 } 27006} 27007 27008/* harmony default export */ __webpack_exports__["default"] = ({ 27009 checkOverflow 27010}); 27011 27012/***/ }), 27013
vendor: 1,873 bytes, lines 27014-27080
27014/***/ "./node_modules/swiper/core/classes/addClasses.js": 27015/*!********************************************************!*\ 27016 !*** ./node_modules/swiper/core/classes/addClasses.js ***! 27017 \********************************************************/ 27018/*! exports provided: default */ 27019/***/ (function(module, __webpack_exports__, __webpack_require__) { 27020 27021"use strict"; 27022__webpack_require__.r(__webpack_exports__); 27023/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addClasses; }); 27024function prepareClasses(entries, prefix) { 27025 const resultClasses = []; 27026 entries.forEach(item => { 27027 if (typeof item === 'object') { 27028 Object.keys(item).forEach(classNames => { 27029 if (item[classNames]) { 27030 resultClasses.push(prefix + classNames); 27031 } 27032 }); 27033 } else if (typeof item === 'string') { 27034 resultClasses.push(prefix + item); 27035 } 27036 }); 27037 return resultClasses; 27038} 27039 27040function addClasses() { 27041 const swiper = this; 27042 const { 27043 classNames, 27044 params, 27045 rtl, 27046 $el, 27047 device, 27048 support 27049 } = swiper; // prettier-ignore 27050 27051 const suffixes = prepareClasses(['initialized', params.direction, { 27052 'pointer-events': !support.touch 27053 }, { 27054 'free-mode': swiper.params.freeMode && params.freeMode.enabled 27055 }, { 27056 'autoheight': params.autoHeight 27057 }, { 27058 'rtl': rtl 27059 }, { 27060 'grid': params.grid && params.grid.rows > 1 27061 }, { 27062 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 27063 }, { 27064 'android': device.android 27065 }, { 27066 'ios': device.ios 27067 }, { 27068 'css-mode': params.cssMode 27069 }, { 27070 'centered': params.cssMode && params.centeredSlides 27071 }, { 27072 'watch-progress': params.watchSlidesProgress 27073 }], params.containerModifierClass); 27074 classNames.push(...suffixes); 27075 $el.addClass([...classNames].join(' ')); 27076 swiper.emitContainerClasses(); 27077} 27078 27079/***/ }), 27080
vendor: 954 bytes, lines 27081-27100
27081/***/ "./node_modules/swiper/core/classes/index.js": 27082/*!***************************************************!*\ 27083 !*** ./node_modules/swiper/core/classes/index.js ***! 27084 \***************************************************/ 27085/*! exports provided: default */ 27086/***/ (function(module, __webpack_exports__, __webpack_require__) { 27087 27088"use strict"; 27089__webpack_require__.r(__webpack_exports__); 27090/* harmony import */ var _addClasses_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./addClasses.js */ "./node_modules/swiper/core/classes/addClasses.js"); 27091/* harmony import */ var _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeClasses.js */ "./node_modules/swiper/core/classes/removeClasses.js"); 27092 27093 27094/* harmony default export */ __webpack_exports__["default"] = ({ 27095 addClasses: _addClasses_js__WEBPACK_IMPORTED_MODULE_0__["default"], 27096 removeClasses: _removeClasses_js__WEBPACK_IMPORTED_MODULE_1__["default"] 27097}); 27098 27099/***/ }), 27100
vendor: 725 bytes, lines 27101-27122
27101/***/ "./node_modules/swiper/core/classes/removeClasses.js": 27102/*!***********************************************************!*\ 27103 !*** ./node_modules/swiper/core/classes/removeClasses.js ***! 27104 \***********************************************************/ 27105/*! exports provided: default */ 27106/***/ (function(module, __webpack_exports__, __webpack_require__) { 27107 27108"use strict"; 27109__webpack_require__.r(__webpack_exports__); 27110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return removeClasses; }); 27111function removeClasses() { 27112 const swiper = this; 27113 const { 27114 $el, 27115 classNames 27116 } = swiper; 27117 $el.removeClass(classNames.join(' ')); 27118 swiper.emitContainerClasses(); 27119} 27120 27121/***/ }), 27122
vendor: 22,617 bytes, lines 27123-27790
27123/***/ "./node_modules/swiper/core/core.js": 27124/*!******************************************!*\ 27125 !*** ./node_modules/swiper/core/core.js ***! 27126 \******************************************/ 27127/*! exports provided: default */ 27128/***/ (function(module, __webpack_exports__, __webpack_require__) { 27129 27130"use strict"; 27131__webpack_require__.r(__webpack_exports__); 27132/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 27133/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 27134/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 27135/* harmony import */ var _shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/get-support.js */ "./node_modules/swiper/shared/get-support.js"); 27136/* harmony import */ var _shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/get-device.js */ "./node_modules/swiper/shared/get-device.js"); 27137/* harmony import */ var _shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../shared/get-browser.js */ "./node_modules/swiper/shared/get-browser.js"); 27138/* harmony import */ var _modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/resize/resize.js */ "./node_modules/swiper/core/modules/resize/resize.js"); 27139/* harmony import */ var _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/observer/observer.js */ "./node_modules/swiper/core/modules/observer/observer.js"); 27140/* harmony import */ var _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./events-emitter.js */ "./node_modules/swiper/core/events-emitter.js"); 27141/* harmony import */ var _update_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./update/index.js */ "./node_modules/swiper/core/update/index.js"); 27142/* harmony import */ var _translate_index_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./translate/index.js */ "./node_modules/swiper/core/translate/index.js"); 27143/* harmony import */ var _transition_index_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./transition/index.js */ "./node_modules/swiper/core/transition/index.js"); 27144/* harmony import */ var _slide_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./slide/index.js */ "./node_modules/swiper/core/slide/index.js"); 27145/* harmony import */ var _loop_index_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./loop/index.js */ "./node_modules/swiper/core/loop/index.js"); 27146/* harmony import */ var _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./grab-cursor/index.js */ "./node_modules/swiper/core/grab-cursor/index.js"); 27147/* harmony import */ var _events_index_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./events/index.js */ "./node_modules/swiper/core/events/index.js"); 27148/* harmony import */ var _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./breakpoints/index.js */ "./node_modules/swiper/core/breakpoints/index.js"); 27149/* harmony import */ var _classes_index_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./classes/index.js */ "./node_modules/swiper/core/classes/index.js"); 27150/* harmony import */ var _images_index_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./images/index.js */ "./node_modules/swiper/core/images/index.js"); 27151/* harmony import */ var _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./check-overflow/index.js */ "./node_modules/swiper/core/check-overflow/index.js"); 27152/* harmony import */ var _defaults_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./defaults.js */ "./node_modules/swiper/core/defaults.js"); 27153/* harmony import */ var _moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./moduleExtendParams.js */ "./node_modules/swiper/core/moduleExtendParams.js"); 27154/* eslint no-param-reassign: "off" */ 27155 27156 27157 27158 27159 27160 27161 27162 27163 27164 27165 27166 27167 27168 27169 27170 27171 27172 27173 27174 27175 27176 27177const prototypes = { 27178 eventsEmitter: _events_emitter_js__WEBPACK_IMPORTED_MODULE_8__["default"], 27179 update: _update_index_js__WEBPACK_IMPORTED_MODULE_9__["default"], 27180 translate: _translate_index_js__WEBPACK_IMPORTED_MODULE_10__["default"], 27181 transition: _transition_index_js__WEBPACK_IMPORTED_MODULE_11__["default"], 27182 slide: _slide_index_js__WEBPACK_IMPORTED_MODULE_12__["default"], 27183 loop: _loop_index_js__WEBPACK_IMPORTED_MODULE_13__["default"], 27184 grabCursor: _grab_cursor_index_js__WEBPACK_IMPORTED_MODULE_14__["default"], 27185 events: _events_index_js__WEBPACK_IMPORTED_MODULE_15__["default"], 27186 breakpoints: _breakpoints_index_js__WEBPACK_IMPORTED_MODULE_16__["default"], 27187 checkOverflow: _check_overflow_index_js__WEBPACK_IMPORTED_MODULE_19__["default"], 27188 classes: _classes_index_js__WEBPACK_IMPORTED_MODULE_17__["default"], 27189 images: _images_index_js__WEBPACK_IMPORTED_MODULE_18__["default"] 27190}; 27191const extendedDefaults = {}; 27192 27193class Swiper { 27194 constructor(...args) { 27195 let el; 27196 let params; 27197 27198 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 27199 params = args[0]; 27200 } else { 27201 [el, params] = args; 27202 } 27203 27204 if (!params) params = {}; 27205 params = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, params); 27206 if (el && !params.el) params.el = el; 27207 27208 if (params.el && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).length > 1) { 27209 const swipers = []; 27210 Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el).each(containerEl => { 27211 const newParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, params, { 27212 el: containerEl 27213 }); 27214 swipers.push(new Swiper(newParams)); 27215 }); // eslint-disable-next-line no-constructor-return 27216 27217 return swipers; 27218 } // Swiper Instance 27219 27220 27221 const swiper = this; 27222 swiper.__swiper__ = true; 27223 swiper.support = Object(_shared_get_support_js__WEBPACK_IMPORTED_MODULE_3__["getSupport"])(); 27224 swiper.device = Object(_shared_get_device_js__WEBPACK_IMPORTED_MODULE_4__["getDevice"])({ 27225 userAgent: params.userAgent 27226 }); 27227 swiper.browser = Object(_shared_get_browser_js__WEBPACK_IMPORTED_MODULE_5__["getBrowser"])(); 27228 swiper.eventsListeners = {}; 27229 swiper.eventsAnyListeners = []; 27230 swiper.modules = [...swiper.__modules__]; 27231 27232 if (params.modules && Array.isArray(params.modules)) { 27233 swiper.modules.push(...params.modules); 27234 } 27235 27236 const allModulesParams = {}; 27237 swiper.modules.forEach(mod => { 27238 mod({ 27239 swiper, 27240 extendParams: Object(_moduleExtendParams_js__WEBPACK_IMPORTED_MODULE_21__["default"])(params, allModulesParams), 27241 on: swiper.on.bind(swiper), 27242 once: swiper.once.bind(swiper), 27243 off: swiper.off.bind(swiper), 27244 emit: swiper.emit.bind(swiper) 27245 }); 27246 }); // Extend defaults with modules params 27247 27248 const swiperParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"], allModulesParams); // Extend defaults with passed params 27249 27250 swiper.params = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, swiperParams, extendedDefaults, params); 27251 swiper.originalParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, swiper.params); 27252 swiper.passedParams = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({}, params); // add event listeners 27253 27254 if (swiper.params && swiper.params.on) { 27255 Object.keys(swiper.params.on).forEach(eventName => { 27256 swiper.on(eventName, swiper.params.on[eventName]); 27257 }); 27258 } 27259 27260 if (swiper.params && swiper.params.onAny) { 27261 swiper.onAny(swiper.params.onAny); 27262 } // Save Dom lib 27263 27264 27265 swiper.$ = _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"]; // Extend Swiper 27266 27267 Object.assign(swiper, { 27268 enabled: swiper.params.enabled, 27269 el, 27270 // Classes 27271 classNames: [], 27272 // Slides 27273 slides: Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(), 27274 slidesGrid: [], 27275 snapGrid: [], 27276 slidesSizesGrid: [], 27277 27278 // isDirection 27279 isHorizontal() { 27280 return swiper.params.direction === 'horizontal'; 27281 }, 27282 27283 isVertical() { 27284 return swiper.params.direction === 'vertical'; 27285 }, 27286 27287 // Indexes 27288 activeIndex: 0, 27289 realIndex: 0, 27290 // 27291 isBeginning: true, 27292 isEnd: false, 27293 // Props 27294 translate: 0, 27295 previousTranslate: 0, 27296 progress: 0, 27297 velocity: 0, 27298 animating: false, 27299 // Locks 27300 allowSlideNext: swiper.params.allowSlideNext, 27301 allowSlidePrev: swiper.params.allowSlidePrev, 27302 // Touch Events 27303 touchEvents: function touchEvents() { 27304 const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel']; 27305 const desktop = ['pointerdown', 'pointermove', 'pointerup']; 27306 swiper.touchEventsTouch = { 27307 start: touch[0], 27308 move: touch[1], 27309 end: touch[2], 27310 cancel: touch[3] 27311 }; 27312 swiper.touchEventsDesktop = { 27313 start: desktop[0], 27314 move: desktop[1], 27315 end: desktop[2] 27316 }; 27317 return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop; 27318 }(), 27319 touchEventsData: { 27320 isTouched: undefined, 27321 isMoved: undefined, 27322 allowTouchCallbacks: undefined, 27323 touchStartTime: undefined, 27324 isScrolling: undefined, 27325 currentTranslate: undefined, 27326 startTranslate: undefined, 27327 allowThresholdMove: undefined, 27328 // Form elements to match 27329 focusableElements: swiper.params.focusableElements, 27330 // Last click time 27331 lastClickTime: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(), 27332 clickTimeout: undefined, 27333 // Velocities 27334 velocities: [], 27335 allowMomentumBounce: undefined, 27336 isTouchEvent: undefined, 27337 startMoving: undefined 27338 }, 27339 // Clicks 27340 allowClick: true, 27341 // Touches 27342 allowTouchMove: swiper.params.allowTouchMove, 27343 touches: { 27344 startX: 0, 27345 startY: 0, 27346 currentX: 0, 27347 currentY: 0, 27348 diff: 0 27349 }, 27350 // Images 27351 imagesToLoad: [], 27352 imagesLoaded: 0 27353 }); 27354 swiper.emit('_swiper'); // Init 27355 27356 if (swiper.params.init) { 27357 swiper.init(); 27358 } // Return app instance 27359 // eslint-disable-next-line no-constructor-return 27360 27361 27362 return swiper; 27363 } 27364 27365 enable() { 27366 const swiper = this; 27367 if (swiper.enabled) return; 27368 swiper.enabled = true; 27369 27370 if (swiper.params.grabCursor) { 27371 swiper.setGrabCursor(); 27372 } 27373 27374 swiper.emit('enable'); 27375 } 27376 27377 disable() { 27378 const swiper = this; 27379 if (!swiper.enabled) return; 27380 swiper.enabled = false; 27381 27382 if (swiper.params.grabCursor) { 27383 swiper.unsetGrabCursor(); 27384 } 27385 27386 swiper.emit('disable'); 27387 } 27388 27389 setProgress(progress, speed) { 27390 const swiper = this; 27391 progress = Math.min(Math.max(progress, 0), 1); 27392 const min = swiper.minTranslate(); 27393 const max = swiper.maxTranslate(); 27394 const current = (max - min) * progress + min; 27395 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 27396 swiper.updateActiveIndex(); 27397 swiper.updateSlidesClasses(); 27398 } 27399 27400 emitContainerClasses() { 27401 const swiper = this; 27402 if (!swiper.params._emitClasses || !swiper.el) return; 27403 const cls = swiper.el.className.split(' ').filter(className => { 27404 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 27405 }); 27406 swiper.emit('_containerClasses', cls.join(' ')); 27407 } 27408 27409 getSlideClasses(slideEl) { 27410 const swiper = this; 27411 if (swiper.destroyed) return ''; 27412 return slideEl.className.split(' ').filter(className => { 27413 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 27414 }).join(' '); 27415 } 27416 27417 emitSlidesClasses() { 27418 const swiper = this; 27419 if (!swiper.params._emitClasses || !swiper.el) return; 27420 const updates = []; 27421 swiper.slides.each(slideEl => { 27422 const classNames = swiper.getSlideClasses(slideEl); 27423 updates.push({ 27424 slideEl, 27425 classNames 27426 }); 27427 swiper.emit('_slideClass', slideEl, classNames); 27428 }); 27429 swiper.emit('_slideClasses', updates); 27430 } 27431 27432 slidesPerViewDynamic(view = 'current', exact = false) { 27433 const swiper = this; 27434 const { 27435 params, 27436 slides, 27437 slidesGrid, 27438 slidesSizesGrid, 27439 size: swiperSize, 27440 activeIndex 27441 } = swiper; 27442 let spv = 1; 27443 27444 if (params.centeredSlides) { 27445 let slideSize = slides[activeIndex].swiperSlideSize; 27446 let breakLoop; 27447 27448 for (let i = activeIndex + 1; i < slides.length; i += 1) { 27449 if (slides[i] && !breakLoop) { 27450 slideSize += slides[i].swiperSlideSize; 27451 spv += 1; 27452 if (slideSize > swiperSize) breakLoop = true; 27453 } 27454 } 27455 27456 for (let i = activeIndex - 1; i >= 0; i -= 1) { 27457 if (slides[i] && !breakLoop) { 27458 slideSize += slides[i].swiperSlideSize; 27459 spv += 1; 27460 if (slideSize > swiperSize) breakLoop = true; 27461 } 27462 } 27463 } else { 27464 // eslint-disable-next-line 27465 if (view === 'current') { 27466 for (let i = activeIndex + 1; i < slides.length; i += 1) { 27467 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 27468 27469 if (slideInView) { 27470 spv += 1; 27471 } 27472 } 27473 } else { 27474 // previous 27475 for (let i = activeIndex - 1; i >= 0; i -= 1) { 27476 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 27477 27478 if (slideInView) { 27479 spv += 1; 27480 } 27481 } 27482 } 27483 } 27484 27485 return spv; 27486 } 27487 27488 update() { 27489 const swiper = this; 27490 if (!swiper || swiper.destroyed) return; 27491 const { 27492 snapGrid, 27493 params 27494 } = swiper; // Breakpoints 27495 27496 if (params.breakpoints) { 27497 swiper.setBreakpoint(); 27498 } 27499 27500 swiper.updateSize(); 27501 swiper.updateSlides(); 27502 swiper.updateProgress(); 27503 swiper.updateSlidesClasses(); 27504 27505 function setTranslate() { 27506 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 27507 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 27508 swiper.setTranslate(newTranslate); 27509 swiper.updateActiveIndex(); 27510 swiper.updateSlidesClasses(); 27511 } 27512 27513 let translated; 27514 27515 if (swiper.params.freeMode && swiper.params.freeMode.enabled) { 27516 setTranslate(); 27517 27518 if (swiper.params.autoHeight) { 27519 swiper.updateAutoHeight(); 27520 } 27521 } else { 27522 if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 27523 translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true); 27524 } else { 27525 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 27526 } 27527 27528 if (!translated) { 27529 setTranslate(); 27530 } 27531 } 27532 27533 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 27534 swiper.checkOverflow(); 27535 } 27536 27537 swiper.emit('update'); 27538 } 27539 27540 changeDirection(newDirection, needUpdate = true) { 27541 const swiper = this; 27542 const currentDirection = swiper.params.direction; 27543 27544 if (!newDirection) { 27545 // eslint-disable-next-line 27546 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 27547 } 27548 27549 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 27550 return swiper; 27551 } 27552 27553 swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`); 27554 swiper.emitContainerClasses(); 27555 swiper.params.direction = newDirection; 27556 swiper.slides.each(slideEl => { 27557 if (newDirection === 'vertical') { 27558 slideEl.style.width = ''; 27559 } else { 27560 slideEl.style.height = ''; 27561 } 27562 }); 27563 swiper.emit('changeDirection'); 27564 if (needUpdate) swiper.update(); 27565 return swiper; 27566 } 27567 27568 changeLanguageDirection(direction) { 27569 const swiper = this; 27570 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 27571 swiper.rtl = direction === 'rtl'; 27572 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 27573 27574 if (swiper.rtl) { 27575 swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`); 27576 swiper.el.dir = 'rtl'; 27577 } else { 27578 swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`); 27579 swiper.el.dir = 'ltr'; 27580 } 27581 27582 swiper.update(); 27583 } 27584 27585 mount(el) { 27586 const swiper = this; 27587 if (swiper.mounted) return true; // Find el 27588 27589 const $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el || swiper.params.el); 27590 el = $el[0]; 27591 27592 if (!el) { 27593 return false; 27594 } 27595 27596 el.swiper = swiper; 27597 27598 const getWrapperSelector = () => { 27599 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 27600 }; 27601 27602 const getWrapper = () => { 27603 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 27604 const res = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items 27605 27606 res.children = options => $el.children(options); 27607 27608 return res; 27609 } 27610 27611 if (!$el.children) { 27612 return Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($el).children(getWrapperSelector()); 27613 } 27614 27615 return $el.children(getWrapperSelector()); 27616 }; // Find Wrapper 27617 27618 27619 let $wrapperEl = getWrapper(); 27620 27621 if ($wrapperEl.length === 0 && swiper.params.createElements) { 27622 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 27623 const wrapper = document.createElement('div'); 27624 $wrapperEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(wrapper); 27625 wrapper.className = swiper.params.wrapperClass; 27626 $el.append(wrapper); 27627 $el.children(`.${swiper.params.slideClass}`).each(slideEl => { 27628 $wrapperEl.append(slideEl); 27629 }); 27630 } 27631 27632 Object.assign(swiper, { 27633 $el, 27634 el, 27635 $wrapperEl, 27636 wrapperEl: $wrapperEl[0], 27637 mounted: true, 27638 // RTL 27639 rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl', 27640 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'), 27641 wrongRTL: $wrapperEl.css('display') === '-webkit-box' 27642 }); 27643 return true; 27644 } 27645 27646 init(el) { 27647 const swiper = this; 27648 if (swiper.initialized) return swiper; 27649 const mounted = swiper.mount(el); 27650 if (mounted === false) return swiper; 27651 swiper.emit('beforeInit'); // Set breakpoint 27652 27653 if (swiper.params.breakpoints) { 27654 swiper.setBreakpoint(); 27655 } // Add Classes 27656 27657 27658 swiper.addClasses(); // Create loop 27659 27660 if (swiper.params.loop) { 27661 swiper.loopCreate(); 27662 } // Update size 27663 27664 27665 swiper.updateSize(); // Update slides 27666 27667 swiper.updateSlides(); 27668 27669 if (swiper.params.watchOverflow) { 27670 swiper.checkOverflow(); 27671 } // Set Grab Cursor 27672 27673 27674 if (swiper.params.grabCursor && swiper.enabled) { 27675 swiper.setGrabCursor(); 27676 } 27677 27678 if (swiper.params.preloadImages) { 27679 swiper.preloadImages(); 27680 } // Slide To Initial Slide 27681 27682 27683 if (swiper.params.loop) { 27684 swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true); 27685 } else { 27686 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 27687 } // Attach events 27688 27689 27690 swiper.attachEvents(); // Init Flag 27691 27692 swiper.initialized = true; // Emit 27693 27694 swiper.emit('init'); 27695 swiper.emit('afterInit'); 27696 return swiper; 27697 } 27698 27699 destroy(deleteInstance = true, cleanStyles = true) { 27700 const swiper = this; 27701 const { 27702 params, 27703 $el, 27704 $wrapperEl, 27705 slides 27706 } = swiper; 27707 27708 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 27709 return null; 27710 } 27711 27712 swiper.emit('beforeDestroy'); // Init Flag 27713 27714 swiper.initialized = false; // Detach events 27715 27716 swiper.detachEvents(); // Destroy loop 27717 27718 if (params.loop) { 27719 swiper.loopDestroy(); 27720 } // Cleanup styles 27721 27722 27723 if (cleanStyles) { 27724 swiper.removeClasses(); 27725 $el.removeAttr('style'); 27726 $wrapperEl.removeAttr('style'); 27727 27728 if (slides && slides.length) { 27729 slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index'); 27730 } 27731 } 27732 27733 swiper.emit('destroy'); // Detach emitter events 27734 27735 Object.keys(swiper.eventsListeners).forEach(eventName => { 27736 swiper.off(eventName); 27737 }); 27738 27739 if (deleteInstance !== false) { 27740 swiper.$el[0].swiper = null; 27741 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["deleteProps"])(swiper); 27742 } 27743 27744 swiper.destroyed = true; 27745 return null; 27746 } 27747 27748 static extendDefaults(newDefaults) { 27749 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["extend"])(extendedDefaults, newDefaults); 27750 } 27751 27752 static get extendedDefaults() { 27753 return extendedDefaults; 27754 } 27755 27756 static get defaults() { 27757 return _defaults_js__WEBPACK_IMPORTED_MODULE_20__["default"]; 27758 } 27759 27760 static installModule(mod) { 27761 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 27762 const modules = Swiper.prototype.__modules__; 27763 27764 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 27765 modules.push(mod); 27766 } 27767 } 27768 27769 static use(module) { 27770 if (Array.isArray(module)) { 27771 module.forEach(m => Swiper.installModule(m)); 27772 return Swiper; 27773 } 27774 27775 Swiper.installModule(module); 27776 return Swiper; 27777 } 27778 27779} 27780 27781Object.keys(prototypes).forEach(prototypeGroup => { 27782 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 27783 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 27784 }); 27785}); 27786Swiper.use([_modules_resize_resize_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modules_observer_observer_js__WEBPACK_IMPORTED_MODULE_7__["default"]]); 27787/* harmony default export */ __webpack_exports__["default"] = (Swiper); 27788 27789/***/ }), 27790
vendor: 3,603 bytes, lines 27791-27926
27791/***/ "./node_modules/swiper/core/defaults.js": 27792/*!**********************************************!*\ 27793 !*** ./node_modules/swiper/core/defaults.js ***! 27794 \**********************************************/ 27795/*! exports provided: default */ 27796/***/ (function(module, __webpack_exports__, __webpack_require__) { 27797 27798"use strict"; 27799__webpack_require__.r(__webpack_exports__); 27800/* harmony default export */ __webpack_exports__["default"] = ({ 27801 init: true, 27802 direction: 'horizontal', 27803 touchEventsTarget: 'wrapper', 27804 initialSlide: 0, 27805 speed: 300, 27806 cssMode: false, 27807 updateOnWindowResize: true, 27808 resizeObserver: true, 27809 nested: false, 27810 createElements: false, 27811 enabled: true, 27812 focusableElements: 'input, select, option, textarea, button, video, label', 27813 // Overrides 27814 width: null, 27815 height: null, 27816 // 27817 preventInteractionOnTransition: false, 27818 // ssr 27819 userAgent: null, 27820 url: null, 27821 // To support iOS's swipe-to-go-back gesture (when being used in-app). 27822 edgeSwipeDetection: false, 27823 edgeSwipeThreshold: 20, 27824 // Autoheight 27825 autoHeight: false, 27826 // Set wrapper width 27827 setWrapperSize: false, 27828 // Virtual Translate 27829 virtualTranslate: false, 27830 // Effects 27831 effect: 'slide', 27832 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 27833 // Breakpoints 27834 breakpoints: undefined, 27835 breakpointsBase: 'window', 27836 // Slides grid 27837 spaceBetween: 0, 27838 slidesPerView: 1, 27839 slidesPerGroup: 1, 27840 slidesPerGroupSkip: 0, 27841 slidesPerGroupAuto: false, 27842 centeredSlides: false, 27843 centeredSlidesBounds: false, 27844 slidesOffsetBefore: 0, 27845 // in px 27846 slidesOffsetAfter: 0, 27847 // in px 27848 normalizeSlideIndex: true, 27849 centerInsufficientSlides: false, 27850 // Disable swiper and hide navigation when container not overflow 27851 watchOverflow: true, 27852 // Round length 27853 roundLengths: false, 27854 // Touches 27855 touchRatio: 1, 27856 touchAngle: 45, 27857 simulateTouch: true, 27858 shortSwipes: true, 27859 longSwipes: true, 27860 longSwipesRatio: 0.5, 27861 longSwipesMs: 300, 27862 followFinger: true, 27863 allowTouchMove: true, 27864 threshold: 0, 27865 touchMoveStopPropagation: false, 27866 touchStartPreventDefault: true, 27867 touchStartForcePreventDefault: false, 27868 touchReleaseOnEdges: false, 27869 // Unique Navigation Elements 27870 uniqueNavElements: true, 27871 // Resistance 27872 resistance: true, 27873 resistanceRatio: 0.85, 27874 // Progress 27875 watchSlidesProgress: false, 27876 // Cursor 27877 grabCursor: false, 27878 // Clicks 27879 preventClicks: true, 27880 preventClicksPropagation: true, 27881 slideToClickedSlide: false, 27882 // Images 27883 preloadImages: true, 27884 updateOnImagesReady: true, 27885 // loop 27886 loop: false, 27887 loopAdditionalSlides: 0, 27888 loopedSlides: null, 27889 loopedSlidesLimit: true, 27890 loopFillGroupWithBlank: false, 27891 loopPreventsSlide: true, 27892 // rewind 27893 rewind: false, 27894 // Swiping/no swiping 27895 allowSlidePrev: true, 27896 allowSlideNext: true, 27897 swipeHandler: null, 27898 // '.swipe-handler', 27899 noSwiping: true, 27900 noSwipingClass: 'swiper-no-swiping', 27901 noSwipingSelector: null, 27902 // Passive Listeners 27903 passiveListeners: true, 27904 maxBackfaceHiddenSlides: 10, 27905 // NS 27906 containerModifierClass: 'swiper-', 27907 // NEW 27908 slideClass: 'swiper-slide', 27909 slideBlankClass: 'swiper-slide-invisible-blank', 27910 slideActiveClass: 'swiper-slide-active', 27911 slideDuplicateActiveClass: 'swiper-slide-duplicate-active', 27912 slideVisibleClass: 'swiper-slide-visible', 27913 slideDuplicateClass: 'swiper-slide-duplicate', 27914 slideNextClass: 'swiper-slide-next', 27915 slideDuplicateNextClass: 'swiper-slide-duplicate-next', 27916 slidePrevClass: 'swiper-slide-prev', 27917 slideDuplicatePrevClass: 'swiper-slide-duplicate-prev', 27918 wrapperClass: 'swiper-wrapper', 27919 // Callbacks 27920 runCallbacksOnInit: true, 27921 // Internals 27922 _emitClasses: false 27923}); 27924 27925/***/ }), 27926
vendor: 3,742 bytes, lines 27927-28052
27927/***/ "./node_modules/swiper/core/events-emitter.js": 27928/*!****************************************************!*\ 27929 !*** ./node_modules/swiper/core/events-emitter.js ***! 27930 \****************************************************/ 27931/*! exports provided: default */ 27932/***/ (function(module, __webpack_exports__, __webpack_require__) { 27933 27934"use strict"; 27935__webpack_require__.r(__webpack_exports__); 27936/* eslint-disable no-underscore-dangle */ 27937/* harmony default export */ __webpack_exports__["default"] = ({ 27938 on(events, handler, priority) { 27939 const self = this; 27940 if (!self.eventsListeners || self.destroyed) return self; 27941 if (typeof handler !== 'function') return self; 27942 const method = priority ? 'unshift' : 'push'; 27943 events.split(' ').forEach(event => { 27944 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 27945 self.eventsListeners[event][method](handler); 27946 }); 27947 return self; 27948 }, 27949 27950 once(events, handler, priority) { 27951 const self = this; 27952 if (!self.eventsListeners || self.destroyed) return self; 27953 if (typeof handler !== 'function') return self; 27954 27955 function onceHandler(...args) { 27956 self.off(events, onceHandler); 27957 27958 if (onceHandler.__emitterProxy) { 27959 delete onceHandler.__emitterProxy; 27960 } 27961 27962 handler.apply(self, args); 27963 } 27964 27965 onceHandler.__emitterProxy = handler; 27966 return self.on(events, onceHandler, priority); 27967 }, 27968 27969 onAny(handler, priority) { 27970 const self = this; 27971 if (!self.eventsListeners || self.destroyed) return self; 27972 if (typeof handler !== 'function') return self; 27973 const method = priority ? 'unshift' : 'push'; 27974 27975 if (self.eventsAnyListeners.indexOf(handler) < 0) { 27976 self.eventsAnyListeners[method](handler); 27977 } 27978 27979 return self; 27980 }, 27981 27982 offAny(handler) { 27983 const self = this; 27984 if (!self.eventsListeners || self.destroyed) return self; 27985 if (!self.eventsAnyListeners) return self; 27986 const index = self.eventsAnyListeners.indexOf(handler); 27987 27988 if (index >= 0) { 27989 self.eventsAnyListeners.splice(index, 1); 27990 } 27991 27992 return self; 27993 }, 27994 27995 off(events, handler) { 27996 const self = this; 27997 if (!self.eventsListeners || self.destroyed) return self; 27998 if (!self.eventsListeners) return self; 27999 events.split(' ').forEach(event => { 28000 if (typeof handler === 'undefined') { 28001 self.eventsListeners[event] = []; 28002 } else if (self.eventsListeners[event]) { 28003 self.eventsListeners[event].forEach((eventHandler, index) => { 28004 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 28005 self.eventsListeners[event].splice(index, 1); 28006 } 28007 }); 28008 } 28009 }); 28010 return self; 28011 }, 28012 28013 emit(...args) { 28014 const self = this; 28015 if (!self.eventsListeners || self.destroyed) return self; 28016 if (!self.eventsListeners) return self; 28017 let events; 28018 let data; 28019 let context; 28020 28021 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 28022 events = args[0]; 28023 data = args.slice(1, args.length); 28024 context = self; 28025 } else { 28026 events = args[0].events; 28027 data = args[0].data; 28028 context = args[0].context || self; 28029 } 28030 28031 data.unshift(context); 28032 const eventsArray = Array.isArray(events) ? events : events.split(' '); 28033 eventsArray.forEach(event => { 28034 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 28035 self.eventsAnyListeners.forEach(eventHandler => { 28036 eventHandler.apply(context, [event, ...data]); 28037 }); 28038 } 28039 28040 if (self.eventsListeners && self.eventsListeners[event]) { 28041 self.eventsListeners[event].forEach(eventHandler => { 28042 eventHandler.apply(context, data); 28043 }); 28044 } 28045 }); 28046 return self; 28047 } 28048 28049}); 28050 28051/***/ }), 28052
vendor: 4,422 bytes, lines 28053-28168
28053/***/ "./node_modules/swiper/core/events/index.js": 28054/*!**************************************************!*\ 28055 !*** ./node_modules/swiper/core/events/index.js ***! 28056 \**************************************************/ 28057/*! exports provided: default */ 28058/***/ (function(module, __webpack_exports__, __webpack_require__) { 28059 28060"use strict"; 28061__webpack_require__.r(__webpack_exports__); 28062/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 28063/* harmony import */ var _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onTouchStart.js */ "./node_modules/swiper/core/events/onTouchStart.js"); 28064/* harmony import */ var _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onTouchMove.js */ "./node_modules/swiper/core/events/onTouchMove.js"); 28065/* harmony import */ var _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onTouchEnd.js */ "./node_modules/swiper/core/events/onTouchEnd.js"); 28066/* harmony import */ var _onResize_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./onResize.js */ "./node_modules/swiper/core/events/onResize.js"); 28067/* harmony import */ var _onClick_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onClick.js */ "./node_modules/swiper/core/events/onClick.js"); 28068/* harmony import */ var _onScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./onScroll.js */ "./node_modules/swiper/core/events/onScroll.js"); 28069 28070 28071 28072 28073 28074 28075 28076let dummyEventAttached = false; 28077 28078function dummyEventListener() {} 28079 28080const events = (swiper, method) => { 28081 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 28082 const { 28083 params, 28084 touchEvents, 28085 el, 28086 wrapperEl, 28087 device, 28088 support 28089 } = swiper; 28090 const capture = !!params.nested; 28091 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 28092 const swiperMethod = method; // Touch Events 28093 28094 if (!support.touch) { 28095 el[domMethod](touchEvents.start, swiper.onTouchStart, false); 28096 document[domMethod](touchEvents.move, swiper.onTouchMove, capture); 28097 document[domMethod](touchEvents.end, swiper.onTouchEnd, false); 28098 } else { 28099 const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? { 28100 passive: true, 28101 capture: false 28102 } : false; 28103 el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener); 28104 el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? { 28105 passive: false, 28106 capture 28107 } : capture); 28108 el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener); 28109 28110 if (touchEvents.cancel) { 28111 el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener); 28112 } 28113 } // Prevent Links Clicks 28114 28115 28116 if (params.preventClicks || params.preventClicksPropagation) { 28117 el[domMethod]('click', swiper.onClick, true); 28118 } 28119 28120 if (params.cssMode) { 28121 wrapperEl[domMethod]('scroll', swiper.onScroll); 28122 } // Resize handler 28123 28124 28125 if (params.updateOnWindowResize) { 28126 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true); 28127 } else { 28128 swiper[swiperMethod]('observerUpdate', _onResize_js__WEBPACK_IMPORTED_MODULE_4__["default"], true); 28129 } 28130}; 28131 28132function attachEvents() { 28133 const swiper = this; 28134 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 28135 const { 28136 params, 28137 support 28138 } = swiper; 28139 swiper.onTouchStart = _onTouchStart_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper); 28140 swiper.onTouchMove = _onTouchMove_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper); 28141 swiper.onTouchEnd = _onTouchEnd_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper); 28142 28143 if (params.cssMode) { 28144 swiper.onScroll = _onScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"].bind(swiper); 28145 } 28146 28147 swiper.onClick = _onClick_js__WEBPACK_IMPORTED_MODULE_5__["default"].bind(swiper); 28148 28149 if (support.touch && !dummyEventAttached) { 28150 document.addEventListener('touchstart', dummyEventListener); 28151 dummyEventAttached = true; 28152 } 28153 28154 events(swiper, 'on'); 28155} 28156 28157function detachEvents() { 28158 const swiper = this; 28159 events(swiper, 'off'); 28160} 28161 28162/* harmony default export */ __webpack_exports__["default"] = ({ 28163 attachEvents, 28164 detachEvents 28165}); 28166 28167/***/ }), 28168
vendor: 825 bytes, lines 28169-28194
28169/***/ "./node_modules/swiper/core/events/onClick.js": 28170/*!****************************************************!*\ 28171 !*** ./node_modules/swiper/core/events/onClick.js ***! 28172 \****************************************************/ 28173/*! exports provided: default */ 28174/***/ (function(module, __webpack_exports__, __webpack_require__) { 28175 28176"use strict"; 28177__webpack_require__.r(__webpack_exports__); 28178/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onClick; }); 28179function onClick(e) { 28180 const swiper = this; 28181 if (!swiper.enabled) return; 28182 28183 if (!swiper.allowClick) { 28184 if (swiper.params.preventClicks) e.preventDefault(); 28185 28186 if (swiper.params.preventClicksPropagation && swiper.animating) { 28187 e.stopPropagation(); 28188 e.stopImmediatePropagation(); 28189 } 28190 } 28191} 28192 28193/***/ }), 28194
vendor: 1,599 bytes, lines 28195-28250
28195/***/ "./node_modules/swiper/core/events/onResize.js": 28196/*!*****************************************************!*\ 28197 !*** ./node_modules/swiper/core/events/onResize.js ***! 28198 \*****************************************************/ 28199/*! exports provided: default */ 28200/***/ (function(module, __webpack_exports__, __webpack_require__) { 28201 28202"use strict"; 28203__webpack_require__.r(__webpack_exports__); 28204/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onResize; }); 28205function onResize() { 28206 const swiper = this; 28207 const { 28208 params, 28209 el 28210 } = swiper; 28211 if (el && el.offsetWidth === 0) return; // Breakpoints 28212 28213 if (params.breakpoints) { 28214 swiper.setBreakpoint(); 28215 } // Save locks 28216 28217 28218 const { 28219 allowSlideNext, 28220 allowSlidePrev, 28221 snapGrid 28222 } = swiper; // Disable locks on resize 28223 28224 swiper.allowSlideNext = true; 28225 swiper.allowSlidePrev = true; 28226 swiper.updateSize(); 28227 swiper.updateSlides(); 28228 swiper.updateSlidesClasses(); 28229 28230 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { 28231 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 28232 } else { 28233 swiper.slideTo(swiper.activeIndex, 0, false, true); 28234 } 28235 28236 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 28237 swiper.autoplay.run(); 28238 } // Return locks after resize 28239 28240 28241 swiper.allowSlidePrev = allowSlidePrev; 28242 swiper.allowSlideNext = allowSlideNext; 28243 28244 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 28245 swiper.checkOverflow(); 28246 } 28247} 28248 28249/***/ }), 28250
vendor: 1,411 bytes, lines 28251-28298
28251/***/ "./node_modules/swiper/core/events/onScroll.js": 28252/*!*****************************************************!*\ 28253 !*** ./node_modules/swiper/core/events/onScroll.js ***! 28254 \*****************************************************/ 28255/*! exports provided: default */ 28256/***/ (function(module, __webpack_exports__, __webpack_require__) { 28257 28258"use strict"; 28259__webpack_require__.r(__webpack_exports__); 28260/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onScroll; }); 28261function onScroll() { 28262 const swiper = this; 28263 const { 28264 wrapperEl, 28265 rtlTranslate, 28266 enabled 28267 } = swiper; 28268 if (!enabled) return; 28269 swiper.previousTranslate = swiper.translate; 28270 28271 if (swiper.isHorizontal()) { 28272 swiper.translate = -wrapperEl.scrollLeft; 28273 } else { 28274 swiper.translate = -wrapperEl.scrollTop; 28275 } // eslint-disable-next-line 28276 28277 28278 if (swiper.translate === 0) swiper.translate = 0; 28279 swiper.updateActiveIndex(); 28280 swiper.updateSlidesClasses(); 28281 let newProgress; 28282 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 28283 28284 if (translatesDiff === 0) { 28285 newProgress = 0; 28286 } else { 28287 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 28288 } 28289 28290 if (newProgress !== swiper.progress) { 28291 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 28292 } 28293 28294 swiper.emit('setTranslate', swiper.translate, false); 28295} 28296 28297/***/ }), 28298
vendor: 5,509 bytes, lines 28299-28473
28299/***/ "./node_modules/swiper/core/events/onTouchEnd.js": 28300/*!*******************************************************!*\ 28301 !*** ./node_modules/swiper/core/events/onTouchEnd.js ***! 28302 \*******************************************************/ 28303/*! exports provided: default */ 28304/***/ (function(module, __webpack_exports__, __webpack_require__) { 28305 28306"use strict"; 28307__webpack_require__.r(__webpack_exports__); 28308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onTouchEnd; }); 28309/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 28310 28311function onTouchEnd(event) { 28312 const swiper = this; 28313 const data = swiper.touchEventsData; 28314 const { 28315 params, 28316 touches, 28317 rtlTranslate: rtl, 28318 slidesGrid, 28319 enabled 28320 } = swiper; 28321 if (!enabled) return; 28322 let e = event; 28323 if (e.originalEvent) e = e.originalEvent; 28324 28325 if (data.allowTouchCallbacks) { 28326 swiper.emit('touchEnd', e); 28327 } 28328 28329 data.allowTouchCallbacks = false; 28330 28331 if (!data.isTouched) { 28332 if (data.isMoved && params.grabCursor) { 28333 swiper.setGrabCursor(false); 28334 } 28335 28336 data.isMoved = false; 28337 data.startMoving = false; 28338 return; 28339 } // Return Grab Cursor 28340 28341 28342 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 28343 swiper.setGrabCursor(false); 28344 } // Time diff 28345 28346 28347 const touchEndTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])(); 28348 const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click 28349 28350 if (swiper.allowClick) { 28351 const pathTree = e.path || e.composedPath && e.composedPath(); 28352 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target); 28353 swiper.emit('tap click', e); 28354 28355 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 28356 swiper.emit('doubleTap doubleClick', e); 28357 } 28358 } 28359 28360 data.lastClickTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])(); 28361 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["nextTick"])(() => { 28362 if (!swiper.destroyed) swiper.allowClick = true; 28363 }); 28364 28365 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { 28366 data.isTouched = false; 28367 data.isMoved = false; 28368 data.startMoving = false; 28369 return; 28370 } 28371 28372 data.isTouched = false; 28373 data.isMoved = false; 28374 data.startMoving = false; 28375 let currentPos; 28376 28377 if (params.followFinger) { 28378 currentPos = rtl ? swiper.translate : -swiper.translate; 28379 } else { 28380 currentPos = -data.currentTranslate; 28381 } 28382 28383 if (params.cssMode) { 28384 return; 28385 } 28386 28387 if (swiper.params.freeMode && params.freeMode.enabled) { 28388 swiper.freeMode.onTouchEnd({ 28389 currentPos 28390 }); 28391 return; 28392 } // Find current slide 28393 28394 28395 let stopIndex = 0; 28396 let groupSize = swiper.slidesSizesGrid[0]; 28397 28398 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 28399 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 28400 28401 if (typeof slidesGrid[i + increment] !== 'undefined') { 28402 if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 28403 stopIndex = i; 28404 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 28405 } 28406 } else if (currentPos >= slidesGrid[i]) { 28407 stopIndex = i; 28408 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 28409 } 28410 } 28411 28412 let rewindFirstIndex = null; 28413 let rewindLastIndex = null; 28414 28415 if (params.rewind) { 28416 if (swiper.isBeginning) { 28417 rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 28418 } else if (swiper.isEnd) { 28419 rewindFirstIndex = 0; 28420 } 28421 } // Find current slide size 28422 28423 28424 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 28425 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 28426 28427 if (timeDiff > params.longSwipesMs) { 28428 // Long touches 28429 if (!params.longSwipes) { 28430 swiper.slideTo(swiper.activeIndex); 28431 return; 28432 } 28433 28434 if (swiper.swipeDirection === 'next') { 28435 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 28436 } 28437 28438 if (swiper.swipeDirection === 'prev') { 28439 if (ratio > 1 - params.longSwipesRatio) { 28440 swiper.slideTo(stopIndex + increment); 28441 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 28442 swiper.slideTo(rewindLastIndex); 28443 } else { 28444 swiper.slideTo(stopIndex); 28445 } 28446 } 28447 } else { 28448 // Short swipes 28449 if (!params.shortSwipes) { 28450 swiper.slideTo(swiper.activeIndex); 28451 return; 28452 } 28453 28454 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 28455 28456 if (!isNavButtonTarget) { 28457 if (swiper.swipeDirection === 'next') { 28458 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 28459 } 28460 28461 if (swiper.swipeDirection === 'prev') { 28462 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 28463 } 28464 } else if (e.target === swiper.navigation.nextEl) { 28465 swiper.slideTo(stopIndex + increment); 28466 } else { 28467 swiper.slideTo(stopIndex); 28468 } 28469 } 28470} 28471 28472/***/ }), 28473
vendor: 7,818 bytes, lines 28474-28712
28474/***/ "./node_modules/swiper/core/events/onTouchMove.js": 28475/*!********************************************************!*\ 28476 !*** ./node_modules/swiper/core/events/onTouchMove.js ***! 28477 \********************************************************/ 28478/*! exports provided: default */ 28479/***/ (function(module, __webpack_exports__, __webpack_require__) { 28480 28481"use strict"; 28482__webpack_require__.r(__webpack_exports__); 28483/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onTouchMove; }); 28484/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 28485/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 28486/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 28487 28488 28489 28490function onTouchMove(event) { 28491 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 28492 const swiper = this; 28493 const data = swiper.touchEventsData; 28494 const { 28495 params, 28496 touches, 28497 rtlTranslate: rtl, 28498 enabled 28499 } = swiper; 28500 if (!enabled) return; 28501 let e = event; 28502 if (e.originalEvent) e = e.originalEvent; 28503 28504 if (!data.isTouched) { 28505 if (data.startMoving && data.isScrolling) { 28506 swiper.emit('touchMoveOpposite', e); 28507 } 28508 28509 return; 28510 } 28511 28512 if (data.isTouchEvent && e.type !== 'touchmove') return; 28513 const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); 28514 const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX; 28515 const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY; 28516 28517 if (e.preventedByNestedSwiper) { 28518 touches.startX = pageX; 28519 touches.startY = pageY; 28520 return; 28521 } 28522 28523 if (!swiper.allowTouchMove) { 28524 if (!Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) { 28525 swiper.allowClick = false; 28526 } 28527 28528 if (data.isTouched) { 28529 Object.assign(touches, { 28530 startX: pageX, 28531 startY: pageY, 28532 currentX: pageX, 28533 currentY: pageY 28534 }); 28535 data.touchStartTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(); 28536 } 28537 28538 return; 28539 } 28540 28541 if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { 28542 if (swiper.isVertical()) { 28543 // Vertical 28544 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 28545 data.isTouched = false; 28546 data.isMoved = false; 28547 return; 28548 } 28549 } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { 28550 return; 28551 } 28552 } 28553 28554 if (data.isTouchEvent && document.activeElement) { 28555 if (e.target === document.activeElement && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).is(data.focusableElements)) { 28556 data.isMoved = true; 28557 swiper.allowClick = false; 28558 return; 28559 } 28560 } 28561 28562 if (data.allowTouchCallbacks) { 28563 swiper.emit('touchMove', e); 28564 } 28565 28566 if (e.targetTouches && e.targetTouches.length > 1) return; 28567 touches.currentX = pageX; 28568 touches.currentY = pageY; 28569 const diffX = touches.currentX - touches.startX; 28570 const diffY = touches.currentY - touches.startY; 28571 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 28572 28573 if (typeof data.isScrolling === 'undefined') { 28574 let touchAngle; 28575 28576 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 28577 data.isScrolling = false; 28578 } else { 28579 // eslint-disable-next-line 28580 if (diffX * diffX + diffY * diffY >= 25) { 28581 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 28582 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 28583 } 28584 } 28585 } 28586 28587 if (data.isScrolling) { 28588 swiper.emit('touchMoveOpposite', e); 28589 } 28590 28591 if (typeof data.startMoving === 'undefined') { 28592 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 28593 data.startMoving = true; 28594 } 28595 } 28596 28597 if (data.isScrolling) { 28598 data.isTouched = false; 28599 return; 28600 } 28601 28602 if (!data.startMoving) { 28603 return; 28604 } 28605 28606 swiper.allowClick = false; 28607 28608 if (!params.cssMode && e.cancelable) { 28609 e.preventDefault(); 28610 } 28611 28612 if (params.touchMoveStopPropagation && !params.nested) { 28613 e.stopPropagation(); 28614 } 28615 28616 if (!data.isMoved) { 28617 if (params.loop && !params.cssMode) { 28618 swiper.loopFix(); 28619 } 28620 28621 data.startTranslate = swiper.getTranslate(); 28622 swiper.setTransition(0); 28623 28624 if (swiper.animating) { 28625 swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend'); 28626 } 28627 28628 data.allowMomentumBounce = false; // Grab Cursor 28629 28630 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 28631 swiper.setGrabCursor(true); 28632 } 28633 28634 swiper.emit('sliderFirstMove', e); 28635 } 28636 28637 swiper.emit('sliderMove', e); 28638 data.isMoved = true; 28639 let diff = swiper.isHorizontal() ? diffX : diffY; 28640 touches.diff = diff; 28641 diff *= params.touchRatio; 28642 if (rtl) diff = -diff; 28643 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 28644 data.currentTranslate = diff + data.startTranslate; 28645 let disableParentSwiper = true; 28646 let resistanceRatio = params.resistanceRatio; 28647 28648 if (params.touchReleaseOnEdges) { 28649 resistanceRatio = 0; 28650 } 28651 28652 if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { 28653 disableParentSwiper = false; 28654 if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 28655 } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { 28656 disableParentSwiper = false; 28657 if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 28658 } 28659 28660 if (disableParentSwiper) { 28661 e.preventedByNestedSwiper = true; 28662 } // Directions locks 28663 28664 28665 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 28666 data.currentTranslate = data.startTranslate; 28667 } 28668 28669 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 28670 data.currentTranslate = data.startTranslate; 28671 } 28672 28673 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 28674 data.currentTranslate = data.startTranslate; 28675 } // Threshold 28676 28677 28678 if (params.threshold > 0) { 28679 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 28680 if (!data.allowThresholdMove) { 28681 data.allowThresholdMove = true; 28682 touches.startX = touches.currentX; 28683 touches.startY = touches.currentY; 28684 data.currentTranslate = data.startTranslate; 28685 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 28686 return; 28687 } 28688 } else { 28689 data.currentTranslate = data.startTranslate; 28690 return; 28691 } 28692 } 28693 28694 if (!params.followFinger || params.cssMode) return; // Update active index in free mode 28695 28696 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 28697 swiper.updateActiveIndex(); 28698 swiper.updateSlidesClasses(); 28699 } 28700 28701 if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) { 28702 swiper.freeMode.onTouchMove(); 28703 } // Update progress 28704 28705 28706 swiper.updateProgress(data.currentTranslate); // Update translate 28707 28708 swiper.setTranslate(data.currentTranslate); 28709} 28710 28711/***/ }), 28712
vendor: 5,764 bytes, lines 28713-28860
28713/***/ "./node_modules/swiper/core/events/onTouchStart.js": 28714/*!*********************************************************!*\ 28715 !*** ./node_modules/swiper/core/events/onTouchStart.js ***! 28716 \*********************************************************/ 28717/*! exports provided: default */ 28718/***/ (function(module, __webpack_exports__, __webpack_require__) { 28719 28720"use strict"; 28721__webpack_require__.r(__webpack_exports__); 28722/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return onTouchStart; }); 28723/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 28724/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 28725/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 28726 28727 28728 // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 28729 28730function closestElement(selector, base = this) { 28731 function __closestFrom(el) { 28732 if (!el || el === Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])() || el === Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])()) return null; 28733 if (el.assignedSlot) el = el.assignedSlot; 28734 const found = el.closest(selector); 28735 28736 if (!found && !el.getRootNode) { 28737 return null; 28738 } 28739 28740 return found || __closestFrom(el.getRootNode().host); 28741 } 28742 28743 return __closestFrom(base); 28744} 28745 28746function onTouchStart(event) { 28747 const swiper = this; 28748 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 28749 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 28750 const data = swiper.touchEventsData; 28751 const { 28752 params, 28753 touches, 28754 enabled 28755 } = swiper; 28756 if (!enabled) return; 28757 28758 if (swiper.animating && params.preventInteractionOnTransition) { 28759 return; 28760 } 28761 28762 if (!swiper.animating && params.cssMode && params.loop) { 28763 swiper.loopFix(); 28764 } 28765 28766 let e = event; 28767 if (e.originalEvent) e = e.originalEvent; 28768 let $targetEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target); 28769 28770 if (params.touchEventsTarget === 'wrapper') { 28771 if (!$targetEl.closest(swiper.wrapperEl).length) return; 28772 } 28773 28774 data.isTouchEvent = e.type === 'touchstart'; 28775 if (!data.isTouchEvent && 'which' in e && e.which === 3) return; 28776 if (!data.isTouchEvent && 'button' in e && e.button > 0) return; 28777 if (data.isTouched && data.isMoved) return; // change target el for shadow root component 28778 28779 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line 28780 28781 const eventPath = event.composedPath ? event.composedPath() : event.path; 28782 28783 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 28784 $targetEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eventPath[0]); 28785 } 28786 28787 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 28788 const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element 28789 28790 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) { 28791 swiper.allowClick = true; 28792 return; 28793 } 28794 28795 if (params.swipeHandler) { 28796 if (!$targetEl.closest(params.swipeHandler)[0]) return; 28797 } 28798 28799 touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 28800 touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 28801 const startX = touches.currentX; 28802 const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 28803 28804 const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; 28805 const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; 28806 28807 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 28808 if (edgeSwipeDetection === 'prevent') { 28809 event.preventDefault(); 28810 } else { 28811 return; 28812 } 28813 } 28814 28815 Object.assign(data, { 28816 isTouched: true, 28817 isMoved: false, 28818 allowTouchCallbacks: true, 28819 isScrolling: undefined, 28820 startMoving: undefined 28821 }); 28822 touches.startX = startX; 28823 touches.startY = startY; 28824 data.touchStartTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(); 28825 swiper.allowClick = true; 28826 swiper.updateSize(); 28827 swiper.swipeDirection = undefined; 28828 if (params.threshold > 0) data.allowThresholdMove = false; 28829 28830 if (e.type !== 'touchstart') { 28831 let preventDefault = true; 28832 28833 if ($targetEl.is(data.focusableElements)) { 28834 preventDefault = false; 28835 28836 if ($targetEl[0].nodeName === 'SELECT') { 28837 data.isTouched = false; 28838 } 28839 } 28840 28841 if (document.activeElement && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) { 28842 document.activeElement.blur(); 28843 } 28844 28845 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 28846 28847 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { 28848 e.preventDefault(); 28849 } 28850 } 28851 28852 if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 28853 swiper.freeMode.onTouchStart(); 28854 } 28855 28856 swiper.emit('touchStart', e); 28857} 28858 28859/***/ }), 28860
vendor: 1,003 bytes, lines 28861-28880
28861/***/ "./node_modules/swiper/core/grab-cursor/index.js": 28862/*!*******************************************************!*\ 28863 !*** ./node_modules/swiper/core/grab-cursor/index.js ***! 28864 \*******************************************************/ 28865/*! exports provided: default */ 28866/***/ (function(module, __webpack_exports__, __webpack_require__) { 28867 28868"use strict"; 28869__webpack_require__.r(__webpack_exports__); 28870/* harmony import */ var _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js"); 28871/* harmony import */ var _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./unsetGrabCursor.js */ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js"); 28872 28873 28874/* harmony default export */ __webpack_exports__["default"] = ({ 28875 setGrabCursor: _setGrabCursor_js__WEBPACK_IMPORTED_MODULE_0__["default"], 28876 unsetGrabCursor: _unsetGrabCursor_js__WEBPACK_IMPORTED_MODULE_1__["default"] 28877}); 28878 28879/***/ }), 28880
vendor: 939 bytes, lines 28881-28900
28881/***/ "./node_modules/swiper/core/grab-cursor/setGrabCursor.js": 28882/*!***************************************************************!*\ 28883 !*** ./node_modules/swiper/core/grab-cursor/setGrabCursor.js ***! 28884 \***************************************************************/ 28885/*! exports provided: default */ 28886/***/ (function(module, __webpack_exports__, __webpack_require__) { 28887 28888"use strict"; 28889__webpack_require__.r(__webpack_exports__); 28890/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setGrabCursor; }); 28891function setGrabCursor(moving) { 28892 const swiper = this; 28893 if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 28894 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 28895 el.style.cursor = 'move'; 28896 el.style.cursor = moving ? 'grabbing' : 'grab'; 28897} 28898 28899/***/ }), 28900
vendor: 852 bytes, lines 28901-28922
28901/***/ "./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js": 28902/*!*****************************************************************!*\ 28903 !*** ./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js ***! 28904 \*****************************************************************/ 28905/*! exports provided: default */ 28906/***/ (function(module, __webpack_exports__, __webpack_require__) { 28907 28908"use strict"; 28909__webpack_require__.r(__webpack_exports__); 28910/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return unsetGrabCursor; }); 28911function unsetGrabCursor() { 28912 const swiper = this; 28913 28914 if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 28915 return; 28916 } 28917 28918 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 28919} 28920 28921/***/ }), 28922
vendor: 943 bytes, lines 28923-28942
28923/***/ "./node_modules/swiper/core/images/index.js": 28924/*!**************************************************!*\ 28925 !*** ./node_modules/swiper/core/images/index.js ***! 28926 \**************************************************/ 28927/*! exports provided: default */ 28928/***/ (function(module, __webpack_exports__, __webpack_require__) { 28929 28930"use strict"; 28931__webpack_require__.r(__webpack_exports__); 28932/* harmony import */ var _loadImage_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loadImage.js */ "./node_modules/swiper/core/images/loadImage.js"); 28933/* harmony import */ var _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./preloadImages.js */ "./node_modules/swiper/core/images/preloadImages.js"); 28934 28935 28936/* harmony default export */ __webpack_exports__["default"] = ({ 28937 loadImage: _loadImage_js__WEBPACK_IMPORTED_MODULE_0__["default"], 28938 preloadImages: _preloadImages_js__WEBPACK_IMPORTED_MODULE_1__["default"] 28939}); 28940 28941/***/ }), 28942
vendor: 1,627 bytes, lines 28943-28994
28943/***/ "./node_modules/swiper/core/images/loadImage.js": 28944/*!******************************************************!*\ 28945 !*** ./node_modules/swiper/core/images/loadImage.js ***! 28946 \******************************************************/ 28947/*! exports provided: default */ 28948/***/ (function(module, __webpack_exports__, __webpack_require__) { 28949 28950"use strict"; 28951__webpack_require__.r(__webpack_exports__); 28952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loadImage; }); 28953/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 28954/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 28955 28956 28957function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { 28958 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 28959 let image; 28960 28961 function onReady() { 28962 if (callback) callback(); 28963 } 28964 28965 const isPicture = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl).parent('picture')[0]; 28966 28967 if (!isPicture && (!imageEl.complete || !checkForComplete)) { 28968 if (src) { 28969 image = new window.Image(); 28970 image.onload = onReady; 28971 image.onerror = onReady; 28972 28973 if (sizes) { 28974 image.sizes = sizes; 28975 } 28976 28977 if (srcset) { 28978 image.srcset = srcset; 28979 } 28980 28981 if (src) { 28982 image.src = src; 28983 } 28984 } else { 28985 onReady(); 28986 } 28987 } else { 28988 // image already loaded... 28989 onReady(); 28990 } 28991} 28992 28993/***/ }), 28994
vendor: 1,310 bytes, lines 28995-29026
28995/***/ "./node_modules/swiper/core/images/preloadImages.js": 28996/*!**********************************************************!*\ 28997 !*** ./node_modules/swiper/core/images/preloadImages.js ***! 28998 \**********************************************************/ 28999/*! exports provided: default */ 29000/***/ (function(module, __webpack_exports__, __webpack_require__) { 29001 29002"use strict"; 29003__webpack_require__.r(__webpack_exports__); 29004/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return preloadImages; }); 29005function preloadImages() { 29006 const swiper = this; 29007 swiper.imagesToLoad = swiper.$el.find('img'); 29008 29009 function onReady() { 29010 if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return; 29011 if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1; 29012 29013 if (swiper.imagesLoaded === swiper.imagesToLoad.length) { 29014 if (swiper.params.updateOnImagesReady) swiper.update(); 29015 swiper.emit('imagesReady'); 29016 } 29017 } 29018 29019 for (let i = 0; i < swiper.imagesToLoad.length; i += 1) { 29020 const imageEl = swiper.imagesToLoad[i]; 29021 swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady); 29022 } 29023} 29024 29025/***/ }), 29026
vendor: 1,146 bytes, lines 29027-29049
29027/***/ "./node_modules/swiper/core/loop/index.js": 29028/*!************************************************!*\ 29029 !*** ./node_modules/swiper/core/loop/index.js ***! 29030 \************************************************/ 29031/*! exports provided: default */ 29032/***/ (function(module, __webpack_exports__, __webpack_require__) { 29033 29034"use strict"; 29035__webpack_require__.r(__webpack_exports__); 29036/* harmony import */ var _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loopCreate.js */ "./node_modules/swiper/core/loop/loopCreate.js"); 29037/* harmony import */ var _loopFix_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loopFix.js */ "./node_modules/swiper/core/loop/loopFix.js"); 29038/* harmony import */ var _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./loopDestroy.js */ "./node_modules/swiper/core/loop/loopDestroy.js"); 29039 29040 29041 29042/* harmony default export */ __webpack_exports__["default"] = ({ 29043 loopCreate: _loopCreate_js__WEBPACK_IMPORTED_MODULE_0__["default"], 29044 loopFix: _loopFix_js__WEBPACK_IMPORTED_MODULE_1__["default"], 29045 loopDestroy: _loopDestroy_js__WEBPACK_IMPORTED_MODULE_2__["default"] 29046}); 29047 29048/***/ }), 29049
vendor: 3,178 bytes, lines 29050-29120
29050/***/ "./node_modules/swiper/core/loop/loopCreate.js": 29051/*!*****************************************************!*\ 29052 !*** ./node_modules/swiper/core/loop/loopCreate.js ***! 29053 \*****************************************************/ 29054/*! exports provided: default */ 29055/***/ (function(module, __webpack_exports__, __webpack_require__) { 29056 29057"use strict"; 29058__webpack_require__.r(__webpack_exports__); 29059/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loopCreate; }); 29060/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 29061/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 29062 29063 29064function loopCreate() { 29065 const swiper = this; 29066 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 29067 const { 29068 params, 29069 $wrapperEl 29070 } = swiper; // Remove duplicated slides 29071 29072 const $selector = $wrapperEl.children().length > 0 ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])($wrapperEl.children()[0].parentNode) : $wrapperEl; 29073 $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove(); 29074 let slides = $selector.children(`.${params.slideClass}`); 29075 29076 if (params.loopFillGroupWithBlank) { 29077 const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; 29078 29079 if (blankSlidesNum !== params.slidesPerGroup) { 29080 for (let i = 0; i < blankSlidesNum; i += 1) { 29081 const blankNode = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`); 29082 $selector.append(blankNode); 29083 } 29084 29085 slides = $selector.children(`.${params.slideClass}`); 29086 } 29087 } 29088 29089 if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length; 29090 swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); 29091 swiper.loopedSlides += params.loopAdditionalSlides; 29092 29093 if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) { 29094 swiper.loopedSlides = slides.length; 29095 } 29096 29097 const prependSlides = []; 29098 const appendSlides = []; 29099 slides.each((el, index) => { 29100 const slide = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el); 29101 slide.attr('data-swiper-slide-index', index); 29102 }); 29103 29104 for (let i = 0; i < swiper.loopedSlides; i += 1) { 29105 const index = i - Math.floor(i / slides.length) * slides.length; 29106 appendSlides.push(slides.eq(index)[0]); 29107 prependSlides.unshift(slides.eq(slides.length - index - 1)[0]); 29108 } 29109 29110 for (let i = 0; i < appendSlides.length; i += 1) { 29111 $selector.append(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); 29112 } 29113 29114 for (let i = prependSlides.length - 1; i >= 0; i -= 1) { 29115 $selector.prepend(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass)); 29116 } 29117} 29118 29119/***/ }), 29120
vendor: 825 bytes, lines 29121-29143
29121/***/ "./node_modules/swiper/core/loop/loopDestroy.js": 29122/*!******************************************************!*\ 29123 !*** ./node_modules/swiper/core/loop/loopDestroy.js ***! 29124 \******************************************************/ 29125/*! exports provided: default */ 29126/***/ (function(module, __webpack_exports__, __webpack_require__) { 29127 29128"use strict"; 29129__webpack_require__.r(__webpack_exports__); 29130/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loopDestroy; }); 29131function loopDestroy() { 29132 const swiper = this; 29133 const { 29134 $wrapperEl, 29135 params, 29136 slides 29137 } = swiper; 29138 $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove(); 29139 slides.removeAttr('data-swiper-slide-index'); 29140} 29141 29142/***/ }), 29143
vendor: 1,763 bytes, lines 29144-29197
29144/***/ "./node_modules/swiper/core/loop/loopFix.js": 29145/*!**************************************************!*\ 29146 !*** ./node_modules/swiper/core/loop/loopFix.js ***! 29147 \**************************************************/ 29148/*! exports provided: default */ 29149/***/ (function(module, __webpack_exports__, __webpack_require__) { 29150 29151"use strict"; 29152__webpack_require__.r(__webpack_exports__); 29153/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return loopFix; }); 29154function loopFix() { 29155 const swiper = this; 29156 swiper.emit('beforeLoopFix'); 29157 const { 29158 activeIndex, 29159 slides, 29160 loopedSlides, 29161 allowSlidePrev, 29162 allowSlideNext, 29163 snapGrid, 29164 rtlTranslate: rtl 29165 } = swiper; 29166 let newIndex; 29167 swiper.allowSlidePrev = true; 29168 swiper.allowSlideNext = true; 29169 const snapTranslate = -snapGrid[activeIndex]; 29170 const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding 29171 29172 if (activeIndex < loopedSlides) { 29173 newIndex = slides.length - loopedSlides * 3 + activeIndex; 29174 newIndex += loopedSlides; 29175 const slideChanged = swiper.slideTo(newIndex, 0, false, true); 29176 29177 if (slideChanged && diff !== 0) { 29178 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 29179 } 29180 } else if (activeIndex >= slides.length - loopedSlides) { 29181 // Fix For Positive Oversliding 29182 newIndex = -slides.length + activeIndex + loopedSlides; 29183 newIndex += loopedSlides; 29184 const slideChanged = swiper.slideTo(newIndex, 0, false, true); 29185 29186 if (slideChanged && diff !== 0) { 29187 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff); 29188 } 29189 } 29190 29191 swiper.allowSlidePrev = allowSlidePrev; 29192 swiper.allowSlideNext = allowSlideNext; 29193 swiper.emit('loopFix'); 29194} 29195 29196/***/ }), 29197
vendor: 1,914 bytes, lines 29198-29249
29198/***/ "./node_modules/swiper/core/moduleExtendParams.js": 29199/*!********************************************************!*\ 29200 !*** ./node_modules/swiper/core/moduleExtendParams.js ***! 29201 \********************************************************/ 29202/*! exports provided: default */ 29203/***/ (function(module, __webpack_exports__, __webpack_require__) { 29204 29205"use strict"; 29206__webpack_require__.r(__webpack_exports__); 29207/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return moduleExtendParams; }); 29208/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 29209 29210function moduleExtendParams(params, allModulesParams) { 29211 return function extendParams(obj = {}) { 29212 const moduleParamName = Object.keys(obj)[0]; 29213 const moduleParams = obj[moduleParamName]; 29214 29215 if (typeof moduleParams !== 'object' || moduleParams === null) { 29216 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(allModulesParams, obj); 29217 return; 29218 } 29219 29220 if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) { 29221 params[moduleParamName] = { 29222 auto: true 29223 }; 29224 } 29225 29226 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 29227 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(allModulesParams, obj); 29228 return; 29229 } 29230 29231 if (params[moduleParamName] === true) { 29232 params[moduleParamName] = { 29233 enabled: true 29234 }; 29235 } 29236 29237 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 29238 params[moduleParamName].enabled = true; 29239 } 29240 29241 if (!params[moduleParamName]) params[moduleParamName] = { 29242 enabled: false 29243 }; 29244 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["extend"])(allModulesParams, obj); 29245 }; 29246} 29247 29248/***/ }), 29249
vendor: 2,751 bytes, lines 29250-29338
29250/***/ "./node_modules/swiper/core/modules/observer/observer.js": 29251/*!***************************************************************!*\ 29252 !*** ./node_modules/swiper/core/modules/observer/observer.js ***! 29253 \***************************************************************/ 29254/*! exports provided: default */ 29255/***/ (function(module, __webpack_exports__, __webpack_require__) { 29256 29257"use strict"; 29258__webpack_require__.r(__webpack_exports__); 29259/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Observer; }); 29260/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 29261 29262function Observer({ 29263 swiper, 29264 extendParams, 29265 on, 29266 emit 29267}) { 29268 const observers = []; 29269 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 29270 29271 const attach = (target, options = {}) => { 29272 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 29273 const observer = new ObserverFunc(mutations => { 29274 // The observerUpdate event should only be triggered 29275 // once despite the number of mutations. Additional 29276 // triggers are redundant and are very costly 29277 if (mutations.length === 1) { 29278 emit('observerUpdate', mutations[0]); 29279 return; 29280 } 29281 29282 const observerUpdate = function observerUpdate() { 29283 emit('observerUpdate', mutations[0]); 29284 }; 29285 29286 if (window.requestAnimationFrame) { 29287 window.requestAnimationFrame(observerUpdate); 29288 } else { 29289 window.setTimeout(observerUpdate, 0); 29290 } 29291 }); 29292 observer.observe(target, { 29293 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 29294 childList: typeof options.childList === 'undefined' ? true : options.childList, 29295 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 29296 }); 29297 observers.push(observer); 29298 }; 29299 29300 const init = () => { 29301 if (!swiper.params.observer) return; 29302 29303 if (swiper.params.observeParents) { 29304 const containerParents = swiper.$el.parents(); 29305 29306 for (let i = 0; i < containerParents.length; i += 1) { 29307 attach(containerParents[i]); 29308 } 29309 } // Observe container 29310 29311 29312 attach(swiper.$el[0], { 29313 childList: swiper.params.observeSlideChildren 29314 }); // Observe wrapper 29315 29316 attach(swiper.$wrapperEl[0], { 29317 attributes: false 29318 }); 29319 }; 29320 29321 const destroy = () => { 29322 observers.forEach(observer => { 29323 observer.disconnect(); 29324 }); 29325 observers.splice(0, observers.length); 29326 }; 29327 29328 extendParams({ 29329 observer: false, 29330 observeParents: false, 29331 observeSlideChildren: false 29332 }); 29333 on('init', init); 29334 on('destroy', destroy); 29335} 29336 29337/***/ }), 29338
vendor: 2,781 bytes, lines 29339-29427
29339/***/ "./node_modules/swiper/core/modules/resize/resize.js": 29340/*!***********************************************************!*\ 29341 !*** ./node_modules/swiper/core/modules/resize/resize.js ***! 29342 \***********************************************************/ 29343/*! exports provided: default */ 29344/***/ (function(module, __webpack_exports__, __webpack_require__) { 29345 29346"use strict"; 29347__webpack_require__.r(__webpack_exports__); 29348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Resize; }); 29349/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 29350 29351function Resize({ 29352 swiper, 29353 on, 29354 emit 29355}) { 29356 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 29357 let observer = null; 29358 let animationFrame = null; 29359 29360 const resizeHandler = () => { 29361 if (!swiper || swiper.destroyed || !swiper.initialized) return; 29362 emit('beforeResize'); 29363 emit('resize'); 29364 }; 29365 29366 const createObserver = () => { 29367 if (!swiper || swiper.destroyed || !swiper.initialized) return; 29368 observer = new ResizeObserver(entries => { 29369 animationFrame = window.requestAnimationFrame(() => { 29370 const { 29371 width, 29372 height 29373 } = swiper; 29374 let newWidth = width; 29375 let newHeight = height; 29376 entries.forEach(({ 29377 contentBoxSize, 29378 contentRect, 29379 target 29380 }) => { 29381 if (target && target !== swiper.el) return; 29382 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 29383 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 29384 }); 29385 29386 if (newWidth !== width || newHeight !== height) { 29387 resizeHandler(); 29388 } 29389 }); 29390 }); 29391 observer.observe(swiper.el); 29392 }; 29393 29394 const removeObserver = () => { 29395 if (animationFrame) { 29396 window.cancelAnimationFrame(animationFrame); 29397 } 29398 29399 if (observer && observer.unobserve && swiper.el) { 29400 observer.unobserve(swiper.el); 29401 observer = null; 29402 } 29403 }; 29404 29405 const orientationChangeHandler = () => { 29406 if (!swiper || swiper.destroyed || !swiper.initialized) return; 29407 emit('orientationchange'); 29408 }; 29409 29410 on('init', () => { 29411 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 29412 createObserver(); 29413 return; 29414 } 29415 29416 window.addEventListener('resize', resizeHandler); 29417 window.addEventListener('orientationchange', orientationChangeHandler); 29418 }); 29419 on('destroy', () => { 29420 removeObserver(); 29421 window.removeEventListener('resize', resizeHandler); 29422 window.removeEventListener('orientationchange', orientationChangeHandler); 29423 }); 29424} 29425 29426/***/ }), 29427
vendor: 2,152 bytes, lines 29428-29462
29428/***/ "./node_modules/swiper/core/slide/index.js": 29429/*!*************************************************!*\ 29430 !*** ./node_modules/swiper/core/slide/index.js ***! 29431 \*************************************************/ 29432/*! exports provided: default */ 29433/***/ (function(module, __webpack_exports__, __webpack_require__) { 29434 29435"use strict"; 29436__webpack_require__.r(__webpack_exports__); 29437/* harmony import */ var _slideTo_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slideTo.js */ "./node_modules/swiper/core/slide/slideTo.js"); 29438/* harmony import */ var _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slideToLoop.js */ "./node_modules/swiper/core/slide/slideToLoop.js"); 29439/* harmony import */ var _slideNext_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slideNext.js */ "./node_modules/swiper/core/slide/slideNext.js"); 29440/* harmony import */ var _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slidePrev.js */ "./node_modules/swiper/core/slide/slidePrev.js"); 29441/* harmony import */ var _slideReset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./slideReset.js */ "./node_modules/swiper/core/slide/slideReset.js"); 29442/* harmony import */ var _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./slideToClosest.js */ "./node_modules/swiper/core/slide/slideToClosest.js"); 29443/* harmony import */ var _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./slideToClickedSlide.js */ "./node_modules/swiper/core/slide/slideToClickedSlide.js"); 29444 29445 29446 29447 29448 29449 29450 29451/* harmony default export */ __webpack_exports__["default"] = ({ 29452 slideTo: _slideTo_js__WEBPACK_IMPORTED_MODULE_0__["default"], 29453 slideToLoop: _slideToLoop_js__WEBPACK_IMPORTED_MODULE_1__["default"], 29454 slideNext: _slideNext_js__WEBPACK_IMPORTED_MODULE_2__["default"], 29455 slidePrev: _slidePrev_js__WEBPACK_IMPORTED_MODULE_3__["default"], 29456 slideReset: _slideReset_js__WEBPACK_IMPORTED_MODULE_4__["default"], 29457 slideToClosest: _slideToClosest_js__WEBPACK_IMPORTED_MODULE_5__["default"], 29458 slideToClickedSlide: _slideToClickedSlide_js__WEBPACK_IMPORTED_MODULE_6__["default"] 29459}); 29460 29461/***/ }), 29462
vendor: 1,450 bytes, lines 29463-29505
29463/***/ "./node_modules/swiper/core/slide/slideNext.js": 29464/*!*****************************************************!*\ 29465 !*** ./node_modules/swiper/core/slide/slideNext.js ***! 29466 \*****************************************************/ 29467/*! exports provided: default */ 29468/***/ (function(module, __webpack_exports__, __webpack_require__) { 29469 29470"use strict"; 29471__webpack_require__.r(__webpack_exports__); 29472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideNext; }); 29473/* eslint no-unused-vars: "off" */ 29474function slideNext(speed = this.params.speed, runCallbacks = true, internal) { 29475 const swiper = this; 29476 const { 29477 animating, 29478 enabled, 29479 params 29480 } = swiper; 29481 if (!enabled) return swiper; 29482 let perGroup = params.slidesPerGroup; 29483 29484 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 29485 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 29486 } 29487 29488 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 29489 29490 if (params.loop) { 29491 if (animating && params.loopPreventsSlide) return false; 29492 swiper.loopFix(); // eslint-disable-next-line 29493 29494 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 29495 } 29496 29497 if (params.rewind && swiper.isEnd) { 29498 return swiper.slideTo(0, speed, runCallbacks, internal); 29499 } 29500 29501 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 29502} 29503 29504/***/ }), 29505
vendor: 2,525 bytes, lines 29506-29582
29506/***/ "./node_modules/swiper/core/slide/slidePrev.js": 29507/*!*****************************************************!*\ 29508 !*** ./node_modules/swiper/core/slide/slidePrev.js ***! 29509 \*****************************************************/ 29510/*! exports provided: default */ 29511/***/ (function(module, __webpack_exports__, __webpack_require__) { 29512 29513"use strict"; 29514__webpack_require__.r(__webpack_exports__); 29515/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slidePrev; }); 29516/* eslint no-unused-vars: "off" */ 29517function slidePrev(speed = this.params.speed, runCallbacks = true, internal) { 29518 const swiper = this; 29519 const { 29520 params, 29521 animating, 29522 snapGrid, 29523 slidesGrid, 29524 rtlTranslate, 29525 enabled 29526 } = swiper; 29527 if (!enabled) return swiper; 29528 29529 if (params.loop) { 29530 if (animating && params.loopPreventsSlide) return false; 29531 swiper.loopFix(); // eslint-disable-next-line 29532 29533 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 29534 } 29535 29536 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 29537 29538 function normalize(val) { 29539 if (val < 0) return -Math.floor(Math.abs(val)); 29540 return Math.floor(val); 29541 } 29542 29543 const normalizedTranslate = normalize(translate); 29544 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 29545 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 29546 29547 if (typeof prevSnap === 'undefined' && params.cssMode) { 29548 let prevSnapIndex; 29549 snapGrid.forEach((snap, snapIndex) => { 29550 if (normalizedTranslate >= snap) { 29551 // prevSnap = snap; 29552 prevSnapIndex = snapIndex; 29553 } 29554 }); 29555 29556 if (typeof prevSnapIndex !== 'undefined') { 29557 prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 29558 } 29559 } 29560 29561 let prevIndex = 0; 29562 29563 if (typeof prevSnap !== 'undefined') { 29564 prevIndex = slidesGrid.indexOf(prevSnap); 29565 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 29566 29567 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 29568 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 29569 prevIndex = Math.max(prevIndex, 0); 29570 } 29571 } 29572 29573 if (params.rewind && swiper.isBeginning) { 29574 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 29575 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 29576 } 29577 29578 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 29579} 29580 29581/***/ }), 29582
vendor: 744 bytes, lines 29583-29600
29583/***/ "./node_modules/swiper/core/slide/slideReset.js": 29584/*!******************************************************!*\ 29585 !*** ./node_modules/swiper/core/slide/slideReset.js ***! 29586 \******************************************************/ 29587/*! exports provided: default */ 29588/***/ (function(module, __webpack_exports__, __webpack_require__) { 29589 29590"use strict"; 29591__webpack_require__.r(__webpack_exports__); 29592/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideReset; }); 29593/* eslint no-unused-vars: "off" */ 29594function slideReset(speed = this.params.speed, runCallbacks = true, internal) { 29595 const swiper = this; 29596 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 29597} 29598 29599/***/ }), 29600
vendor: 6,461 bytes, lines 29601-29794
29601/***/ "./node_modules/swiper/core/slide/slideTo.js": 29602/*!***************************************************!*\ 29603 !*** ./node_modules/swiper/core/slide/slideTo.js ***! 29604 \***************************************************/ 29605/*! exports provided: default */ 29606/***/ (function(module, __webpack_exports__, __webpack_require__) { 29607 29608"use strict"; 29609__webpack_require__.r(__webpack_exports__); 29610/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideTo; }); 29611/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 29612 29613function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) { 29614 if (typeof index !== 'number' && typeof index !== 'string') { 29615 throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`); 29616 } 29617 29618 if (typeof index === 'string') { 29619 /** 29620 * The `index` argument converted from `string` to `number`. 29621 * @type {number} 29622 */ 29623 const indexAsNumber = parseInt(index, 10); 29624 /** 29625 * Determines whether the `index` argument is a valid `number` 29626 * after being converted from the `string` type. 29627 * @type {boolean} 29628 */ 29629 29630 const isValidNumber = isFinite(indexAsNumber); 29631 29632 if (!isValidNumber) { 29633 throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); 29634 } // Knowing that the converted `index` is a valid number, 29635 // we can update the original argument's value. 29636 29637 29638 index = indexAsNumber; 29639 } 29640 29641 const swiper = this; 29642 let slideIndex = index; 29643 if (slideIndex < 0) slideIndex = 0; 29644 const { 29645 params, 29646 snapGrid, 29647 slidesGrid, 29648 previousIndex, 29649 activeIndex, 29650 rtlTranslate: rtl, 29651 wrapperEl, 29652 enabled 29653 } = swiper; 29654 29655 if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) { 29656 return false; 29657 } 29658 29659 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 29660 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 29661 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 29662 const translate = -snapGrid[snapIndex]; // Normalize slideIndex 29663 29664 if (params.normalizeSlideIndex) { 29665 for (let i = 0; i < slidesGrid.length; i += 1) { 29666 const normalizedTranslate = -Math.floor(translate * 100); 29667 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 29668 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 29669 29670 if (typeof slidesGrid[i + 1] !== 'undefined') { 29671 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 29672 slideIndex = i; 29673 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 29674 slideIndex = i + 1; 29675 } 29676 } else if (normalizedTranslate >= normalizedGrid) { 29677 slideIndex = i; 29678 } 29679 } 29680 } // Directions locks 29681 29682 29683 if (swiper.initialized && slideIndex !== activeIndex) { 29684 if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { 29685 return false; 29686 } 29687 29688 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 29689 if ((activeIndex || 0) !== slideIndex) return false; 29690 } 29691 } 29692 29693 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 29694 swiper.emit('beforeSlideChangeStart'); 29695 } // Update progress 29696 29697 29698 swiper.updateProgress(translate); 29699 let direction; 29700 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index 29701 29702 if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { 29703 swiper.updateActiveIndex(slideIndex); // Update Height 29704 29705 if (params.autoHeight) { 29706 swiper.updateAutoHeight(); 29707 } 29708 29709 swiper.updateSlidesClasses(); 29710 29711 if (params.effect !== 'slide') { 29712 swiper.setTranslate(translate); 29713 } 29714 29715 if (direction !== 'reset') { 29716 swiper.transitionStart(runCallbacks, direction); 29717 swiper.transitionEnd(runCallbacks, direction); 29718 } 29719 29720 return false; 29721 } 29722 29723 if (params.cssMode) { 29724 const isH = swiper.isHorizontal(); 29725 const t = rtl ? translate : -translate; 29726 29727 if (speed === 0) { 29728 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 29729 29730 if (isVirtual) { 29731 swiper.wrapperEl.style.scrollSnapType = 'none'; 29732 swiper._immediateVirtual = true; 29733 } 29734 29735 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 29736 29737 if (isVirtual) { 29738 requestAnimationFrame(() => { 29739 swiper.wrapperEl.style.scrollSnapType = ''; 29740 swiper._swiperImmediateVirtual = false; 29741 }); 29742 } 29743 } else { 29744 if (!swiper.support.smoothScroll) { 29745 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["animateCSSModeScroll"])({ 29746 swiper, 29747 targetPosition: t, 29748 side: isH ? 'left' : 'top' 29749 }); 29750 return true; 29751 } 29752 29753 wrapperEl.scrollTo({ 29754 [isH ? 'left' : 'top']: t, 29755 behavior: 'smooth' 29756 }); 29757 } 29758 29759 return true; 29760 } 29761 29762 swiper.setTransition(speed); 29763 swiper.setTranslate(translate); 29764 swiper.updateActiveIndex(slideIndex); 29765 swiper.updateSlidesClasses(); 29766 swiper.emit('beforeTransitionStart', speed, internal); 29767 swiper.transitionStart(runCallbacks, direction); 29768 29769 if (speed === 0) { 29770 swiper.transitionEnd(runCallbacks, direction); 29771 } else if (!swiper.animating) { 29772 swiper.animating = true; 29773 29774 if (!swiper.onSlideToWrapperTransitionEnd) { 29775 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 29776 if (!swiper || swiper.destroyed) return; 29777 if (e.target !== this) return; 29778 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 29779 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 29780 swiper.onSlideToWrapperTransitionEnd = null; 29781 delete swiper.onSlideToWrapperTransitionEnd; 29782 swiper.transitionEnd(runCallbacks, direction); 29783 }; 29784 } 29785 29786 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 29787 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd); 29788 } 29789 29790 return true; 29791} 29792 29793/***/ }), 29794
vendor: 2,426 bytes, lines 29795-29848
29795/***/ "./node_modules/swiper/core/slide/slideToClickedSlide.js": 29796/*!***************************************************************!*\ 29797 !*** ./node_modules/swiper/core/slide/slideToClickedSlide.js ***! 29798 \***************************************************************/ 29799/*! exports provided: default */ 29800/***/ (function(module, __webpack_exports__, __webpack_require__) { 29801 29802"use strict"; 29803__webpack_require__.r(__webpack_exports__); 29804/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideToClickedSlide; }); 29805/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 29806/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 29807 29808 29809function slideToClickedSlide() { 29810 const swiper = this; 29811 const { 29812 params, 29813 $wrapperEl 29814 } = swiper; 29815 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 29816 let slideToIndex = swiper.clickedIndex; 29817 let realIndex; 29818 29819 if (params.loop) { 29820 if (swiper.animating) return; 29821 realIndex = parseInt(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.clickedSlide).attr('data-swiper-slide-index'), 10); 29822 29823 if (params.centeredSlides) { 29824 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 29825 swiper.loopFix(); 29826 slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); 29827 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["nextTick"])(() => { 29828 swiper.slideTo(slideToIndex); 29829 }); 29830 } else { 29831 swiper.slideTo(slideToIndex); 29832 } 29833 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 29834 swiper.loopFix(); 29835 slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index="${realIndex}"]:not(.${params.slideDuplicateClass})`).eq(0).index(); 29836 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["nextTick"])(() => { 29837 swiper.slideTo(slideToIndex); 29838 }); 29839 } else { 29840 swiper.slideTo(slideToIndex); 29841 } 29842 } else { 29843 swiper.slideTo(slideToIndex); 29844 } 29845} 29846 29847/***/ }), 29848
vendor: 1,927 bytes, lines 29849-29893
29849/***/ "./node_modules/swiper/core/slide/slideToClosest.js": 29850/*!**********************************************************!*\ 29851 !*** ./node_modules/swiper/core/slide/slideToClosest.js ***! 29852 \**********************************************************/ 29853/*! exports provided: default */ 29854/***/ (function(module, __webpack_exports__, __webpack_require__) { 29855 29856"use strict"; 29857__webpack_require__.r(__webpack_exports__); 29858/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideToClosest; }); 29859/* eslint no-unused-vars: "off" */ 29860function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) { 29861 const swiper = this; 29862 let index = swiper.activeIndex; 29863 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 29864 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 29865 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 29866 29867 if (translate >= swiper.snapGrid[snapIndex]) { 29868 // The current translate is on or after the current snap index, so the choice 29869 // is between the current index and the one after it. 29870 const currentSnap = swiper.snapGrid[snapIndex]; 29871 const nextSnap = swiper.snapGrid[snapIndex + 1]; 29872 29873 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 29874 index += swiper.params.slidesPerGroup; 29875 } 29876 } else { 29877 // The current translate is before the current snap index, so the choice 29878 // is between the current index and the one before it. 29879 const prevSnap = swiper.snapGrid[snapIndex - 1]; 29880 const currentSnap = swiper.snapGrid[snapIndex]; 29881 29882 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 29883 index -= swiper.params.slidesPerGroup; 29884 } 29885 } 29886 29887 index = Math.max(index, 0); 29888 index = Math.min(index, swiper.slidesGrid.length - 1); 29889 return swiper.slideTo(index, speed, runCallbacks, internal); 29890} 29891 29892/***/ }), 29893
vendor: 1,493 bytes, lines 29894-29939
29894/***/ "./node_modules/swiper/core/slide/slideToLoop.js": 29895/*!*******************************************************!*\ 29896 !*** ./node_modules/swiper/core/slide/slideToLoop.js ***! 29897 \*******************************************************/ 29898/*! exports provided: default */ 29899/***/ (function(module, __webpack_exports__, __webpack_require__) { 29900 29901"use strict"; 29902__webpack_require__.r(__webpack_exports__); 29903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return slideToLoop; }); 29904function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) { 29905 if (typeof index === 'string') { 29906 /** 29907 * The `index` argument converted from `string` to `number`. 29908 * @type {number} 29909 */ 29910 const indexAsNumber = parseInt(index, 10); 29911 /** 29912 * Determines whether the `index` argument is a valid `number` 29913 * after being converted from the `string` type. 29914 * @type {boolean} 29915 */ 29916 29917 const isValidNumber = isFinite(indexAsNumber); 29918 29919 if (!isValidNumber) { 29920 throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`); 29921 } // Knowing that the converted `index` is a valid number, 29922 // we can update the original argument's value. 29923 29924 29925 index = indexAsNumber; 29926 } 29927 29928 const swiper = this; 29929 let newIndex = index; 29930 29931 if (swiper.params.loop) { 29932 newIndex += swiper.loopedSlides; 29933 } 29934 29935 return swiper.slideTo(newIndex, speed, runCallbacks, internal); 29936} 29937 29938/***/ }), 29939
vendor: 1,253 bytes, lines 29940-29962
29940/***/ "./node_modules/swiper/core/transition/index.js": 29941/*!******************************************************!*\ 29942 !*** ./node_modules/swiper/core/transition/index.js ***! 29943 \******************************************************/ 29944/*! exports provided: default */ 29945/***/ (function(module, __webpack_exports__, __webpack_require__) { 29946 29947"use strict"; 29948__webpack_require__.r(__webpack_exports__); 29949/* harmony import */ var _setTransition_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setTransition.js */ "./node_modules/swiper/core/transition/setTransition.js"); 29950/* harmony import */ var _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./transitionStart.js */ "./node_modules/swiper/core/transition/transitionStart.js"); 29951/* harmony import */ var _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./transitionEnd.js */ "./node_modules/swiper/core/transition/transitionEnd.js"); 29952 29953 29954 29955/* harmony default export */ __webpack_exports__["default"] = ({ 29956 setTransition: _setTransition_js__WEBPACK_IMPORTED_MODULE_0__["default"], 29957 transitionStart: _transitionStart_js__WEBPACK_IMPORTED_MODULE_1__["default"], 29958 transitionEnd: _transitionEnd_js__WEBPACK_IMPORTED_MODULE_2__["default"] 29959}); 29960 29961/***/ }), 29962
vendor: 775 bytes, lines 29963-29984
29963/***/ "./node_modules/swiper/core/transition/setTransition.js": 29964/*!**************************************************************!*\ 29965 !*** ./node_modules/swiper/core/transition/setTransition.js ***! 29966 \**************************************************************/ 29967/*! exports provided: default */ 29968/***/ (function(module, __webpack_exports__, __webpack_require__) { 29969 29970"use strict"; 29971__webpack_require__.r(__webpack_exports__); 29972/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setTransition; }); 29973function setTransition(duration, byController) { 29974 const swiper = this; 29975 29976 if (!swiper.params.cssMode) { 29977 swiper.$wrapperEl.transition(duration); 29978 } 29979 29980 swiper.emit('setTransition', duration, byController); 29981} 29982 29983/***/ }), 29984
vendor: 1,257 bytes, lines 29985-30030
29985/***/ "./node_modules/swiper/core/transition/transitionEmit.js": 29986/*!***************************************************************!*\ 29987 !*** ./node_modules/swiper/core/transition/transitionEmit.js ***! 29988 \***************************************************************/ 29989/*! exports provided: default */ 29990/***/ (function(module, __webpack_exports__, __webpack_require__) { 29991 29992"use strict"; 29993__webpack_require__.r(__webpack_exports__); 29994/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transitionEmit; }); 29995function transitionEmit({ 29996 swiper, 29997 runCallbacks, 29998 direction, 29999 step 30000}) { 30001 const { 30002 activeIndex, 30003 previousIndex 30004 } = swiper; 30005 let dir = direction; 30006 30007 if (!dir) { 30008 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 30009 } 30010 30011 swiper.emit(`transition${step}`); 30012 30013 if (runCallbacks && activeIndex !== previousIndex) { 30014 if (dir === 'reset') { 30015 swiper.emit(`slideResetTransition${step}`); 30016 return; 30017 } 30018 30019 swiper.emit(`slideChangeTransition${step}`); 30020 30021 if (dir === 'next') { 30022 swiper.emit(`slideNextTransition${step}`); 30023 } else { 30024 swiper.emit(`slidePrevTransition${step}`); 30025 } 30026 } 30027} 30028 30029/***/ }), 30030
vendor: 1,086 bytes, lines 30031-30060
30031/***/ "./node_modules/swiper/core/transition/transitionEnd.js": 30032/*!**************************************************************!*\ 30033 !*** ./node_modules/swiper/core/transition/transitionEnd.js ***! 30034 \**************************************************************/ 30035/*! exports provided: default */ 30036/***/ (function(module, __webpack_exports__, __webpack_require__) { 30037 30038"use strict"; 30039__webpack_require__.r(__webpack_exports__); 30040/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transitionEnd; }); 30041/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js"); 30042 30043function transitionEnd(runCallbacks = true, direction) { 30044 const swiper = this; 30045 const { 30046 params 30047 } = swiper; 30048 swiper.animating = false; 30049 if (params.cssMode) return; 30050 swiper.setTransition(0); 30051 Object(_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ 30052 swiper, 30053 runCallbacks, 30054 direction, 30055 step: 'End' 30056 }); 30057} 30058 30059/***/ }), 30060
vendor: 1,109 bytes, lines 30061-30093
30061/***/ "./node_modules/swiper/core/transition/transitionStart.js": 30062/*!****************************************************************!*\ 30063 !*** ./node_modules/swiper/core/transition/transitionStart.js ***! 30064 \****************************************************************/ 30065/*! exports provided: default */ 30066/***/ (function(module, __webpack_exports__, __webpack_require__) { 30067 30068"use strict"; 30069__webpack_require__.r(__webpack_exports__); 30070/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return transitionStart; }); 30071/* harmony import */ var _transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./transitionEmit.js */ "./node_modules/swiper/core/transition/transitionEmit.js"); 30072 30073function transitionStart(runCallbacks = true, direction) { 30074 const swiper = this; 30075 const { 30076 params 30077 } = swiper; 30078 if (params.cssMode) return; 30079 30080 if (params.autoHeight) { 30081 swiper.updateAutoHeight(); 30082 } 30083 30084 Object(_transitionEmit_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ 30085 swiper, 30086 runCallbacks, 30087 direction, 30088 step: 'Start' 30089 }); 30090} 30091 30092/***/ }), 30093
vendor: 1,238 bytes, lines 30094-30129
30094/***/ "./node_modules/swiper/core/translate/getTranslate.js": 30095/*!************************************************************!*\ 30096 !*** ./node_modules/swiper/core/translate/getTranslate.js ***! 30097 \************************************************************/ 30098/*! exports provided: default */ 30099/***/ (function(module, __webpack_exports__, __webpack_require__) { 30100 30101"use strict"; 30102__webpack_require__.r(__webpack_exports__); 30103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return getSwiperTranslate; }); 30104/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 30105 30106function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') { 30107 const swiper = this; 30108 const { 30109 params, 30110 rtlTranslate: rtl, 30111 translate, 30112 $wrapperEl 30113 } = swiper; 30114 30115 if (params.virtualTranslate) { 30116 return rtl ? -translate : translate; 30117 } 30118 30119 if (params.cssMode) { 30120 return translate; 30121 } 30122 30123 let currentTranslate = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["getTranslate"])($wrapperEl[0], axis); 30124 if (rtl) currentTranslate = -currentTranslate; 30125 return currentTranslate || 0; 30126} 30127 30128/***/ }), 30129
vendor: 1,716 bytes, lines 30130-30158
30130/***/ "./node_modules/swiper/core/translate/index.js": 30131/*!*****************************************************!*\ 30132 !*** ./node_modules/swiper/core/translate/index.js ***! 30133 \*****************************************************/ 30134/*! exports provided: default */ 30135/***/ (function(module, __webpack_exports__, __webpack_require__) { 30136 30137"use strict"; 30138__webpack_require__.r(__webpack_exports__); 30139/* harmony import */ var _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getTranslate.js */ "./node_modules/swiper/core/translate/getTranslate.js"); 30140/* harmony import */ var _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setTranslate.js */ "./node_modules/swiper/core/translate/setTranslate.js"); 30141/* harmony import */ var _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./minTranslate.js */ "./node_modules/swiper/core/translate/minTranslate.js"); 30142/* harmony import */ var _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./maxTranslate.js */ "./node_modules/swiper/core/translate/maxTranslate.js"); 30143/* harmony import */ var _translateTo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./translateTo.js */ "./node_modules/swiper/core/translate/translateTo.js"); 30144 30145 30146 30147 30148 30149/* harmony default export */ __webpack_exports__["default"] = ({ 30150 getTranslate: _getTranslate_js__WEBPACK_IMPORTED_MODULE_0__["default"], 30151 setTranslate: _setTranslate_js__WEBPACK_IMPORTED_MODULE_1__["default"], 30152 minTranslate: _minTranslate_js__WEBPACK_IMPORTED_MODULE_2__["default"], 30153 maxTranslate: _maxTranslate_js__WEBPACK_IMPORTED_MODULE_3__["default"], 30154 translateTo: _translateTo_js__WEBPACK_IMPORTED_MODULE_4__["default"] 30155}); 30156 30157/***/ }), 30158
vendor: 633 bytes, lines 30159-30174
30159/***/ "./node_modules/swiper/core/translate/maxTranslate.js": 30160/*!************************************************************!*\ 30161 !*** ./node_modules/swiper/core/translate/maxTranslate.js ***! 30162 \************************************************************/ 30163/*! exports provided: default */ 30164/***/ (function(module, __webpack_exports__, __webpack_require__) { 30165 30166"use strict"; 30167__webpack_require__.r(__webpack_exports__); 30168/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return maxTranslate; }); 30169function maxTranslate() { 30170 return -this.snapGrid[this.snapGrid.length - 1]; 30171} 30172 30173/***/ }), 30174
vendor: 610 bytes, lines 30175-30190
30175/***/ "./node_modules/swiper/core/translate/minTranslate.js": 30176/*!************************************************************!*\ 30177 !*** ./node_modules/swiper/core/translate/minTranslate.js ***! 30178 \************************************************************/ 30179/*! exports provided: default */ 30180/***/ (function(module, __webpack_exports__, __webpack_require__) { 30181 30182"use strict"; 30183__webpack_require__.r(__webpack_exports__); 30184/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return minTranslate; }); 30185function minTranslate() { 30186 return -this.snapGrid[0]; 30187} 30188 30189/***/ }), 30190
vendor: 1,703 bytes, lines 30191-30251
30191/***/ "./node_modules/swiper/core/translate/setTranslate.js": 30192/*!************************************************************!*\ 30193 !*** ./node_modules/swiper/core/translate/setTranslate.js ***! 30194 \************************************************************/ 30195/*! exports provided: default */ 30196/***/ (function(module, __webpack_exports__, __webpack_require__) { 30197 30198"use strict"; 30199__webpack_require__.r(__webpack_exports__); 30200/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return setTranslate; }); 30201function setTranslate(translate, byController) { 30202 const swiper = this; 30203 const { 30204 rtlTranslate: rtl, 30205 params, 30206 $wrapperEl, 30207 wrapperEl, 30208 progress 30209 } = swiper; 30210 let x = 0; 30211 let y = 0; 30212 const z = 0; 30213 30214 if (swiper.isHorizontal()) { 30215 x = rtl ? -translate : translate; 30216 } else { 30217 y = translate; 30218 } 30219 30220 if (params.roundLengths) { 30221 x = Math.floor(x); 30222 y = Math.floor(y); 30223 } 30224 30225 if (params.cssMode) { 30226 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 30227 } else if (!params.virtualTranslate) { 30228 $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`); 30229 } 30230 30231 swiper.previousTranslate = swiper.translate; 30232 swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress 30233 30234 let newProgress; 30235 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 30236 30237 if (translatesDiff === 0) { 30238 newProgress = 0; 30239 } else { 30240 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 30241 } 30242 30243 if (newProgress !== progress) { 30244 swiper.updateProgress(translate); 30245 } 30246 30247 swiper.emit('setTranslate', swiper.translate, byController); 30248} 30249 30250/***/ }), 30251
vendor: 3,348 bytes, lines 30252-30350
30252/***/ "./node_modules/swiper/core/translate/translateTo.js": 30253/*!***********************************************************!*\ 30254 !*** ./node_modules/swiper/core/translate/translateTo.js ***! 30255 \***********************************************************/ 30256/*! exports provided: default */ 30257/***/ (function(module, __webpack_exports__, __webpack_require__) { 30258 30259"use strict"; 30260__webpack_require__.r(__webpack_exports__); 30261/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return translateTo; }); 30262/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 30263 30264function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) { 30265 const swiper = this; 30266 const { 30267 params, 30268 wrapperEl 30269 } = swiper; 30270 30271 if (swiper.animating && params.preventInteractionOnTransition) { 30272 return false; 30273 } 30274 30275 const minTranslate = swiper.minTranslate(); 30276 const maxTranslate = swiper.maxTranslate(); 30277 let newTranslate; 30278 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress 30279 30280 swiper.updateProgress(newTranslate); 30281 30282 if (params.cssMode) { 30283 const isH = swiper.isHorizontal(); 30284 30285 if (speed === 0) { 30286 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 30287 } else { 30288 if (!swiper.support.smoothScroll) { 30289 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["animateCSSModeScroll"])({ 30290 swiper, 30291 targetPosition: -newTranslate, 30292 side: isH ? 'left' : 'top' 30293 }); 30294 return true; 30295 } 30296 30297 wrapperEl.scrollTo({ 30298 [isH ? 'left' : 'top']: -newTranslate, 30299 behavior: 'smooth' 30300 }); 30301 } 30302 30303 return true; 30304 } 30305 30306 if (speed === 0) { 30307 swiper.setTransition(0); 30308 swiper.setTranslate(newTranslate); 30309 30310 if (runCallbacks) { 30311 swiper.emit('beforeTransitionStart', speed, internal); 30312 swiper.emit('transitionEnd'); 30313 } 30314 } else { 30315 swiper.setTransition(speed); 30316 swiper.setTranslate(newTranslate); 30317 30318 if (runCallbacks) { 30319 swiper.emit('beforeTransitionStart', speed, internal); 30320 swiper.emit('transitionStart'); 30321 } 30322 30323 if (!swiper.animating) { 30324 swiper.animating = true; 30325 30326 if (!swiper.onTranslateToWrapperTransitionEnd) { 30327 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 30328 if (!swiper || swiper.destroyed) return; 30329 if (e.target !== this) return; 30330 swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 30331 swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); 30332 swiper.onTranslateToWrapperTransitionEnd = null; 30333 delete swiper.onTranslateToWrapperTransitionEnd; 30334 30335 if (runCallbacks) { 30336 swiper.emit('transitionEnd'); 30337 } 30338 }; 30339 } 30340 30341 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 30342 swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd); 30343 } 30344 } 30345 30346 return true; 30347} 30348 30349/***/ }), 30350
vendor: 2,862 bytes, lines 30351-30391
30351/***/ "./node_modules/swiper/core/update/index.js": 30352/*!**************************************************!*\ 30353 !*** ./node_modules/swiper/core/update/index.js ***! 30354 \**************************************************/ 30355/*! exports provided: default */ 30356/***/ (function(module, __webpack_exports__, __webpack_require__) { 30357 30358"use strict"; 30359__webpack_require__.r(__webpack_exports__); 30360/* harmony import */ var _updateSize_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./updateSize.js */ "./node_modules/swiper/core/update/updateSize.js"); 30361/* harmony import */ var _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./updateSlides.js */ "./node_modules/swiper/core/update/updateSlides.js"); 30362/* harmony import */ var _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./updateAutoHeight.js */ "./node_modules/swiper/core/update/updateAutoHeight.js"); 30363/* harmony import */ var _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./updateSlidesOffset.js */ "./node_modules/swiper/core/update/updateSlidesOffset.js"); 30364/* harmony import */ var _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./updateSlidesProgress.js */ "./node_modules/swiper/core/update/updateSlidesProgress.js"); 30365/* harmony import */ var _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./updateProgress.js */ "./node_modules/swiper/core/update/updateProgress.js"); 30366/* harmony import */ var _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./updateSlidesClasses.js */ "./node_modules/swiper/core/update/updateSlidesClasses.js"); 30367/* harmony import */ var _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./updateActiveIndex.js */ "./node_modules/swiper/core/update/updateActiveIndex.js"); 30368/* harmony import */ var _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./updateClickedSlide.js */ "./node_modules/swiper/core/update/updateClickedSlide.js"); 30369 30370 30371 30372 30373 30374 30375 30376 30377 30378/* harmony default export */ __webpack_exports__["default"] = ({ 30379 updateSize: _updateSize_js__WEBPACK_IMPORTED_MODULE_0__["default"], 30380 updateSlides: _updateSlides_js__WEBPACK_IMPORTED_MODULE_1__["default"], 30381 updateAutoHeight: _updateAutoHeight_js__WEBPACK_IMPORTED_MODULE_2__["default"], 30382 updateSlidesOffset: _updateSlidesOffset_js__WEBPACK_IMPORTED_MODULE_3__["default"], 30383 updateSlidesProgress: _updateSlidesProgress_js__WEBPACK_IMPORTED_MODULE_4__["default"], 30384 updateProgress: _updateProgress_js__WEBPACK_IMPORTED_MODULE_5__["default"], 30385 updateSlidesClasses: _updateSlidesClasses_js__WEBPACK_IMPORTED_MODULE_6__["default"], 30386 updateActiveIndex: _updateActiveIndex_js__WEBPACK_IMPORTED_MODULE_7__["default"], 30387 updateClickedSlide: _updateClickedSlide_js__WEBPACK_IMPORTED_MODULE_8__["default"] 30388}); 30389 30390/***/ }), 30391
vendor: 2,579 bytes, lines 30392-30474
30392/***/ "./node_modules/swiper/core/update/updateActiveIndex.js": 30393/*!**************************************************************!*\ 30394 !*** ./node_modules/swiper/core/update/updateActiveIndex.js ***! 30395 \**************************************************************/ 30396/*! exports provided: default */ 30397/***/ (function(module, __webpack_exports__, __webpack_require__) { 30398 30399"use strict"; 30400__webpack_require__.r(__webpack_exports__); 30401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateActiveIndex; }); 30402function updateActiveIndex(newActiveIndex) { 30403 const swiper = this; 30404 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 30405 const { 30406 slidesGrid, 30407 snapGrid, 30408 params, 30409 activeIndex: previousIndex, 30410 realIndex: previousRealIndex, 30411 snapIndex: previousSnapIndex 30412 } = swiper; 30413 let activeIndex = newActiveIndex; 30414 let snapIndex; 30415 30416 if (typeof activeIndex === 'undefined') { 30417 for (let i = 0; i < slidesGrid.length; i += 1) { 30418 if (typeof slidesGrid[i + 1] !== 'undefined') { 30419 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 30420 activeIndex = i; 30421 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 30422 activeIndex = i + 1; 30423 } 30424 } else if (translate >= slidesGrid[i]) { 30425 activeIndex = i; 30426 } 30427 } // Normalize slideIndex 30428 30429 30430 if (params.normalizeSlideIndex) { 30431 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 30432 } 30433 } 30434 30435 if (snapGrid.indexOf(translate) >= 0) { 30436 snapIndex = snapGrid.indexOf(translate); 30437 } else { 30438 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 30439 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 30440 } 30441 30442 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 30443 30444 if (activeIndex === previousIndex) { 30445 if (snapIndex !== previousSnapIndex) { 30446 swiper.snapIndex = snapIndex; 30447 swiper.emit('snapIndexChange'); 30448 } 30449 30450 return; 30451 } // Get real index 30452 30453 30454 const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10); 30455 Object.assign(swiper, { 30456 snapIndex, 30457 realIndex, 30458 previousIndex, 30459 activeIndex 30460 }); 30461 swiper.emit('activeIndexChange'); 30462 swiper.emit('snapIndexChange'); 30463 30464 if (previousRealIndex !== realIndex) { 30465 swiper.emit('realIndexChange'); 30466 } 30467 30468 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 30469 swiper.emit('slideChange'); 30470 } 30471} 30472 30473/***/ }), 30474
vendor: 2,304 bytes, lines 30475-30538
30475/***/ "./node_modules/swiper/core/update/updateAutoHeight.js": 30476/*!*************************************************************!*\ 30477 !*** ./node_modules/swiper/core/update/updateAutoHeight.js ***! 30478 \*************************************************************/ 30479/*! exports provided: default */ 30480/***/ (function(module, __webpack_exports__, __webpack_require__) { 30481 30482"use strict"; 30483__webpack_require__.r(__webpack_exports__); 30484/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateAutoHeight; }); 30485/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 30486 30487function updateAutoHeight(speed) { 30488 const swiper = this; 30489 const activeSlides = []; 30490 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 30491 let newHeight = 0; 30492 let i; 30493 30494 if (typeof speed === 'number') { 30495 swiper.setTransition(speed); 30496 } else if (speed === true) { 30497 swiper.setTransition(swiper.params.speed); 30498 } 30499 30500 const getSlideByIndex = index => { 30501 if (isVirtual) { 30502 return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0]; 30503 } 30504 30505 return swiper.slides.eq(index)[0]; 30506 }; // Find slides currently in view 30507 30508 30509 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 30510 if (swiper.params.centeredSlides) { 30511 (swiper.visibleSlides || Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])([])).each(slide => { 30512 activeSlides.push(slide); 30513 }); 30514 } else { 30515 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 30516 const index = swiper.activeIndex + i; 30517 if (index > swiper.slides.length && !isVirtual) break; 30518 activeSlides.push(getSlideByIndex(index)); 30519 } 30520 } 30521 } else { 30522 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 30523 } // Find new height from highest slide in view 30524 30525 30526 for (i = 0; i < activeSlides.length; i += 1) { 30527 if (typeof activeSlides[i] !== 'undefined') { 30528 const height = activeSlides[i].offsetHeight; 30529 newHeight = height > newHeight ? height : newHeight; 30530 } 30531 } // Update Height 30532 30533 30534 if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`); 30535} 30536 30537/***/ }), 30538
vendor: 1,766 bytes, lines 30539-30588
30539/***/ "./node_modules/swiper/core/update/updateClickedSlide.js": 30540/*!***************************************************************!*\ 30541 !*** ./node_modules/swiper/core/update/updateClickedSlide.js ***! 30542 \***************************************************************/ 30543/*! exports provided: default */ 30544/***/ (function(module, __webpack_exports__, __webpack_require__) { 30545 30546"use strict"; 30547__webpack_require__.r(__webpack_exports__); 30548/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateClickedSlide; }); 30549/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 30550 30551function updateClickedSlide(e) { 30552 const swiper = this; 30553 const params = swiper.params; 30554 const slide = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(e).closest(`.${params.slideClass}`)[0]; 30555 let slideFound = false; 30556 let slideIndex; 30557 30558 if (slide) { 30559 for (let i = 0; i < swiper.slides.length; i += 1) { 30560 if (swiper.slides[i] === slide) { 30561 slideFound = true; 30562 slideIndex = i; 30563 break; 30564 } 30565 } 30566 } 30567 30568 if (slide && slideFound) { 30569 swiper.clickedSlide = slide; 30570 30571 if (swiper.virtual && swiper.params.virtual.enabled) { 30572 swiper.clickedIndex = parseInt(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slide).attr('data-swiper-slide-index'), 10); 30573 } else { 30574 swiper.clickedIndex = slideIndex; 30575 } 30576 } else { 30577 swiper.clickedSlide = undefined; 30578 swiper.clickedIndex = undefined; 30579 return; 30580 } 30581 30582 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 30583 swiper.slideToClickedSlide(); 30584 } 30585} 30586 30587/***/ }), 30588
vendor: 1,764 bytes, lines 30589-30651
30589/***/ "./node_modules/swiper/core/update/updateProgress.js": 30590/*!***********************************************************!*\ 30591 !*** ./node_modules/swiper/core/update/updateProgress.js ***! 30592 \***********************************************************/ 30593/*! exports provided: default */ 30594/***/ (function(module, __webpack_exports__, __webpack_require__) { 30595 30596"use strict"; 30597__webpack_require__.r(__webpack_exports__); 30598/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateProgress; }); 30599function updateProgress(translate) { 30600 const swiper = this; 30601 30602 if (typeof translate === 'undefined') { 30603 const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line 30604 30605 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 30606 } 30607 30608 const params = swiper.params; 30609 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 30610 let { 30611 progress, 30612 isBeginning, 30613 isEnd 30614 } = swiper; 30615 const wasBeginning = isBeginning; 30616 const wasEnd = isEnd; 30617 30618 if (translatesDiff === 0) { 30619 progress = 0; 30620 isBeginning = true; 30621 isEnd = true; 30622 } else { 30623 progress = (translate - swiper.minTranslate()) / translatesDiff; 30624 isBeginning = progress <= 0; 30625 isEnd = progress >= 1; 30626 } 30627 30628 Object.assign(swiper, { 30629 progress, 30630 isBeginning, 30631 isEnd 30632 }); 30633 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 30634 30635 if (isBeginning && !wasBeginning) { 30636 swiper.emit('reachBeginning toEdge'); 30637 } 30638 30639 if (isEnd && !wasEnd) { 30640 swiper.emit('reachEnd toEdge'); 30641 } 30642 30643 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 30644 swiper.emit('fromEdge'); 30645 } 30646 30647 swiper.emit('progress', progress); 30648} 30649 30650/***/ }), 30651
vendor: 1,495 bytes, lines 30652-30697
30652/***/ "./node_modules/swiper/core/update/updateSize.js": 30653/*!*******************************************************!*\ 30654 !*** ./node_modules/swiper/core/update/updateSize.js ***! 30655 \*******************************************************/ 30656/*! exports provided: default */ 30657/***/ (function(module, __webpack_exports__, __webpack_require__) { 30658 30659"use strict"; 30660__webpack_require__.r(__webpack_exports__); 30661/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSize; }); 30662function updateSize() { 30663 const swiper = this; 30664 let width; 30665 let height; 30666 const $el = swiper.$el; 30667 30668 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 30669 width = swiper.params.width; 30670 } else { 30671 width = $el[0].clientWidth; 30672 } 30673 30674 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 30675 height = swiper.params.height; 30676 } else { 30677 height = $el[0].clientHeight; 30678 } 30679 30680 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 30681 return; 30682 } // Subtract paddings 30683 30684 30685 width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10); 30686 height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10); 30687 if (Number.isNaN(width)) width = 0; 30688 if (Number.isNaN(height)) height = 0; 30689 Object.assign(swiper, { 30690 width, 30691 height, 30692 size: swiper.isHorizontal() ? width : height 30693 }); 30694} 30695 30696/***/ }), 30697
vendor: 11,379 bytes, lines 30698-31031
30698/***/ "./node_modules/swiper/core/update/updateSlides.js": 30699/*!*********************************************************!*\ 30700 !*** ./node_modules/swiper/core/update/updateSlides.js ***! 30701 \*********************************************************/ 30702/*! exports provided: default */ 30703/***/ (function(module, __webpack_exports__, __webpack_require__) { 30704 30705"use strict"; 30706__webpack_require__.r(__webpack_exports__); 30707/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlides; }); 30708/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 30709 30710function updateSlides() { 30711 const swiper = this; 30712 30713 function getDirectionLabel(property) { 30714 if (swiper.isHorizontal()) { 30715 return property; 30716 } // prettier-ignore 30717 30718 30719 return { 30720 'width': 'height', 30721 'margin-top': 'margin-left', 30722 'margin-bottom ': 'margin-right', 30723 'margin-left': 'margin-top', 30724 'margin-right': 'margin-bottom', 30725 'padding-left': 'padding-top', 30726 'padding-right': 'padding-bottom', 30727 'marginRight': 'marginBottom' 30728 }[property]; 30729 } 30730 30731 function getDirectionPropertyValue(node, label) { 30732 return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0); 30733 } 30734 30735 const params = swiper.params; 30736 const { 30737 $wrapperEl, 30738 size: swiperSize, 30739 rtlTranslate: rtl, 30740 wrongRTL 30741 } = swiper; 30742 const isVirtual = swiper.virtual && params.virtual.enabled; 30743 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 30744 const slides = $wrapperEl.children(`.${swiper.params.slideClass}`); 30745 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 30746 let snapGrid = []; 30747 const slidesGrid = []; 30748 const slidesSizesGrid = []; 30749 let offsetBefore = params.slidesOffsetBefore; 30750 30751 if (typeof offsetBefore === 'function') { 30752 offsetBefore = params.slidesOffsetBefore.call(swiper); 30753 } 30754 30755 let offsetAfter = params.slidesOffsetAfter; 30756 30757 if (typeof offsetAfter === 'function') { 30758 offsetAfter = params.slidesOffsetAfter.call(swiper); 30759 } 30760 30761 const previousSnapGridLength = swiper.snapGrid.length; 30762 const previousSlidesGridLength = swiper.slidesGrid.length; 30763 let spaceBetween = params.spaceBetween; 30764 let slidePosition = -offsetBefore; 30765 let prevSlideSize = 0; 30766 let index = 0; 30767 30768 if (typeof swiperSize === 'undefined') { 30769 return; 30770 } 30771 30772 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 30773 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 30774 } 30775 30776 swiper.virtualSize = -spaceBetween; // reset margins 30777 30778 if (rtl) slides.css({ 30779 marginLeft: '', 30780 marginBottom: '', 30781 marginTop: '' 30782 });else slides.css({ 30783 marginRight: '', 30784 marginBottom: '', 30785 marginTop: '' 30786 }); // reset cssMode offsets 30787 30788 if (params.centeredSlides && params.cssMode) { 30789 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-before', ''); 30790 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-after', ''); 30791 } 30792 30793 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 30794 30795 if (gridEnabled) { 30796 swiper.grid.initSlides(slidesLength); 30797 } // Calc slides 30798 30799 30800 let slideSize; 30801 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 30802 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 30803 }).length > 0; 30804 30805 for (let i = 0; i < slidesLength; i += 1) { 30806 slideSize = 0; 30807 const slide = slides.eq(i); 30808 30809 if (gridEnabled) { 30810 swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel); 30811 } 30812 30813 if (slide.css('display') === 'none') continue; // eslint-disable-line 30814 30815 if (params.slidesPerView === 'auto') { 30816 if (shouldResetSlideSize) { 30817 slides[i].style[getDirectionLabel('width')] = ``; 30818 } 30819 30820 const slideStyles = getComputedStyle(slide[0]); 30821 const currentTransform = slide[0].style.transform; 30822 const currentWebKitTransform = slide[0].style.webkitTransform; 30823 30824 if (currentTransform) { 30825 slide[0].style.transform = 'none'; 30826 } 30827 30828 if (currentWebKitTransform) { 30829 slide[0].style.webkitTransform = 'none'; 30830 } 30831 30832 if (params.roundLengths) { 30833 slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true); 30834 } else { 30835 // eslint-disable-next-line 30836 const width = getDirectionPropertyValue(slideStyles, 'width'); 30837 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 30838 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 30839 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 30840 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 30841 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 30842 30843 if (boxSizing && boxSizing === 'border-box') { 30844 slideSize = width + marginLeft + marginRight; 30845 } else { 30846 const { 30847 clientWidth, 30848 offsetWidth 30849 } = slide[0]; 30850 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 30851 } 30852 } 30853 30854 if (currentTransform) { 30855 slide[0].style.transform = currentTransform; 30856 } 30857 30858 if (currentWebKitTransform) { 30859 slide[0].style.webkitTransform = currentWebKitTransform; 30860 } 30861 30862 if (params.roundLengths) slideSize = Math.floor(slideSize); 30863 } else { 30864 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 30865 if (params.roundLengths) slideSize = Math.floor(slideSize); 30866 30867 if (slides[i]) { 30868 slides[i].style[getDirectionLabel('width')] = `${slideSize}px`; 30869 } 30870 } 30871 30872 if (slides[i]) { 30873 slides[i].swiperSlideSize = slideSize; 30874 } 30875 30876 slidesSizesGrid.push(slideSize); 30877 30878 if (params.centeredSlides) { 30879 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 30880 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 30881 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 30882 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 30883 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 30884 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 30885 slidesGrid.push(slidePosition); 30886 } else { 30887 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 30888 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 30889 slidesGrid.push(slidePosition); 30890 slidePosition = slidePosition + slideSize + spaceBetween; 30891 } 30892 30893 swiper.virtualSize += slideSize + spaceBetween; 30894 prevSlideSize = slideSize; 30895 index += 1; 30896 } 30897 30898 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 30899 30900 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 30901 $wrapperEl.css({ 30902 width: `${swiper.virtualSize + params.spaceBetween}px` 30903 }); 30904 } 30905 30906 if (params.setWrapperSize) { 30907 $wrapperEl.css({ 30908 [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px` 30909 }); 30910 } 30911 30912 if (gridEnabled) { 30913 swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel); 30914 } // Remove last grid elements depending on width 30915 30916 30917 if (!params.centeredSlides) { 30918 const newSlidesGrid = []; 30919 30920 for (let i = 0; i < snapGrid.length; i += 1) { 30921 let slidesGridItem = snapGrid[i]; 30922 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 30923 30924 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 30925 newSlidesGrid.push(slidesGridItem); 30926 } 30927 } 30928 30929 snapGrid = newSlidesGrid; 30930 30931 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 30932 snapGrid.push(swiper.virtualSize - swiperSize); 30933 } 30934 } 30935 30936 if (snapGrid.length === 0) snapGrid = [0]; 30937 30938 if (params.spaceBetween !== 0) { 30939 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight'); 30940 slides.filter((_, slideIndex) => { 30941 if (!params.cssMode) return true; 30942 30943 if (slideIndex === slides.length - 1) { 30944 return false; 30945 } 30946 30947 return true; 30948 }).css({ 30949 [key]: `${spaceBetween}px` 30950 }); 30951 } 30952 30953 if (params.centeredSlides && params.centeredSlidesBounds) { 30954 let allSlidesSize = 0; 30955 slidesSizesGrid.forEach(slideSizeValue => { 30956 allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); 30957 }); 30958 allSlidesSize -= params.spaceBetween; 30959 const maxSnap = allSlidesSize - swiperSize; 30960 snapGrid = snapGrid.map(snap => { 30961 if (snap < 0) return -offsetBefore; 30962 if (snap > maxSnap) return maxSnap + offsetAfter; 30963 return snap; 30964 }); 30965 } 30966 30967 if (params.centerInsufficientSlides) { 30968 let allSlidesSize = 0; 30969 slidesSizesGrid.forEach(slideSizeValue => { 30970 allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0); 30971 }); 30972 allSlidesSize -= params.spaceBetween; 30973 30974 if (allSlidesSize < swiperSize) { 30975 const allSlidesOffset = (swiperSize - allSlidesSize) / 2; 30976 snapGrid.forEach((snap, snapIndex) => { 30977 snapGrid[snapIndex] = snap - allSlidesOffset; 30978 }); 30979 slidesGrid.forEach((snap, snapIndex) => { 30980 slidesGrid[snapIndex] = snap + allSlidesOffset; 30981 }); 30982 } 30983 } 30984 30985 Object.assign(swiper, { 30986 slides, 30987 snapGrid, 30988 slidesGrid, 30989 slidesSizesGrid 30990 }); 30991 30992 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 30993 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 30994 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["setCSSProperty"])(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 30995 const addToSnapGrid = -swiper.snapGrid[0]; 30996 const addToSlidesGrid = -swiper.slidesGrid[0]; 30997 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 30998 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 30999 } 31000 31001 if (slidesLength !== previousSlidesLength) { 31002 swiper.emit('slidesLengthChange'); 31003 } 31004 31005 if (snapGrid.length !== previousSnapGridLength) { 31006 if (swiper.params.watchOverflow) swiper.checkOverflow(); 31007 swiper.emit('snapGridLengthChange'); 31008 } 31009 31010 if (slidesGrid.length !== previousSlidesGridLength) { 31011 swiper.emit('slidesGridLengthChange'); 31012 } 31013 31014 if (params.watchSlidesProgress) { 31015 swiper.updateSlidesOffset(); 31016 } 31017 31018 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 31019 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 31020 const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass); 31021 31022 if (slidesLength <= params.maxBackfaceHiddenSlides) { 31023 if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass); 31024 } else if (hasClassBackfaceClassAdded) { 31025 swiper.$el.removeClass(backFaceHiddenClass); 31026 } 31027 } 31028} 31029 31030/***/ }), 31031
vendor: 3,288 bytes, lines 31032-31108
31032/***/ "./node_modules/swiper/core/update/updateSlidesClasses.js": 31033/*!****************************************************************!*\ 31034 !*** ./node_modules/swiper/core/update/updateSlidesClasses.js ***! 31035 \****************************************************************/ 31036/*! exports provided: default */ 31037/***/ (function(module, __webpack_exports__, __webpack_require__) { 31038 31039"use strict"; 31040__webpack_require__.r(__webpack_exports__); 31041/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlidesClasses; }); 31042function updateSlidesClasses() { 31043 const swiper = this; 31044 const { 31045 slides, 31046 params, 31047 $wrapperEl, 31048 activeIndex, 31049 realIndex 31050 } = swiper; 31051 const isVirtual = swiper.virtual && params.virtual.enabled; 31052 slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`); 31053 let activeSlide; 31054 31055 if (isVirtual) { 31056 activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index="${activeIndex}"]`); 31057 } else { 31058 activeSlide = slides.eq(activeIndex); 31059 } // Active classes 31060 31061 31062 activeSlide.addClass(params.slideActiveClass); 31063 31064 if (params.loop) { 31065 // Duplicate to all looped slides 31066 if (activeSlide.hasClass(params.slideDuplicateClass)) { 31067 $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); 31068 } else { 31069 $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${realIndex}"]`).addClass(params.slideDuplicateActiveClass); 31070 } 31071 } // Next Slide 31072 31073 31074 let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass); 31075 31076 if (params.loop && nextSlide.length === 0) { 31077 nextSlide = slides.eq(0); 31078 nextSlide.addClass(params.slideNextClass); 31079 } // Prev Slide 31080 31081 31082 let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass); 31083 31084 if (params.loop && prevSlide.length === 0) { 31085 prevSlide = slides.eq(-1); 31086 prevSlide.addClass(params.slidePrevClass); 31087 } 31088 31089 if (params.loop) { 31090 // Duplicate to all looped slides 31091 if (nextSlide.hasClass(params.slideDuplicateClass)) { 31092 $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); 31093 } else { 31094 $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${nextSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicateNextClass); 31095 } 31096 31097 if (prevSlide.hasClass(params.slideDuplicateClass)) { 31098 $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); 31099 } else { 31100 $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index="${prevSlide.attr('data-swiper-slide-index')}"]`).addClass(params.slideDuplicatePrevClass); 31101 } 31102 } 31103 31104 swiper.emitSlidesClasses(); 31105} 31106 31107/***/ }), 31108
vendor: 815 bytes, lines 31109-31129
31109/***/ "./node_modules/swiper/core/update/updateSlidesOffset.js": 31110/*!***************************************************************!*\ 31111 !*** ./node_modules/swiper/core/update/updateSlidesOffset.js ***! 31112 \***************************************************************/ 31113/*! exports provided: default */ 31114/***/ (function(module, __webpack_exports__, __webpack_require__) { 31115 31116"use strict"; 31117__webpack_require__.r(__webpack_exports__); 31118/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlidesOffset; }); 31119function updateSlidesOffset() { 31120 const swiper = this; 31121 const slides = swiper.slides; 31122 31123 for (let i = 0; i < slides.length; i += 1) { 31124 slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop; 31125 } 31126} 31127 31128/***/ }), 31129
vendor: 2,551 bytes, lines 31130-31187
31130/***/ "./node_modules/swiper/core/update/updateSlidesProgress.js": 31131/*!*****************************************************************!*\ 31132 !*** ./node_modules/swiper/core/update/updateSlidesProgress.js ***! 31133 \*****************************************************************/ 31134/*! exports provided: default */ 31135/***/ (function(module, __webpack_exports__, __webpack_require__) { 31136 31137"use strict"; 31138__webpack_require__.r(__webpack_exports__); 31139/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return updateSlidesProgress; }); 31140/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 31141 31142function updateSlidesProgress(translate = this && this.translate || 0) { 31143 const swiper = this; 31144 const params = swiper.params; 31145 const { 31146 slides, 31147 rtlTranslate: rtl, 31148 snapGrid 31149 } = swiper; 31150 if (slides.length === 0) return; 31151 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 31152 let offsetCenter = -translate; 31153 if (rtl) offsetCenter = translate; // Visible Slides 31154 31155 slides.removeClass(params.slideVisibleClass); 31156 swiper.visibleSlidesIndexes = []; 31157 swiper.visibleSlides = []; 31158 31159 for (let i = 0; i < slides.length; i += 1) { 31160 const slide = slides[i]; 31161 let slideOffset = slide.swiperSlideOffset; 31162 31163 if (params.cssMode && params.centeredSlides) { 31164 slideOffset -= slides[0].swiperSlideOffset; 31165 } 31166 31167 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); 31168 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween); 31169 const slideBefore = -(offsetCenter - slideOffset); 31170 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 31171 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 31172 31173 if (isVisible) { 31174 swiper.visibleSlides.push(slide); 31175 swiper.visibleSlidesIndexes.push(i); 31176 slides.eq(i).addClass(params.slideVisibleClass); 31177 } 31178 31179 slide.progress = rtl ? -slideProgress : slideProgress; 31180 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 31181 } 31182 31183 swiper.visibleSlides = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.visibleSlides); 31184} 31185 31186/***/ }), 31187
vendor: 11,060 bytes, lines 31188-31553
31188/***/ "./node_modules/swiper/modules/a11y/a11y.js": 31189/*!**************************************************!*\ 31190 !*** ./node_modules/swiper/modules/a11y/a11y.js ***! 31191 \**************************************************/ 31192/*! exports provided: default */ 31193/***/ (function(module, __webpack_exports__, __webpack_require__) { 31194 31195"use strict"; 31196__webpack_require__.r(__webpack_exports__); 31197/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return A11y; }); 31198/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js"); 31199/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 31200 31201 31202function A11y({ 31203 swiper, 31204 extendParams, 31205 on 31206}) { 31207 extendParams({ 31208 a11y: { 31209 enabled: true, 31210 notificationClass: 'swiper-notification', 31211 prevSlideMessage: 'Previous slide', 31212 nextSlideMessage: 'Next slide', 31213 firstSlideMessage: 'This is the first slide', 31214 lastSlideMessage: 'This is the last slide', 31215 paginationBulletMessage: 'Go to slide {{index}}', 31216 slideLabelMessage: '{{index}} / {{slidesLength}}', 31217 containerMessage: null, 31218 containerRoleDescriptionMessage: null, 31219 itemRoleDescriptionMessage: null, 31220 slideRole: 'group', 31221 id: null 31222 } 31223 }); 31224 swiper.a11y = { 31225 clicked: false 31226 }; 31227 let liveRegion = null; 31228 31229 function notify(message) { 31230 const notification = liveRegion; 31231 if (notification.length === 0) return; 31232 notification.html(''); 31233 notification.html(message); 31234 } 31235 31236 function getRandomNumber(size = 16) { 31237 const randomChar = () => Math.round(16 * Math.random()).toString(16); 31238 31239 return 'x'.repeat(size).replace(/x/g, randomChar); 31240 } 31241 31242 function makeElFocusable($el) { 31243 $el.attr('tabIndex', '0'); 31244 } 31245 31246 function makeElNotFocusable($el) { 31247 $el.attr('tabIndex', '-1'); 31248 } 31249 31250 function addElRole($el, role) { 31251 $el.attr('role', role); 31252 } 31253 31254 function addElRoleDescription($el, description) { 31255 $el.attr('aria-roledescription', description); 31256 } 31257 31258 function addElControls($el, controls) { 31259 $el.attr('aria-controls', controls); 31260 } 31261 31262 function addElLabel($el, label) { 31263 $el.attr('aria-label', label); 31264 } 31265 31266 function addElId($el, id) { 31267 $el.attr('id', id); 31268 } 31269 31270 function addElLive($el, live) { 31271 $el.attr('aria-live', live); 31272 } 31273 31274 function disableEl($el) { 31275 $el.attr('aria-disabled', true); 31276 } 31277 31278 function enableEl($el) { 31279 $el.attr('aria-disabled', false); 31280 } 31281 31282 function onEnterOrSpaceKey(e) { 31283 if (e.keyCode !== 13 && e.keyCode !== 32) return; 31284 const params = swiper.params.a11y; 31285 const $targetEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target); 31286 31287 if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) { 31288 if (!(swiper.isEnd && !swiper.params.loop)) { 31289 swiper.slideNext(); 31290 } 31291 31292 if (swiper.isEnd) { 31293 notify(params.lastSlideMessage); 31294 } else { 31295 notify(params.nextSlideMessage); 31296 } 31297 } 31298 31299 if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) { 31300 if (!(swiper.isBeginning && !swiper.params.loop)) { 31301 swiper.slidePrev(); 31302 } 31303 31304 if (swiper.isBeginning) { 31305 notify(params.firstSlideMessage); 31306 } else { 31307 notify(params.prevSlideMessage); 31308 } 31309 } 31310 31311 if (swiper.pagination && $targetEl.is(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass))) { 31312 $targetEl[0].click(); 31313 } 31314 } 31315 31316 function updateNavigation() { 31317 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 31318 const { 31319 $nextEl, 31320 $prevEl 31321 } = swiper.navigation; 31322 31323 if ($prevEl && $prevEl.length > 0) { 31324 if (swiper.isBeginning) { 31325 disableEl($prevEl); 31326 makeElNotFocusable($prevEl); 31327 } else { 31328 enableEl($prevEl); 31329 makeElFocusable($prevEl); 31330 } 31331 } 31332 31333 if ($nextEl && $nextEl.length > 0) { 31334 if (swiper.isEnd) { 31335 disableEl($nextEl); 31336 makeElNotFocusable($nextEl); 31337 } else { 31338 enableEl($nextEl); 31339 makeElFocusable($nextEl); 31340 } 31341 } 31342 } 31343 31344 function hasPagination() { 31345 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 31346 } 31347 31348 function hasClickablePagination() { 31349 return hasPagination() && swiper.params.pagination.clickable; 31350 } 31351 31352 function updatePagination() { 31353 const params = swiper.params.a11y; 31354 if (!hasPagination()) return; 31355 swiper.pagination.bullets.each(bulletEl => { 31356 const $bulletEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(bulletEl); 31357 31358 if (swiper.params.pagination.clickable) { 31359 makeElFocusable($bulletEl); 31360 31361 if (!swiper.params.pagination.renderBullet) { 31362 addElRole($bulletEl, 'button'); 31363 addElLabel($bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, $bulletEl.index() + 1)); 31364 } 31365 } 31366 31367 if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) { 31368 $bulletEl.attr('aria-current', 'true'); 31369 } else { 31370 $bulletEl.removeAttr('aria-current'); 31371 } 31372 }); 31373 } 31374 31375 const initNavEl = ($el, wrapperId, message) => { 31376 makeElFocusable($el); 31377 31378 if ($el[0].tagName !== 'BUTTON') { 31379 addElRole($el, 'button'); 31380 $el.on('keydown', onEnterOrSpaceKey); 31381 } 31382 31383 addElLabel($el, message); 31384 addElControls($el, wrapperId); 31385 }; 31386 31387 const handlePointerDown = () => { 31388 swiper.a11y.clicked = true; 31389 }; 31390 31391 const handlePointerUp = () => { 31392 requestAnimationFrame(() => { 31393 requestAnimationFrame(() => { 31394 if (!swiper.destroyed) { 31395 swiper.a11y.clicked = false; 31396 } 31397 }); 31398 }); 31399 }; 31400 31401 const handleFocus = e => { 31402 if (swiper.a11y.clicked) return; 31403 const slideEl = e.target.closest(`.${swiper.params.slideClass}`); 31404 if (!slideEl || !swiper.slides.includes(slideEl)) return; 31405 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 31406 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 31407 if (isActive || isVisible) return; 31408 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 31409 31410 if (swiper.isHorizontal()) { 31411 swiper.el.scrollLeft = 0; 31412 } else { 31413 swiper.el.scrollTop = 0; 31414 } 31415 31416 swiper.slideTo(swiper.slides.indexOf(slideEl), 0); 31417 }; 31418 31419 const initSlides = () => { 31420 const params = swiper.params.a11y; 31421 31422 if (params.itemRoleDescriptionMessage) { 31423 addElRoleDescription(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.itemRoleDescriptionMessage); 31424 } 31425 31426 if (params.slideRole) { 31427 addElRole(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.slides), params.slideRole); 31428 } 31429 31430 const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length; 31431 31432 if (params.slideLabelMessage) { 31433 swiper.slides.each((slideEl, index) => { 31434 const $slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl); 31435 const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index; 31436 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 31437 addElLabel($slideEl, ariaLabelMessage); 31438 }); 31439 } 31440 }; 31441 31442 const init = () => { 31443 const params = swiper.params.a11y; 31444 swiper.$el.append(liveRegion); // Container 31445 31446 const $containerEl = swiper.$el; 31447 31448 if (params.containerRoleDescriptionMessage) { 31449 addElRoleDescription($containerEl, params.containerRoleDescriptionMessage); 31450 } 31451 31452 if (params.containerMessage) { 31453 addElLabel($containerEl, params.containerMessage); 31454 } // Wrapper 31455 31456 31457 const $wrapperEl = swiper.$wrapperEl; 31458 const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`; 31459 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 31460 addElId($wrapperEl, wrapperId); 31461 addElLive($wrapperEl, live); // Slide 31462 31463 initSlides(); // Navigation 31464 31465 let $nextEl; 31466 let $prevEl; 31467 31468 if (swiper.navigation && swiper.navigation.$nextEl) { 31469 $nextEl = swiper.navigation.$nextEl; 31470 } 31471 31472 if (swiper.navigation && swiper.navigation.$prevEl) { 31473 $prevEl = swiper.navigation.$prevEl; 31474 } 31475 31476 if ($nextEl && $nextEl.length) { 31477 initNavEl($nextEl, wrapperId, params.nextSlideMessage); 31478 } 31479 31480 if ($prevEl && $prevEl.length) { 31481 initNavEl($prevEl, wrapperId, params.prevSlideMessage); 31482 } // Pagination 31483 31484 31485 if (hasClickablePagination()) { 31486 swiper.pagination.$el.on('keydown', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); 31487 } // Tab focus 31488 31489 31490 swiper.$el.on('focus', handleFocus, true); 31491 swiper.$el.on('pointerdown', handlePointerDown, true); 31492 swiper.$el.on('pointerup', handlePointerUp, true); 31493 }; 31494 31495 function destroy() { 31496 if (liveRegion && liveRegion.length > 0) liveRegion.remove(); 31497 let $nextEl; 31498 let $prevEl; 31499 31500 if (swiper.navigation && swiper.navigation.$nextEl) { 31501 $nextEl = swiper.navigation.$nextEl; 31502 } 31503 31504 if (swiper.navigation && swiper.navigation.$prevEl) { 31505 $prevEl = swiper.navigation.$prevEl; 31506 } 31507 31508 if ($nextEl) { 31509 $nextEl.off('keydown', onEnterOrSpaceKey); 31510 } 31511 31512 if ($prevEl) { 31513 $prevEl.off('keydown', onEnterOrSpaceKey); 31514 } // Pagination 31515 31516 31517 if (hasClickablePagination()) { 31518 swiper.pagination.$el.off('keydown', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper.params.pagination.bulletClass), onEnterOrSpaceKey); 31519 } // Tab focus 31520 31521 31522 swiper.$el.off('focus', handleFocus, true); 31523 swiper.$el.off('pointerdown', handlePointerDown, true); 31524 swiper.$el.off('pointerup', handlePointerUp, true); 31525 } 31526 31527 on('beforeInit', () => { 31528 liveRegion = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<span class="${swiper.params.a11y.notificationClass}" aria-live="assertive" aria-atomic="true"></span>`); 31529 }); 31530 on('afterInit', () => { 31531 if (!swiper.params.a11y.enabled) return; 31532 init(); 31533 }); 31534 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 31535 if (!swiper.params.a11y.enabled) return; 31536 initSlides(); 31537 }); 31538 on('fromEdge toEdge afterInit lock unlock', () => { 31539 if (!swiper.params.a11y.enabled) return; 31540 updateNavigation(); 31541 }); 31542 on('paginationUpdate', () => { 31543 if (!swiper.params.a11y.enabled) return; 31544 updatePagination(); 31545 }); 31546 on('destroy', () => { 31547 if (!swiper.params.a11y.enabled) return; 31548 destroy(); 31549 }); 31550} 31551 31552/***/ }), 31553
vendor: 6,953 bytes, lines 31554-31798
31554/***/ "./node_modules/swiper/modules/autoplay/autoplay.js": 31555/*!**********************************************************!*\ 31556 !*** ./node_modules/swiper/modules/autoplay/autoplay.js ***! 31557 \**********************************************************/ 31558/*! exports provided: default */ 31559/***/ (function(module, __webpack_exports__, __webpack_require__) { 31560 31561"use strict"; 31562__webpack_require__.r(__webpack_exports__); 31563/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Autoplay; }); 31564/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 31565/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 31566/* eslint no-underscore-dangle: "off" */ 31567 31568/* eslint no-use-before-define: "off" */ 31569 31570 31571function Autoplay({ 31572 swiper, 31573 extendParams, 31574 on, 31575 emit 31576}) { 31577 let timeout; 31578 swiper.autoplay = { 31579 running: false, 31580 paused: false 31581 }; 31582 extendParams({ 31583 autoplay: { 31584 enabled: false, 31585 delay: 3000, 31586 waitForTransition: true, 31587 disableOnInteraction: true, 31588 stopOnLastSlide: false, 31589 reverseDirection: false, 31590 pauseOnMouseEnter: false 31591 } 31592 }); 31593 31594 function run() { 31595 if (!swiper.size) { 31596 swiper.autoplay.running = false; 31597 swiper.autoplay.paused = false; 31598 return; 31599 } 31600 31601 const $activeSlideEl = swiper.slides.eq(swiper.activeIndex); 31602 let delay = swiper.params.autoplay.delay; 31603 31604 if ($activeSlideEl.attr('data-swiper-autoplay')) { 31605 delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay; 31606 } 31607 31608 clearTimeout(timeout); 31609 timeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["nextTick"])(() => { 31610 let autoplayResult; 31611 31612 if (swiper.params.autoplay.reverseDirection) { 31613 if (swiper.params.loop) { 31614 swiper.loopFix(); 31615 autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); 31616 emit('autoplay'); 31617 } else if (!swiper.isBeginning) { 31618 autoplayResult = swiper.slidePrev(swiper.params.speed, true, true); 31619 emit('autoplay'); 31620 } else if (!swiper.params.autoplay.stopOnLastSlide) { 31621 autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true); 31622 emit('autoplay'); 31623 } else { 31624 stop(); 31625 } 31626 } else if (swiper.params.loop) { 31627 swiper.loopFix(); 31628 autoplayResult = swiper.slideNext(swiper.params.speed, true, true); 31629 emit('autoplay'); 31630 } else if (!swiper.isEnd) { 31631 autoplayResult = swiper.slideNext(swiper.params.speed, true, true); 31632 emit('autoplay'); 31633 } else if (!swiper.params.autoplay.stopOnLastSlide) { 31634 autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true); 31635 emit('autoplay'); 31636 } else { 31637 stop(); 31638 } 31639 31640 if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) { 31641 run(); 31642 } 31643 }, delay); 31644 } 31645 31646 function start() { 31647 if (typeof timeout !== 'undefined') return false; 31648 if (swiper.autoplay.running) return false; 31649 swiper.autoplay.running = true; 31650 emit('autoplayStart'); 31651 run(); 31652 return true; 31653 } 31654 31655 function stop() { 31656 if (!swiper.autoplay.running) return false; 31657 if (typeof timeout === 'undefined') return false; 31658 31659 if (timeout) { 31660 clearTimeout(timeout); 31661 timeout = undefined; 31662 } 31663 31664 swiper.autoplay.running = false; 31665 emit('autoplayStop'); 31666 return true; 31667 } 31668 31669 function pause(speed) { 31670 if (!swiper.autoplay.running) return; 31671 if (swiper.autoplay.paused) return; 31672 if (timeout) clearTimeout(timeout); 31673 swiper.autoplay.paused = true; 31674 31675 if (speed === 0 || !swiper.params.autoplay.waitForTransition) { 31676 swiper.autoplay.paused = false; 31677 run(); 31678 } else { 31679 ['transitionend', 'webkitTransitionEnd'].forEach(event => { 31680 swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd); 31681 }); 31682 } 31683 } 31684 31685 function onVisibilityChange() { 31686 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 31687 31688 if (document.visibilityState === 'hidden' && swiper.autoplay.running) { 31689 pause(); 31690 } 31691 31692 if (document.visibilityState === 'visible' && swiper.autoplay.paused) { 31693 run(); 31694 swiper.autoplay.paused = false; 31695 } 31696 } 31697 31698 function onTransitionEnd(e) { 31699 if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return; 31700 if (e.target !== swiper.$wrapperEl[0]) return; 31701 ['transitionend', 'webkitTransitionEnd'].forEach(event => { 31702 swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); 31703 }); 31704 swiper.autoplay.paused = false; 31705 31706 if (!swiper.autoplay.running) { 31707 stop(); 31708 } else { 31709 run(); 31710 } 31711 } 31712 31713 function onMouseEnter() { 31714 if (swiper.params.autoplay.disableOnInteraction) { 31715 stop(); 31716 } else { 31717 emit('autoplayPause'); 31718 pause(); 31719 } 31720 31721 ['transitionend', 'webkitTransitionEnd'].forEach(event => { 31722 swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd); 31723 }); 31724 } 31725 31726 function onMouseLeave() { 31727 if (swiper.params.autoplay.disableOnInteraction) { 31728 return; 31729 } 31730 31731 swiper.autoplay.paused = false; 31732 emit('autoplayResume'); 31733 run(); 31734 } 31735 31736 function attachMouseEvents() { 31737 if (swiper.params.autoplay.pauseOnMouseEnter) { 31738 swiper.$el.on('mouseenter', onMouseEnter); 31739 swiper.$el.on('mouseleave', onMouseLeave); 31740 } 31741 } 31742 31743 function detachMouseEvents() { 31744 swiper.$el.off('mouseenter', onMouseEnter); 31745 swiper.$el.off('mouseleave', onMouseLeave); 31746 } 31747 31748 on('init', () => { 31749 if (swiper.params.autoplay.enabled) { 31750 start(); 31751 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 31752 document.addEventListener('visibilitychange', onVisibilityChange); 31753 attachMouseEvents(); 31754 } 31755 }); 31756 on('beforeTransitionStart', (_s, speed, internal) => { 31757 if (swiper.autoplay.running) { 31758 if (internal || !swiper.params.autoplay.disableOnInteraction) { 31759 swiper.autoplay.pause(speed); 31760 } else { 31761 stop(); 31762 } 31763 } 31764 }); 31765 on('sliderFirstMove', () => { 31766 if (swiper.autoplay.running) { 31767 if (swiper.params.autoplay.disableOnInteraction) { 31768 stop(); 31769 } else { 31770 pause(); 31771 } 31772 } 31773 }); 31774 on('touchEnd', () => { 31775 if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) { 31776 run(); 31777 } 31778 }); 31779 on('destroy', () => { 31780 detachMouseEvents(); 31781 31782 if (swiper.autoplay.running) { 31783 stop(); 31784 } 31785 31786 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 31787 document.removeEventListener('visibilitychange', onVisibilityChange); 31788 }); 31789 Object.assign(swiper.autoplay, { 31790 pause, 31791 run, 31792 start, 31793 stop 31794 }); 31795} 31796 31797/***/ }), 31798
vendor: 6,381 bytes, lines 31799-32003
31799/***/ "./node_modules/swiper/modules/controller/controller.js": 31800/*!**************************************************************!*\ 31801 !*** ./node_modules/swiper/modules/controller/controller.js ***! 31802 \**************************************************************/ 31803/*! exports provided: default */ 31804/***/ (function(module, __webpack_exports__, __webpack_require__) { 31805 31806"use strict"; 31807__webpack_require__.r(__webpack_exports__); 31808/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Controller; }); 31809/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 31810/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 31811 31812function Controller({ 31813 swiper, 31814 extendParams, 31815 on 31816}) { 31817 extendParams({ 31818 controller: { 31819 control: undefined, 31820 inverse: false, 31821 by: 'slide' // or 'container' 31822 31823 } 31824 }); 31825 swiper.controller = { 31826 control: undefined 31827 }; 31828 31829 function LinearSpline(x, y) { 31830 const binarySearch = function search() { 31831 let maxIndex; 31832 let minIndex; 31833 let guess; 31834 return (array, val) => { 31835 minIndex = -1; 31836 maxIndex = array.length; 31837 31838 while (maxIndex - minIndex > 1) { 31839 guess = maxIndex + minIndex >> 1; 31840 31841 if (array[guess] <= val) { 31842 minIndex = guess; 31843 } else { 31844 maxIndex = guess; 31845 } 31846 } 31847 31848 return maxIndex; 31849 }; 31850 }(); 31851 31852 this.x = x; 31853 this.y = y; 31854 this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value: 31855 // (x1,y1) is the known point before given value, 31856 // (x3,y3) is the known point after given value. 31857 31858 let i1; 31859 let i3; 31860 31861 this.interpolate = function interpolate(x2) { 31862 if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2): 31863 31864 i3 = binarySearch(this.x, x2); 31865 i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already: 31866 // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 31867 31868 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 31869 }; 31870 31871 return this; 31872 } // xxx: for now i will just save one spline function to to 31873 31874 31875 function getInterpolateFunction(c) { 31876 if (!swiper.controller.spline) { 31877 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 31878 } 31879 } 31880 31881 function setTranslate(_t, byController) { 31882 const controlled = swiper.controller.control; 31883 let multiplier; 31884 let controlledTranslate; 31885 const Swiper = swiper.constructor; 31886 31887 function setControlledTranslate(c) { 31888 // this will create an Interpolate function based on the snapGrids 31889 // x is the Grid of the scrolled scroller and y will be the controlled scroller 31890 // it makes sense to create this only once and recall it for the interpolation 31891 // the function does a lot of value caching for performance 31892 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 31893 31894 if (swiper.params.controller.by === 'slide') { 31895 getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 31896 // but it did not work out 31897 31898 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 31899 } 31900 31901 if (!controlledTranslate || swiper.params.controller.by === 'container') { 31902 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 31903 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 31904 } 31905 31906 if (swiper.params.controller.inverse) { 31907 controlledTranslate = c.maxTranslate() - controlledTranslate; 31908 } 31909 31910 c.updateProgress(controlledTranslate); 31911 c.setTranslate(controlledTranslate, swiper); 31912 c.updateActiveIndex(); 31913 c.updateSlidesClasses(); 31914 } 31915 31916 if (Array.isArray(controlled)) { 31917 for (let i = 0; i < controlled.length; i += 1) { 31918 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 31919 setControlledTranslate(controlled[i]); 31920 } 31921 } 31922 } else if (controlled instanceof Swiper && byController !== controlled) { 31923 setControlledTranslate(controlled); 31924 } 31925 } 31926 31927 function setTransition(duration, byController) { 31928 const Swiper = swiper.constructor; 31929 const controlled = swiper.controller.control; 31930 let i; 31931 31932 function setControlledTransition(c) { 31933 c.setTransition(duration, swiper); 31934 31935 if (duration !== 0) { 31936 c.transitionStart(); 31937 31938 if (c.params.autoHeight) { 31939 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["nextTick"])(() => { 31940 c.updateAutoHeight(); 31941 }); 31942 } 31943 31944 c.$wrapperEl.transitionEnd(() => { 31945 if (!controlled) return; 31946 31947 if (c.params.loop && swiper.params.controller.by === 'slide') { 31948 c.loopFix(); 31949 } 31950 31951 c.transitionEnd(); 31952 }); 31953 } 31954 } 31955 31956 if (Array.isArray(controlled)) { 31957 for (i = 0; i < controlled.length; i += 1) { 31958 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 31959 setControlledTransition(controlled[i]); 31960 } 31961 } 31962 } else if (controlled instanceof Swiper && byController !== controlled) { 31963 setControlledTransition(controlled); 31964 } 31965 } 31966 31967 function removeSpline() { 31968 if (!swiper.controller.control) return; 31969 31970 if (swiper.controller.spline) { 31971 swiper.controller.spline = undefined; 31972 delete swiper.controller.spline; 31973 } 31974 } 31975 31976 on('beforeInit', () => { 31977 swiper.controller.control = swiper.params.controller.control; 31978 }); 31979 on('update', () => { 31980 removeSpline(); 31981 }); 31982 on('resize', () => { 31983 removeSpline(); 31984 }); 31985 on('observerUpdate', () => { 31986 removeSpline(); 31987 }); 31988 on('setTranslate', (_s, translate, byController) => { 31989 if (!swiper.controller.control) return; 31990 swiper.controller.setTranslate(translate, byController); 31991 }); 31992 on('setTransition', (_s, duration, byController) => { 31993 if (!swiper.controller.control) return; 31994 swiper.controller.setTransition(duration, byController); 31995 }); 31996 Object.assign(swiper.controller, { 31997 setTranslate, 31998 setTransition 31999 }); 32000} 32001 32002/***/ }), 32003
vendor: 5,576 bytes, lines 32004-32149
32004/***/ "./node_modules/swiper/modules/effect-cards/effect-cards.js": 32005/*!******************************************************************!*\ 32006 !*** ./node_modules/swiper/modules/effect-cards/effect-cards.js ***! 32007 \******************************************************************/ 32008/*! exports provided: default */ 32009/***/ (function(module, __webpack_exports__, __webpack_require__) { 32010 32011"use strict"; 32012__webpack_require__.r(__webpack_exports__); 32013/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCards; }); 32014/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js"); 32015/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js"); 32016/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js"); 32017/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js"); 32018 32019 32020 32021 32022function EffectCards({ 32023 swiper, 32024 extendParams, 32025 on 32026}) { 32027 extendParams({ 32028 cardsEffect: { 32029 slideShadows: true, 32030 transformEl: null, 32031 rotate: true, 32032 perSlideRotate: 2, 32033 perSlideOffset: 8 32034 } 32035 }); 32036 32037 const setTranslate = () => { 32038 const { 32039 slides, 32040 activeIndex 32041 } = swiper; 32042 const params = swiper.params.cardsEffect; 32043 const { 32044 startTranslate, 32045 isTouched 32046 } = swiper.touchEventsData; 32047 const currentTranslate = swiper.translate; 32048 32049 for (let i = 0; i < slides.length; i += 1) { 32050 const $slideEl = slides.eq(i); 32051 const slideProgress = $slideEl[0].progress; 32052 const progress = Math.min(Math.max(slideProgress, -4), 4); 32053 let offset = $slideEl[0].swiperSlideOffset; 32054 32055 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 32056 swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`); 32057 } 32058 32059 if (swiper.params.centeredSlides && swiper.params.cssMode) { 32060 offset -= slides[0].swiperSlideOffset; 32061 } 32062 32063 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 32064 let tY = 0; 32065 const tZ = -100 * Math.abs(progress); 32066 let scale = 1; 32067 let rotate = -params.perSlideRotate * progress; 32068 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 32069 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 32070 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 32071 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 32072 32073 if (isSwipeToNext || isSwipeToPrev) { 32074 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 32075 rotate += -28 * progress * subProgress; 32076 scale += -0.5 * subProgress; 32077 tXAdd += 96 * subProgress; 32078 tY = `${-25 * subProgress * Math.abs(progress)}%`; 32079 } 32080 32081 if (progress < 0) { 32082 // next 32083 tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`; 32084 } else if (progress > 0) { 32085 // prev 32086 tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`; 32087 } else { 32088 tX = `${tX}px`; 32089 } 32090 32091 if (!swiper.isHorizontal()) { 32092 const prevY = tY; 32093 tY = tX; 32094 tX = prevY; 32095 } 32096 32097 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 32098 const transform = ` 32099 translate3d(${tX}, ${tY}, ${tZ}px) 32100 rotateZ(${params.rotate ? rotate : 0}deg) 32101 scale(${scaleString}) 32102 `; 32103 32104 if (params.slideShadows) { 32105 // Set shadows 32106 let $shadowEl = $slideEl.find('.swiper-slide-shadow'); 32107 32108 if ($shadowEl.length === 0) { 32109 $shadowEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl); 32110 } 32111 32112 if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 32113 } 32114 32115 $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 32116 const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl); 32117 $targetEl.transform(transform); 32118 } 32119 }; 32120 32121 const setTransition = duration => { 32122 const { 32123 transformEl 32124 } = swiper.params.cardsEffect; 32125 const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; 32126 $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); 32127 Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({ 32128 swiper, 32129 duration, 32130 transformEl 32131 }); 32132 }; 32133 32134 Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({ 32135 effect: 'cards', 32136 swiper, 32137 on, 32138 setTranslate, 32139 setTransition, 32140 perspective: () => true, 32141 overwriteParams: () => ({ 32142 watchSlidesProgress: true, 32143 virtualTranslate: !swiper.params.cssMode 32144 }) 32145 }); 32146} 32147 32148/***/ }), 32149
vendor: 5,431 bytes, lines 32150-32269
32150/***/ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js": 32151/*!**************************************************************************!*\ 32152 !*** ./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js ***! 32153 \**************************************************************************/ 32154/*! exports provided: default */ 32155/***/ (function(module, __webpack_exports__, __webpack_require__) { 32156 32157"use strict"; 32158__webpack_require__.r(__webpack_exports__); 32159/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCoverflow; }); 32160/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js"); 32161/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js"); 32162/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js"); 32163 32164 32165 32166function EffectCoverflow({ 32167 swiper, 32168 extendParams, 32169 on 32170}) { 32171 extendParams({ 32172 coverflowEffect: { 32173 rotate: 50, 32174 stretch: 0, 32175 depth: 100, 32176 scale: 1, 32177 modifier: 1, 32178 slideShadows: true, 32179 transformEl: null 32180 } 32181 }); 32182 32183 const setTranslate = () => { 32184 const { 32185 width: swiperWidth, 32186 height: swiperHeight, 32187 slides, 32188 slidesSizesGrid 32189 } = swiper; 32190 const params = swiper.params.coverflowEffect; 32191 const isHorizontal = swiper.isHorizontal(); 32192 const transform = swiper.translate; 32193 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 32194 const rotate = isHorizontal ? params.rotate : -params.rotate; 32195 const translate = params.depth; // Each slide offset from center 32196 32197 for (let i = 0, length = slides.length; i < length; i += 1) { 32198 const $slideEl = slides.eq(i); 32199 const slideSize = slidesSizesGrid[i]; 32200 const slideOffset = $slideEl[0].swiperSlideOffset; 32201 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 32202 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 32203 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 32204 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0 32205 32206 let translateZ = -translate * Math.abs(offsetMultiplier); 32207 let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders 32208 32209 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 32210 stretch = parseFloat(params.stretch) / 100 * slideSize; 32211 } 32212 32213 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 32214 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 32215 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values 32216 32217 if (Math.abs(translateX) < 0.001) translateX = 0; 32218 if (Math.abs(translateY) < 0.001) translateY = 0; 32219 if (Math.abs(translateZ) < 0.001) translateZ = 0; 32220 if (Math.abs(rotateY) < 0.001) rotateY = 0; 32221 if (Math.abs(rotateX) < 0.001) rotateX = 0; 32222 if (Math.abs(scale) < 0.001) scale = 0; 32223 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`; 32224 const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl); 32225 $targetEl.transform(slideTransform); 32226 $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 32227 32228 if (params.slideShadows) { 32229 // Set shadows 32230 let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 32231 let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 32232 32233 if ($shadowBeforeEl.length === 0) { 32234 $shadowBeforeEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'left' : 'top'); 32235 } 32236 32237 if ($shadowAfterEl.length === 0) { 32238 $shadowAfterEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl, isHorizontal ? 'right' : 'bottom'); 32239 } 32240 32241 if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 32242 if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 32243 } 32244 } 32245 }; 32246 32247 const setTransition = duration => { 32248 const { 32249 transformEl 32250 } = swiper.params.coverflowEffect; 32251 const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; 32252 $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); 32253 }; 32254 32255 Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({ 32256 effect: 'coverflow', 32257 swiper, 32258 on, 32259 setTranslate, 32260 setTransition, 32261 perspective: () => true, 32262 overwriteParams: () => ({ 32263 watchSlidesProgress: true 32264 }) 32265 }); 32266} 32267 32268/***/ }), 32269
vendor: 6,157 bytes, lines 32270-32440
32270/***/ "./node_modules/swiper/modules/effect-creative/effect-creative.js": 32271/*!************************************************************************!*\ 32272 !*** ./node_modules/swiper/modules/effect-creative/effect-creative.js ***! 32273 \************************************************************************/ 32274/*! exports provided: default */ 32275/***/ (function(module, __webpack_exports__, __webpack_require__) { 32276 32277"use strict"; 32278__webpack_require__.r(__webpack_exports__); 32279/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCreative; }); 32280/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js"); 32281/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js"); 32282/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js"); 32283/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js"); 32284 32285 32286 32287 32288function EffectCreative({ 32289 swiper, 32290 extendParams, 32291 on 32292}) { 32293 extendParams({ 32294 creativeEffect: { 32295 transformEl: null, 32296 limitProgress: 1, 32297 shadowPerProgress: false, 32298 progressMultiplier: 1, 32299 perspective: true, 32300 prev: { 32301 translate: [0, 0, 0], 32302 rotate: [0, 0, 0], 32303 opacity: 1, 32304 scale: 1 32305 }, 32306 next: { 32307 translate: [0, 0, 0], 32308 rotate: [0, 0, 0], 32309 opacity: 1, 32310 scale: 1 32311 } 32312 } 32313 }); 32314 32315 const getTranslateValue = value => { 32316 if (typeof value === 'string') return value; 32317 return `${value}px`; 32318 }; 32319 32320 const setTranslate = () => { 32321 const { 32322 slides, 32323 $wrapperEl, 32324 slidesSizesGrid 32325 } = swiper; 32326 const params = swiper.params.creativeEffect; 32327 const { 32328 progressMultiplier: multiplier 32329 } = params; 32330 const isCenteredSlides = swiper.params.centeredSlides; 32331 32332 if (isCenteredSlides) { 32333 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 32334 $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`); 32335 } 32336 32337 for (let i = 0; i < slides.length; i += 1) { 32338 const $slideEl = slides.eq(i); 32339 const slideProgress = $slideEl[0].progress; 32340 const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress); 32341 let originalProgress = progress; 32342 32343 if (!isCenteredSlides) { 32344 originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress); 32345 } 32346 32347 const offset = $slideEl[0].swiperSlideOffset; 32348 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 32349 const r = [0, 0, 0]; 32350 let custom = false; 32351 32352 if (!swiper.isHorizontal()) { 32353 t[1] = t[0]; 32354 t[0] = 0; 32355 } 32356 32357 let data = { 32358 translate: [0, 0, 0], 32359 rotate: [0, 0, 0], 32360 scale: 1, 32361 opacity: 1 32362 }; 32363 32364 if (progress < 0) { 32365 data = params.next; 32366 custom = true; 32367 } else if (progress > 0) { 32368 data = params.prev; 32369 custom = true; 32370 } // set translate 32371 32372 32373 t.forEach((value, index) => { 32374 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 32375 }); // set rotates 32376 32377 r.forEach((value, index) => { 32378 r[index] = data.rotate[index] * Math.abs(progress * multiplier); 32379 }); 32380 $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 32381 const translateString = t.join(', '); 32382 const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`; 32383 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 32384 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 32385 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows 32386 32387 if (custom && data.shadow || !custom) { 32388 let $shadowEl = $slideEl.children('.swiper-slide-shadow'); 32389 32390 if ($shadowEl.length === 0 && data.shadow) { 32391 $shadowEl = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params, $slideEl); 32392 } 32393 32394 if ($shadowEl.length) { 32395 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 32396 $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 32397 } 32398 } 32399 32400 const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_2__["default"])(params, $slideEl); 32401 $targetEl.transform(transform).css({ 32402 opacity: opacityString 32403 }); 32404 32405 if (data.origin) { 32406 $targetEl.css('transform-origin', data.origin); 32407 } 32408 } 32409 }; 32410 32411 const setTransition = duration => { 32412 const { 32413 transformEl 32414 } = swiper.params.creativeEffect; 32415 const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; 32416 $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration); 32417 Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_3__["default"])({ 32418 swiper, 32419 duration, 32420 transformEl, 32421 allSlides: true 32422 }); 32423 }; 32424 32425 Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({ 32426 effect: 'creative', 32427 swiper, 32428 on, 32429 setTranslate, 32430 setTransition, 32431 perspective: () => swiper.params.creativeEffect.perspective, 32432 overwriteParams: () => ({ 32433 watchSlidesProgress: true, 32434 virtualTranslate: !swiper.params.cssMode 32435 }) 32436 }); 32437} 32438 32439/***/ }), 32440
vendor: 7,382 bytes, lines 32441-32650
32441/***/ "./node_modules/swiper/modules/effect-cube/effect-cube.js": 32442/*!****************************************************************!*\ 32443 !*** ./node_modules/swiper/modules/effect-cube/effect-cube.js ***! 32444 \****************************************************************/ 32445/*! exports provided: default */ 32446/***/ (function(module, __webpack_exports__, __webpack_require__) { 32447 32448"use strict"; 32449__webpack_require__.r(__webpack_exports__); 32450/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectCube; }); 32451/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 32452/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js"); 32453 32454 32455function EffectCube({ 32456 swiper, 32457 extendParams, 32458 on 32459}) { 32460 extendParams({ 32461 cubeEffect: { 32462 slideShadows: true, 32463 shadow: true, 32464 shadowOffset: 20, 32465 shadowScale: 0.94 32466 } 32467 }); 32468 32469 const createSlideShadows = ($slideEl, progress, isHorizontal) => { 32470 let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 32471 let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 32472 32473 if (shadowBefore.length === 0) { 32474 shadowBefore = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}"></div>`); 32475 $slideEl.append(shadowBefore); 32476 } 32477 32478 if (shadowAfter.length === 0) { 32479 shadowAfter = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}"></div>`); 32480 $slideEl.append(shadowAfter); 32481 } 32482 32483 if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); 32484 if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); 32485 }; 32486 32487 const recreateShadows = () => { 32488 // create new ones 32489 const isHorizontal = swiper.isHorizontal(); 32490 swiper.slides.each(slideEl => { 32491 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 32492 createSlideShadows(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl), progress, isHorizontal); 32493 }); 32494 }; 32495 32496 const setTranslate = () => { 32497 const { 32498 $el, 32499 $wrapperEl, 32500 slides, 32501 width: swiperWidth, 32502 height: swiperHeight, 32503 rtlTranslate: rtl, 32504 size: swiperSize, 32505 browser 32506 } = swiper; 32507 const params = swiper.params.cubeEffect; 32508 const isHorizontal = swiper.isHorizontal(); 32509 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 32510 let wrapperRotate = 0; 32511 let $cubeShadowEl; 32512 32513 if (params.shadow) { 32514 if (isHorizontal) { 32515 $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow'); 32516 32517 if ($cubeShadowEl.length === 0) { 32518 $cubeShadowEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>'); 32519 $wrapperEl.append($cubeShadowEl); 32520 } 32521 32522 $cubeShadowEl.css({ 32523 height: `${swiperWidth}px` 32524 }); 32525 } else { 32526 $cubeShadowEl = $el.find('.swiper-cube-shadow'); 32527 32528 if ($cubeShadowEl.length === 0) { 32529 $cubeShadowEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])('<div class="swiper-cube-shadow"></div>'); 32530 $el.append($cubeShadowEl); 32531 } 32532 } 32533 } 32534 32535 for (let i = 0; i < slides.length; i += 1) { 32536 const $slideEl = slides.eq(i); 32537 let slideIndex = i; 32538 32539 if (isVirtual) { 32540 slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10); 32541 } 32542 32543 let slideAngle = slideIndex * 90; 32544 let round = Math.floor(slideAngle / 360); 32545 32546 if (rtl) { 32547 slideAngle = -slideAngle; 32548 round = Math.floor(-slideAngle / 360); 32549 } 32550 32551 const progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 32552 let tx = 0; 32553 let ty = 0; 32554 let tz = 0; 32555 32556 if (slideIndex % 4 === 0) { 32557 tx = -round * 4 * swiperSize; 32558 tz = 0; 32559 } else if ((slideIndex - 1) % 4 === 0) { 32560 tx = 0; 32561 tz = -round * 4 * swiperSize; 32562 } else if ((slideIndex - 2) % 4 === 0) { 32563 tx = swiperSize + round * 4 * swiperSize; 32564 tz = swiperSize; 32565 } else if ((slideIndex - 3) % 4 === 0) { 32566 tx = -swiperSize; 32567 tz = 3 * swiperSize + swiperSize * 4 * round; 32568 } 32569 32570 if (rtl) { 32571 tx = -tx; 32572 } 32573 32574 if (!isHorizontal) { 32575 ty = tx; 32576 tx = 0; 32577 } 32578 32579 const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 32580 32581 if (progress <= 1 && progress > -1) { 32582 wrapperRotate = slideIndex * 90 + progress * 90; 32583 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 32584 } 32585 32586 $slideEl.transform(transform); 32587 32588 if (params.slideShadows) { 32589 createSlideShadows($slideEl, progress, isHorizontal); 32590 } 32591 } 32592 32593 $wrapperEl.css({ 32594 '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`, 32595 'transform-origin': `50% 50% -${swiperSize / 2}px` 32596 }); 32597 32598 if (params.shadow) { 32599 if (isHorizontal) { 32600 $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`); 32601 } else { 32602 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 32603 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 32604 const scale1 = params.shadowScale; 32605 const scale2 = params.shadowScale / multiplier; 32606 const offset = params.shadowOffset; 32607 $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`); 32608 } 32609 } 32610 32611 const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0; 32612 $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`); 32613 $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 32614 }; 32615 32616 const setTransition = duration => { 32617 const { 32618 $el, 32619 slides 32620 } = swiper; 32621 slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); 32622 32623 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 32624 $el.find('.swiper-cube-shadow').transition(duration); 32625 } 32626 }; 32627 32628 Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_1__["default"])({ 32629 effect: 'cube', 32630 swiper, 32631 on, 32632 setTranslate, 32633 setTransition, 32634 recreateShadows, 32635 getEffectParams: () => swiper.params.cubeEffect, 32636 perspective: () => true, 32637 overwriteParams: () => ({ 32638 slidesPerView: 1, 32639 slidesPerGroup: 1, 32640 watchSlidesProgress: true, 32641 resistanceRatio: 0, 32642 spaceBetween: 0, 32643 centeredSlides: false, 32644 virtualTranslate: true 32645 }) 32646 }); 32647} 32648 32649/***/ }), 32650
vendor: 2,959 bytes, lines 32651-32736
32651/***/ "./node_modules/swiper/modules/effect-fade/effect-fade.js": 32652/*!****************************************************************!*\ 32653 !*** ./node_modules/swiper/modules/effect-fade/effect-fade.js ***! 32654 \****************************************************************/ 32655/*! exports provided: default */ 32656/***/ (function(module, __webpack_exports__, __webpack_require__) { 32657 32658"use strict"; 32659__webpack_require__.r(__webpack_exports__); 32660/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectFade; }); 32661/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js"); 32662/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js"); 32663/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js"); 32664 32665 32666 32667function EffectFade({ 32668 swiper, 32669 extendParams, 32670 on 32671}) { 32672 extendParams({ 32673 fadeEffect: { 32674 crossFade: false, 32675 transformEl: null 32676 } 32677 }); 32678 32679 const setTranslate = () => { 32680 const { 32681 slides 32682 } = swiper; 32683 const params = swiper.params.fadeEffect; 32684 32685 for (let i = 0; i < slides.length; i += 1) { 32686 const $slideEl = swiper.slides.eq(i); 32687 const offset = $slideEl[0].swiperSlideOffset; 32688 let tx = -offset; 32689 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 32690 let ty = 0; 32691 32692 if (!swiper.isHorizontal()) { 32693 ty = tx; 32694 tx = 0; 32695 } 32696 32697 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0); 32698 const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl); 32699 $targetEl.css({ 32700 opacity: slideOpacity 32701 }).transform(`translate3d(${tx}px, ${ty}px, 0px)`); 32702 } 32703 }; 32704 32705 const setTransition = duration => { 32706 const { 32707 transformEl 32708 } = swiper.params.fadeEffect; 32709 const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; 32710 $transitionElements.transition(duration); 32711 Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_2__["default"])({ 32712 swiper, 32713 duration, 32714 transformEl, 32715 allSlides: true 32716 }); 32717 }; 32718 32719 Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ 32720 effect: 'fade', 32721 swiper, 32722 on, 32723 setTranslate, 32724 setTransition, 32725 overwriteParams: () => ({ 32726 slidesPerView: 1, 32727 slidesPerGroup: 1, 32728 watchSlidesProgress: true, 32729 spaceBetween: 0, 32730 virtualTranslate: !swiper.params.cssMode 32731 }) 32732 }); 32733} 32734 32735/***/ }), 32736
vendor: 5,344 bytes, lines 32737-32877
32737/***/ "./node_modules/swiper/modules/effect-flip/effect-flip.js": 32738/*!****************************************************************!*\ 32739 !*** ./node_modules/swiper/modules/effect-flip/effect-flip.js ***! 32740 \****************************************************************/ 32741/*! exports provided: default */ 32742/***/ (function(module, __webpack_exports__, __webpack_require__) { 32743 32744"use strict"; 32745__webpack_require__.r(__webpack_exports__); 32746/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EffectFlip; }); 32747/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 32748/* harmony import */ var _shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/create-shadow.js */ "./node_modules/swiper/shared/create-shadow.js"); 32749/* harmony import */ var _shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/effect-init.js */ "./node_modules/swiper/shared/effect-init.js"); 32750/* harmony import */ var _shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/effect-target.js */ "./node_modules/swiper/shared/effect-target.js"); 32751/* harmony import */ var _shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../shared/effect-virtual-transition-end.js */ "./node_modules/swiper/shared/effect-virtual-transition-end.js"); 32752 32753 32754 32755 32756 32757function EffectFlip({ 32758 swiper, 32759 extendParams, 32760 on 32761}) { 32762 extendParams({ 32763 flipEffect: { 32764 slideShadows: true, 32765 limitRotation: true, 32766 transformEl: null 32767 } 32768 }); 32769 32770 const createSlideShadows = ($slideEl, progress, params) => { 32771 let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top'); 32772 let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom'); 32773 32774 if (shadowBefore.length === 0) { 32775 shadowBefore = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top'); 32776 } 32777 32778 if (shadowAfter.length === 0) { 32779 shadowAfter = Object(_shared_create_shadow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 32780 } 32781 32782 if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0); 32783 if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0); 32784 }; 32785 32786 const recreateShadows = () => { 32787 // Set shadows 32788 const params = swiper.params.flipEffect; 32789 swiper.slides.each(slideEl => { 32790 const $slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl); 32791 let progress = $slideEl[0].progress; 32792 32793 if (swiper.params.flipEffect.limitRotation) { 32794 progress = Math.max(Math.min(slideEl.progress, 1), -1); 32795 } 32796 32797 createSlideShadows($slideEl, progress, params); 32798 }); 32799 }; 32800 32801 const setTranslate = () => { 32802 const { 32803 slides, 32804 rtlTranslate: rtl 32805 } = swiper; 32806 const params = swiper.params.flipEffect; 32807 32808 for (let i = 0; i < slides.length; i += 1) { 32809 const $slideEl = slides.eq(i); 32810 let progress = $slideEl[0].progress; 32811 32812 if (swiper.params.flipEffect.limitRotation) { 32813 progress = Math.max(Math.min($slideEl[0].progress, 1), -1); 32814 } 32815 32816 const offset = $slideEl[0].swiperSlideOffset; 32817 const rotate = -180 * progress; 32818 let rotateY = rotate; 32819 let rotateX = 0; 32820 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 32821 let ty = 0; 32822 32823 if (!swiper.isHorizontal()) { 32824 ty = tx; 32825 tx = 0; 32826 rotateX = -rotateY; 32827 rotateY = 0; 32828 } else if (rtl) { 32829 rotateY = -rotateY; 32830 } 32831 32832 $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 32833 32834 if (params.slideShadows) { 32835 createSlideShadows($slideEl, progress, params); 32836 } 32837 32838 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`; 32839 const $targetEl = Object(_shared_effect_target_js__WEBPACK_IMPORTED_MODULE_3__["default"])(params, $slideEl); 32840 $targetEl.transform(transform); 32841 } 32842 }; 32843 32844 const setTransition = duration => { 32845 const { 32846 transformEl 32847 } = swiper.params.flipEffect; 32848 const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides; 32849 $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration); 32850 Object(_shared_effect_virtual_transition_end_js__WEBPACK_IMPORTED_MODULE_4__["default"])({ 32851 swiper, 32852 duration, 32853 transformEl 32854 }); 32855 }; 32856 32857 Object(_shared_effect_init_js__WEBPACK_IMPORTED_MODULE_2__["default"])({ 32858 effect: 'flip', 32859 swiper, 32860 on, 32861 setTranslate, 32862 setTransition, 32863 recreateShadows, 32864 getEffectParams: () => swiper.params.flipEffect, 32865 perspective: () => true, 32866 overwriteParams: () => ({ 32867 slidesPerView: 1, 32868 slidesPerGroup: 1, 32869 watchSlidesProgress: true, 32870 spaceBetween: 0, 32871 virtualTranslate: !swiper.params.cssMode 32872 }) 32873 }); 32874} 32875 32876/***/ }), 32877
vendor: 8,952 bytes, lines 32878-33147
32878/***/ "./node_modules/swiper/modules/free-mode/free-mode.js": 32879/*!************************************************************!*\ 32880 !*** ./node_modules/swiper/modules/free-mode/free-mode.js ***! 32881 \************************************************************/ 32882/*! exports provided: default */ 32883/***/ (function(module, __webpack_exports__, __webpack_require__) { 32884 32885"use strict"; 32886__webpack_require__.r(__webpack_exports__); 32887/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return freeMode; }); 32888/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 32889 32890function freeMode({ 32891 swiper, 32892 extendParams, 32893 emit, 32894 once 32895}) { 32896 extendParams({ 32897 freeMode: { 32898 enabled: false, 32899 momentum: true, 32900 momentumRatio: 1, 32901 momentumBounce: true, 32902 momentumBounceRatio: 1, 32903 momentumVelocityRatio: 1, 32904 sticky: false, 32905 minimumVelocity: 0.02 32906 } 32907 }); 32908 32909 function onTouchStart() { 32910 const translate = swiper.getTranslate(); 32911 swiper.setTranslate(translate); 32912 swiper.setTransition(0); 32913 swiper.touchEventsData.velocities.length = 0; 32914 swiper.freeMode.onTouchEnd({ 32915 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 32916 }); 32917 } 32918 32919 function onTouchMove() { 32920 const { 32921 touchEventsData: data, 32922 touches 32923 } = swiper; // Velocity 32924 32925 if (data.velocities.length === 0) { 32926 data.velocities.push({ 32927 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 32928 time: data.touchStartTime 32929 }); 32930 } 32931 32932 data.velocities.push({ 32933 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 32934 time: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])() 32935 }); 32936 } 32937 32938 function onTouchEnd({ 32939 currentPos 32940 }) { 32941 const { 32942 params, 32943 $wrapperEl, 32944 rtlTranslate: rtl, 32945 snapGrid, 32946 touchEventsData: data 32947 } = swiper; // Time diff 32948 32949 const touchEndTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])(); 32950 const timeDiff = touchEndTime - data.touchStartTime; 32951 32952 if (currentPos < -swiper.minTranslate()) { 32953 swiper.slideTo(swiper.activeIndex); 32954 return; 32955 } 32956 32957 if (currentPos > -swiper.maxTranslate()) { 32958 if (swiper.slides.length < snapGrid.length) { 32959 swiper.slideTo(snapGrid.length - 1); 32960 } else { 32961 swiper.slideTo(swiper.slides.length - 1); 32962 } 32963 32964 return; 32965 } 32966 32967 if (params.freeMode.momentum) { 32968 if (data.velocities.length > 1) { 32969 const lastMoveEvent = data.velocities.pop(); 32970 const velocityEvent = data.velocities.pop(); 32971 const distance = lastMoveEvent.position - velocityEvent.position; 32972 const time = lastMoveEvent.time - velocityEvent.time; 32973 swiper.velocity = distance / time; 32974 swiper.velocity /= 2; 32975 32976 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 32977 swiper.velocity = 0; 32978 } // this implies that the user stopped moving a finger then released. 32979 // There would be no events with distance zero, so the last event is stale. 32980 32981 32982 if (time > 150 || Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["now"])() - lastMoveEvent.time > 300) { 32983 swiper.velocity = 0; 32984 } 32985 } else { 32986 swiper.velocity = 0; 32987 } 32988 32989 swiper.velocity *= params.freeMode.momentumVelocityRatio; 32990 data.velocities.length = 0; 32991 let momentumDuration = 1000 * params.freeMode.momentumRatio; 32992 const momentumDistance = swiper.velocity * momentumDuration; 32993 let newPosition = swiper.translate + momentumDistance; 32994 if (rtl) newPosition = -newPosition; 32995 let doBounce = false; 32996 let afterBouncePosition; 32997 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 32998 let needsLoopFix; 32999 33000 if (newPosition < swiper.maxTranslate()) { 33001 if (params.freeMode.momentumBounce) { 33002 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 33003 newPosition = swiper.maxTranslate() - bounceAmount; 33004 } 33005 33006 afterBouncePosition = swiper.maxTranslate(); 33007 doBounce = true; 33008 data.allowMomentumBounce = true; 33009 } else { 33010 newPosition = swiper.maxTranslate(); 33011 } 33012 33013 if (params.loop && params.centeredSlides) needsLoopFix = true; 33014 } else if (newPosition > swiper.minTranslate()) { 33015 if (params.freeMode.momentumBounce) { 33016 if (newPosition - swiper.minTranslate() > bounceAmount) { 33017 newPosition = swiper.minTranslate() + bounceAmount; 33018 } 33019 33020 afterBouncePosition = swiper.minTranslate(); 33021 doBounce = true; 33022 data.allowMomentumBounce = true; 33023 } else { 33024 newPosition = swiper.minTranslate(); 33025 } 33026 33027 if (params.loop && params.centeredSlides) needsLoopFix = true; 33028 } else if (params.freeMode.sticky) { 33029 let nextSlide; 33030 33031 for (let j = 0; j < snapGrid.length; j += 1) { 33032 if (snapGrid[j] > -newPosition) { 33033 nextSlide = j; 33034 break; 33035 } 33036 } 33037 33038 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 33039 newPosition = snapGrid[nextSlide]; 33040 } else { 33041 newPosition = snapGrid[nextSlide - 1]; 33042 } 33043 33044 newPosition = -newPosition; 33045 } 33046 33047 if (needsLoopFix) { 33048 once('transitionEnd', () => { 33049 swiper.loopFix(); 33050 }); 33051 } // Fix duration 33052 33053 33054 if (swiper.velocity !== 0) { 33055 if (rtl) { 33056 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 33057 } else { 33058 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 33059 } 33060 33061 if (params.freeMode.sticky) { 33062 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 33063 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 33064 // It's easy to see this when simulating touch with mouse events. To fix this, 33065 // limit single-slide swipes to the default slide duration. This also has the 33066 // nice side effect of matching slide speed if the user stopped moving before 33067 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 33068 // For faster swipes, also apply limits (albeit higher ones). 33069 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 33070 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 33071 33072 if (moveDistance < currentSlideSize) { 33073 momentumDuration = params.speed; 33074 } else if (moveDistance < 2 * currentSlideSize) { 33075 momentumDuration = params.speed * 1.5; 33076 } else { 33077 momentumDuration = params.speed * 2.5; 33078 } 33079 } 33080 } else if (params.freeMode.sticky) { 33081 swiper.slideToClosest(); 33082 return; 33083 } 33084 33085 if (params.freeMode.momentumBounce && doBounce) { 33086 swiper.updateProgress(afterBouncePosition); 33087 swiper.setTransition(momentumDuration); 33088 swiper.setTranslate(newPosition); 33089 swiper.transitionStart(true, swiper.swipeDirection); 33090 swiper.animating = true; 33091 $wrapperEl.transitionEnd(() => { 33092 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 33093 emit('momentumBounce'); 33094 swiper.setTransition(params.speed); 33095 setTimeout(() => { 33096 swiper.setTranslate(afterBouncePosition); 33097 $wrapperEl.transitionEnd(() => { 33098 if (!swiper || swiper.destroyed) return; 33099 swiper.transitionEnd(); 33100 }); 33101 }, 0); 33102 }); 33103 } else if (swiper.velocity) { 33104 emit('_freeModeNoMomentumRelease'); 33105 swiper.updateProgress(newPosition); 33106 swiper.setTransition(momentumDuration); 33107 swiper.setTranslate(newPosition); 33108 swiper.transitionStart(true, swiper.swipeDirection); 33109 33110 if (!swiper.animating) { 33111 swiper.animating = true; 33112 $wrapperEl.transitionEnd(() => { 33113 if (!swiper || swiper.destroyed) return; 33114 swiper.transitionEnd(); 33115 }); 33116 } 33117 } else { 33118 swiper.updateProgress(newPosition); 33119 } 33120 33121 swiper.updateActiveIndex(); 33122 swiper.updateSlidesClasses(); 33123 } else if (params.freeMode.sticky) { 33124 swiper.slideToClosest(); 33125 return; 33126 } else if (params.freeMode) { 33127 emit('_freeModeNoMomentumRelease'); 33128 } 33129 33130 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 33131 swiper.updateProgress(); 33132 swiper.updateActiveIndex(); 33133 swiper.updateSlidesClasses(); 33134 } 33135 } 33136 33137 Object.assign(swiper, { 33138 freeMode: { 33139 onTouchStart, 33140 onTouchMove, 33141 onTouchEnd 33142 } 33143 }); 33144} 33145 33146/***/ }), 33147
vendor: 3,784 bytes, lines 33148-33276
33148/***/ "./node_modules/swiper/modules/grid/grid.js": 33149/*!**************************************************!*\ 33150 !*** ./node_modules/swiper/modules/grid/grid.js ***! 33151 \**************************************************/ 33152/*! exports provided: default */ 33153/***/ (function(module, __webpack_exports__, __webpack_require__) { 33154 33155"use strict"; 33156__webpack_require__.r(__webpack_exports__); 33157/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Grid; }); 33158function Grid({ 33159 swiper, 33160 extendParams 33161}) { 33162 extendParams({ 33163 grid: { 33164 rows: 1, 33165 fill: 'column' 33166 } 33167 }); 33168 let slidesNumberEvenToRows; 33169 let slidesPerRow; 33170 let numFullColumns; 33171 33172 const initSlides = slidesLength => { 33173 const { 33174 slidesPerView 33175 } = swiper.params; 33176 const { 33177 rows, 33178 fill 33179 } = swiper.params.grid; 33180 slidesPerRow = slidesNumberEvenToRows / rows; 33181 numFullColumns = Math.floor(slidesLength / rows); 33182 33183 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 33184 slidesNumberEvenToRows = slidesLength; 33185 } else { 33186 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 33187 } 33188 33189 if (slidesPerView !== 'auto' && fill === 'row') { 33190 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 33191 } 33192 }; 33193 33194 const updateSlide = (i, slide, slidesLength, getDirectionLabel) => { 33195 const { 33196 slidesPerGroup, 33197 spaceBetween 33198 } = swiper.params; 33199 const { 33200 rows, 33201 fill 33202 } = swiper.params.grid; // Set slides order 33203 33204 let newSlideOrderIndex; 33205 let column; 33206 let row; 33207 33208 if (fill === 'row' && slidesPerGroup > 1) { 33209 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 33210 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 33211 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 33212 row = Math.floor(slideIndexInGroup / columnsInGroup); 33213 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 33214 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 33215 slide.css({ 33216 '-webkit-order': newSlideOrderIndex, 33217 order: newSlideOrderIndex 33218 }); 33219 } else if (fill === 'column') { 33220 column = Math.floor(i / rows); 33221 row = i - column * rows; 33222 33223 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 33224 row += 1; 33225 33226 if (row >= rows) { 33227 row = 0; 33228 column += 1; 33229 } 33230 } 33231 } else { 33232 row = Math.floor(i / slidesPerRow); 33233 column = i - row * slidesPerRow; 33234 } 33235 33236 slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : ''); 33237 }; 33238 33239 const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => { 33240 const { 33241 spaceBetween, 33242 centeredSlides, 33243 roundLengths 33244 } = swiper.params; 33245 const { 33246 rows 33247 } = swiper.params.grid; 33248 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 33249 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 33250 swiper.$wrapperEl.css({ 33251 [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px` 33252 }); 33253 33254 if (centeredSlides) { 33255 snapGrid.splice(0, snapGrid.length); 33256 const newSlidesGrid = []; 33257 33258 for (let i = 0; i < snapGrid.length; i += 1) { 33259 let slidesGridItem = snapGrid[i]; 33260 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 33261 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 33262 } 33263 33264 snapGrid.push(...newSlidesGrid); 33265 } 33266 }; 33267 33268 swiper.grid = { 33269 initSlides, 33270 updateSlide, 33271 updateWrapperSize 33272 }; 33273} 33274 33275/***/ }), 33276
vendor: 3,790 bytes, lines 33277-33387
33277/***/ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js": 33278/*!************************************************************************!*\ 33279 !*** ./node_modules/swiper/modules/hash-navigation/hash-navigation.js ***! 33280 \************************************************************************/ 33281/*! exports provided: default */ 33282/***/ (function(module, __webpack_exports__, __webpack_require__) { 33283 33284"use strict"; 33285__webpack_require__.r(__webpack_exports__); 33286/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return HashNavigation; }); 33287/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 33288/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 33289 33290 33291function HashNavigation({ 33292 swiper, 33293 extendParams, 33294 emit, 33295 on 33296}) { 33297 let initialized = false; 33298 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 33299 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33300 extendParams({ 33301 hashNavigation: { 33302 enabled: false, 33303 replaceState: false, 33304 watchState: false 33305 } 33306 }); 33307 33308 const onHashChange = () => { 33309 emit('hashChange'); 33310 const newHash = document.location.hash.replace('#', ''); 33311 const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash'); 33312 33313 if (newHash !== activeSlideHash) { 33314 const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash="${newHash}"]`).index(); 33315 if (typeof newIndex === 'undefined') return; 33316 swiper.slideTo(newIndex); 33317 } 33318 }; 33319 33320 const setHash = () => { 33321 if (!initialized || !swiper.params.hashNavigation.enabled) return; 33322 33323 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 33324 window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''); 33325 emit('hashSet'); 33326 } else { 33327 const slide = swiper.slides.eq(swiper.activeIndex); 33328 const hash = slide.attr('data-hash') || slide.attr('data-history'); 33329 document.location.hash = hash || ''; 33330 emit('hashSet'); 33331 } 33332 }; 33333 33334 const init = () => { 33335 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 33336 initialized = true; 33337 const hash = document.location.hash.replace('#', ''); 33338 33339 if (hash) { 33340 const speed = 0; 33341 33342 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 33343 const slide = swiper.slides.eq(i); 33344 const slideHash = slide.attr('data-hash') || slide.attr('data-history'); 33345 33346 if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) { 33347 const index = slide.index(); 33348 swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true); 33349 } 33350 } 33351 } 33352 33353 if (swiper.params.hashNavigation.watchState) { 33354 Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).on('hashchange', onHashChange); 33355 } 33356 }; 33357 33358 const destroy = () => { 33359 if (swiper.params.hashNavigation.watchState) { 33360 Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window).off('hashchange', onHashChange); 33361 } 33362 }; 33363 33364 on('init', () => { 33365 if (swiper.params.hashNavigation.enabled) { 33366 init(); 33367 } 33368 }); 33369 on('destroy', () => { 33370 if (swiper.params.hashNavigation.enabled) { 33371 destroy(); 33372 } 33373 }); 33374 on('transitionEnd _freeModeNoMomentumRelease', () => { 33375 if (initialized) { 33376 setHash(); 33377 } 33378 }); 33379 on('slideChange', () => { 33380 if (initialized && swiper.params.cssMode) { 33381 setHash(); 33382 } 33383 }); 33384} 33385 33386/***/ }), 33387
vendor: 4,813 bytes, lines 33388-33556
33388/***/ "./node_modules/swiper/modules/history/history.js": 33389/*!********************************************************!*\ 33390 !*** ./node_modules/swiper/modules/history/history.js ***! 33391 \********************************************************/ 33392/*! exports provided: default */ 33393/***/ (function(module, __webpack_exports__, __webpack_require__) { 33394 33395"use strict"; 33396__webpack_require__.r(__webpack_exports__); 33397/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return History; }); 33398/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 33399 33400function History({ 33401 swiper, 33402 extendParams, 33403 on 33404}) { 33405 extendParams({ 33406 history: { 33407 enabled: false, 33408 root: '', 33409 replaceState: false, 33410 key: 'slides', 33411 keepQuery: false 33412 } 33413 }); 33414 let initialized = false; 33415 let paths = {}; 33416 33417 const slugify = text => { 33418 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 33419 }; 33420 33421 const getPathValues = urlOverride => { 33422 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33423 let location; 33424 33425 if (urlOverride) { 33426 location = new URL(urlOverride); 33427 } else { 33428 location = window.location; 33429 } 33430 33431 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 33432 const total = pathArray.length; 33433 const key = pathArray[total - 2]; 33434 const value = pathArray[total - 1]; 33435 return { 33436 key, 33437 value 33438 }; 33439 }; 33440 33441 const setHistory = (key, index) => { 33442 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33443 if (!initialized || !swiper.params.history.enabled) return; 33444 let location; 33445 33446 if (swiper.params.url) { 33447 location = new URL(swiper.params.url); 33448 } else { 33449 location = window.location; 33450 } 33451 33452 const slide = swiper.slides.eq(index); 33453 let value = slugify(slide.attr('data-history')); 33454 33455 if (swiper.params.history.root.length > 0) { 33456 let root = swiper.params.history.root; 33457 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 33458 value = `${root}/${key}/${value}`; 33459 } else if (!location.pathname.includes(key)) { 33460 value = `${key}/${value}`; 33461 } 33462 33463 if (swiper.params.history.keepQuery) { 33464 value += location.search; 33465 } 33466 33467 const currentState = window.history.state; 33468 33469 if (currentState && currentState.value === value) { 33470 return; 33471 } 33472 33473 if (swiper.params.history.replaceState) { 33474 window.history.replaceState({ 33475 value 33476 }, null, value); 33477 } else { 33478 window.history.pushState({ 33479 value 33480 }, null, value); 33481 } 33482 }; 33483 33484 const scrollToSlide = (speed, value, runCallbacks) => { 33485 if (value) { 33486 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 33487 const slide = swiper.slides.eq(i); 33488 const slideHistory = slugify(slide.attr('data-history')); 33489 33490 if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) { 33491 const index = slide.index(); 33492 swiper.slideTo(index, speed, runCallbacks); 33493 } 33494 } 33495 } else { 33496 swiper.slideTo(0, speed, runCallbacks); 33497 } 33498 }; 33499 33500 const setHistoryPopState = () => { 33501 paths = getPathValues(swiper.params.url); 33502 scrollToSlide(swiper.params.speed, paths.value, false); 33503 }; 33504 33505 const init = () => { 33506 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33507 if (!swiper.params.history) return; 33508 33509 if (!window.history || !window.history.pushState) { 33510 swiper.params.history.enabled = false; 33511 swiper.params.hashNavigation.enabled = true; 33512 return; 33513 } 33514 33515 initialized = true; 33516 paths = getPathValues(swiper.params.url); 33517 if (!paths.key && !paths.value) return; 33518 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 33519 33520 if (!swiper.params.history.replaceState) { 33521 window.addEventListener('popstate', setHistoryPopState); 33522 } 33523 }; 33524 33525 const destroy = () => { 33526 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33527 33528 if (!swiper.params.history.replaceState) { 33529 window.removeEventListener('popstate', setHistoryPopState); 33530 } 33531 }; 33532 33533 on('init', () => { 33534 if (swiper.params.history.enabled) { 33535 init(); 33536 } 33537 }); 33538 on('destroy', () => { 33539 if (swiper.params.history.enabled) { 33540 destroy(); 33541 } 33542 }); 33543 on('transitionEnd _freeModeNoMomentumRelease', () => { 33544 if (initialized) { 33545 setHistory(swiper.params.history.key, swiper.activeIndex); 33546 } 33547 }); 33548 on('slideChange', () => { 33549 if (initialized && swiper.params.cssMode) { 33550 setHistory(swiper.params.history.key, swiper.activeIndex); 33551 } 33552 }); 33553} 33554 33555/***/ }), 33556
vendor: 5,188 bytes, lines 33557-33702
33557/***/ "./node_modules/swiper/modules/keyboard/keyboard.js": 33558/*!**********************************************************!*\ 33559 !*** ./node_modules/swiper/modules/keyboard/keyboard.js ***! 33560 \**********************************************************/ 33561/*! exports provided: default */ 33562/***/ (function(module, __webpack_exports__, __webpack_require__) { 33563 33564"use strict"; 33565__webpack_require__.r(__webpack_exports__); 33566/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Keyboard; }); 33567/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 33568/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 33569/* eslint-disable consistent-return */ 33570 33571 33572function Keyboard({ 33573 swiper, 33574 extendParams, 33575 on, 33576 emit 33577}) { 33578 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 33579 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33580 swiper.keyboard = { 33581 enabled: false 33582 }; 33583 extendParams({ 33584 keyboard: { 33585 enabled: false, 33586 onlyInViewport: true, 33587 pageUpDown: true 33588 } 33589 }); 33590 33591 function handle(event) { 33592 if (!swiper.enabled) return; 33593 const { 33594 rtlTranslate: rtl 33595 } = swiper; 33596 let e = event; 33597 if (e.originalEvent) e = e.originalEvent; // jquery fix 33598 33599 const kc = e.keyCode || e.charCode; 33600 const pageUpDown = swiper.params.keyboard.pageUpDown; 33601 const isPageUp = pageUpDown && kc === 33; 33602 const isPageDown = pageUpDown && kc === 34; 33603 const isArrowLeft = kc === 37; 33604 const isArrowRight = kc === 39; 33605 const isArrowUp = kc === 38; 33606 const isArrowDown = kc === 40; // Directions locks 33607 33608 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 33609 return false; 33610 } 33611 33612 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 33613 return false; 33614 } 33615 33616 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 33617 return undefined; 33618 } 33619 33620 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { 33621 return undefined; 33622 } 33623 33624 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 33625 let inView = false; // Check that swiper should be inside of visible area of window 33626 33627 if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) { 33628 return undefined; 33629 } 33630 33631 const $el = swiper.$el; 33632 const swiperWidth = $el[0].clientWidth; 33633 const swiperHeight = $el[0].clientHeight; 33634 const windowWidth = window.innerWidth; 33635 const windowHeight = window.innerHeight; 33636 const swiperOffset = swiper.$el.offset(); 33637 if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; 33638 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 33639 33640 for (let i = 0; i < swiperCoord.length; i += 1) { 33641 const point = swiperCoord[i]; 33642 33643 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 33644 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 33645 33646 inView = true; 33647 } 33648 } 33649 33650 if (!inView) return undefined; 33651 } 33652 33653 if (swiper.isHorizontal()) { 33654 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 33655 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 33656 } 33657 33658 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 33659 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 33660 } else { 33661 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 33662 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 33663 } 33664 33665 if (isPageDown || isArrowDown) swiper.slideNext(); 33666 if (isPageUp || isArrowUp) swiper.slidePrev(); 33667 } 33668 33669 emit('keyPress', kc); 33670 return undefined; 33671 } 33672 33673 function enable() { 33674 if (swiper.keyboard.enabled) return; 33675 Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).on('keydown', handle); 33676 swiper.keyboard.enabled = true; 33677 } 33678 33679 function disable() { 33680 if (!swiper.keyboard.enabled) return; 33681 Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(document).off('keydown', handle); 33682 swiper.keyboard.enabled = false; 33683 } 33684 33685 on('init', () => { 33686 if (swiper.params.keyboard.enabled) { 33687 enable(); 33688 } 33689 }); 33690 on('destroy', () => { 33691 if (swiper.keyboard.enabled) { 33692 disable(); 33693 } 33694 }); 33695 Object.assign(swiper.keyboard, { 33696 enable, 33697 disable 33698 }); 33699} 33700 33701/***/ }), 33702
vendor: 10,960 bytes, lines 33703-34004
33703/***/ "./node_modules/swiper/modules/lazy/lazy.js": 33704/*!**************************************************!*\ 33705 !*** ./node_modules/swiper/modules/lazy/lazy.js ***! 33706 \**************************************************/ 33707/*! exports provided: default */ 33708/***/ (function(module, __webpack_exports__, __webpack_require__) { 33709 33710"use strict"; 33711__webpack_require__.r(__webpack_exports__); 33712/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Lazy; }); 33713/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 33714/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 33715 33716 33717function Lazy({ 33718 swiper, 33719 extendParams, 33720 on, 33721 emit 33722}) { 33723 extendParams({ 33724 lazy: { 33725 checkInView: false, 33726 enabled: false, 33727 loadPrevNext: false, 33728 loadPrevNextAmount: 1, 33729 loadOnTransitionStart: false, 33730 scrollingElement: '', 33731 elementClass: 'swiper-lazy', 33732 loadingClass: 'swiper-lazy-loading', 33733 loadedClass: 'swiper-lazy-loaded', 33734 preloaderClass: 'swiper-lazy-preloader' 33735 } 33736 }); 33737 swiper.lazy = {}; 33738 let scrollHandlerAttached = false; 33739 let initialImageLoaded = false; 33740 33741 function loadInSlide(index, loadInDuplicate = true) { 33742 const params = swiper.params.lazy; 33743 if (typeof index === 'undefined') return; 33744 if (swiper.slides.length === 0) return; 33745 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 33746 const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index="${index}"]`) : swiper.slides.eq(index); 33747 const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`); 33748 33749 if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) { 33750 $images.push($slideEl[0]); 33751 } 33752 33753 if ($images.length === 0) return; 33754 $images.each(imageEl => { 33755 const $imageEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(imageEl); 33756 $imageEl.addClass(params.loadingClass); 33757 const background = $imageEl.attr('data-background'); 33758 const src = $imageEl.attr('data-src'); 33759 const srcset = $imageEl.attr('data-srcset'); 33760 const sizes = $imageEl.attr('data-sizes'); 33761 const $pictureEl = $imageEl.parent('picture'); 33762 swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => { 33763 if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return; 33764 33765 if (background) { 33766 $imageEl.css('background-image', `url("${background}")`); 33767 $imageEl.removeAttr('data-background'); 33768 } else { 33769 if (srcset) { 33770 $imageEl.attr('srcset', srcset); 33771 $imageEl.removeAttr('data-srcset'); 33772 } 33773 33774 if (sizes) { 33775 $imageEl.attr('sizes', sizes); 33776 $imageEl.removeAttr('data-sizes'); 33777 } 33778 33779 if ($pictureEl.length) { 33780 $pictureEl.children('source').each(sourceEl => { 33781 const $source = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(sourceEl); 33782 33783 if ($source.attr('data-srcset')) { 33784 $source.attr('srcset', $source.attr('data-srcset')); 33785 $source.removeAttr('data-srcset'); 33786 } 33787 }); 33788 } 33789 33790 if (src) { 33791 $imageEl.attr('src', src); 33792 $imageEl.removeAttr('data-src'); 33793 } 33794 } 33795 33796 $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass); 33797 $slideEl.find(`.${params.preloaderClass}`).remove(); 33798 33799 if (swiper.params.loop && loadInDuplicate) { 33800 const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index'); 33801 33802 if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) { 33803 const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index="${slideOriginalIndex}"]:not(.${swiper.params.slideDuplicateClass})`); 33804 loadInSlide(originalSlide.index(), false); 33805 } else { 33806 const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index="${slideOriginalIndex}"]`); 33807 loadInSlide(duplicatedSlide.index(), false); 33808 } 33809 } 33810 33811 emit('lazyImageReady', $slideEl[0], $imageEl[0]); 33812 33813 if (swiper.params.autoHeight) { 33814 swiper.updateAutoHeight(); 33815 } 33816 }); 33817 emit('lazyImageLoad', $slideEl[0], $imageEl[0]); 33818 }); 33819 } 33820 33821 function load() { 33822 const { 33823 $wrapperEl, 33824 params: swiperParams, 33825 slides, 33826 activeIndex 33827 } = swiper; 33828 const isVirtual = swiper.virtual && swiperParams.virtual.enabled; 33829 const params = swiperParams.lazy; 33830 let slidesPerView = swiperParams.slidesPerView; 33831 33832 if (slidesPerView === 'auto') { 33833 slidesPerView = 0; 33834 } 33835 33836 function slideExist(index) { 33837 if (isVirtual) { 33838 if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index="${index}"]`).length) { 33839 return true; 33840 } 33841 } else if (slides[index]) return true; 33842 33843 return false; 33844 } 33845 33846 function slideIndex(slideEl) { 33847 if (isVirtual) { 33848 return Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index'); 33849 } 33850 33851 return Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index(); 33852 } 33853 33854 if (!initialImageLoaded) initialImageLoaded = true; 33855 33856 if (swiper.params.watchSlidesProgress) { 33857 $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => { 33858 const index = isVirtual ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).attr('data-swiper-slide-index') : Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(slideEl).index(); 33859 loadInSlide(index); 33860 }); 33861 } else if (slidesPerView > 1) { 33862 for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) { 33863 if (slideExist(i)) loadInSlide(i); 33864 } 33865 } else { 33866 loadInSlide(activeIndex); 33867 } 33868 33869 if (params.loadPrevNext) { 33870 if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) { 33871 const amount = params.loadPrevNextAmount; 33872 const spv = Math.ceil(slidesPerView); 33873 const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length); 33874 const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides 33875 33876 for (let i = activeIndex + spv; i < maxIndex; i += 1) { 33877 if (slideExist(i)) loadInSlide(i); 33878 } // Prev Slides 33879 33880 33881 for (let i = minIndex; i < activeIndex; i += 1) { 33882 if (slideExist(i)) loadInSlide(i); 33883 } 33884 } else { 33885 const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`); 33886 if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide)); 33887 const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`); 33888 if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide)); 33889 } 33890 } 33891 } 33892 33893 function checkInViewOnLoad() { 33894 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 33895 if (!swiper || swiper.destroyed) return; 33896 const $scrollElement = swiper.params.lazy.scrollingElement ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.lazy.scrollingElement) : Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(window); 33897 const isWindow = $scrollElement[0] === window; 33898 const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth; 33899 const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight; 33900 const swiperOffset = swiper.$el.offset(); 33901 const { 33902 rtlTranslate: rtl 33903 } = swiper; 33904 let inView = false; 33905 if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft; 33906 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]]; 33907 33908 for (let i = 0; i < swiperCoord.length; i += 1) { 33909 const point = swiperCoord[i]; 33910 33911 if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) { 33912 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 33913 33914 inView = true; 33915 } 33916 } 33917 33918 const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? { 33919 passive: true, 33920 capture: false 33921 } : false; 33922 33923 if (inView) { 33924 load(); 33925 $scrollElement.off('scroll', checkInViewOnLoad, passiveListener); 33926 } else if (!scrollHandlerAttached) { 33927 scrollHandlerAttached = true; 33928 $scrollElement.on('scroll', checkInViewOnLoad, passiveListener); 33929 } 33930 } 33931 33932 on('beforeInit', () => { 33933 if (swiper.params.lazy.enabled && swiper.params.preloadImages) { 33934 swiper.params.preloadImages = false; 33935 } 33936 }); 33937 on('init', () => { 33938 if (swiper.params.lazy.enabled) { 33939 if (swiper.params.lazy.checkInView) { 33940 checkInViewOnLoad(); 33941 } else { 33942 load(); 33943 } 33944 } 33945 }); 33946 on('scroll', () => { 33947 if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) { 33948 load(); 33949 } 33950 }); 33951 on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => { 33952 if (swiper.params.lazy.enabled) { 33953 if (swiper.params.lazy.checkInView) { 33954 checkInViewOnLoad(); 33955 } else { 33956 load(); 33957 } 33958 } 33959 }); 33960 on('transitionStart', () => { 33961 if (swiper.params.lazy.enabled) { 33962 if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) { 33963 if (swiper.params.lazy.checkInView) { 33964 checkInViewOnLoad(); 33965 } else { 33966 load(); 33967 } 33968 } 33969 } 33970 }); 33971 on('transitionEnd', () => { 33972 if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) { 33973 if (swiper.params.lazy.checkInView) { 33974 checkInViewOnLoad(); 33975 } else { 33976 load(); 33977 } 33978 } 33979 }); 33980 on('slideChange', () => { 33981 const { 33982 lazy, 33983 cssMode, 33984 watchSlidesProgress, 33985 touchReleaseOnEdges, 33986 resistanceRatio 33987 } = swiper.params; 33988 33989 if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) { 33990 load(); 33991 } 33992 }); 33993 on('destroy', () => { 33994 if (!swiper.$el) return; 33995 swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass); 33996 }); 33997 Object.assign(swiper.lazy, { 33998 load, 33999 loadInSlide 34000 }); 34001} 34002 34003/***/ }), 34004
vendor: 2,149 bytes, lines 34005-34038
34005/***/ "./node_modules/swiper/modules/manipulation/manipulation.js": 34006/*!******************************************************************!*\ 34007 !*** ./node_modules/swiper/modules/manipulation/manipulation.js ***! 34008 \******************************************************************/ 34009/*! exports provided: default */ 34010/***/ (function(module, __webpack_exports__, __webpack_require__) { 34011 34012"use strict"; 34013__webpack_require__.r(__webpack_exports__); 34014/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Manipulation; }); 34015/* harmony import */ var _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./methods/appendSlide.js */ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js"); 34016/* harmony import */ var _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./methods/prependSlide.js */ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js"); 34017/* harmony import */ var _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./methods/addSlide.js */ "./node_modules/swiper/modules/manipulation/methods/addSlide.js"); 34018/* harmony import */ var _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./methods/removeSlide.js */ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js"); 34019/* harmony import */ var _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./methods/removeAllSlides.js */ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js"); 34020 34021 34022 34023 34024 34025function Manipulation({ 34026 swiper 34027}) { 34028 Object.assign(swiper, { 34029 appendSlide: _methods_appendSlide_js__WEBPACK_IMPORTED_MODULE_0__["default"].bind(swiper), 34030 prependSlide: _methods_prependSlide_js__WEBPACK_IMPORTED_MODULE_1__["default"].bind(swiper), 34031 addSlide: _methods_addSlide_js__WEBPACK_IMPORTED_MODULE_2__["default"].bind(swiper), 34032 removeSlide: _methods_removeSlide_js__WEBPACK_IMPORTED_MODULE_3__["default"].bind(swiper), 34033 removeAllSlides: _methods_removeAllSlides_js__WEBPACK_IMPORTED_MODULE_4__["default"].bind(swiper) 34034 }); 34035} 34036 34037/***/ }), 34038
vendor: 2,074 bytes, lines 34039-34115
34039/***/ "./node_modules/swiper/modules/manipulation/methods/addSlide.js": 34040/*!**********************************************************************!*\ 34041 !*** ./node_modules/swiper/modules/manipulation/methods/addSlide.js ***! 34042 \**********************************************************************/ 34043/*! exports provided: default */ 34044/***/ (function(module, __webpack_exports__, __webpack_require__) { 34045 34046"use strict"; 34047__webpack_require__.r(__webpack_exports__); 34048/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addSlide; }); 34049function addSlide(index, slides) { 34050 const swiper = this; 34051 const { 34052 $wrapperEl, 34053 params, 34054 activeIndex 34055 } = swiper; 34056 let activeIndexBuffer = activeIndex; 34057 34058 if (params.loop) { 34059 activeIndexBuffer -= swiper.loopedSlides; 34060 swiper.loopDestroy(); 34061 swiper.slides = $wrapperEl.children(`.${params.slideClass}`); 34062 } 34063 34064 const baseLength = swiper.slides.length; 34065 34066 if (index <= 0) { 34067 swiper.prependSlide(slides); 34068 return; 34069 } 34070 34071 if (index >= baseLength) { 34072 swiper.appendSlide(slides); 34073 return; 34074 } 34075 34076 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 34077 const slidesBuffer = []; 34078 34079 for (let i = baseLength - 1; i >= index; i -= 1) { 34080 const currentSlide = swiper.slides.eq(i); 34081 currentSlide.remove(); 34082 slidesBuffer.unshift(currentSlide); 34083 } 34084 34085 if (typeof slides === 'object' && 'length' in slides) { 34086 for (let i = 0; i < slides.length; i += 1) { 34087 if (slides[i]) $wrapperEl.append(slides[i]); 34088 } 34089 34090 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 34091 } else { 34092 $wrapperEl.append(slides); 34093 } 34094 34095 for (let i = 0; i < slidesBuffer.length; i += 1) { 34096 $wrapperEl.append(slidesBuffer[i]); 34097 } 34098 34099 if (params.loop) { 34100 swiper.loopCreate(); 34101 } 34102 34103 if (!params.observer) { 34104 swiper.update(); 34105 } 34106 34107 if (params.loop) { 34108 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 34109 } else { 34110 swiper.slideTo(newActiveIndex, 0, false); 34111 } 34112} 34113 34114/***/ }), 34115
vendor: 1,078 bytes, lines 34116-34155
34116/***/ "./node_modules/swiper/modules/manipulation/methods/appendSlide.js": 34117/*!*************************************************************************!*\ 34118 !*** ./node_modules/swiper/modules/manipulation/methods/appendSlide.js ***! 34119 \*************************************************************************/ 34120/*! exports provided: default */ 34121/***/ (function(module, __webpack_exports__, __webpack_require__) { 34122 34123"use strict"; 34124__webpack_require__.r(__webpack_exports__); 34125/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return appendSlide; }); 34126function appendSlide(slides) { 34127 const swiper = this; 34128 const { 34129 $wrapperEl, 34130 params 34131 } = swiper; 34132 34133 if (params.loop) { 34134 swiper.loopDestroy(); 34135 } 34136 34137 if (typeof slides === 'object' && 'length' in slides) { 34138 for (let i = 0; i < slides.length; i += 1) { 34139 if (slides[i]) $wrapperEl.append(slides[i]); 34140 } 34141 } else { 34142 $wrapperEl.append(slides); 34143 } 34144 34145 if (params.loop) { 34146 swiper.loopCreate(); 34147 } 34148 34149 if (!params.observer) { 34150 swiper.update(); 34151 } 34152} 34153 34154/***/ }), 34155
vendor: 1,240 bytes, lines 34156-34202
34156/***/ "./node_modules/swiper/modules/manipulation/methods/prependSlide.js": 34157/*!**************************************************************************!*\ 34158 !*** ./node_modules/swiper/modules/manipulation/methods/prependSlide.js ***! 34159 \**************************************************************************/ 34160/*! exports provided: default */ 34161/***/ (function(module, __webpack_exports__, __webpack_require__) { 34162 34163"use strict"; 34164__webpack_require__.r(__webpack_exports__); 34165/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return prependSlide; }); 34166function prependSlide(slides) { 34167 const swiper = this; 34168 const { 34169 params, 34170 $wrapperEl, 34171 activeIndex 34172 } = swiper; 34173 34174 if (params.loop) { 34175 swiper.loopDestroy(); 34176 } 34177 34178 let newActiveIndex = activeIndex + 1; 34179 34180 if (typeof slides === 'object' && 'length' in slides) { 34181 for (let i = 0; i < slides.length; i += 1) { 34182 if (slides[i]) $wrapperEl.prepend(slides[i]); 34183 } 34184 34185 newActiveIndex = activeIndex + slides.length; 34186 } else { 34187 $wrapperEl.prepend(slides); 34188 } 34189 34190 if (params.loop) { 34191 swiper.loopCreate(); 34192 } 34193 34194 if (!params.observer) { 34195 swiper.update(); 34196 } 34197 34198 swiper.slideTo(newActiveIndex, 0, false); 34199} 34200 34201/***/ }), 34202
vendor: 831 bytes, lines 34203-34225
34203/***/ "./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js": 34204/*!*****************************************************************************!*\ 34205 !*** ./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js ***! 34206 \*****************************************************************************/ 34207/*! exports provided: default */ 34208/***/ (function(module, __webpack_exports__, __webpack_require__) { 34209 34210"use strict"; 34211__webpack_require__.r(__webpack_exports__); 34212/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return removeAllSlides; }); 34213function removeAllSlides() { 34214 const swiper = this; 34215 const slidesIndexes = []; 34216 34217 for (let i = 0; i < swiper.slides.length; i += 1) { 34218 slidesIndexes.push(i); 34219 } 34220 34221 swiper.removeSlide(slidesIndexes); 34222} 34223 34224/***/ }), 34225
vendor: 1,869 bytes, lines 34226-34285
34226/***/ "./node_modules/swiper/modules/manipulation/methods/removeSlide.js": 34227/*!*************************************************************************!*\ 34228 !*** ./node_modules/swiper/modules/manipulation/methods/removeSlide.js ***! 34229 \*************************************************************************/ 34230/*! exports provided: default */ 34231/***/ (function(module, __webpack_exports__, __webpack_require__) { 34232 34233"use strict"; 34234__webpack_require__.r(__webpack_exports__); 34235/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return removeSlide; }); 34236function removeSlide(slidesIndexes) { 34237 const swiper = this; 34238 const { 34239 params, 34240 $wrapperEl, 34241 activeIndex 34242 } = swiper; 34243 let activeIndexBuffer = activeIndex; 34244 34245 if (params.loop) { 34246 activeIndexBuffer -= swiper.loopedSlides; 34247 swiper.loopDestroy(); 34248 swiper.slides = $wrapperEl.children(`.${params.slideClass}`); 34249 } 34250 34251 let newActiveIndex = activeIndexBuffer; 34252 let indexToRemove; 34253 34254 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 34255 for (let i = 0; i < slidesIndexes.length; i += 1) { 34256 indexToRemove = slidesIndexes[i]; 34257 if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); 34258 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 34259 } 34260 34261 newActiveIndex = Math.max(newActiveIndex, 0); 34262 } else { 34263 indexToRemove = slidesIndexes; 34264 if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove(); 34265 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 34266 newActiveIndex = Math.max(newActiveIndex, 0); 34267 } 34268 34269 if (params.loop) { 34270 swiper.loopCreate(); 34271 } 34272 34273 if (!params.observer) { 34274 swiper.update(); 34275 } 34276 34277 if (params.loop) { 34278 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 34279 } else { 34280 swiper.slideTo(newActiveIndex, 0, false); 34281 } 34282} 34283 34284/***/ }), 34285
vendor: 15,618 bytes, lines 34286-34723
34286/***/ "./node_modules/swiper/modules/mousewheel/mousewheel.js": 34287/*!**************************************************************!*\ 34288 !*** ./node_modules/swiper/modules/mousewheel/mousewheel.js ***! 34289 \**************************************************************/ 34290/*! exports provided: default */ 34291/***/ (function(module, __webpack_exports__, __webpack_require__) { 34292 34293"use strict"; 34294__webpack_require__.r(__webpack_exports__); 34295/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Mousewheel; }); 34296/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 34297/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 34298/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 34299/* eslint-disable consistent-return */ 34300 34301 34302 34303function Mousewheel({ 34304 swiper, 34305 extendParams, 34306 on, 34307 emit 34308}) { 34309 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 34310 extendParams({ 34311 mousewheel: { 34312 enabled: false, 34313 releaseOnEdges: false, 34314 invert: false, 34315 forceToAxis: false, 34316 sensitivity: 1, 34317 eventsTarget: 'container', 34318 thresholdDelta: null, 34319 thresholdTime: null 34320 } 34321 }); 34322 swiper.mousewheel = { 34323 enabled: false 34324 }; 34325 let timeout; 34326 let lastScrollTime = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(); 34327 let lastEventBeforeSnap; 34328 const recentWheelEvents = []; 34329 34330 function normalize(e) { 34331 // Reasonable defaults 34332 const PIXEL_STEP = 10; 34333 const LINE_HEIGHT = 40; 34334 const PAGE_HEIGHT = 800; 34335 let sX = 0; 34336 let sY = 0; // spinX, spinY 34337 34338 let pX = 0; 34339 let pY = 0; // pixelX, pixelY 34340 // Legacy 34341 34342 if ('detail' in e) { 34343 sY = e.detail; 34344 } 34345 34346 if ('wheelDelta' in e) { 34347 sY = -e.wheelDelta / 120; 34348 } 34349 34350 if ('wheelDeltaY' in e) { 34351 sY = -e.wheelDeltaY / 120; 34352 } 34353 34354 if ('wheelDeltaX' in e) { 34355 sX = -e.wheelDeltaX / 120; 34356 } // side scrolling on FF with DOMMouseScroll 34357 34358 34359 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 34360 sX = sY; 34361 sY = 0; 34362 } 34363 34364 pX = sX * PIXEL_STEP; 34365 pY = sY * PIXEL_STEP; 34366 34367 if ('deltaY' in e) { 34368 pY = e.deltaY; 34369 } 34370 34371 if ('deltaX' in e) { 34372 pX = e.deltaX; 34373 } 34374 34375 if (e.shiftKey && !pX) { 34376 // if user scrolls with shift he wants horizontal scroll 34377 pX = pY; 34378 pY = 0; 34379 } 34380 34381 if ((pX || pY) && e.deltaMode) { 34382 if (e.deltaMode === 1) { 34383 // delta in LINE units 34384 pX *= LINE_HEIGHT; 34385 pY *= LINE_HEIGHT; 34386 } else { 34387 // delta in PAGE units 34388 pX *= PAGE_HEIGHT; 34389 pY *= PAGE_HEIGHT; 34390 } 34391 } // Fall-back if spin cannot be determined 34392 34393 34394 if (pX && !sX) { 34395 sX = pX < 1 ? -1 : 1; 34396 } 34397 34398 if (pY && !sY) { 34399 sY = pY < 1 ? -1 : 1; 34400 } 34401 34402 return { 34403 spinX: sX, 34404 spinY: sY, 34405 pixelX: pX, 34406 pixelY: pY 34407 }; 34408 } 34409 34410 function handleMouseEnter() { 34411 if (!swiper.enabled) return; 34412 swiper.mouseEntered = true; 34413 } 34414 34415 function handleMouseLeave() { 34416 if (!swiper.enabled) return; 34417 swiper.mouseEntered = false; 34418 } 34419 34420 function animateSlider(newEvent) { 34421 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 34422 // Prevent if delta of wheel scroll delta is below configured threshold 34423 return false; 34424 } 34425 34426 if (swiper.params.mousewheel.thresholdTime && Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 34427 // Prevent if time between scrolls is below configured threshold 34428 return false; 34429 } // If the movement is NOT big enough and 34430 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 34431 // Don't go any further (avoid insignificant scroll movement). 34432 34433 34434 if (newEvent.delta >= 6 && Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])() - lastScrollTime < 60) { 34435 // Return false as a default 34436 return true; 34437 } // If user is scrolling towards the end: 34438 // If the slider hasn't hit the latest slide or 34439 // if the slider is a loop and 34440 // if the slider isn't moving right now: 34441 // Go to next slide and 34442 // emit a scroll event. 34443 // Else (the user is scrolling towards the beginning) and 34444 // if the slider hasn't hit the first slide or 34445 // if the slider is a loop and 34446 // if the slider isn't moving right now: 34447 // Go to prev slide and 34448 // emit a scroll event. 34449 34450 34451 if (newEvent.direction < 0) { 34452 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 34453 swiper.slideNext(); 34454 emit('scroll', newEvent.raw); 34455 } 34456 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 34457 swiper.slidePrev(); 34458 emit('scroll', newEvent.raw); 34459 } // If you got here is because an animation has been triggered so store the current time 34460 34461 34462 lastScrollTime = new window.Date().getTime(); // Return false as a default 34463 34464 return false; 34465 } 34466 34467 function releaseScroll(newEvent) { 34468 const params = swiper.params.mousewheel; 34469 34470 if (newEvent.direction < 0) { 34471 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 34472 // Return true to animate scroll on edges 34473 return true; 34474 } 34475 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 34476 // Return true to animate scroll on edges 34477 return true; 34478 } 34479 34480 return false; 34481 } 34482 34483 function handle(event) { 34484 let e = event; 34485 let disableParentSwiper = true; 34486 if (!swiper.enabled) return; 34487 const params = swiper.params.mousewheel; 34488 34489 if (swiper.params.cssMode) { 34490 e.preventDefault(); 34491 } 34492 34493 let target = swiper.$el; 34494 34495 if (swiper.params.mousewheel.eventsTarget !== 'container') { 34496 target = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget); 34497 } 34498 34499 if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true; 34500 if (e.originalEvent) e = e.originalEvent; // jquery fix 34501 34502 let delta = 0; 34503 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 34504 const data = normalize(e); 34505 34506 if (params.forceToAxis) { 34507 if (swiper.isHorizontal()) { 34508 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 34509 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 34510 } else { 34511 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 34512 } 34513 34514 if (delta === 0) return true; 34515 if (params.invert) delta = -delta; // Get the scroll positions 34516 34517 let positions = swiper.getTranslate() + delta * params.sensitivity; 34518 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 34519 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true: 34520 // the disableParentSwiper will be true. 34521 // When loop is false: 34522 // if the scroll positions is not on edge, 34523 // then the disableParentSwiper will be true. 34524 // if the scroll on edge positions, 34525 // then the disableParentSwiper will be false. 34526 34527 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 34528 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 34529 34530 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 34531 // Register the new event in a variable which stores the relevant data 34532 const newEvent = { 34533 time: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(), 34534 delta: Math.abs(delta), 34535 direction: Math.sign(delta), 34536 raw: event 34537 }; // Keep the most recent events 34538 34539 if (recentWheelEvents.length >= 2) { 34540 recentWheelEvents.shift(); // only store the last N events 34541 } 34542 34543 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 34544 recentWheelEvents.push(newEvent); // If there is at least one previous recorded event: 34545 // If direction has changed or 34546 // if the scroll is quicker than the previous one: 34547 // Animate the slider. 34548 // Else (this is the first time the wheel is moved): 34549 // Animate the slider. 34550 34551 if (prevEvent) { 34552 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 34553 animateSlider(newEvent); 34554 } 34555 } else { 34556 animateSlider(newEvent); 34557 } // If it's time to release the scroll: 34558 // Return now so you don't hit the preventDefault. 34559 34560 34561 if (releaseScroll(newEvent)) { 34562 return true; 34563 } 34564 } else { 34565 // Freemode or scrollContainer: 34566 // If we recently snapped after a momentum scroll, then ignore wheel events 34567 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 34568 // or if it's a new scroll (larger delta or inverse sign as last event before 34569 // an end-of-momentum snap). 34570 const newEvent = { 34571 time: Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["now"])(), 34572 delta: Math.abs(delta), 34573 direction: Math.sign(delta) 34574 }; 34575 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 34576 34577 if (!ignoreWheelEvents) { 34578 lastEventBeforeSnap = undefined; 34579 34580 if (swiper.params.loop) { 34581 swiper.loopFix(); 34582 } 34583 34584 let position = swiper.getTranslate() + delta * params.sensitivity; 34585 const wasBeginning = swiper.isBeginning; 34586 const wasEnd = swiper.isEnd; 34587 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 34588 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 34589 swiper.setTransition(0); 34590 swiper.setTranslate(position); 34591 swiper.updateProgress(); 34592 swiper.updateActiveIndex(); 34593 swiper.updateSlidesClasses(); 34594 34595 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 34596 swiper.updateSlidesClasses(); 34597 } 34598 34599 if (swiper.params.freeMode.sticky) { 34600 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 34601 // the end of a momentum scroll by storing recent (N=15?) wheel events. 34602 // 1. do all N events have decreasing or same (absolute value) delta? 34603 // 2. did all N events arrive in the last M (M=500?) msecs? 34604 // 3. does the earliest event have an (absolute value) delta that's 34605 // at least P (P=1?) larger than the most recent event's delta? 34606 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 34607 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 34608 // Snap immediately and ignore remaining wheel events in this scroll. 34609 // See comment above for "remaining wheel events in this scroll" determination. 34610 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 34611 clearTimeout(timeout); 34612 timeout = undefined; 34613 34614 if (recentWheelEvents.length >= 15) { 34615 recentWheelEvents.shift(); // only store the last N events 34616 } 34617 34618 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 34619 const firstEvent = recentWheelEvents[0]; 34620 recentWheelEvents.push(newEvent); 34621 34622 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 34623 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 34624 recentWheelEvents.splice(0); 34625 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 34626 // We're at the end of the deceleration of a momentum scroll, so there's no need 34627 // to wait for more events. Snap ASAP on the next tick. 34628 // Also, because there's some remaining momentum we'll bias the snap in the 34629 // direction of the ongoing scroll because it's better UX for the scroll to snap 34630 // in the same direction as the scroll instead of reversing to snap. Therefore, 34631 // if it's already scrolled more than 20% in the current direction, keep going. 34632 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 34633 lastEventBeforeSnap = newEvent; 34634 recentWheelEvents.splice(0); 34635 timeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["nextTick"])(() => { 34636 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 34637 }, 0); // no delay; move on next tick 34638 } 34639 34640 if (!timeout) { 34641 // if we get here, then we haven't detected the end of a momentum scroll, so 34642 // we'll consider a scroll "complete" when there haven't been any wheel events 34643 // for 500ms. 34644 timeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["nextTick"])(() => { 34645 const snapToThreshold = 0.5; 34646 lastEventBeforeSnap = newEvent; 34647 recentWheelEvents.splice(0); 34648 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 34649 }, 500); 34650 } 34651 } // Emit event 34652 34653 34654 if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay 34655 34656 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions 34657 34658 if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true; 34659 } 34660 } 34661 34662 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 34663 return false; 34664 } 34665 34666 function events(method) { 34667 let target = swiper.$el; 34668 34669 if (swiper.params.mousewheel.eventsTarget !== 'container') { 34670 target = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(swiper.params.mousewheel.eventsTarget); 34671 } 34672 34673 target[method]('mouseenter', handleMouseEnter); 34674 target[method]('mouseleave', handleMouseLeave); 34675 target[method]('wheel', handle); 34676 } 34677 34678 function enable() { 34679 if (swiper.params.cssMode) { 34680 swiper.wrapperEl.removeEventListener('wheel', handle); 34681 return true; 34682 } 34683 34684 if (swiper.mousewheel.enabled) return false; 34685 events('on'); 34686 swiper.mousewheel.enabled = true; 34687 return true; 34688 } 34689 34690 function disable() { 34691 if (swiper.params.cssMode) { 34692 swiper.wrapperEl.addEventListener(event, handle); 34693 return true; 34694 } 34695 34696 if (!swiper.mousewheel.enabled) return false; 34697 events('off'); 34698 swiper.mousewheel.enabled = false; 34699 return true; 34700 } 34701 34702 on('init', () => { 34703 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 34704 disable(); 34705 } 34706 34707 if (swiper.params.mousewheel.enabled) enable(); 34708 }); 34709 on('destroy', () => { 34710 if (swiper.params.cssMode) { 34711 enable(); 34712 } 34713 34714 if (swiper.mousewheel.enabled) disable(); 34715 }); 34716 Object.assign(swiper.mousewheel, { 34717 enable, 34718 disable 34719 }); 34720} 34721 34722/***/ }), 34723
vendor: 6,287 bytes, lines 34724-34945
34724/***/ "./node_modules/swiper/modules/navigation/navigation.js": 34725/*!**************************************************************!*\ 34726 !*** ./node_modules/swiper/modules/navigation/navigation.js ***! 34727 \**************************************************************/ 34728/*! exports provided: default */ 34729/***/ (function(module, __webpack_exports__, __webpack_require__) { 34730 34731"use strict"; 34732__webpack_require__.r(__webpack_exports__); 34733/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Navigation; }); 34734/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js"); 34735/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 34736 34737 34738function Navigation({ 34739 swiper, 34740 extendParams, 34741 on, 34742 emit 34743}) { 34744 extendParams({ 34745 navigation: { 34746 nextEl: null, 34747 prevEl: null, 34748 hideOnClick: false, 34749 disabledClass: 'swiper-button-disabled', 34750 hiddenClass: 'swiper-button-hidden', 34751 lockClass: 'swiper-button-lock', 34752 navigationDisabledClass: 'swiper-navigation-disabled' 34753 } 34754 }); 34755 swiper.navigation = { 34756 nextEl: null, 34757 $nextEl: null, 34758 prevEl: null, 34759 $prevEl: null 34760 }; 34761 34762 function getEl(el) { 34763 let $el; 34764 34765 if (el) { 34766 $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(el); 34767 34768 if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) { 34769 $el = swiper.$el.find(el); 34770 } 34771 } 34772 34773 return $el; 34774 } 34775 34776 function toggleEl($el, disabled) { 34777 const params = swiper.params.navigation; 34778 34779 if ($el && $el.length > 0) { 34780 $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass); 34781 if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled; 34782 34783 if (swiper.params.watchOverflow && swiper.enabled) { 34784 $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 34785 } 34786 } 34787 } 34788 34789 function update() { 34790 // Update Navigation Buttons 34791 if (swiper.params.loop) return; 34792 const { 34793 $nextEl, 34794 $prevEl 34795 } = swiper.navigation; 34796 toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind); 34797 toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind); 34798 } 34799 34800 function onPrevClick(e) { 34801 e.preventDefault(); 34802 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 34803 swiper.slidePrev(); 34804 emit('navigationPrev'); 34805 } 34806 34807 function onNextClick(e) { 34808 e.preventDefault(); 34809 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 34810 swiper.slideNext(); 34811 emit('navigationNext'); 34812 } 34813 34814 function init() { 34815 const params = swiper.params.navigation; 34816 swiper.params.navigation = Object(_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_0__["default"])(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 34817 nextEl: 'swiper-button-next', 34818 prevEl: 'swiper-button-prev' 34819 }); 34820 if (!(params.nextEl || params.prevEl)) return; 34821 const $nextEl = getEl(params.nextEl); 34822 const $prevEl = getEl(params.prevEl); 34823 34824 if ($nextEl && $nextEl.length > 0) { 34825 $nextEl.on('click', onNextClick); 34826 } 34827 34828 if ($prevEl && $prevEl.length > 0) { 34829 $prevEl.on('click', onPrevClick); 34830 } 34831 34832 Object.assign(swiper.navigation, { 34833 $nextEl, 34834 nextEl: $nextEl && $nextEl[0], 34835 $prevEl, 34836 prevEl: $prevEl && $prevEl[0] 34837 }); 34838 34839 if (!swiper.enabled) { 34840 if ($nextEl) $nextEl.addClass(params.lockClass); 34841 if ($prevEl) $prevEl.addClass(params.lockClass); 34842 } 34843 } 34844 34845 function destroy() { 34846 const { 34847 $nextEl, 34848 $prevEl 34849 } = swiper.navigation; 34850 34851 if ($nextEl && $nextEl.length) { 34852 $nextEl.off('click', onNextClick); 34853 $nextEl.removeClass(swiper.params.navigation.disabledClass); 34854 } 34855 34856 if ($prevEl && $prevEl.length) { 34857 $prevEl.off('click', onPrevClick); 34858 $prevEl.removeClass(swiper.params.navigation.disabledClass); 34859 } 34860 } 34861 34862 on('init', () => { 34863 if (swiper.params.navigation.enabled === false) { 34864 // eslint-disable-next-line 34865 disable(); 34866 } else { 34867 init(); 34868 update(); 34869 } 34870 }); 34871 on('toEdge fromEdge lock unlock', () => { 34872 update(); 34873 }); 34874 on('destroy', () => { 34875 destroy(); 34876 }); 34877 on('enable disable', () => { 34878 const { 34879 $nextEl, 34880 $prevEl 34881 } = swiper.navigation; 34882 34883 if ($nextEl) { 34884 $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); 34885 } 34886 34887 if ($prevEl) { 34888 $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass); 34889 } 34890 }); 34891 on('click', (_s, e) => { 34892 const { 34893 $nextEl, 34894 $prevEl 34895 } = swiper.navigation; 34896 const targetEl = e.target; 34897 34898 if (swiper.params.navigation.hideOnClick && !Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($prevEl) && !Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(targetEl).is($nextEl)) { 34899 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 34900 let isHidden; 34901 34902 if ($nextEl) { 34903 isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass); 34904 } else if ($prevEl) { 34905 isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass); 34906 } 34907 34908 if (isHidden === true) { 34909 emit('navigationShow'); 34910 } else { 34911 emit('navigationHide'); 34912 } 34913 34914 if ($nextEl) { 34915 $nextEl.toggleClass(swiper.params.navigation.hiddenClass); 34916 } 34917 34918 if ($prevEl) { 34919 $prevEl.toggleClass(swiper.params.navigation.hiddenClass); 34920 } 34921 } 34922 }); 34923 34924 const enable = () => { 34925 swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass); 34926 init(); 34927 update(); 34928 }; 34929 34930 const disable = () => { 34931 swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass); 34932 destroy(); 34933 }; 34934 34935 Object.assign(swiper.navigation, { 34936 enable, 34937 disable, 34938 update, 34939 init, 34940 destroy 34941 }); 34942} 34943 34944/***/ }), 34945
vendor: 16,180 bytes, lines 34946-35402
34946/***/ "./node_modules/swiper/modules/pagination/pagination.js": 34947/*!**************************************************************!*\ 34948 !*** ./node_modules/swiper/modules/pagination/pagination.js ***! 34949 \**************************************************************/ 34950/*! exports provided: default */ 34951/***/ (function(module, __webpack_exports__, __webpack_require__) { 34952 34953"use strict"; 34954__webpack_require__.r(__webpack_exports__); 34955/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Pagination; }); 34956/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 34957/* harmony import */ var _shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/classes-to-selector.js */ "./node_modules/swiper/shared/classes-to-selector.js"); 34958/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js"); 34959 34960 34961 34962function Pagination({ 34963 swiper, 34964 extendParams, 34965 on, 34966 emit 34967}) { 34968 const pfx = 'swiper-pagination'; 34969 extendParams({ 34970 pagination: { 34971 el: null, 34972 bulletElement: 'span', 34973 clickable: false, 34974 hideOnClick: false, 34975 renderBullet: null, 34976 renderProgressbar: null, 34977 renderFraction: null, 34978 renderCustom: null, 34979 progressbarOpposite: false, 34980 type: 'bullets', 34981 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 34982 dynamicBullets: false, 34983 dynamicMainBullets: 1, 34984 formatFractionCurrent: number => number, 34985 formatFractionTotal: number => number, 34986 bulletClass: `${pfx}-bullet`, 34987 bulletActiveClass: `${pfx}-bullet-active`, 34988 modifierClass: `${pfx}-`, 34989 currentClass: `${pfx}-current`, 34990 totalClass: `${pfx}-total`, 34991 hiddenClass: `${pfx}-hidden`, 34992 progressbarFillClass: `${pfx}-progressbar-fill`, 34993 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 34994 clickableClass: `${pfx}-clickable`, 34995 lockClass: `${pfx}-lock`, 34996 horizontalClass: `${pfx}-horizontal`, 34997 verticalClass: `${pfx}-vertical`, 34998 paginationDisabledClass: `${pfx}-disabled` 34999 } 35000 }); 35001 swiper.pagination = { 35002 el: null, 35003 $el: null, 35004 bullets: [] 35005 }; 35006 let bulletSize; 35007 let dynamicBulletIndex = 0; 35008 35009 function isPaginationDisabled() { 35010 return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0; 35011 } 35012 35013 function setSideBullets($bulletEl, position) { 35014 const { 35015 bulletActiveClass 35016 } = swiper.params.pagination; 35017 $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`); 35018 } 35019 35020 function update() { 35021 // Render || Update Pagination bullets/items 35022 const rtl = swiper.rtl; 35023 const params = swiper.params.pagination; 35024 if (isPaginationDisabled()) return; 35025 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 35026 const $el = swiper.pagination.$el; // Current/Total 35027 35028 let current; 35029 const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 35030 35031 if (swiper.params.loop) { 35032 current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); 35033 35034 if (current > slidesLength - 1 - swiper.loopedSlides * 2) { 35035 current -= slidesLength - swiper.loopedSlides * 2; 35036 } 35037 35038 if (current > total - 1) current -= total; 35039 if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current; 35040 } else if (typeof swiper.snapIndex !== 'undefined') { 35041 current = swiper.snapIndex; 35042 } else { 35043 current = swiper.activeIndex || 0; 35044 } // Types 35045 35046 35047 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 35048 const bullets = swiper.pagination.bullets; 35049 let firstIndex; 35050 let lastIndex; 35051 let midIndex; 35052 35053 if (params.dynamicBullets) { 35054 bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true); 35055 $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`); 35056 35057 if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { 35058 dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0); 35059 35060 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 35061 dynamicBulletIndex = params.dynamicMainBullets - 1; 35062 } else if (dynamicBulletIndex < 0) { 35063 dynamicBulletIndex = 0; 35064 } 35065 } 35066 35067 firstIndex = Math.max(current - dynamicBulletIndex, 0); 35068 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 35069 midIndex = (lastIndex + firstIndex) / 2; 35070 } 35071 35072 bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' ')); 35073 35074 if ($el.length > 1) { 35075 bullets.each(bullet => { 35076 const $bullet = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bullet); 35077 const bulletIndex = $bullet.index(); 35078 35079 if (bulletIndex === current) { 35080 $bullet.addClass(params.bulletActiveClass); 35081 } 35082 35083 if (params.dynamicBullets) { 35084 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 35085 $bullet.addClass(`${params.bulletActiveClass}-main`); 35086 } 35087 35088 if (bulletIndex === firstIndex) { 35089 setSideBullets($bullet, 'prev'); 35090 } 35091 35092 if (bulletIndex === lastIndex) { 35093 setSideBullets($bullet, 'next'); 35094 } 35095 } 35096 }); 35097 } else { 35098 const $bullet = bullets.eq(current); 35099 const bulletIndex = $bullet.index(); 35100 $bullet.addClass(params.bulletActiveClass); 35101 35102 if (params.dynamicBullets) { 35103 const $firstDisplayedBullet = bullets.eq(firstIndex); 35104 const $lastDisplayedBullet = bullets.eq(lastIndex); 35105 35106 for (let i = firstIndex; i <= lastIndex; i += 1) { 35107 bullets.eq(i).addClass(`${params.bulletActiveClass}-main`); 35108 } 35109 35110 if (swiper.params.loop) { 35111 if (bulletIndex >= bullets.length) { 35112 for (let i = params.dynamicMainBullets; i >= 0; i -= 1) { 35113 bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`); 35114 } 35115 35116 bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`); 35117 } else { 35118 setSideBullets($firstDisplayedBullet, 'prev'); 35119 setSideBullets($lastDisplayedBullet, 'next'); 35120 } 35121 } else { 35122 setSideBullets($firstDisplayedBullet, 'prev'); 35123 setSideBullets($lastDisplayedBullet, 'next'); 35124 } 35125 } 35126 } 35127 35128 if (params.dynamicBullets) { 35129 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 35130 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 35131 const offsetProp = rtl ? 'right' : 'left'; 35132 bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`); 35133 } 35134 } 35135 35136 if (params.type === 'fraction') { 35137 $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.currentClass)).text(params.formatFractionCurrent(current + 1)); 35138 $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.totalClass)).text(params.formatFractionTotal(total)); 35139 } 35140 35141 if (params.type === 'progressbar') { 35142 let progressbarDirection; 35143 35144 if (params.progressbarOpposite) { 35145 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 35146 } else { 35147 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 35148 } 35149 35150 const scale = (current + 1) / total; 35151 let scaleX = 1; 35152 let scaleY = 1; 35153 35154 if (progressbarDirection === 'horizontal') { 35155 scaleX = scale; 35156 } else { 35157 scaleY = scale; 35158 } 35159 35160 $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed); 35161 } 35162 35163 if (params.type === 'custom' && params.renderCustom) { 35164 $el.html(params.renderCustom(swiper, current + 1, total)); 35165 emit('paginationRender', $el[0]); 35166 } else { 35167 emit('paginationUpdate', $el[0]); 35168 } 35169 35170 if (swiper.params.watchOverflow && swiper.enabled) { 35171 $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass); 35172 } 35173 } 35174 35175 function render() { 35176 // Render Container 35177 const params = swiper.params.pagination; 35178 if (isPaginationDisabled()) return; 35179 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 35180 const $el = swiper.pagination.$el; 35181 let paginationHTML = ''; 35182 35183 if (params.type === 'bullets') { 35184 let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 35185 35186 if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) { 35187 numberOfBullets = slidesLength; 35188 } 35189 35190 for (let i = 0; i < numberOfBullets; i += 1) { 35191 if (params.renderBullet) { 35192 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 35193 } else { 35194 paginationHTML += `<${params.bulletElement} class="${params.bulletClass}"></${params.bulletElement}>`; 35195 } 35196 } 35197 35198 $el.html(paginationHTML); 35199 swiper.pagination.bullets = $el.find(Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass)); 35200 } 35201 35202 if (params.type === 'fraction') { 35203 if (params.renderFraction) { 35204 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 35205 } else { 35206 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 35207 } 35208 35209 $el.html(paginationHTML); 35210 } 35211 35212 if (params.type === 'progressbar') { 35213 if (params.renderProgressbar) { 35214 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 35215 } else { 35216 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 35217 } 35218 35219 $el.html(paginationHTML); 35220 } 35221 35222 if (params.type !== 'custom') { 35223 emit('paginationRender', swiper.pagination.$el[0]); 35224 } 35225 } 35226 35227 function init() { 35228 swiper.params.pagination = Object(_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_2__["default"])(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 35229 el: 'swiper-pagination' 35230 }); 35231 const params = swiper.params.pagination; 35232 if (!params.el) return; 35233 let $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.el); 35234 if ($el.length === 0) return; 35235 35236 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) { 35237 $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper 35238 35239 if ($el.length > 1) { 35240 $el = $el.filter(el => { 35241 if (Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el).parents('.swiper')[0] !== swiper.el) return false; 35242 return true; 35243 }); 35244 } 35245 } 35246 35247 if (params.type === 'bullets' && params.clickable) { 35248 $el.addClass(params.clickableClass); 35249 } 35250 35251 $el.addClass(params.modifierClass + params.type); 35252 $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 35253 35254 if (params.type === 'bullets' && params.dynamicBullets) { 35255 $el.addClass(`${params.modifierClass}${params.type}-dynamic`); 35256 dynamicBulletIndex = 0; 35257 35258 if (params.dynamicMainBullets < 1) { 35259 params.dynamicMainBullets = 1; 35260 } 35261 } 35262 35263 if (params.type === 'progressbar' && params.progressbarOpposite) { 35264 $el.addClass(params.progressbarOppositeClass); 35265 } 35266 35267 if (params.clickable) { 35268 $el.on('click', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass), function onClick(e) { 35269 e.preventDefault(); 35270 let index = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(this).index() * swiper.params.slidesPerGroup; 35271 if (swiper.params.loop) index += swiper.loopedSlides; 35272 swiper.slideTo(index); 35273 }); 35274 } 35275 35276 Object.assign(swiper.pagination, { 35277 $el, 35278 el: $el[0] 35279 }); 35280 35281 if (!swiper.enabled) { 35282 $el.addClass(params.lockClass); 35283 } 35284 } 35285 35286 function destroy() { 35287 const params = swiper.params.pagination; 35288 if (isPaginationDisabled()) return; 35289 const $el = swiper.pagination.$el; 35290 $el.removeClass(params.hiddenClass); 35291 $el.removeClass(params.modifierClass + params.type); 35292 $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 35293 if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass); 35294 35295 if (params.clickable) { 35296 $el.off('click', Object(_shared_classes_to_selector_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.bulletClass)); 35297 } 35298 } 35299 35300 on('init', () => { 35301 if (swiper.params.pagination.enabled === false) { 35302 // eslint-disable-next-line 35303 disable(); 35304 } else { 35305 init(); 35306 render(); 35307 update(); 35308 } 35309 }); 35310 on('activeIndexChange', () => { 35311 if (swiper.params.loop) { 35312 update(); 35313 } else if (typeof swiper.snapIndex === 'undefined') { 35314 update(); 35315 } 35316 }); 35317 on('snapIndexChange', () => { 35318 if (!swiper.params.loop) { 35319 update(); 35320 } 35321 }); 35322 on('slidesLengthChange', () => { 35323 if (swiper.params.loop) { 35324 render(); 35325 update(); 35326 } 35327 }); 35328 on('snapGridLengthChange', () => { 35329 if (!swiper.params.loop) { 35330 render(); 35331 update(); 35332 } 35333 }); 35334 on('destroy', () => { 35335 destroy(); 35336 }); 35337 on('enable disable', () => { 35338 const { 35339 $el 35340 } = swiper.pagination; 35341 35342 if ($el) { 35343 $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass); 35344 } 35345 }); 35346 on('lock unlock', () => { 35347 update(); 35348 }); 35349 on('click', (_s, e) => { 35350 const targetEl = e.target; 35351 const { 35352 $el 35353 } = swiper.pagination; 35354 35355 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(targetEl).hasClass(swiper.params.pagination.bulletClass)) { 35356 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 35357 const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass); 35358 35359 if (isHidden === true) { 35360 emit('paginationShow'); 35361 } else { 35362 emit('paginationHide'); 35363 } 35364 35365 $el.toggleClass(swiper.params.pagination.hiddenClass); 35366 } 35367 }); 35368 35369 const enable = () => { 35370 swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass); 35371 35372 if (swiper.pagination.$el) { 35373 swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass); 35374 } 35375 35376 init(); 35377 render(); 35378 update(); 35379 }; 35380 35381 const disable = () => { 35382 swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass); 35383 35384 if (swiper.pagination.$el) { 35385 swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass); 35386 } 35387 35388 destroy(); 35389 }; 35390 35391 Object.assign(swiper.pagination, { 35392 enable, 35393 disable, 35394 render, 35395 update, 35396 init, 35397 destroy 35398 }); 35399} 35400 35401/***/ }), 35402
vendor: 4,300 bytes, lines 35403-35530
35403/***/ "./node_modules/swiper/modules/parallax/parallax.js": 35404/*!**********************************************************!*\ 35405 !*** ./node_modules/swiper/modules/parallax/parallax.js ***! 35406 \**********************************************************/ 35407/*! exports provided: default */ 35408/***/ (function(module, __webpack_exports__, __webpack_require__) { 35409 35410"use strict"; 35411__webpack_require__.r(__webpack_exports__); 35412/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Parallax; }); 35413/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 35414 35415function Parallax({ 35416 swiper, 35417 extendParams, 35418 on 35419}) { 35420 extendParams({ 35421 parallax: { 35422 enabled: false 35423 } 35424 }); 35425 35426 const setTransform = (el, progress) => { 35427 const { 35428 rtl 35429 } = swiper; 35430 const $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(el); 35431 const rtlFactor = rtl ? -1 : 1; 35432 const p = $el.attr('data-swiper-parallax') || '0'; 35433 let x = $el.attr('data-swiper-parallax-x'); 35434 let y = $el.attr('data-swiper-parallax-y'); 35435 const scale = $el.attr('data-swiper-parallax-scale'); 35436 const opacity = $el.attr('data-swiper-parallax-opacity'); 35437 35438 if (x || y) { 35439 x = x || '0'; 35440 y = y || '0'; 35441 } else if (swiper.isHorizontal()) { 35442 x = p; 35443 y = '0'; 35444 } else { 35445 y = p; 35446 x = '0'; 35447 } 35448 35449 if (x.indexOf('%') >= 0) { 35450 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 35451 } else { 35452 x = `${x * progress * rtlFactor}px`; 35453 } 35454 35455 if (y.indexOf('%') >= 0) { 35456 y = `${parseInt(y, 10) * progress}%`; 35457 } else { 35458 y = `${y * progress}px`; 35459 } 35460 35461 if (typeof opacity !== 'undefined' && opacity !== null) { 35462 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 35463 $el[0].style.opacity = currentOpacity; 35464 } 35465 35466 if (typeof scale === 'undefined' || scale === null) { 35467 $el.transform(`translate3d(${x}, ${y}, 0px)`); 35468 } else { 35469 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 35470 $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`); 35471 } 35472 }; 35473 35474 const setTranslate = () => { 35475 const { 35476 $el, 35477 slides, 35478 progress, 35479 snapGrid 35480 } = swiper; 35481 $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { 35482 setTransform(el, progress); 35483 }); 35484 slides.each((slideEl, slideIndex) => { 35485 let slideProgress = slideEl.progress; 35486 35487 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 35488 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 35489 } 35490 35491 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 35492 Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => { 35493 setTransform(el, slideProgress); 35494 }); 35495 }); 35496 }; 35497 35498 const setTransition = (duration = swiper.params.speed) => { 35499 const { 35500 $el 35501 } = swiper; 35502 $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => { 35503 const $parallaxEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(parallaxEl); 35504 let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration; 35505 if (duration === 0) parallaxDuration = 0; 35506 $parallaxEl.transition(parallaxDuration); 35507 }); 35508 }; 35509 35510 on('beforeInit', () => { 35511 if (!swiper.params.parallax.enabled) return; 35512 swiper.params.watchSlidesProgress = true; 35513 swiper.originalParams.watchSlidesProgress = true; 35514 }); 35515 on('init', () => { 35516 if (!swiper.params.parallax.enabled) return; 35517 setTranslate(); 35518 }); 35519 on('setTranslate', () => { 35520 if (!swiper.params.parallax.enabled) return; 35521 setTranslate(); 35522 }); 35523 on('setTransition', (_swiper, duration) => { 35524 if (!swiper.params.parallax.enabled) return; 35525 setTransition(duration); 35526 }); 35527} 35528 35529/***/ }), 35530
vendor: 11,764 bytes, lines 35531-35950
35531/***/ "./node_modules/swiper/modules/scrollbar/scrollbar.js": 35532/*!************************************************************!*\ 35533 !*** ./node_modules/swiper/modules/scrollbar/scrollbar.js ***! 35534 \************************************************************/ 35535/*! exports provided: default */ 35536/***/ (function(module, __webpack_exports__, __webpack_require__) { 35537 35538"use strict"; 35539__webpack_require__.r(__webpack_exports__); 35540/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Scrollbar; }); 35541/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 35542/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 35543/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 35544/* harmony import */ var _shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../shared/create-element-if-not-defined.js */ "./node_modules/swiper/shared/create-element-if-not-defined.js"); 35545 35546 35547 35548 35549function Scrollbar({ 35550 swiper, 35551 extendParams, 35552 on, 35553 emit 35554}) { 35555 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 35556 let isTouched = false; 35557 let timeout = null; 35558 let dragTimeout = null; 35559 let dragStartPos; 35560 let dragSize; 35561 let trackSize; 35562 let divider; 35563 extendParams({ 35564 scrollbar: { 35565 el: null, 35566 dragSize: 'auto', 35567 hide: false, 35568 draggable: false, 35569 snapOnRelease: true, 35570 lockClass: 'swiper-scrollbar-lock', 35571 dragClass: 'swiper-scrollbar-drag', 35572 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 35573 horizontalClass: `swiper-scrollbar-horizontal`, 35574 verticalClass: `swiper-scrollbar-vertical` 35575 } 35576 }); 35577 swiper.scrollbar = { 35578 el: null, 35579 dragEl: null, 35580 $el: null, 35581 $dragEl: null 35582 }; 35583 35584 function setTranslate() { 35585 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 35586 const { 35587 scrollbar, 35588 rtlTranslate: rtl, 35589 progress 35590 } = swiper; 35591 const { 35592 $dragEl, 35593 $el 35594 } = scrollbar; 35595 const params = swiper.params.scrollbar; 35596 let newSize = dragSize; 35597 let newPos = (trackSize - dragSize) * progress; 35598 35599 if (rtl) { 35600 newPos = -newPos; 35601 35602 if (newPos > 0) { 35603 newSize = dragSize - newPos; 35604 newPos = 0; 35605 } else if (-newPos + dragSize > trackSize) { 35606 newSize = trackSize + newPos; 35607 } 35608 } else if (newPos < 0) { 35609 newSize = dragSize + newPos; 35610 newPos = 0; 35611 } else if (newPos + dragSize > trackSize) { 35612 newSize = trackSize - newPos; 35613 } 35614 35615 if (swiper.isHorizontal()) { 35616 $dragEl.transform(`translate3d(${newPos}px, 0, 0)`); 35617 $dragEl[0].style.width = `${newSize}px`; 35618 } else { 35619 $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`); 35620 $dragEl[0].style.height = `${newSize}px`; 35621 } 35622 35623 if (params.hide) { 35624 clearTimeout(timeout); 35625 $el[0].style.opacity = 1; 35626 timeout = setTimeout(() => { 35627 $el[0].style.opacity = 0; 35628 $el.transition(400); 35629 }, 1000); 35630 } 35631 } 35632 35633 function setTransition(duration) { 35634 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 35635 swiper.scrollbar.$dragEl.transition(duration); 35636 } 35637 35638 function updateSize() { 35639 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 35640 const { 35641 scrollbar 35642 } = swiper; 35643 const { 35644 $dragEl, 35645 $el 35646 } = scrollbar; 35647 $dragEl[0].style.width = ''; 35648 $dragEl[0].style.height = ''; 35649 trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight; 35650 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 35651 35652 if (swiper.params.scrollbar.dragSize === 'auto') { 35653 dragSize = trackSize * divider; 35654 } else { 35655 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 35656 } 35657 35658 if (swiper.isHorizontal()) { 35659 $dragEl[0].style.width = `${dragSize}px`; 35660 } else { 35661 $dragEl[0].style.height = `${dragSize}px`; 35662 } 35663 35664 if (divider >= 1) { 35665 $el[0].style.display = 'none'; 35666 } else { 35667 $el[0].style.display = ''; 35668 } 35669 35670 if (swiper.params.scrollbar.hide) { 35671 $el[0].style.opacity = 0; 35672 } 35673 35674 if (swiper.params.watchOverflow && swiper.enabled) { 35675 scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass); 35676 } 35677 } 35678 35679 function getPointerPosition(e) { 35680 if (swiper.isHorizontal()) { 35681 return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX; 35682 } 35683 35684 return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY; 35685 } 35686 35687 function setDragPosition(e) { 35688 const { 35689 scrollbar, 35690 rtlTranslate: rtl 35691 } = swiper; 35692 const { 35693 $el 35694 } = scrollbar; 35695 let positionRatio; 35696 positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 35697 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 35698 35699 if (rtl) { 35700 positionRatio = 1 - positionRatio; 35701 } 35702 35703 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 35704 swiper.updateProgress(position); 35705 swiper.setTranslate(position); 35706 swiper.updateActiveIndex(); 35707 swiper.updateSlidesClasses(); 35708 } 35709 35710 function onDragStart(e) { 35711 const params = swiper.params.scrollbar; 35712 const { 35713 scrollbar, 35714 $wrapperEl 35715 } = swiper; 35716 const { 35717 $el, 35718 $dragEl 35719 } = scrollbar; 35720 isTouched = true; 35721 dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 35722 e.preventDefault(); 35723 e.stopPropagation(); 35724 $wrapperEl.transition(100); 35725 $dragEl.transition(100); 35726 setDragPosition(e); 35727 clearTimeout(dragTimeout); 35728 $el.transition(0); 35729 35730 if (params.hide) { 35731 $el.css('opacity', 1); 35732 } 35733 35734 if (swiper.params.cssMode) { 35735 swiper.$wrapperEl.css('scroll-snap-type', 'none'); 35736 } 35737 35738 emit('scrollbarDragStart', e); 35739 } 35740 35741 function onDragMove(e) { 35742 const { 35743 scrollbar, 35744 $wrapperEl 35745 } = swiper; 35746 const { 35747 $el, 35748 $dragEl 35749 } = scrollbar; 35750 if (!isTouched) return; 35751 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 35752 setDragPosition(e); 35753 $wrapperEl.transition(0); 35754 $el.transition(0); 35755 $dragEl.transition(0); 35756 emit('scrollbarDragMove', e); 35757 } 35758 35759 function onDragEnd(e) { 35760 const params = swiper.params.scrollbar; 35761 const { 35762 scrollbar, 35763 $wrapperEl 35764 } = swiper; 35765 const { 35766 $el 35767 } = scrollbar; 35768 if (!isTouched) return; 35769 isTouched = false; 35770 35771 if (swiper.params.cssMode) { 35772 swiper.$wrapperEl.css('scroll-snap-type', ''); 35773 $wrapperEl.transition(''); 35774 } 35775 35776 if (params.hide) { 35777 clearTimeout(dragTimeout); 35778 dragTimeout = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["nextTick"])(() => { 35779 $el.css('opacity', 0); 35780 $el.transition(400); 35781 }, 1000); 35782 } 35783 35784 emit('scrollbarDragEnd', e); 35785 35786 if (params.snapOnRelease) { 35787 swiper.slideToClosest(); 35788 } 35789 } 35790 35791 function events(method) { 35792 const { 35793 scrollbar, 35794 touchEventsTouch, 35795 touchEventsDesktop, 35796 params, 35797 support 35798 } = swiper; 35799 const $el = scrollbar.$el; 35800 if (!$el) return; 35801 const target = $el[0]; 35802 const activeListener = support.passiveListener && params.passiveListeners ? { 35803 passive: false, 35804 capture: false 35805 } : false; 35806 const passiveListener = support.passiveListener && params.passiveListeners ? { 35807 passive: true, 35808 capture: false 35809 } : false; 35810 if (!target) return; 35811 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 35812 35813 if (!support.touch) { 35814 target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener); 35815 document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener); 35816 document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener); 35817 } else { 35818 target[eventMethod](touchEventsTouch.start, onDragStart, activeListener); 35819 target[eventMethod](touchEventsTouch.move, onDragMove, activeListener); 35820 target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener); 35821 } 35822 } 35823 35824 function enableDraggable() { 35825 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 35826 events('on'); 35827 } 35828 35829 function disableDraggable() { 35830 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 35831 events('off'); 35832 } 35833 35834 function init() { 35835 const { 35836 scrollbar, 35837 $el: $swiperEl 35838 } = swiper; 35839 swiper.params.scrollbar = Object(_shared_create_element_if_not_defined_js__WEBPACK_IMPORTED_MODULE_3__["default"])(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 35840 el: 'swiper-scrollbar' 35841 }); 35842 const params = swiper.params.scrollbar; 35843 if (!params.el) return; 35844 let $el = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(params.el); 35845 35846 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) { 35847 $el = $swiperEl.find(params.el); 35848 } 35849 35850 $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 35851 let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`); 35852 35853 if ($dragEl.length === 0) { 35854 $dragEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(`<div class="${swiper.params.scrollbar.dragClass}"></div>`); 35855 $el.append($dragEl); 35856 } 35857 35858 Object.assign(scrollbar, { 35859 $el, 35860 el: $el[0], 35861 $dragEl, 35862 dragEl: $dragEl[0] 35863 }); 35864 35865 if (params.draggable) { 35866 enableDraggable(); 35867 } 35868 35869 if ($el) { 35870 $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); 35871 } 35872 } 35873 35874 function destroy() { 35875 const params = swiper.params.scrollbar; 35876 const $el = swiper.scrollbar.$el; 35877 35878 if ($el) { 35879 $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 35880 } 35881 35882 disableDraggable(); 35883 } 35884 35885 on('init', () => { 35886 if (swiper.params.scrollbar.enabled === false) { 35887 // eslint-disable-next-line 35888 disable(); 35889 } else { 35890 init(); 35891 updateSize(); 35892 setTranslate(); 35893 } 35894 }); 35895 on('update resize observerUpdate lock unlock', () => { 35896 updateSize(); 35897 }); 35898 on('setTranslate', () => { 35899 setTranslate(); 35900 }); 35901 on('setTransition', (_s, duration) => { 35902 setTransition(duration); 35903 }); 35904 on('enable disable', () => { 35905 const { 35906 $el 35907 } = swiper.scrollbar; 35908 35909 if ($el) { 35910 $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass); 35911 } 35912 }); 35913 on('destroy', () => { 35914 destroy(); 35915 }); 35916 35917 const enable = () => { 35918 swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); 35919 35920 if (swiper.scrollbar.$el) { 35921 swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass); 35922 } 35923 35924 init(); 35925 updateSize(); 35926 setTranslate(); 35927 }; 35928 35929 const disable = () => { 35930 swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); 35931 35932 if (swiper.scrollbar.$el) { 35933 swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass); 35934 } 35935 35936 destroy(); 35937 }; 35938 35939 Object.assign(swiper.scrollbar, { 35940 enable, 35941 disable, 35942 updateSize, 35943 setTranslate, 35944 init, 35945 destroy 35946 }); 35947} 35948 35949/***/ }), 35950
vendor: 8,496 bytes, lines 35951-36168
35951/***/ "./node_modules/swiper/modules/thumbs/thumbs.js": 35952/*!******************************************************!*\ 35953 !*** ./node_modules/swiper/modules/thumbs/thumbs.js ***! 35954 \******************************************************/ 35955/*! exports provided: default */ 35956/***/ (function(module, __webpack_exports__, __webpack_require__) { 35957 35958"use strict"; 35959__webpack_require__.r(__webpack_exports__); 35960/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Thumb; }); 35961/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 35962/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 35963 35964 35965function Thumb({ 35966 swiper, 35967 extendParams, 35968 on 35969}) { 35970 extendParams({ 35971 thumbs: { 35972 swiper: null, 35973 multipleActiveThumbs: true, 35974 autoScrollOffset: 0, 35975 slideThumbActiveClass: 'swiper-slide-thumb-active', 35976 thumbsContainerClass: 'swiper-thumbs' 35977 } 35978 }); 35979 let initialized = false; 35980 let swiperCreated = false; 35981 swiper.thumbs = { 35982 swiper: null 35983 }; 35984 35985 function onThumbClick() { 35986 const thumbsSwiper = swiper.thumbs.swiper; 35987 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 35988 const clickedIndex = thumbsSwiper.clickedIndex; 35989 const clickedSlide = thumbsSwiper.clickedSlide; 35990 if (clickedSlide && Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return; 35991 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 35992 let slideToIndex; 35993 35994 if (thumbsSwiper.params.loop) { 35995 slideToIndex = parseInt(Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10); 35996 } else { 35997 slideToIndex = clickedIndex; 35998 } 35999 36000 if (swiper.params.loop) { 36001 let currentIndex = swiper.activeIndex; 36002 36003 if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) { 36004 swiper.loopFix(); // eslint-disable-next-line 36005 36006 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft; 36007 currentIndex = swiper.activeIndex; 36008 } 36009 36010 const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); 36011 const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index="${slideToIndex}"]`).eq(0).index(); 36012 if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex; 36013 } 36014 36015 swiper.slideTo(slideToIndex); 36016 } 36017 36018 function init() { 36019 const { 36020 thumbs: thumbsParams 36021 } = swiper.params; 36022 if (initialized) return false; 36023 initialized = true; 36024 const SwiperClass = swiper.constructor; 36025 36026 if (thumbsParams.swiper instanceof SwiperClass) { 36027 swiper.thumbs.swiper = thumbsParams.swiper; 36028 Object.assign(swiper.thumbs.swiper.originalParams, { 36029 watchSlidesProgress: true, 36030 slideToClickedSlide: false 36031 }); 36032 Object.assign(swiper.thumbs.swiper.params, { 36033 watchSlidesProgress: true, 36034 slideToClickedSlide: false 36035 }); 36036 } else if (Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_0__["isObject"])(thumbsParams.swiper)) { 36037 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 36038 Object.assign(thumbsSwiperParams, { 36039 watchSlidesProgress: true, 36040 slideToClickedSlide: false 36041 }); 36042 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 36043 swiperCreated = true; 36044 } 36045 36046 swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass); 36047 swiper.thumbs.swiper.on('tap', onThumbClick); 36048 return true; 36049 } 36050 36051 function update(initial) { 36052 const thumbsSwiper = swiper.thumbs.swiper; 36053 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 36054 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs 36055 36056 let thumbsToActivate = 1; 36057 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 36058 36059 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 36060 thumbsToActivate = swiper.params.slidesPerView; 36061 } 36062 36063 if (!swiper.params.thumbs.multipleActiveThumbs) { 36064 thumbsToActivate = 1; 36065 } 36066 36067 thumbsToActivate = Math.floor(thumbsToActivate); 36068 thumbsSwiper.slides.removeClass(thumbActiveClass); 36069 36070 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 36071 for (let i = 0; i < thumbsToActivate; i += 1) { 36072 thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass); 36073 } 36074 } else { 36075 for (let i = 0; i < thumbsToActivate; i += 1) { 36076 thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass); 36077 } 36078 } 36079 36080 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 36081 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 36082 36083 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 36084 let currentThumbsIndex = thumbsSwiper.activeIndex; 36085 let newThumbsIndex; 36086 let direction; 36087 36088 if (thumbsSwiper.params.loop) { 36089 if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) { 36090 thumbsSwiper.loopFix(); // eslint-disable-next-line 36091 36092 thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft; 36093 currentThumbsIndex = thumbsSwiper.activeIndex; 36094 } // Find actual thumbs index to slide to 36095 36096 36097 const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); 36098 const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index="${swiper.realIndex}"]`).eq(0).index(); 36099 36100 if (typeof prevThumbsIndex === 'undefined') { 36101 newThumbsIndex = nextThumbsIndex; 36102 } else if (typeof nextThumbsIndex === 'undefined') { 36103 newThumbsIndex = prevThumbsIndex; 36104 } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) { 36105 newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex; 36106 } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) { 36107 newThumbsIndex = nextThumbsIndex; 36108 } else { 36109 newThumbsIndex = prevThumbsIndex; 36110 } 36111 36112 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 36113 } else { 36114 newThumbsIndex = swiper.realIndex; 36115 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 36116 } 36117 36118 if (useOffset) { 36119 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 36120 } 36121 36122 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 36123 if (thumbsSwiper.params.centeredSlides) { 36124 if (newThumbsIndex > currentThumbsIndex) { 36125 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 36126 } else { 36127 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 36128 } 36129 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1; 36130 } 36131 36132 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 36133 } 36134 } 36135 } 36136 36137 on('beforeInit', () => { 36138 const { 36139 thumbs 36140 } = swiper.params; 36141 if (!thumbs || !thumbs.swiper) return; 36142 init(); 36143 update(true); 36144 }); 36145 on('slideChange update resize observerUpdate', () => { 36146 update(); 36147 }); 36148 on('setTransition', (_s, duration) => { 36149 const thumbsSwiper = swiper.thumbs.swiper; 36150 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 36151 thumbsSwiper.setTransition(duration); 36152 }); 36153 on('beforeDestroy', () => { 36154 const thumbsSwiper = swiper.thumbs.swiper; 36155 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 36156 36157 if (swiperCreated) { 36158 thumbsSwiper.destroy(); 36159 } 36160 }); 36161 Object.assign(swiper.thumbs, { 36162 init, 36163 update 36164 }); 36165} 36166 36167/***/ }), 36168
vendor: 9,056 bytes, lines 36169-36480
36169/***/ "./node_modules/swiper/modules/virtual/virtual.js": 36170/*!********************************************************!*\ 36171 !*** ./node_modules/swiper/modules/virtual/virtual.js ***! 36172 \********************************************************/ 36173/*! exports provided: default */ 36174/***/ (function(module, __webpack_exports__, __webpack_require__) { 36175 36176"use strict"; 36177__webpack_require__.r(__webpack_exports__); 36178/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Virtual; }); 36179/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 36180/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 36181 36182 36183function Virtual({ 36184 swiper, 36185 extendParams, 36186 on, 36187 emit 36188}) { 36189 extendParams({ 36190 virtual: { 36191 enabled: false, 36192 slides: [], 36193 cache: true, 36194 renderSlide: null, 36195 renderExternal: null, 36196 renderExternalUpdate: true, 36197 addSlidesBefore: 0, 36198 addSlidesAfter: 0 36199 } 36200 }); 36201 let cssModeTimeout; 36202 swiper.virtual = { 36203 cache: {}, 36204 from: undefined, 36205 to: undefined, 36206 slides: [], 36207 offset: 0, 36208 slidesGrid: [] 36209 }; 36210 36211 function renderSlide(slide, index) { 36212 const params = swiper.params.virtual; 36213 36214 if (params.cache && swiper.virtual.cache[index]) { 36215 return swiper.virtual.cache[index]; 36216 } 36217 36218 const $slideEl = params.renderSlide ? Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(params.renderSlide.call(swiper, slide, index)) : Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="${swiper.params.slideClass}" data-swiper-slide-index="${index}">${slide}</div>`); 36219 if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index); 36220 if (params.cache) swiper.virtual.cache[index] = $slideEl; 36221 return $slideEl; 36222 } 36223 36224 function update(force) { 36225 const { 36226 slidesPerView, 36227 slidesPerGroup, 36228 centeredSlides 36229 } = swiper.params; 36230 const { 36231 addSlidesBefore, 36232 addSlidesAfter 36233 } = swiper.params.virtual; 36234 const { 36235 from: previousFrom, 36236 to: previousTo, 36237 slides, 36238 slidesGrid: previousSlidesGrid, 36239 offset: previousOffset 36240 } = swiper.virtual; 36241 36242 if (!swiper.params.cssMode) { 36243 swiper.updateActiveIndex(); 36244 } 36245 36246 const activeIndex = swiper.activeIndex || 0; 36247 let offsetProp; 36248 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 36249 let slidesAfter; 36250 let slidesBefore; 36251 36252 if (centeredSlides) { 36253 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 36254 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 36255 } else { 36256 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 36257 slidesBefore = slidesPerGroup + addSlidesBefore; 36258 } 36259 36260 const from = Math.max((activeIndex || 0) - slidesBefore, 0); 36261 const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1); 36262 const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 36263 Object.assign(swiper.virtual, { 36264 from, 36265 to, 36266 offset, 36267 slidesGrid: swiper.slidesGrid 36268 }); 36269 36270 function onRendered() { 36271 swiper.updateSlides(); 36272 swiper.updateProgress(); 36273 swiper.updateSlidesClasses(); 36274 36275 if (swiper.lazy && swiper.params.lazy.enabled) { 36276 swiper.lazy.load(); 36277 } 36278 36279 emit('virtualUpdate'); 36280 } 36281 36282 if (previousFrom === from && previousTo === to && !force) { 36283 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 36284 swiper.slides.css(offsetProp, `${offset}px`); 36285 } 36286 36287 swiper.updateProgress(); 36288 emit('virtualUpdate'); 36289 return; 36290 } 36291 36292 if (swiper.params.virtual.renderExternal) { 36293 swiper.params.virtual.renderExternal.call(swiper, { 36294 offset, 36295 from, 36296 to, 36297 slides: function getSlides() { 36298 const slidesToRender = []; 36299 36300 for (let i = from; i <= to; i += 1) { 36301 slidesToRender.push(slides[i]); 36302 } 36303 36304 return slidesToRender; 36305 }() 36306 }); 36307 36308 if (swiper.params.virtual.renderExternalUpdate) { 36309 onRendered(); 36310 } else { 36311 emit('virtualUpdate'); 36312 } 36313 36314 return; 36315 } 36316 36317 const prependIndexes = []; 36318 const appendIndexes = []; 36319 36320 if (force) { 36321 swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove(); 36322 } else { 36323 for (let i = previousFrom; i <= previousTo; i += 1) { 36324 if (i < from || i > to) { 36325 swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index="${i}"]`).remove(); 36326 } 36327 } 36328 } 36329 36330 for (let i = 0; i < slides.length; i += 1) { 36331 if (i >= from && i <= to) { 36332 if (typeof previousTo === 'undefined' || force) { 36333 appendIndexes.push(i); 36334 } else { 36335 if (i > previousTo) appendIndexes.push(i); 36336 if (i < previousFrom) prependIndexes.push(i); 36337 } 36338 } 36339 } 36340 36341 appendIndexes.forEach(index => { 36342 swiper.$wrapperEl.append(renderSlide(slides[index], index)); 36343 }); 36344 prependIndexes.sort((a, b) => b - a).forEach(index => { 36345 swiper.$wrapperEl.prepend(renderSlide(slides[index], index)); 36346 }); 36347 swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`); 36348 onRendered(); 36349 } 36350 36351 function appendSlide(slides) { 36352 if (typeof slides === 'object' && 'length' in slides) { 36353 for (let i = 0; i < slides.length; i += 1) { 36354 if (slides[i]) swiper.virtual.slides.push(slides[i]); 36355 } 36356 } else { 36357 swiper.virtual.slides.push(slides); 36358 } 36359 36360 update(true); 36361 } 36362 36363 function prependSlide(slides) { 36364 const activeIndex = swiper.activeIndex; 36365 let newActiveIndex = activeIndex + 1; 36366 let numberOfNewSlides = 1; 36367 36368 if (Array.isArray(slides)) { 36369 for (let i = 0; i < slides.length; i += 1) { 36370 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 36371 } 36372 36373 newActiveIndex = activeIndex + slides.length; 36374 numberOfNewSlides = slides.length; 36375 } else { 36376 swiper.virtual.slides.unshift(slides); 36377 } 36378 36379 if (swiper.params.virtual.cache) { 36380 const cache = swiper.virtual.cache; 36381 const newCache = {}; 36382 Object.keys(cache).forEach(cachedIndex => { 36383 const $cachedEl = cache[cachedIndex]; 36384 const cachedElIndex = $cachedEl.attr('data-swiper-slide-index'); 36385 36386 if (cachedElIndex) { 36387 $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 36388 } 36389 36390 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl; 36391 }); 36392 swiper.virtual.cache = newCache; 36393 } 36394 36395 update(true); 36396 swiper.slideTo(newActiveIndex, 0); 36397 } 36398 36399 function removeSlide(slidesIndexes) { 36400 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 36401 let activeIndex = swiper.activeIndex; 36402 36403 if (Array.isArray(slidesIndexes)) { 36404 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 36405 swiper.virtual.slides.splice(slidesIndexes[i], 1); 36406 36407 if (swiper.params.virtual.cache) { 36408 delete swiper.virtual.cache[slidesIndexes[i]]; 36409 } 36410 36411 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 36412 activeIndex = Math.max(activeIndex, 0); 36413 } 36414 } else { 36415 swiper.virtual.slides.splice(slidesIndexes, 1); 36416 36417 if (swiper.params.virtual.cache) { 36418 delete swiper.virtual.cache[slidesIndexes]; 36419 } 36420 36421 if (slidesIndexes < activeIndex) activeIndex -= 1; 36422 activeIndex = Math.max(activeIndex, 0); 36423 } 36424 36425 update(true); 36426 swiper.slideTo(activeIndex, 0); 36427 } 36428 36429 function removeAllSlides() { 36430 swiper.virtual.slides = []; 36431 36432 if (swiper.params.virtual.cache) { 36433 swiper.virtual.cache = {}; 36434 } 36435 36436 update(true); 36437 swiper.slideTo(0, 0); 36438 } 36439 36440 on('beforeInit', () => { 36441 if (!swiper.params.virtual.enabled) return; 36442 swiper.virtual.slides = swiper.params.virtual.slides; 36443 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 36444 swiper.params.watchSlidesProgress = true; 36445 swiper.originalParams.watchSlidesProgress = true; 36446 36447 if (!swiper.params.initialSlide) { 36448 update(); 36449 } 36450 }); 36451 on('setTranslate', () => { 36452 if (!swiper.params.virtual.enabled) return; 36453 36454 if (swiper.params.cssMode && !swiper._immediateVirtual) { 36455 clearTimeout(cssModeTimeout); 36456 cssModeTimeout = setTimeout(() => { 36457 update(); 36458 }, 100); 36459 } else { 36460 update(); 36461 } 36462 }); 36463 on('init update resize', () => { 36464 if (!swiper.params.virtual.enabled) return; 36465 36466 if (swiper.params.cssMode) { 36467 Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_1__["setCSSProperty"])(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 36468 } 36469 }); 36470 Object.assign(swiper.virtual, { 36471 appendSlide, 36472 prependSlide, 36473 removeSlide, 36474 removeAllSlides, 36475 update 36476 }); 36477} 36478 36479/***/ }), 36480
vendor: 21,663 bytes, lines 36481-37108
36481/***/ "./node_modules/swiper/modules/zoom/zoom.js": 36482/*!**************************************************!*\ 36483 !*** ./node_modules/swiper/modules/zoom/zoom.js ***! 36484 \**************************************************/ 36485/*! exports provided: default */ 36486/***/ (function(module, __webpack_exports__, __webpack_require__) { 36487 36488"use strict"; 36489__webpack_require__.r(__webpack_exports__); 36490/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Zoom; }); 36491/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 36492/* harmony import */ var _shared_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/dom.js */ "./node_modules/swiper/shared/dom.js"); 36493/* harmony import */ var _shared_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../shared/utils.js */ "./node_modules/swiper/shared/utils.js"); 36494 36495 36496 36497function Zoom({ 36498 swiper, 36499 extendParams, 36500 on, 36501 emit 36502}) { 36503 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 36504 extendParams({ 36505 zoom: { 36506 enabled: false, 36507 maxRatio: 3, 36508 minRatio: 1, 36509 toggle: true, 36510 containerClass: 'swiper-zoom-container', 36511 zoomedSlideClass: 'swiper-slide-zoomed' 36512 } 36513 }); 36514 swiper.zoom = { 36515 enabled: false 36516 }; 36517 let currentScale = 1; 36518 let isScaling = false; 36519 let gesturesEnabled; 36520 let fakeGestureTouched; 36521 let fakeGestureMoved; 36522 const gesture = { 36523 $slideEl: undefined, 36524 slideWidth: undefined, 36525 slideHeight: undefined, 36526 $imageEl: undefined, 36527 $imageWrapEl: undefined, 36528 maxRatio: 3 36529 }; 36530 const image = { 36531 isTouched: undefined, 36532 isMoved: undefined, 36533 currentX: undefined, 36534 currentY: undefined, 36535 minX: undefined, 36536 minY: undefined, 36537 maxX: undefined, 36538 maxY: undefined, 36539 width: undefined, 36540 height: undefined, 36541 startX: undefined, 36542 startY: undefined, 36543 touchesStart: {}, 36544 touchesCurrent: {} 36545 }; 36546 const velocity = { 36547 x: undefined, 36548 y: undefined, 36549 prevPositionX: undefined, 36550 prevPositionY: undefined, 36551 prevTime: undefined 36552 }; 36553 let scale = 1; 36554 Object.defineProperty(swiper.zoom, 'scale', { 36555 get() { 36556 return scale; 36557 }, 36558 36559 set(value) { 36560 if (scale !== value) { 36561 const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined; 36562 const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined; 36563 emit('zoomChange', value, imageEl, slideEl); 36564 } 36565 36566 scale = value; 36567 } 36568 36569 }); 36570 36571 function getDistanceBetweenTouches(e) { 36572 if (e.targetTouches.length < 2) return 1; 36573 const x1 = e.targetTouches[0].pageX; 36574 const y1 = e.targetTouches[0].pageY; 36575 const x2 = e.targetTouches[1].pageX; 36576 const y2 = e.targetTouches[1].pageY; 36577 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 36578 return distance; 36579 } // Events 36580 36581 36582 function onGestureStart(e) { 36583 const support = swiper.support; 36584 const params = swiper.params.zoom; 36585 fakeGestureTouched = false; 36586 fakeGestureMoved = false; 36587 36588 if (!support.gestures) { 36589 if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) { 36590 return; 36591 } 36592 36593 fakeGestureTouched = true; 36594 gesture.scaleStart = getDistanceBetweenTouches(e); 36595 } 36596 36597 if (!gesture.$slideEl || !gesture.$slideEl.length) { 36598 gesture.$slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`); 36599 if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); 36600 gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); 36601 gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); 36602 gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 36603 36604 if (gesture.$imageWrapEl.length === 0) { 36605 gesture.$imageEl = undefined; 36606 return; 36607 } 36608 } 36609 36610 if (gesture.$imageEl) { 36611 gesture.$imageEl.transition(0); 36612 } 36613 36614 isScaling = true; 36615 } 36616 36617 function onGestureChange(e) { 36618 const support = swiper.support; 36619 const params = swiper.params.zoom; 36620 const zoom = swiper.zoom; 36621 36622 if (!support.gestures) { 36623 if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) { 36624 return; 36625 } 36626 36627 fakeGestureMoved = true; 36628 gesture.scaleMove = getDistanceBetweenTouches(e); 36629 } 36630 36631 if (!gesture.$imageEl || gesture.$imageEl.length === 0) { 36632 if (e.type === 'gesturechange') onGestureStart(e); 36633 return; 36634 } 36635 36636 if (support.gestures) { 36637 zoom.scale = e.scale * currentScale; 36638 } else { 36639 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 36640 } 36641 36642 if (zoom.scale > gesture.maxRatio) { 36643 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 36644 } 36645 36646 if (zoom.scale < params.minRatio) { 36647 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 36648 } 36649 36650 gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`); 36651 } 36652 36653 function onGestureEnd(e) { 36654 const device = swiper.device; 36655 const support = swiper.support; 36656 const params = swiper.params.zoom; 36657 const zoom = swiper.zoom; 36658 36659 if (!support.gestures) { 36660 if (!fakeGestureTouched || !fakeGestureMoved) { 36661 return; 36662 } 36663 36664 if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) { 36665 return; 36666 } 36667 36668 fakeGestureTouched = false; 36669 fakeGestureMoved = false; 36670 } 36671 36672 if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; 36673 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 36674 gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`); 36675 currentScale = zoom.scale; 36676 isScaling = false; 36677 if (zoom.scale === 1) gesture.$slideEl = undefined; 36678 } 36679 36680 function onTouchStart(e) { 36681 const device = swiper.device; 36682 if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; 36683 if (image.isTouched) return; 36684 if (device.android && e.cancelable) e.preventDefault(); 36685 image.isTouched = true; 36686 image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX; 36687 image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY; 36688 } 36689 36690 function onTouchMove(e) { 36691 const zoom = swiper.zoom; 36692 if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; 36693 swiper.allowClick = false; 36694 if (!image.isTouched || !gesture.$slideEl) return; 36695 36696 if (!image.isMoved) { 36697 image.width = gesture.$imageEl[0].offsetWidth; 36698 image.height = gesture.$imageEl[0].offsetHeight; 36699 image.startX = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["getTranslate"])(gesture.$imageWrapEl[0], 'x') || 0; 36700 image.startY = Object(_shared_utils_js__WEBPACK_IMPORTED_MODULE_2__["getTranslate"])(gesture.$imageWrapEl[0], 'y') || 0; 36701 gesture.slideWidth = gesture.$slideEl[0].offsetWidth; 36702 gesture.slideHeight = gesture.$slideEl[0].offsetHeight; 36703 gesture.$imageWrapEl.transition(0); 36704 } // Define if we need image drag 36705 36706 36707 const scaledWidth = image.width * zoom.scale; 36708 const scaledHeight = image.height * zoom.scale; 36709 if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return; 36710 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 36711 image.maxX = -image.minX; 36712 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 36713 image.maxY = -image.minY; 36714 image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX; 36715 image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY; 36716 36717 if (!image.isMoved && !isScaling) { 36718 if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { 36719 image.isTouched = false; 36720 return; 36721 } 36722 36723 if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { 36724 image.isTouched = false; 36725 return; 36726 } 36727 } 36728 36729 if (e.cancelable) { 36730 e.preventDefault(); 36731 } 36732 36733 e.stopPropagation(); 36734 image.isMoved = true; 36735 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX; 36736 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY; 36737 36738 if (image.currentX < image.minX) { 36739 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 36740 } 36741 36742 if (image.currentX > image.maxX) { 36743 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 36744 } 36745 36746 if (image.currentY < image.minY) { 36747 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 36748 } 36749 36750 if (image.currentY > image.maxY) { 36751 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 36752 } // Velocity 36753 36754 36755 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 36756 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 36757 if (!velocity.prevTime) velocity.prevTime = Date.now(); 36758 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 36759 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 36760 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 36761 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 36762 velocity.prevPositionX = image.touchesCurrent.x; 36763 velocity.prevPositionY = image.touchesCurrent.y; 36764 velocity.prevTime = Date.now(); 36765 gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); 36766 } 36767 36768 function onTouchEnd() { 36769 const zoom = swiper.zoom; 36770 if (!gesture.$imageEl || gesture.$imageEl.length === 0) return; 36771 36772 if (!image.isTouched || !image.isMoved) { 36773 image.isTouched = false; 36774 image.isMoved = false; 36775 return; 36776 } 36777 36778 image.isTouched = false; 36779 image.isMoved = false; 36780 let momentumDurationX = 300; 36781 let momentumDurationY = 300; 36782 const momentumDistanceX = velocity.x * momentumDurationX; 36783 const newPositionX = image.currentX + momentumDistanceX; 36784 const momentumDistanceY = velocity.y * momentumDurationY; 36785 const newPositionY = image.currentY + momentumDistanceY; // Fix duration 36786 36787 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 36788 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 36789 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 36790 image.currentX = newPositionX; 36791 image.currentY = newPositionY; // Define if we need image drag 36792 36793 const scaledWidth = image.width * zoom.scale; 36794 const scaledHeight = image.height * zoom.scale; 36795 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 36796 image.maxX = -image.minX; 36797 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 36798 image.maxY = -image.minY; 36799 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 36800 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 36801 gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`); 36802 } 36803 36804 function onTransitionEnd() { 36805 const zoom = swiper.zoom; 36806 36807 if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) { 36808 if (gesture.$imageEl) { 36809 gesture.$imageEl.transform('translate3d(0,0,0) scale(1)'); 36810 } 36811 36812 if (gesture.$imageWrapEl) { 36813 gesture.$imageWrapEl.transform('translate3d(0,0,0)'); 36814 } 36815 36816 zoom.scale = 1; 36817 currentScale = 1; 36818 gesture.$slideEl = undefined; 36819 gesture.$imageEl = undefined; 36820 gesture.$imageWrapEl = undefined; 36821 } 36822 } 36823 36824 function zoomIn(e) { 36825 const zoom = swiper.zoom; 36826 const params = swiper.params.zoom; 36827 36828 if (!gesture.$slideEl) { 36829 if (e && e.target) { 36830 gesture.$slideEl = Object(_shared_dom_js__WEBPACK_IMPORTED_MODULE_1__["default"])(e.target).closest(`.${swiper.params.slideClass}`); 36831 } 36832 36833 if (!gesture.$slideEl) { 36834 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 36835 gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); 36836 } else { 36837 gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); 36838 } 36839 } 36840 36841 gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); 36842 gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); 36843 } 36844 36845 if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; 36846 36847 if (swiper.params.cssMode) { 36848 swiper.wrapperEl.style.overflow = 'hidden'; 36849 swiper.wrapperEl.style.touchAction = 'none'; 36850 } 36851 36852 gesture.$slideEl.addClass(`${params.zoomedSlideClass}`); 36853 let touchX; 36854 let touchY; 36855 let offsetX; 36856 let offsetY; 36857 let diffX; 36858 let diffY; 36859 let translateX; 36860 let translateY; 36861 let imageWidth; 36862 let imageHeight; 36863 let scaledWidth; 36864 let scaledHeight; 36865 let translateMinX; 36866 let translateMinY; 36867 let translateMaxX; 36868 let translateMaxY; 36869 let slideWidth; 36870 let slideHeight; 36871 36872 if (typeof image.touchesStart.x === 'undefined' && e) { 36873 touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX; 36874 touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY; 36875 } else { 36876 touchX = image.touchesStart.x; 36877 touchY = image.touchesStart.y; 36878 } 36879 36880 zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 36881 currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio; 36882 36883 if (e) { 36884 slideWidth = gesture.$slideEl[0].offsetWidth; 36885 slideHeight = gesture.$slideEl[0].offsetHeight; 36886 offsetX = gesture.$slideEl.offset().left + window.scrollX; 36887 offsetY = gesture.$slideEl.offset().top + window.scrollY; 36888 diffX = offsetX + slideWidth / 2 - touchX; 36889 diffY = offsetY + slideHeight / 2 - touchY; 36890 imageWidth = gesture.$imageEl[0].offsetWidth; 36891 imageHeight = gesture.$imageEl[0].offsetHeight; 36892 scaledWidth = imageWidth * zoom.scale; 36893 scaledHeight = imageHeight * zoom.scale; 36894 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 36895 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 36896 translateMaxX = -translateMinX; 36897 translateMaxY = -translateMinY; 36898 translateX = diffX * zoom.scale; 36899 translateY = diffY * zoom.scale; 36900 36901 if (translateX < translateMinX) { 36902 translateX = translateMinX; 36903 } 36904 36905 if (translateX > translateMaxX) { 36906 translateX = translateMaxX; 36907 } 36908 36909 if (translateY < translateMinY) { 36910 translateY = translateMinY; 36911 } 36912 36913 if (translateY > translateMaxY) { 36914 translateY = translateMaxY; 36915 } 36916 } else { 36917 translateX = 0; 36918 translateY = 0; 36919 } 36920 36921 gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`); 36922 gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`); 36923 } 36924 36925 function zoomOut() { 36926 const zoom = swiper.zoom; 36927 const params = swiper.params.zoom; 36928 36929 if (!gesture.$slideEl) { 36930 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 36931 gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`); 36932 } else { 36933 gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); 36934 } 36935 36936 gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0); 36937 gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`); 36938 } 36939 36940 if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return; 36941 36942 if (swiper.params.cssMode) { 36943 swiper.wrapperEl.style.overflow = ''; 36944 swiper.wrapperEl.style.touchAction = ''; 36945 } 36946 36947 zoom.scale = 1; 36948 currentScale = 1; 36949 gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)'); 36950 gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)'); 36951 gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`); 36952 gesture.$slideEl = undefined; 36953 } // Toggle Zoom 36954 36955 36956 function zoomToggle(e) { 36957 const zoom = swiper.zoom; 36958 36959 if (zoom.scale && zoom.scale !== 1) { 36960 // Zoom Out 36961 zoomOut(); 36962 } else { 36963 // Zoom In 36964 zoomIn(e); 36965 } 36966 } 36967 36968 function getListeners() { 36969 const support = swiper.support; 36970 const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? { 36971 passive: true, 36972 capture: false 36973 } : false; 36974 const activeListenerWithCapture = support.passiveListener ? { 36975 passive: false, 36976 capture: true 36977 } : true; 36978 return { 36979 passiveListener, 36980 activeListenerWithCapture 36981 }; 36982 } 36983 36984 function getSlideSelector() { 36985 return `.${swiper.params.slideClass}`; 36986 } 36987 36988 function toggleGestures(method) { 36989 const { 36990 passiveListener 36991 } = getListeners(); 36992 const slideSelector = getSlideSelector(); 36993 swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener); 36994 swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener); 36995 swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener); 36996 } 36997 36998 function enableGestures() { 36999 if (gesturesEnabled) return; 37000 gesturesEnabled = true; 37001 toggleGestures('on'); 37002 } 37003 37004 function disableGestures() { 37005 if (!gesturesEnabled) return; 37006 gesturesEnabled = false; 37007 toggleGestures('off'); 37008 } // Attach/Detach Events 37009 37010 37011 function enable() { 37012 const zoom = swiper.zoom; 37013 if (zoom.enabled) return; 37014 zoom.enabled = true; 37015 const support = swiper.support; 37016 const { 37017 passiveListener, 37018 activeListenerWithCapture 37019 } = getListeners(); 37020 const slideSelector = getSlideSelector(); // Scale image 37021 37022 if (support.gestures) { 37023 swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener); 37024 swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener); 37025 } else if (swiper.touchEvents.start === 'touchstart') { 37026 swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); 37027 swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); 37028 swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); 37029 37030 if (swiper.touchEvents.cancel) { 37031 swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); 37032 } 37033 } // Move image 37034 37035 37036 swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); 37037 } 37038 37039 function disable() { 37040 const zoom = swiper.zoom; 37041 if (!zoom.enabled) return; 37042 const support = swiper.support; 37043 zoom.enabled = false; 37044 const { 37045 passiveListener, 37046 activeListenerWithCapture 37047 } = getListeners(); 37048 const slideSelector = getSlideSelector(); // Scale image 37049 37050 if (support.gestures) { 37051 swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener); 37052 swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener); 37053 } else if (swiper.touchEvents.start === 'touchstart') { 37054 swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener); 37055 swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture); 37056 swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener); 37057 37058 if (swiper.touchEvents.cancel) { 37059 swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener); 37060 } 37061 } // Move image 37062 37063 37064 swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture); 37065 } 37066 37067 on('init', () => { 37068 if (swiper.params.zoom.enabled) { 37069 enable(); 37070 } 37071 }); 37072 on('destroy', () => { 37073 disable(); 37074 }); 37075 on('touchStart', (_s, e) => { 37076 if (!swiper.zoom.enabled) return; 37077 onTouchStart(e); 37078 }); 37079 on('touchEnd', (_s, e) => { 37080 if (!swiper.zoom.enabled) return; 37081 onTouchEnd(e); 37082 }); 37083 on('doubleTap', (_s, e) => { 37084 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 37085 zoomToggle(e); 37086 } 37087 }); 37088 on('transitionEnd', () => { 37089 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 37090 onTransitionEnd(); 37091 } 37092 }); 37093 on('slideChange', () => { 37094 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 37095 onTransitionEnd(); 37096 } 37097 }); 37098 Object.assign(swiper.zoom, { 37099 enable, 37100 disable, 37101 in: zoomIn, 37102 out: zoomOut, 37103 toggle: zoomToggle 37104 }); 37105} 37106 37107/***/ }), 37108
vendor: 707 bytes, lines 37109-37125
37109/***/ "./node_modules/swiper/shared/classes-to-selector.js": 37110/*!***********************************************************!*\ 37111 !*** ./node_modules/swiper/shared/classes-to-selector.js ***! 37112 \***********************************************************/ 37113/*! exports provided: default */ 37114/***/ (function(module, __webpack_exports__, __webpack_require__) { 37115 37116"use strict"; 37117__webpack_require__.r(__webpack_exports__); 37118/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return classesToSelector; }); 37119function classesToSelector(classes = '') { 37120 return `.${classes.trim().replace(/([\.:!\/])/g, '\\$1') // eslint-disable-line 37121 .replace(/ /g, '.')}`; 37122} 37123 37124/***/ }), 37125
vendor: 1,408 bytes, lines 37126-37162
37126/***/ "./node_modules/swiper/shared/create-element-if-not-defined.js": 37127/*!*********************************************************************!*\ 37128 !*** ./node_modules/swiper/shared/create-element-if-not-defined.js ***! 37129 \*********************************************************************/ 37130/*! exports provided: default */ 37131/***/ (function(module, __webpack_exports__, __webpack_require__) { 37132 37133"use strict"; 37134__webpack_require__.r(__webpack_exports__); 37135/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createElementIfNotDefined; }); 37136/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 37137 37138function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 37139 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 37140 37141 if (swiper.params.createElements) { 37142 Object.keys(checkProps).forEach(key => { 37143 if (!params[key] && params.auto === true) { 37144 let element = swiper.$el.children(`.${checkProps[key]}`)[0]; 37145 37146 if (!element) { 37147 element = document.createElement('div'); 37148 element.className = checkProps[key]; 37149 swiper.$el.append(element); 37150 } 37151 37152 params[key] = element; 37153 originalParams[key] = element; 37154 } 37155 }); 37156 } 37157 37158 return params; 37159} 37160 37161/***/ }), 37162
vendor: 1,179 bytes, lines 37163-37189
37163/***/ "./node_modules/swiper/shared/create-shadow.js": 37164/*!*****************************************************!*\ 37165 !*** ./node_modules/swiper/shared/create-shadow.js ***! 37166 \*****************************************************/ 37167/*! exports provided: default */ 37168/***/ (function(module, __webpack_exports__, __webpack_require__) { 37169 37170"use strict"; 37171__webpack_require__.r(__webpack_exports__); 37172/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createShadow; }); 37173/* harmony import */ var _dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom.js */ "./node_modules/swiper/shared/dom.js"); 37174 37175function createShadow(params, $slideEl, side) { 37176 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`; 37177 const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl; 37178 let $shadowEl = $shadowContainer.children(`.${shadowClass}`); 37179 37180 if (!$shadowEl.length) { 37181 $shadowEl = Object(_dom_js__WEBPACK_IMPORTED_MODULE_0__["default"])(`<div class="swiper-slide-shadow${side ? `-${side}` : ''}"></div>`); 37182 $shadowContainer.append($shadowEl); 37183 } 37184 37185 return $shadowEl; 37186} 37187 37188/***/ }), 37189
vendor: 2,816 bytes, lines 37190-37248
37190/***/ "./node_modules/swiper/shared/dom.js": 37191/*!*******************************************!*\ 37192 !*** ./node_modules/swiper/shared/dom.js ***! 37193 \*******************************************/ 37194/*! exports provided: default */ 37195/***/ (function(module, __webpack_exports__, __webpack_require__) { 37196 37197"use strict"; 37198__webpack_require__.r(__webpack_exports__); 37199/* harmony import */ var dom7__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! dom7 */ "./node_modules/dom7/dom7.esm.js"); 37200 37201const Methods = { 37202 addClass: dom7__WEBPACK_IMPORTED_MODULE_0__["addClass"], 37203 removeClass: dom7__WEBPACK_IMPORTED_MODULE_0__["removeClass"], 37204 hasClass: dom7__WEBPACK_IMPORTED_MODULE_0__["hasClass"], 37205 toggleClass: dom7__WEBPACK_IMPORTED_MODULE_0__["toggleClass"], 37206 attr: dom7__WEBPACK_IMPORTED_MODULE_0__["attr"], 37207 removeAttr: dom7__WEBPACK_IMPORTED_MODULE_0__["removeAttr"], 37208 transform: dom7__WEBPACK_IMPORTED_MODULE_0__["transform"], 37209 transition: dom7__WEBPACK_IMPORTED_MODULE_0__["transition"], 37210 on: dom7__WEBPACK_IMPORTED_MODULE_0__["on"], 37211 off: dom7__WEBPACK_IMPORTED_MODULE_0__["off"], 37212 trigger: dom7__WEBPACK_IMPORTED_MODULE_0__["trigger"], 37213 transitionEnd: dom7__WEBPACK_IMPORTED_MODULE_0__["transitionEnd"], 37214 outerWidth: dom7__WEBPACK_IMPORTED_MODULE_0__["outerWidth"], 37215 outerHeight: dom7__WEBPACK_IMPORTED_MODULE_0__["outerHeight"], 37216 styles: dom7__WEBPACK_IMPORTED_MODULE_0__["styles"], 37217 offset: dom7__WEBPACK_IMPORTED_MODULE_0__["offset"], 37218 css: dom7__WEBPACK_IMPORTED_MODULE_0__["css"], 37219 each: dom7__WEBPACK_IMPORTED_MODULE_0__["each"], 37220 html: dom7__WEBPACK_IMPORTED_MODULE_0__["html"], 37221 text: dom7__WEBPACK_IMPORTED_MODULE_0__["text"], 37222 is: dom7__WEBPACK_IMPORTED_MODULE_0__["is"], 37223 index: dom7__WEBPACK_IMPORTED_MODULE_0__["index"], 37224 eq: dom7__WEBPACK_IMPORTED_MODULE_0__["eq"], 37225 append: dom7__WEBPACK_IMPORTED_MODULE_0__["append"], 37226 prepend: dom7__WEBPACK_IMPORTED_MODULE_0__["prepend"], 37227 next: dom7__WEBPACK_IMPORTED_MODULE_0__["next"], 37228 nextAll: dom7__WEBPACK_IMPORTED_MODULE_0__["nextAll"], 37229 prev: dom7__WEBPACK_IMPORTED_MODULE_0__["prev"], 37230 prevAll: dom7__WEBPACK_IMPORTED_MODULE_0__["prevAll"], 37231 parent: dom7__WEBPACK_IMPORTED_MODULE_0__["parent"], 37232 parents: dom7__WEBPACK_IMPORTED_MODULE_0__["parents"], 37233 closest: dom7__WEBPACK_IMPORTED_MODULE_0__["closest"], 37234 find: dom7__WEBPACK_IMPORTED_MODULE_0__["find"], 37235 children: dom7__WEBPACK_IMPORTED_MODULE_0__["children"], 37236 filter: dom7__WEBPACK_IMPORTED_MODULE_0__["filter"], 37237 remove: dom7__WEBPACK_IMPORTED_MODULE_0__["remove"] 37238}; 37239Object.keys(Methods).forEach(methodName => { 37240 Object.defineProperty(dom7__WEBPACK_IMPORTED_MODULE_0__["$"].fn, methodName, { 37241 value: Methods[methodName], 37242 writable: true 37243 }); 37244}); 37245/* harmony default export */ __webpack_exports__["default"] = (dom7__WEBPACK_IMPORTED_MODULE_0__["$"]); 37246 37247/***/ }), 37248
vendor: 2,306 bytes, lines 37249-37323
37249/***/ "./node_modules/swiper/shared/effect-init.js": 37250/*!***************************************************!*\ 37251 !*** ./node_modules/swiper/shared/effect-init.js ***! 37252 \***************************************************/ 37253/*! exports provided: default */ 37254/***/ (function(module, __webpack_exports__, __webpack_require__) { 37255 37256"use strict"; 37257__webpack_require__.r(__webpack_exports__); 37258/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return effectInit; }); 37259function effectInit(params) { 37260 const { 37261 effect, 37262 swiper, 37263 on, 37264 setTranslate, 37265 setTransition, 37266 overwriteParams, 37267 perspective, 37268 recreateShadows, 37269 getEffectParams 37270 } = params; 37271 on('beforeInit', () => { 37272 if (swiper.params.effect !== effect) return; 37273 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 37274 37275 if (perspective && perspective()) { 37276 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 37277 } 37278 37279 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 37280 Object.assign(swiper.params, overwriteParamsResult); 37281 Object.assign(swiper.originalParams, overwriteParamsResult); 37282 }); 37283 on('setTranslate', () => { 37284 if (swiper.params.effect !== effect) return; 37285 setTranslate(); 37286 }); 37287 on('setTransition', (_s, duration) => { 37288 if (swiper.params.effect !== effect) return; 37289 setTransition(duration); 37290 }); 37291 on('transitionEnd', () => { 37292 if (swiper.params.effect !== effect) return; 37293 37294 if (recreateShadows) { 37295 if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows 37296 37297 swiper.slides.each(slideEl => { 37298 const $slideEl = swiper.$(slideEl); 37299 $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove(); 37300 }); // create new one 37301 37302 recreateShadows(); 37303 } 37304 }); 37305 let requireUpdateOnVirtual; 37306 on('virtualUpdate', () => { 37307 if (swiper.params.effect !== effect) return; 37308 37309 if (!swiper.slides.length) { 37310 requireUpdateOnVirtual = true; 37311 } 37312 37313 requestAnimationFrame(() => { 37314 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 37315 setTranslate(); 37316 requireUpdateOnVirtual = false; 37317 } 37318 }); 37319 }); 37320} 37321 37322/***/ }), 37323
vendor: 784 bytes, lines 37324-37346
37324/***/ "./node_modules/swiper/shared/effect-target.js": 37325/*!*****************************************************!*\ 37326 !*** ./node_modules/swiper/shared/effect-target.js ***! 37327 \*****************************************************/ 37328/*! exports provided: default */ 37329/***/ (function(module, __webpack_exports__, __webpack_require__) { 37330 37331"use strict"; 37332__webpack_require__.r(__webpack_exports__); 37333/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return effectTarget; }); 37334function effectTarget(effectParams, $slideEl) { 37335 if (effectParams.transformEl) { 37336 return $slideEl.find(effectParams.transformEl).css({ 37337 'backface-visibility': 'hidden', 37338 '-webkit-backface-visibility': 'hidden' 37339 }); 37340 } 37341 37342 return $slideEl; 37343} 37344 37345/***/ }), 37346
vendor: 1,501 bytes, lines 37347-37394
37347/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.js": 37348/*!*********************************************************************!*\ 37349 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.js ***! 37350 \*********************************************************************/ 37351/*! exports provided: default */ 37352/***/ (function(module, __webpack_exports__, __webpack_require__) { 37353 37354"use strict"; 37355__webpack_require__.r(__webpack_exports__); 37356/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return effectVirtualTransitionEnd; }); 37357function effectVirtualTransitionEnd({ 37358 swiper, 37359 duration, 37360 transformEl, 37361 allSlides 37362}) { 37363 const { 37364 slides, 37365 activeIndex, 37366 $wrapperEl 37367 } = swiper; 37368 37369 if (swiper.params.virtualTranslate && duration !== 0) { 37370 let eventTriggered = false; 37371 let $transitionEndTarget; 37372 37373 if (allSlides) { 37374 $transitionEndTarget = transformEl ? slides.find(transformEl) : slides; 37375 } else { 37376 $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex); 37377 } 37378 37379 $transitionEndTarget.transitionEnd(() => { 37380 if (eventTriggered) return; 37381 if (!swiper || swiper.destroyed) return; 37382 eventTriggered = true; 37383 swiper.animating = false; 37384 const triggerEvents = ['webkitTransitionEnd', 'transitionend']; 37385 37386 for (let i = 0; i < triggerEvents.length; i += 1) { 37387 $wrapperEl.trigger(triggerEvents[i]); 37388 } 37389 }); 37390 } 37391} 37392 37393/***/ }), 37394
vendor: 1,216 bytes, lines 37395-37434
37395/***/ "./node_modules/swiper/shared/get-browser.js": 37396/*!***************************************************!*\ 37397 !*** ./node_modules/swiper/shared/get-browser.js ***! 37398 \***************************************************/ 37399/*! exports provided: getBrowser */ 37400/***/ (function(module, __webpack_exports__, __webpack_require__) { 37401 37402"use strict"; 37403__webpack_require__.r(__webpack_exports__); 37404/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBrowser", function() { return getBrowser; }); 37405/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 37406 37407let browser; 37408 37409function calcBrowser() { 37410 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 37411 37412 function isSafari() { 37413 const ua = window.navigator.userAgent.toLowerCase(); 37414 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 37415 } 37416 37417 return { 37418 isSafari: isSafari(), 37419 isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) 37420 }; 37421} 37422 37423function getBrowser() { 37424 if (!browser) { 37425 browser = calcBrowser(); 37426 } 37427 37428 return browser; 37429} 37430 37431 37432 37433/***/ }), 37434
vendor: 2,395 bytes, lines 37435-37506
37435/***/ "./node_modules/swiper/shared/get-device.js": 37436/*!**************************************************!*\ 37437 !*** ./node_modules/swiper/shared/get-device.js ***! 37438 \**************************************************/ 37439/*! exports provided: getDevice */ 37440/***/ (function(module, __webpack_exports__, __webpack_require__) { 37441 37442"use strict"; 37443__webpack_require__.r(__webpack_exports__); 37444/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getDevice", function() { return getDevice; }); 37445/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 37446/* harmony import */ var _get_support_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./get-support.js */ "./node_modules/swiper/shared/get-support.js"); 37447 37448 37449let deviceCached; 37450 37451function calcDevice({ 37452 userAgent 37453} = {}) { 37454 const support = Object(_get_support_js__WEBPACK_IMPORTED_MODULE_1__["getSupport"])(); 37455 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 37456 const platform = window.navigator.platform; 37457 const ua = userAgent || window.navigator.userAgent; 37458 const device = { 37459 ios: false, 37460 android: false 37461 }; 37462 const screenWidth = window.screen.width; 37463 const screenHeight = window.screen.height; 37464 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 37465 37466 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 37467 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 37468 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 37469 const windows = platform === 'Win32'; 37470 let macos = platform === 'MacIntel'; // iPadOs 13 fix 37471 37472 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 37473 37474 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 37475 ipad = ua.match(/(Version)\/([\d.]+)/); 37476 if (!ipad) ipad = [0, 1, '13_0_0']; 37477 macos = false; 37478 } // Android 37479 37480 37481 if (android && !windows) { 37482 device.os = 'android'; 37483 device.android = true; 37484 } 37485 37486 if (ipad || iphone || ipod) { 37487 device.os = 'ios'; 37488 device.ios = true; 37489 } // Export object 37490 37491 37492 return device; 37493} 37494 37495function getDevice(overrides = {}) { 37496 if (!deviceCached) { 37497 deviceCached = calcDevice(overrides); 37498 } 37499 37500 return deviceCached; 37501} 37502 37503 37504 37505/***/ }), 37506
vendor: 1,724 bytes, lines 37507-37561
37507/***/ "./node_modules/swiper/shared/get-support.js": 37508/*!***************************************************!*\ 37509 !*** ./node_modules/swiper/shared/get-support.js ***! 37510 \***************************************************/ 37511/*! exports provided: getSupport */ 37512/***/ (function(module, __webpack_exports__, __webpack_require__) { 37513 37514"use strict"; 37515__webpack_require__.r(__webpack_exports__); 37516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSupport", function() { return getSupport; }); 37517/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 37518 37519let support; 37520 37521function calcSupport() { 37522 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 37523 const document = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getDocument"])(); 37524 return { 37525 smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style, 37526 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch), 37527 passiveListener: function checkPassiveListener() { 37528 let supportsPassive = false; 37529 37530 try { 37531 const opts = Object.defineProperty({}, 'passive', { 37532 // eslint-disable-next-line 37533 get() { 37534 supportsPassive = true; 37535 } 37536 37537 }); 37538 window.addEventListener('testPassiveListener', null, opts); 37539 } catch (e) {// No support 37540 } 37541 37542 return supportsPassive; 37543 }(), 37544 gestures: function checkGestures() { 37545 return 'ongesturestart' in window; 37546 }() 37547 }; 37548} 37549 37550function getSupport() { 37551 if (!support) { 37552 support = calcSupport(); 37553 } 37554 37555 return support; 37556} 37557 37558 37559 37560/***/ }), 37561
vendor: 7,499 bytes, lines 37562-37780
37562/***/ "./node_modules/swiper/shared/utils.js": 37563/*!*********************************************!*\ 37564 !*** ./node_modules/swiper/shared/utils.js ***! 37565 \*********************************************/ 37566/*! exports provided: animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty */ 37567/***/ (function(module, __webpack_exports__, __webpack_require__) { 37568 37569"use strict"; 37570__webpack_require__.r(__webpack_exports__); 37571/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animateCSSModeScroll", function() { return animateCSSModeScroll; }); 37572/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteProps", function() { return deleteProps; }); 37573/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nextTick", function() { return nextTick; }); 37574/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "now", function() { return now; }); 37575/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTranslate", function() { return getTranslate; }); 37576/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; }); 37577/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; }); 37578/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getComputedStyle", function() { return getComputedStyle; }); 37579/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setCSSProperty", function() { return setCSSProperty; }); 37580/* harmony import */ var ssr_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ssr-window */ "./node_modules/ssr-window/ssr-window.esm.js"); 37581 37582 37583function deleteProps(obj) { 37584 const object = obj; 37585 Object.keys(object).forEach(key => { 37586 try { 37587 object[key] = null; 37588 } catch (e) {// no getter for object 37589 } 37590 37591 try { 37592 delete object[key]; 37593 } catch (e) {// something got wrong 37594 } 37595 }); 37596} 37597 37598function nextTick(callback, delay = 0) { 37599 return setTimeout(callback, delay); 37600} 37601 37602function now() { 37603 return Date.now(); 37604} 37605 37606function getComputedStyle(el) { 37607 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 37608 let style; 37609 37610 if (window.getComputedStyle) { 37611 style = window.getComputedStyle(el, null); 37612 } 37613 37614 if (!style && el.currentStyle) { 37615 style = el.currentStyle; 37616 } 37617 37618 if (!style) { 37619 style = el.style; 37620 } 37621 37622 return style; 37623} 37624 37625function getTranslate(el, axis = 'x') { 37626 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 37627 let matrix; 37628 let curTransform; 37629 let transformMatrix; 37630 const curStyle = getComputedStyle(el, null); 37631 37632 if (window.WebKitCSSMatrix) { 37633 curTransform = curStyle.transform || curStyle.webkitTransform; 37634 37635 if (curTransform.split(',').length > 6) { 37636 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 37637 } // Some old versions of Webkit choke when 'none' is passed; pass 37638 // empty string instead in this case 37639 37640 37641 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 37642 } else { 37643 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 37644 matrix = transformMatrix.toString().split(','); 37645 } 37646 37647 if (axis === 'x') { 37648 // Latest Chrome and webkits Fix 37649 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix 37650 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers 37651 else curTransform = parseFloat(matrix[4]); 37652 } 37653 37654 if (axis === 'y') { 37655 // Latest Chrome and webkits Fix 37656 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix 37657 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers 37658 else curTransform = parseFloat(matrix[5]); 37659 } 37660 37661 return curTransform || 0; 37662} 37663 37664function isObject(o) { 37665 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 37666} 37667 37668function isNode(node) { 37669 // eslint-disable-next-line 37670 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 37671 return node instanceof HTMLElement; 37672 } 37673 37674 return node && (node.nodeType === 1 || node.nodeType === 11); 37675} 37676 37677function extend(...args) { 37678 const to = Object(args[0]); 37679 const noExtend = ['__proto__', 'constructor', 'prototype']; 37680 37681 for (let i = 1; i < args.length; i += 1) { 37682 const nextSource = args[i]; 37683 37684 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 37685 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 37686 37687 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 37688 const nextKey = keysArray[nextIndex]; 37689 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 37690 37691 if (desc !== undefined && desc.enumerable) { 37692 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 37693 if (nextSource[nextKey].__swiper__) { 37694 to[nextKey] = nextSource[nextKey]; 37695 } else { 37696 extend(to[nextKey], nextSource[nextKey]); 37697 } 37698 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 37699 to[nextKey] = {}; 37700 37701 if (nextSource[nextKey].__swiper__) { 37702 to[nextKey] = nextSource[nextKey]; 37703 } else { 37704 extend(to[nextKey], nextSource[nextKey]); 37705 } 37706 } else { 37707 to[nextKey] = nextSource[nextKey]; 37708 } 37709 } 37710 } 37711 } 37712 } 37713 37714 return to; 37715} 37716 37717function setCSSProperty(el, varName, varValue) { 37718 el.style.setProperty(varName, varValue); 37719} 37720 37721function animateCSSModeScroll({ 37722 swiper, 37723 targetPosition, 37724 side 37725}) { 37726 const window = Object(ssr_window__WEBPACK_IMPORTED_MODULE_0__["getWindow"])(); 37727 const startPosition = -swiper.translate; 37728 let startTime = null; 37729 let time; 37730 const duration = swiper.params.speed; 37731 swiper.wrapperEl.style.scrollSnapType = 'none'; 37732 window.cancelAnimationFrame(swiper.cssModeFrameID); 37733 const dir = targetPosition > startPosition ? 'next' : 'prev'; 37734 37735 const isOutOfBound = (current, target) => { 37736 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 37737 }; 37738 37739 const animate = () => { 37740 time = new Date().getTime(); 37741 37742 if (startTime === null) { 37743 startTime = time; 37744 } 37745 37746 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 37747 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 37748 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 37749 37750 if (isOutOfBound(currentPosition, targetPosition)) { 37751 currentPosition = targetPosition; 37752 } 37753 37754 swiper.wrapperEl.scrollTo({ 37755 [side]: currentPosition 37756 }); 37757 37758 if (isOutOfBound(currentPosition, targetPosition)) { 37759 swiper.wrapperEl.style.overflow = 'hidden'; 37760 swiper.wrapperEl.style.scrollSnapType = ''; 37761 setTimeout(() => { 37762 swiper.wrapperEl.style.overflow = ''; 37763 swiper.wrapperEl.scrollTo({ 37764 [side]: currentPosition 37765 }); 37766 }); 37767 window.cancelAnimationFrame(swiper.cssModeFrameID); 37768 return; 37769 } 37770 37771 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 37772 }; 37773 37774 animate(); 37775} 37776 37777 37778 37779/***/ }), 37780
vendor: 10,794 bytes, lines 37781-37906
37781/***/ "./node_modules/swiper/swiper.esm.js": 37782/*!*******************************************!*\ 37783 !*** ./node_modules/swiper/swiper.esm.js ***! 37784 \*******************************************/ 37785/*! exports provided: Swiper, default, Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards */ 37786/***/ (function(module, __webpack_exports__, __webpack_require__) { 37787 37788"use strict"; 37789__webpack_require__.r(__webpack_exports__); 37790/* harmony import */ var _core_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core/core.js */ "./node_modules/swiper/core/core.js"); 37791/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Swiper", function() { return _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 37792 37793/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _core_core_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 37794 37795/* harmony import */ var _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/virtual/virtual.js */ "./node_modules/swiper/modules/virtual/virtual.js"); 37796/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Virtual", function() { return _modules_virtual_virtual_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); 37797 37798/* harmony import */ var _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/keyboard/keyboard.js */ "./node_modules/swiper/modules/keyboard/keyboard.js"); 37799/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return _modules_keyboard_keyboard_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); 37800 37801/* harmony import */ var _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/mousewheel/mousewheel.js */ "./node_modules/swiper/modules/mousewheel/mousewheel.js"); 37802/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Mousewheel", function() { return _modules_mousewheel_mousewheel_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); 37803 37804/* harmony import */ var _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/navigation/navigation.js */ "./node_modules/swiper/modules/navigation/navigation.js"); 37805/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Navigation", function() { return _modules_navigation_navigation_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); 37806 37807/* harmony import */ var _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/pagination/pagination.js */ "./node_modules/swiper/modules/pagination/pagination.js"); 37808/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Pagination", function() { return _modules_pagination_pagination_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); 37809 37810/* harmony import */ var _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/scrollbar/scrollbar.js */ "./node_modules/swiper/modules/scrollbar/scrollbar.js"); 37811/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scrollbar", function() { return _modules_scrollbar_scrollbar_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); 37812 37813/* harmony import */ var _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/parallax/parallax.js */ "./node_modules/swiper/modules/parallax/parallax.js"); 37814/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Parallax", function() { return _modules_parallax_parallax_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); 37815 37816/* harmony import */ var _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/zoom/zoom.js */ "./node_modules/swiper/modules/zoom/zoom.js"); 37817/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Zoom", function() { return _modules_zoom_zoom_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); 37818 37819/* harmony import */ var _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/lazy/lazy.js */ "./node_modules/swiper/modules/lazy/lazy.js"); 37820/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Lazy", function() { return _modules_lazy_lazy_js__WEBPACK_IMPORTED_MODULE_9__["default"]; }); 37821 37822/* harmony import */ var _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/controller/controller.js */ "./node_modules/swiper/modules/controller/controller.js"); 37823/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Controller", function() { return _modules_controller_controller_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }); 37824 37825/* harmony import */ var _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/a11y/a11y.js */ "./node_modules/swiper/modules/a11y/a11y.js"); 37826/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "A11y", function() { return _modules_a11y_a11y_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); 37827 37828/* harmony import */ var _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/history/history.js */ "./node_modules/swiper/modules/history/history.js"); 37829/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "History", function() { return _modules_history_history_js__WEBPACK_IMPORTED_MODULE_12__["default"]; }); 37830 37831/* harmony import */ var _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/hash-navigation/hash-navigation.js */ "./node_modules/swiper/modules/hash-navigation/hash-navigation.js"); 37832/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HashNavigation", function() { return _modules_hash_navigation_hash_navigation_js__WEBPACK_IMPORTED_MODULE_13__["default"]; }); 37833 37834/* harmony import */ var _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/autoplay/autoplay.js */ "./node_modules/swiper/modules/autoplay/autoplay.js"); 37835/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Autoplay", function() { return _modules_autoplay_autoplay_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); 37836 37837/* harmony import */ var _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/thumbs/thumbs.js */ "./node_modules/swiper/modules/thumbs/thumbs.js"); 37838/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Thumbs", function() { return _modules_thumbs_thumbs_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); 37839 37840/* harmony import */ var _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/free-mode/free-mode.js */ "./node_modules/swiper/modules/free-mode/free-mode.js"); 37841/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FreeMode", function() { return _modules_free_mode_free_mode_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); 37842 37843/* harmony import */ var _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/grid/grid.js */ "./node_modules/swiper/modules/grid/grid.js"); 37844/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _modules_grid_grid_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); 37845 37846/* harmony import */ var _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/manipulation/manipulation.js */ "./node_modules/swiper/modules/manipulation/manipulation.js"); 37847/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Manipulation", function() { return _modules_manipulation_manipulation_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); 37848 37849/* harmony import */ var _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/effect-fade/effect-fade.js */ "./node_modules/swiper/modules/effect-fade/effect-fade.js"); 37850/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectFade", function() { return _modules_effect_fade_effect_fade_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); 37851 37852/* harmony import */ var _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/effect-cube/effect-cube.js */ "./node_modules/swiper/modules/effect-cube/effect-cube.js"); 37853/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCube", function() { return _modules_effect_cube_effect_cube_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); 37854 37855/* harmony import */ var _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/effect-flip/effect-flip.js */ "./node_modules/swiper/modules/effect-flip/effect-flip.js"); 37856/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectFlip", function() { return _modules_effect_flip_effect_flip_js__WEBPACK_IMPORTED_MODULE_21__["default"]; }); 37857 37858/* harmony import */ var _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/effect-coverflow/effect-coverflow.js */ "./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js"); 37859/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCoverflow", function() { return _modules_effect_coverflow_effect_coverflow_js__WEBPACK_IMPORTED_MODULE_22__["default"]; }); 37860 37861/* harmony import */ var _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/effect-creative/effect-creative.js */ "./node_modules/swiper/modules/effect-creative/effect-creative.js"); 37862/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCreative", function() { return _modules_effect_creative_effect_creative_js__WEBPACK_IMPORTED_MODULE_23__["default"]; }); 37863 37864/* harmony import */ var _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/effect-cards/effect-cards.js */ "./node_modules/swiper/modules/effect-cards/effect-cards.js"); 37865/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EffectCards", function() { return _modules_effect_cards_effect_cards_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); 37866 37867/** 37868 * Swiper 8.4.6 37869 * Most modern mobile touch slider and framework with hardware accelerated transitions 37870 * https://swiperjs.com 37871 * 37872 * Copyright 2014-2023 Vladimir Kharlampidi 37873 * 37874 * Released under the MIT License 37875 * 37876 * Released on: January 17, 2023 37877 */ 37878 37879 37880 37881 37882 37883 37884 37885 37886 37887 37888 37889 37890 37891 37892 37893 37894 37895 37896 37897 37898 37899 37900 37901 37902 37903 37904 37905/***/ }), 37906
vendor: 721 bytes, lines 37907-37936
37907/***/ "./node_modules/webpack/buildin/global.js": 37908/*!***********************************!*\ 37909 !*** (webpack)/buildin/global.js ***! 37910 \***********************************/ 37911/*! no static exports found */ 37912/***/ (function(module, exports) { 37913 37914var g; 37915 37916// This works in non-strict mode 37917g = (function() { 37918 return this; 37919})(); 37920 37921try { 37922 // This works if eval is allowed (see CSP) 37923 g = g || new Function("return this")(); 37924} catch (e) { 37925 // This works if the window reference is available 37926 if (typeof window === "object") g = window; 37927} 37928 37929// g can still be undefined, but nothing to do about it... 37930// We return undefined, instead of nothing here, so it's 37931// easier to handle this case. if(!global) { ...} 37932 37933module.exports = g; 37934 37935 37936/***/ })
37936, 37937 37938/***/ 0: 37939/*!***********************************************************!*\ 37940 !*** multi ./assets/js/theme.js ./assets/scss/style.scss ***! 37941 \***********************************************************/ 37942/*! no static exports found */ 37943/***/ (function(module, exports, __webpack_require__) { 37944 37945__webpack_require__(/*! /app/wp-content/themes/vives/assets/js/theme.js */"./assets/js/theme.js"); 37946module.exports = __webpack_require__(/*! /app/wp-content/themes/vives/assets/scss/style.scss */"./assets/scss/style.scss"); 37947 37948 37949/***/ }) 37950 37951/******/ }); 37952//# sourceMappingURL=theme.min.js.map
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.