1/******/ (function() { // webpackBootstrap 2/******/ "use strict"; 3/******/ var __webpack_modules__ = ({ 4
vendor: 9,980 bytes, lines 5-227
5/***/ "./node_modules/@popperjs/core/lib/createPopper.js": 6/*!*********************************************************!*\ 7 !*** ./node_modules/@popperjs/core/lib/createPopper.js ***! 8 \*********************************************************/ 9/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 10 11__webpack_require__.r(__webpack_exports__); 12/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13/* harmony export */ createPopper: function() { return /* binding */ createPopper; }, 14/* harmony export */ detectOverflow: function() { return /* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }, 15/* harmony export */ popperGenerator: function() { return /* binding */ popperGenerator; } 16/* harmony export */ }); 17/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js"); 18/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); 19/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); 20/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 21/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js"); 22/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js"); 23/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js"); 24/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 25/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 26 27 28 29 30 31 32 33 34 35var DEFAULT_OPTIONS = { 36 placement: 'bottom', 37 modifiers: [], 38 strategy: 'absolute' 39}; 40 41function areValidElements() { 42 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 43 args[_key] = arguments[_key]; 44 } 45 46 return !args.some(function (element) { 47 return !(element && typeof element.getBoundingClientRect === 'function'); 48 }); 49} 50 51function popperGenerator(generatorOptions) { 52 if (generatorOptions === void 0) { 53 generatorOptions = {}; 54 } 55 56 var _generatorOptions = generatorOptions, 57 _generatorOptions$def = _generatorOptions.defaultModifiers, 58 defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, 59 _generatorOptions$def2 = _generatorOptions.defaultOptions, 60 defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; 61 return function createPopper(reference, popper, options) { 62 if (options === void 0) { 63 options = defaultOptions; 64 } 65 66 var state = { 67 placement: 'bottom', 68 orderedModifiers: [], 69 options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), 70 modifiersData: {}, 71 elements: { 72 reference: reference, 73 popper: popper 74 }, 75 attributes: {}, 76 styles: {} 77 }; 78 var effectCleanupFns = []; 79 var isDestroyed = false; 80 var instance = { 81 state: state, 82 setOptions: function setOptions(setOptionsAction) { 83 var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; 84 cleanupModifierEffects(); 85 state.options = Object.assign({}, defaultOptions, state.options, options); 86 state.scrollParents = { 87 reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [], 88 popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper) 89 }; // Orders the modifiers based on their dependencies and `phase` 90 // properties 91 92 var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers 93 94 state.orderedModifiers = orderedModifiers.filter(function (m) { 95 return m.enabled; 96 }); 97 runModifierEffects(); 98 return instance.update(); 99 }, 100 // Sync update â it will always be executed, even if not necessary. This 101 // is useful for low frequency updates where sync behavior simplifies the 102 // logic. 103 // For high frequency updates (e.g. `resize` and `scroll` events), always 104 // prefer the async Popper#update method 105 forceUpdate: function forceUpdate() { 106 if (isDestroyed) { 107 return; 108 } 109 110 var _state$elements = state.elements, 111 reference = _state$elements.reference, 112 popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements 113 // anymore 114 115 if (!areValidElements(reference, popper)) { 116 return; 117 } // Store the reference and popper rects to be read by modifiers 118 119 120 state.rects = { 121 reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(popper), state.options.strategy === 'fixed'), 122 popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(popper) 123 }; // Modifiers have the ability to reset the current update cycle. The 124 // most common use case for this is the `flip` modifier changing the 125 // placement, which then needs to re-run all the modifiers, because the 126 // logic was previously ran for the previous placement and is therefore 127 // stale/incorrect 128 129 state.reset = false; 130 state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier 131 // is filled with the initial data specified by the modifier. This means 132 // it doesn't persist and is fresh on each update. 133 // To ensure persistent data, use `${name}#persistent` 134 135 state.orderedModifiers.forEach(function (modifier) { 136 return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); 137 }); 138 139 for (var index = 0; index < state.orderedModifiers.length; index++) { 140 if (state.reset === true) { 141 state.reset = false; 142 index = -1; 143 continue; 144 } 145 146 var _state$orderedModifie = state.orderedModifiers[index], 147 fn = _state$orderedModifie.fn, 148 _state$orderedModifie2 = _state$orderedModifie.options, 149 _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, 150 name = _state$orderedModifie.name; 151 152 if (typeof fn === 'function') { 153 state = fn({ 154 state: state, 155 options: _options, 156 name: name, 157 instance: instance 158 }) || state; 159 } 160 } 161 }, 162 // Async and optimistically optimized update â it will not be executed if 163 // not necessary (debounced to run at most once-per-tick) 164 update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__["default"])(function () { 165 return new Promise(function (resolve) { 166 instance.forceUpdate(); 167 resolve(state); 168 }); 169 }), 170 destroy: function destroy() { 171 cleanupModifierEffects(); 172 isDestroyed = true; 173 } 174 }; 175 176 if (!areValidElements(reference, popper)) { 177 return instance; 178 } 179 180 instance.setOptions(options).then(function (state) { 181 if (!isDestroyed && options.onFirstUpdate) { 182 options.onFirstUpdate(state); 183 } 184 }); // Modifiers have the ability to execute arbitrary code before the first 185 // update cycle runs. They will be executed in the same order as the update 186 // cycle. This is useful when a modifier adds some persistent data that 187 // other modifiers need to use, but the modifier is run after the dependent 188 // one. 189 190 function runModifierEffects() { 191 state.orderedModifiers.forEach(function (_ref) { 192 var name = _ref.name, 193 _ref$options = _ref.options, 194 options = _ref$options === void 0 ? {} : _ref$options, 195 effect = _ref.effect; 196 197 if (typeof effect === 'function') { 198 var cleanupFn = effect({ 199 state: state, 200 name: name, 201 instance: instance, 202 options: options 203 }); 204 205 var noopFn = function noopFn() {}; 206 207 effectCleanupFns.push(cleanupFn || noopFn); 208 } 209 }); 210 } 211 212 function cleanupModifierEffects() { 213 effectCleanupFns.forEach(function (fn) { 214 return fn(); 215 }); 216 effectCleanupFns = []; 217 } 218 219 return instance; 220 }; 221} 222var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules 223 224 225 226/***/ }), 227
vendor: 1,424 bytes, lines 228-264
228/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js": 229/*!***************************************************************!*\ 230 !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***! 231 \***************************************************************/ 232/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 233 234__webpack_require__.r(__webpack_exports__); 235/* harmony export */ __webpack_require__.d(__webpack_exports__, { 236/* harmony export */ "default": function() { return /* binding */ contains; } 237/* harmony export */ }); 238/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 239 240function contains(parent, child) { 241 var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method 242 243 if (parent.contains(child)) { 244 return true; 245 } // then fallback to custom implementation with Shadow DOM support 246 else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) { 247 var next = child; 248 249 do { 250 if (next && parent.isSameNode(next)) { 251 return true; 252 } // $FlowFixMe[prop-missing]: need a better way to handle this... 253 254 255 next = next.parentNode || next.host; 256 } while (next); 257 } // Give up, the result is false 258 259 260 return false; 261} 262 263/***/ }), 264
vendor: 2,812 bytes, lines 265-322
265/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js": 266/*!****************************************************************************!*\ 267 !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! 268 \****************************************************************************/ 269/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 270 271__webpack_require__.r(__webpack_exports__); 272/* harmony export */ __webpack_require__.d(__webpack_exports__, { 273/* harmony export */ "default": function() { return /* binding */ getBoundingClientRect; } 274/* harmony export */ }); 275/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 276/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 277/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 278/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); 279 280 281 282 283function getBoundingClientRect(element, includeScale, isFixedStrategy) { 284 if (includeScale === void 0) { 285 includeScale = false; 286 } 287 288 if (isFixedStrategy === void 0) { 289 isFixedStrategy = false; 290 } 291 292 var clientRect = element.getBoundingClientRect(); 293 var scaleX = 1; 294 var scaleY = 1; 295 296 if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { 297 scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1; 298 scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1; 299 } 300 301 var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window, 302 visualViewport = _ref.visualViewport; 303 304 var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy; 305 var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; 306 var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; 307 var width = clientRect.width / scaleX; 308 var height = clientRect.height / scaleY; 309 return { 310 width: width, 311 height: height, 312 top: y, 313 right: x + width, 314 bottom: y + height, 315 left: x, 316 x: x, 317 y: y 318 }; 319} 320 321/***/ }), 322
vendor: 6,922 bytes, lines 323-419
323/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js": 324/*!**********************************************************************!*\ 325 !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! 326 \**********************************************************************/ 327/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 328 329__webpack_require__.r(__webpack_exports__); 330/* harmony export */ __webpack_require__.d(__webpack_exports__, { 331/* harmony export */ "default": function() { return /* binding */ getClippingRect; } 332/* harmony export */ }); 333/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 334/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js"); 335/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js"); 336/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); 337/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 338/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 339/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 340/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 341/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 342/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 343/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); 344/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 345/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); 346/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362function getInnerBoundingClientRect(element, strategy) { 363 var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === 'fixed'); 364 rect.top = rect.top + element.clientTop; 365 rect.left = rect.left + element.clientLeft; 366 rect.bottom = rect.top + element.clientHeight; 367 rect.right = rect.left + element.clientWidth; 368 rect.width = element.clientWidth; 369 rect.height = element.clientHeight; 370 rect.x = rect.left; 371 rect.y = rect.top; 372 return rect; 373} 374 375function getClientRectFromMixedType(element, clippingParent, strategy) { 376 return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element))); 377} // A "clipping parent" is an overflowable container with the characteristic of 378// clipping (or hiding) overflowing elements with a position different from 379// `initial` 380 381 382function getClippingParents(element) { 383 var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element)); 384 var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0; 385 var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element; 386 387 if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) { 388 return []; 389 } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 390 391 392 return clippingParents.filter(function (clippingParent) { 393 return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== 'body'; 394 }); 395} // Gets the maximum area that the element is visible in due to any number of 396// clipping parents 397 398 399function getClippingRect(element, boundary, rootBoundary, strategy) { 400 var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); 401 var clippingParents = [].concat(mainClippingParents, [rootBoundary]); 402 var firstClippingParent = clippingParents[0]; 403 var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { 404 var rect = getClientRectFromMixedType(element, clippingParent, strategy); 405 accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top); 406 accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right); 407 accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom); 408 accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left); 409 return accRect; 410 }, getClientRectFromMixedType(element, firstClippingParent, strategy)); 411 clippingRect.width = clippingRect.right - clippingRect.left; 412 clippingRect.height = clippingRect.bottom - clippingRect.top; 413 clippingRect.x = clippingRect.left; 414 clippingRect.y = clippingRect.top; 415 return clippingRect; 416} 417 418/***/ }), 419
vendor: 4,358 bytes, lines 420-498
420/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js": 421/*!***********************************************************************!*\ 422 !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! 423 \***********************************************************************/ 424/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 425 426__webpack_require__.r(__webpack_exports__); 427/* harmony export */ __webpack_require__.d(__webpack_exports__, { 428/* harmony export */ "default": function() { return /* binding */ getCompositeRect; } 429/* harmony export */ }); 430/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 431/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js"); 432/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 433/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 434/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); 435/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 436/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); 437/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 438 439 440 441 442 443 444 445 446 447function isElementScaled(element) { 448 var rect = element.getBoundingClientRect(); 449 var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1; 450 var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1; 451 return scaleX !== 1 || scaleY !== 1; 452} // Returns the composite rect of an element relative to its offsetParent. 453// Composite means it takes into account transforms as well as layout. 454 455 456function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { 457 if (isFixed === void 0) { 458 isFixed = false; 459 } 460 461 var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent); 462 var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent); 463 var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent); 464 var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed); 465 var scroll = { 466 scrollLeft: 0, 467 scrollTop: 0 468 }; 469 var offsets = { 470 x: 0, 471 y: 0 472 }; 473 474 if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { 475 if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 476 (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) { 477 scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent); 478 } 479 480 if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) { 481 offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true); 482 offsets.x += offsetParent.clientLeft; 483 offsets.y += offsetParent.clientTop; 484 } else if (documentElement) { 485 offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement); 486 } 487 } 488 489 return { 490 x: rect.left + scroll.scrollLeft - offsets.x, 491 y: rect.top + scroll.scrollTop - offsets.y, 492 width: rect.width, 493 height: rect.height 494 }; 495} 496 497/***/ }), 498
vendor: 940 bytes, lines 499-516
499/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js": 500/*!***********************************************************************!*\ 501 !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! 502 \***********************************************************************/ 503/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 504 505__webpack_require__.r(__webpack_exports__); 506/* harmony export */ __webpack_require__.d(__webpack_exports__, { 507/* harmony export */ "default": function() { return /* binding */ getComputedStyle; } 508/* harmony export */ }); 509/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 510 511function getComputedStyle(element) { 512 return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element); 513} 514 515/***/ }), 516
vendor: 1,111 bytes, lines 517-536
517/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js": 518/*!*************************************************************************!*\ 519 !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! 520 \*************************************************************************/ 521/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 522 523__webpack_require__.r(__webpack_exports__); 524/* harmony export */ __webpack_require__.d(__webpack_exports__, { 525/* harmony export */ "default": function() { return /* binding */ getDocumentElement; } 526/* harmony export */ }); 527/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 528 529function getDocumentElement(element) { 530 // $FlowFixMe[incompatible-return]: assume body is always available 531 return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] 532 element.document) || window.document).documentElement; 533} 534 535/***/ }), 536
vendor: 2,864 bytes, lines 537-583
537/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js": 538/*!**********************************************************************!*\ 539 !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! 540 \**********************************************************************/ 541/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 542 543__webpack_require__.r(__webpack_exports__); 544/* harmony export */ __webpack_require__.d(__webpack_exports__, { 545/* harmony export */ "default": function() { return /* binding */ getDocumentRect; } 546/* harmony export */ }); 547/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 548/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 549/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); 550/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); 551/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 552 553 554 555 556 // Gets the entire size of the scrollable document area, even extending outside 557// of the `<html>` and `<body>` rect bounds if horizontally scrollable 558 559function getDocumentRect(element) { 560 var _element$ownerDocumen; 561 562 var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); 563 var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); 564 var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; 565 var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); 566 var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); 567 var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); 568 var y = -winScroll.scrollTop; 569 570 if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === 'rtl') { 571 x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width; 572 } 573 574 return { 575 width: width, 576 height: height, 577 x: x, 578 y: y 579 }; 580} 581 582/***/ }), 583
vendor: 772 bytes, lines 584-602
584/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js": 585/*!***************************************************************************!*\ 586 !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! 587 \***************************************************************************/ 588/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 589 590__webpack_require__.r(__webpack_exports__); 591/* harmony export */ __webpack_require__.d(__webpack_exports__, { 592/* harmony export */ "default": function() { return /* binding */ getHTMLElementScroll; } 593/* harmony export */ }); 594function getHTMLElementScroll(element) { 595 return { 596 scrollLeft: element.scrollLeft, 597 scrollTop: element.scrollTop 598 }; 599} 600 601/***/ }), 602
vendor: 1,556 bytes, lines 603-641
603/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js": 604/*!********************************************************************!*\ 605 !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! 606 \********************************************************************/ 607/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 608 609__webpack_require__.r(__webpack_exports__); 610/* harmony export */ __webpack_require__.d(__webpack_exports__, { 611/* harmony export */ "default": function() { return /* binding */ getLayoutRect; } 612/* harmony export */ }); 613/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 614 // Returns the layout rect of an element relative to its offsetParent. Layout 615// means it doesn't take into account transforms. 616 617function getLayoutRect(element) { 618 var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed. 619 // Fixes https://github.com/popperjs/popper-core/issues/1223 620 621 var width = element.offsetWidth; 622 var height = element.offsetHeight; 623 624 if (Math.abs(clientRect.width - width) <= 1) { 625 width = clientRect.width; 626 } 627 628 if (Math.abs(clientRect.height - height) <= 1) { 629 height = clientRect.height; 630 } 631 632 return { 633 x: element.offsetLeft, 634 y: element.offsetTop, 635 width: width, 636 height: height 637 }; 638} 639 640/***/ }), 641
vendor: 699 bytes, lines 642-657
642/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js": 643/*!******************************************************************!*\ 644 !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! 645 \******************************************************************/ 646/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 647 648__webpack_require__.r(__webpack_exports__); 649/* harmony export */ __webpack_require__.d(__webpack_exports__, { 650/* harmony export */ "default": function() { return /* binding */ getNodeName; } 651/* harmony export */ }); 652function getNodeName(element) { 653 return element ? (element.nodeName || '').toLowerCase() : null; 654} 655 656/***/ }), 657
vendor: 1,730 bytes, lines 658-685
658/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js": 659/*!********************************************************************!*\ 660 !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! 661 \********************************************************************/ 662/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 663 664__webpack_require__.r(__webpack_exports__); 665/* harmony export */ __webpack_require__.d(__webpack_exports__, { 666/* harmony export */ "default": function() { return /* binding */ getNodeScroll; } 667/* harmony export */ }); 668/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); 669/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 670/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 671/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js"); 672 673 674 675 676function getNodeScroll(node) { 677 if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) { 678 return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node); 679 } else { 680 return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node); 681 } 682} 683 684/***/ }), 685
vendor: 4,978 bytes, lines 686-774
686/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js": 687/*!**********************************************************************!*\ 688 !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! 689 \**********************************************************************/ 690/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 691 692__webpack_require__.r(__webpack_exports__); 693/* harmony export */ __webpack_require__.d(__webpack_exports__, { 694/* harmony export */ "default": function() { return /* binding */ getOffsetParent; } 695/* harmony export */ }); 696/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 697/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 698/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 699/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 700/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js"); 701/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 702/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js"); 703 704 705 706 707 708 709 710 711function getTrueOffsetParent(element) { 712 if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837 713 (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === 'fixed') { 714 return null; 715 } 716 717 return element.offsetParent; 718} // `.offsetParent` reports `null` for fixed elements, while absolute elements 719// return the containing block 720 721 722function getContainingBlock(element) { 723 var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])()); 724 var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])()); 725 726 if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { 727 // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport 728 var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); 729 730 if (elementCss.position === 'fixed') { 731 return null; 732 } 733 } 734 735 var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); 736 737 if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) { 738 currentNode = currentNode.host; 739 } 740 741 while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) { 742 var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that 743 // create a containing block. 744 // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block 745 746 if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { 747 return currentNode; 748 } else { 749 currentNode = currentNode.parentNode; 750 } 751 } 752 753 return null; 754} // Gets the closest ancestor positioned element. Handles some edge cases, 755// such as table ancestors and cross browser bugs. 756 757 758function getOffsetParent(element) { 759 var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element); 760 var offsetParent = getTrueOffsetParent(element); 761 762 while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') { 763 offsetParent = getTrueOffsetParent(offsetParent); 764 } 765 766 if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) { 767 return window; 768 } 769 770 return offsetParent || getContainingBlock(element) || window; 771} 772 773/***/ }), 774
vendor: 1,906 bytes, lines 775-809
775/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js": 776/*!********************************************************************!*\ 777 !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! 778 \********************************************************************/ 779/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 780 781__webpack_require__.r(__webpack_exports__); 782/* harmony export */ __webpack_require__.d(__webpack_exports__, { 783/* harmony export */ "default": function() { return /* binding */ getParentNode; } 784/* harmony export */ }); 785/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 786/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 787/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 788 789 790 791function getParentNode(element) { 792 if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') { 793 return element; 794 } 795 796 return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle 797 // $FlowFixMe[incompatible-return] 798 // $FlowFixMe[prop-missing] 799 element.assignedSlot || // step into the shadow DOM of the parent of a slotted node 800 element.parentNode || ( // DOM Element detected 801 (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected 802 // $FlowFixMe[incompatible-call]: HTMLElement is a Node 803 (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback 804 805 ); 806} 807 808/***/ }), 809
vendor: 1,884 bytes, lines 810-842
810/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js": 811/*!**********************************************************************!*\ 812 !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! 813 \**********************************************************************/ 814/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 815 816__webpack_require__.r(__webpack_exports__); 817/* harmony export */ __webpack_require__.d(__webpack_exports__, { 818/* harmony export */ "default": function() { return /* binding */ getScrollParent; } 819/* harmony export */ }); 820/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 821/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); 822/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 823/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 824 825 826 827 828function getScrollParent(node) { 829 if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) { 830 // $FlowFixMe[incompatible-return]: assume body is always available 831 return node.ownerDocument.body; 832 } 833 834 if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) { 835 return node; 836 } 837 838 return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node)); 839} 840 841/***/ }), 842
vendor: 2,240 bytes, lines 843-890
843/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js": 844/*!**********************************************************************!*\ 845 !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! 846 \**********************************************************************/ 847/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 848 849__webpack_require__.r(__webpack_exports__); 850/* harmony export */ __webpack_require__.d(__webpack_exports__, { 851/* harmony export */ "default": function() { return /* binding */ getViewportRect; } 852/* harmony export */ }); 853/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 854/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 855/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); 856/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); 857 858 859 860 861function getViewportRect(element, strategy) { 862 var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); 863 var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); 864 var visualViewport = win.visualViewport; 865 var width = html.clientWidth; 866 var height = html.clientHeight; 867 var x = 0; 868 var y = 0; 869 870 if (visualViewport) { 871 width = visualViewport.width; 872 height = visualViewport.height; 873 var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])(); 874 875 if (layoutViewport || !layoutViewport && strategy === 'fixed') { 876 x = visualViewport.offsetLeft; 877 y = visualViewport.offsetTop; 878 } 879 } 880 881 return { 882 width: width, 883 height: height, 884 x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element), 885 y: y 886 }; 887} 888 889/***/ }), 890
vendor: 848 bytes, lines 891-915
891/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js": 892/*!****************************************************************!*\ 893 !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! 894 \****************************************************************/ 895/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 896 897__webpack_require__.r(__webpack_exports__); 898/* harmony export */ __webpack_require__.d(__webpack_exports__, { 899/* harmony export */ "default": function() { return /* binding */ getWindow; } 900/* harmony export */ }); 901function getWindow(node) { 902 if (node == null) { 903 return window; 904 } 905 906 if (node.toString() !== '[object Window]') { 907 var ownerDocument = node.ownerDocument; 908 return ownerDocument ? ownerDocument.defaultView || window : window; 909 } 910 911 return node; 912} 913 914/***/ }), 915
vendor: 1,045 bytes, lines 916-939
916/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js": 917/*!**********************************************************************!*\ 918 !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! 919 \**********************************************************************/ 920/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 921 922__webpack_require__.r(__webpack_exports__); 923/* harmony export */ __webpack_require__.d(__webpack_exports__, { 924/* harmony export */ "default": function() { return /* binding */ getWindowScroll; } 925/* harmony export */ }); 926/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 927 928function getWindowScroll(node) { 929 var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); 930 var scrollLeft = win.pageXOffset; 931 var scrollTop = win.pageYOffset; 932 return { 933 scrollLeft: scrollLeft, 934 scrollTop: scrollTop 935 }; 936} 937 938/***/ }), 939
vendor: 1,919 bytes, lines 940-968
940/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js": 941/*!**************************************************************************!*\ 942 !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! 943 \**************************************************************************/ 944/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 945 946__webpack_require__.r(__webpack_exports__); 947/* harmony export */ __webpack_require__.d(__webpack_exports__, { 948/* harmony export */ "default": function() { return /* binding */ getWindowScrollBarX; } 949/* harmony export */ }); 950/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 951/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 952/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); 953 954 955 956function getWindowScrollBarX(element) { 957 // If <html> has a CSS width greater than the viewport, then this will be 958 // incorrect for RTL. 959 // Popper 1 is broken in this case and never had a bug report so let's assume 960 // it's not an issue. I don't think anyone ever specifies width on <html> 961 // anyway. 962 // Browsers where the left scrollbar doesn't cause an issue report `0` for 963 // this (e.g. Edge 2019, IE11, Safari) 964 return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft; 965} 966 967/***/ }), 968
vendor: 1,621 bytes, lines 969-1007
969/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js": 970/*!*****************************************************************!*\ 971 !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! 972 \*****************************************************************/ 973/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 974 975__webpack_require__.r(__webpack_exports__); 976/* harmony export */ __webpack_require__.d(__webpack_exports__, { 977/* harmony export */ isElement: function() { return /* binding */ isElement; }, 978/* harmony export */ isHTMLElement: function() { return /* binding */ isHTMLElement; }, 979/* harmony export */ isShadowRoot: function() { return /* binding */ isShadowRoot; } 980/* harmony export */ }); 981/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 982 983 984function isElement(node) { 985 var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element; 986 return node instanceof OwnElement || node instanceof Element; 987} 988 989function isHTMLElement(node) { 990 var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement; 991 return node instanceof OwnElement || node instanceof HTMLElement; 992} 993 994function isShadowRoot(node) { 995 // IE 11 has no ShadowRoot 996 if (typeof ShadowRoot === 'undefined') { 997 return false; 998 } 999 1000 var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot; 1001 return node instanceof OwnElement || node instanceof ShadowRoot; 1002} 1003 1004 1005 1006/***/ }), 1007
vendor: 955 bytes, lines 1008-1025
1008/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js": 1009/*!***********************************************************************!*\ 1010 !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***! 1011 \***********************************************************************/ 1012/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1013 1014__webpack_require__.r(__webpack_exports__); 1015/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1016/* harmony export */ "default": function() { return /* binding */ isLayoutViewport; } 1017/* harmony export */ }); 1018/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js"); 1019 1020function isLayoutViewport() { 1021 return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])()); 1022} 1023 1024/***/ }), 1025
vendor: 1,229 bytes, lines 1026-1049
1026/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js": 1027/*!*********************************************************************!*\ 1028 !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! 1029 \*********************************************************************/ 1030/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1031 1032__webpack_require__.r(__webpack_exports__); 1033/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1034/* harmony export */ "default": function() { return /* binding */ isScrollParent; } 1035/* harmony export */ }); 1036/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 1037 1038function isScrollParent(element) { 1039 // Firefox wants us to check `-x` and `-y` variations as well 1040 var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element), 1041 overflow = _getComputedStyle.overflow, 1042 overflowX = _getComputedStyle.overflowX, 1043 overflowY = _getComputedStyle.overflowY; 1044 1045 return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); 1046} 1047 1048/***/ }), 1049
vendor: 946 bytes, lines 1050-1067
1050/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js": 1051/*!*********************************************************************!*\ 1052 !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! 1053 \*********************************************************************/ 1054/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1055 1056__webpack_require__.r(__webpack_exports__); 1057/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1058/* harmony export */ "default": function() { return /* binding */ isTableElement; } 1059/* harmony export */ }); 1060/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 1061 1062function isTableElement(element) { 1063 return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0; 1064} 1065 1066/***/ }), 1067
vendor: 2,535 bytes, lines 1068-1110
1068/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js": 1069/*!************************************************************************!*\ 1070 !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! 1071 \************************************************************************/ 1072/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1073 1074__webpack_require__.r(__webpack_exports__); 1075/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1076/* harmony export */ "default": function() { return /* binding */ listScrollParents; } 1077/* harmony export */ }); 1078/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js"); 1079/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); 1080/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1081/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); 1082 1083 1084 1085 1086/* 1087given a DOM element, return the list of all scroll parents, up the list of ancesors 1088until we get to the top window object. This list is what we attach scroll listeners 1089to, because if any of these parent elements scroll, we'll need to re-calculate the 1090reference element's position. 1091*/ 1092 1093function listScrollParents(element, list) { 1094 var _element$ownerDocumen; 1095 1096 if (list === void 0) { 1097 list = []; 1098 } 1099 1100 var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); 1101 var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); 1102 var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent); 1103 var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent; 1104 var updatedList = list.concat(target); 1105 return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here 1106 updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target))); 1107} 1108 1109/***/ }), 1110
vendor: 3,549 bytes, lines 1111-1177
1111/***/ "./node_modules/@popperjs/core/lib/enums.js": 1112/*!**************************************************!*\ 1113 !*** ./node_modules/@popperjs/core/lib/enums.js ***! 1114 \**************************************************/ 1115/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1116 1117__webpack_require__.r(__webpack_exports__); 1118/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1119/* harmony export */ afterMain: function() { return /* binding */ afterMain; }, 1120/* harmony export */ afterRead: function() { return /* binding */ afterRead; }, 1121/* harmony export */ afterWrite: function() { return /* binding */ afterWrite; }, 1122/* harmony export */ auto: function() { return /* binding */ auto; }, 1123/* harmony export */ basePlacements: function() { return /* binding */ basePlacements; }, 1124/* harmony export */ beforeMain: function() { return /* binding */ beforeMain; }, 1125/* harmony export */ beforeRead: function() { return /* binding */ beforeRead; }, 1126/* harmony export */ beforeWrite: function() { return /* binding */ beforeWrite; }, 1127/* harmony export */ bottom: function() { return /* binding */ bottom; }, 1128/* harmony export */ clippingParents: function() { return /* binding */ clippingParents; }, 1129/* harmony export */ end: function() { return /* binding */ end; }, 1130/* harmony export */ left: function() { return /* binding */ left; }, 1131/* harmony export */ main: function() { return /* binding */ main; }, 1132/* harmony export */ modifierPhases: function() { return /* binding */ modifierPhases; }, 1133/* harmony export */ placements: function() { return /* binding */ placements; }, 1134/* harmony export */ popper: function() { return /* binding */ popper; }, 1135/* harmony export */ read: function() { return /* binding */ read; }, 1136/* harmony export */ reference: function() { return /* binding */ reference; }, 1137/* harmony export */ right: function() { return /* binding */ right; }, 1138/* harmony export */ start: function() { return /* binding */ start; }, 1139/* harmony export */ top: function() { return /* binding */ top; }, 1140/* harmony export */ variationPlacements: function() { return /* binding */ variationPlacements; }, 1141/* harmony export */ viewport: function() { return /* binding */ viewport; }, 1142/* harmony export */ write: function() { return /* binding */ write; } 1143/* harmony export */ }); 1144var top = 'top'; 1145var bottom = 'bottom'; 1146var right = 'right'; 1147var left = 'left'; 1148var auto = 'auto'; 1149var basePlacements = [top, bottom, right, left]; 1150var start = 'start'; 1151var end = 'end'; 1152var clippingParents = 'clippingParents'; 1153var viewport = 'viewport'; 1154var popper = 'popper'; 1155var reference = 'reference'; 1156var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { 1157 return acc.concat([placement + "-" + start, placement + "-" + end]); 1158}, []); 1159var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { 1160 return acc.concat([placement, placement + "-" + start, placement + "-" + end]); 1161}, []); // modifiers that need to read the DOM 1162 1163var beforeRead = 'beforeRead'; 1164var read = 'read'; 1165var afterRead = 'afterRead'; // pure-logic modifiers 1166 1167var beforeMain = 'beforeMain'; 1168var main = 'main'; 1169var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) 1170 1171var beforeWrite = 'beforeWrite'; 1172var write = 'write'; 1173var afterWrite = 'afterWrite'; 1174var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; 1175 1176/***/ }), 1177
vendor: 6,583 bytes, lines 1178-1241
1178/***/ "./node_modules/@popperjs/core/lib/index.js": 1179/*!**************************************************!*\ 1180 !*** ./node_modules/@popperjs/core/lib/index.js ***! 1181 \**************************************************/ 1182/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1183 1184__webpack_require__.r(__webpack_exports__); 1185/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1186/* harmony export */ afterMain: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain; }, 1187/* harmony export */ afterRead: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead; }, 1188/* harmony export */ afterWrite: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite; }, 1189/* harmony export */ applyStyles: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles; }, 1190/* harmony export */ arrow: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow; }, 1191/* harmony export */ auto: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto; }, 1192/* harmony export */ basePlacements: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements; }, 1193/* harmony export */ beforeMain: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain; }, 1194/* harmony export */ beforeRead: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead; }, 1195/* harmony export */ beforeWrite: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite; }, 1196/* harmony export */ bottom: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom; }, 1197/* harmony export */ clippingParents: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents; }, 1198/* harmony export */ computeStyles: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles; }, 1199/* harmony export */ createPopper: function() { return /* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper; }, 1200/* harmony export */ createPopperBase: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper; }, 1201/* harmony export */ createPopperLite: function() { return /* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper; }, 1202/* harmony export */ detectOverflow: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }, 1203/* harmony export */ end: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end; }, 1204/* harmony export */ eventListeners: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners; }, 1205/* harmony export */ flip: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip; }, 1206/* harmony export */ hide: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide; }, 1207/* harmony export */ left: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left; }, 1208/* harmony export */ main: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main; }, 1209/* harmony export */ modifierPhases: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases; }, 1210/* harmony export */ offset: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset; }, 1211/* harmony export */ placements: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements; }, 1212/* harmony export */ popper: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper; }, 1213/* harmony export */ popperGenerator: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator; }, 1214/* harmony export */ popperOffsets: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets; }, 1215/* harmony export */ preventOverflow: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow; }, 1216/* harmony export */ read: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read; }, 1217/* harmony export */ reference: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference; }, 1218/* harmony export */ right: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right; }, 1219/* harmony export */ start: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start; }, 1220/* harmony export */ top: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top; }, 1221/* harmony export */ variationPlacements: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements; }, 1222/* harmony export */ viewport: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport; }, 1223/* harmony export */ write: function() { return /* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write; } 1224/* harmony export */ }); 1225/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1226/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); 1227/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); 1228/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 1229/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js"); 1230/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); 1231 1232 // eslint-disable-next-line import/no-unused-modules 1233 1234 // eslint-disable-next-line import/no-unused-modules 1235 1236 // eslint-disable-next-line import/no-unused-modules 1237 1238 1239 1240/***/ }), 1241
vendor: 3,518 bytes, lines 1242-1337
1242/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js": 1243/*!******************************************************************!*\ 1244 !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! 1245 \******************************************************************/ 1246/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1247 1248__webpack_require__.r(__webpack_exports__); 1249/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); 1250/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 1251 1252 // This modifier takes the styles prepared by the `computeStyles` modifier 1253// and applies them to the HTMLElements such as popper and arrow 1254 1255function applyStyles(_ref) { 1256 var state = _ref.state; 1257 Object.keys(state.elements).forEach(function (name) { 1258 var style = state.styles[name] || {}; 1259 var attributes = state.attributes[name] || {}; 1260 var element = state.elements[name]; // arrow is optional + virtual elements 1261 1262 if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { 1263 return; 1264 } // Flow doesn't support to extend this property, but it's the most 1265 // effective way to apply styles to an HTMLElement 1266 // $FlowFixMe[cannot-write] 1267 1268 1269 Object.assign(element.style, style); 1270 Object.keys(attributes).forEach(function (name) { 1271 var value = attributes[name]; 1272 1273 if (value === false) { 1274 element.removeAttribute(name); 1275 } else { 1276 element.setAttribute(name, value === true ? '' : value); 1277 } 1278 }); 1279 }); 1280} 1281 1282function effect(_ref2) { 1283 var state = _ref2.state; 1284 var initialStyles = { 1285 popper: { 1286 position: state.options.strategy, 1287 left: '0', 1288 top: '0', 1289 margin: '0' 1290 }, 1291 arrow: { 1292 position: 'absolute' 1293 }, 1294 reference: {} 1295 }; 1296 Object.assign(state.elements.popper.style, initialStyles.popper); 1297 state.styles = initialStyles; 1298 1299 if (state.elements.arrow) { 1300 Object.assign(state.elements.arrow.style, initialStyles.arrow); 1301 } 1302 1303 return function () { 1304 Object.keys(state.elements).forEach(function (name) { 1305 var element = state.elements[name]; 1306 var attributes = state.attributes[name] || {}; 1307 var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them 1308 1309 var style = styleProperties.reduce(function (style, property) { 1310 style[property] = ''; 1311 return style; 1312 }, {}); // arrow is optional + virtual elements 1313 1314 if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { 1315 return; 1316 } 1317 1318 Object.assign(element.style, style); 1319 Object.keys(attributes).forEach(function (attribute) { 1320 element.removeAttribute(attribute); 1321 }); 1322 }); 1323 }; 1324} // eslint-disable-next-line import/no-unused-modules 1325 1326 1327/* harmony default export */ __webpack_exports__["default"] = ({ 1328 name: 'applyStyles', 1329 enabled: true, 1330 phase: 'write', 1331 fn: applyStyles, 1332 effect: effect, 1333 requires: ['computeStyles'] 1334}); 1335 1336/***/ }), 1337
vendor: 5,819 bytes, lines 1338-1446
1338/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js": 1339/*!************************************************************!*\ 1340 !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***! 1341 \************************************************************/ 1342/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1343 1344__webpack_require__.r(__webpack_exports__); 1345/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1346/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); 1347/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); 1348/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 1349/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); 1350/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); 1351/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); 1352/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); 1353/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1354 1355 1356 1357 1358 1359 1360 1361 1362 // eslint-disable-next-line import/no-unused-modules 1363 1364var toPaddingObject = function toPaddingObject(padding, state) { 1365 padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { 1366 placement: state.placement 1367 })) : padding; 1368 return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements)); 1369}; 1370 1371function arrow(_ref) { 1372 var _state$modifiersData$; 1373 1374 var state = _ref.state, 1375 name = _ref.name, 1376 options = _ref.options; 1377 var arrowElement = state.elements.arrow; 1378 var popperOffsets = state.modifiersData.popperOffsets; 1379 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement); 1380 var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement); 1381 var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0; 1382 var len = isVertical ? 'height' : 'width'; 1383 1384 if (!arrowElement || !popperOffsets) { 1385 return; 1386 } 1387 1388 var paddingObject = toPaddingObject(options.padding, state); 1389 var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement); 1390 var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left; 1391 var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right; 1392 var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; 1393 var startDiff = popperOffsets[axis] - state.rects.reference[axis]; 1394 var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement); 1395 var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; 1396 var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is 1397 // outside of the popper bounds 1398 1399 var min = paddingObject[minProp]; 1400 var max = clientSize - arrowRect[len] - paddingObject[maxProp]; 1401 var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; 1402 var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting... 1403 1404 var axisProp = axis; 1405 state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); 1406} 1407 1408function effect(_ref2) { 1409 var state = _ref2.state, 1410 options = _ref2.options; 1411 var _options$element = options.element, 1412 arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; 1413 1414 if (arrowElement == null) { 1415 return; 1416 } // CSS selector 1417 1418 1419 if (typeof arrowElement === 'string') { 1420 arrowElement = state.elements.popper.querySelector(arrowElement); 1421 1422 if (!arrowElement) { 1423 return; 1424 } 1425 } 1426 1427 if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.elements.popper, arrowElement)) { 1428 return; 1429 } 1430 1431 state.elements.arrow = arrowElement; 1432} // eslint-disable-next-line import/no-unused-modules 1433 1434 1435/* harmony default export */ __webpack_exports__["default"] = ({ 1436 name: 'arrow', 1437 enabled: true, 1438 phase: 'main', 1439 fn: arrow, 1440 effect: effect, 1441 requires: ['popperOffsets'], 1442 requiresIfExists: ['preventOverflow'] 1443}); 1444 1445/***/ }), 1446
vendor: 8,423 bytes, lines 1447-1636
1447/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js": 1448/*!********************************************************************!*\ 1449 !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! 1450 \********************************************************************/ 1451/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1452 1453__webpack_require__.r(__webpack_exports__); 1454/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1455/* harmony export */ mapToStyles: function() { return /* binding */ mapToStyles; } 1456/* harmony export */ }); 1457/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1458/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 1459/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1460/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 1461/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); 1462/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1463/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 1464/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 1465 1466 1467 1468 1469 1470 1471 1472 // eslint-disable-next-line import/no-unused-modules 1473 1474var unsetSides = { 1475 top: 'auto', 1476 right: 'auto', 1477 bottom: 'auto', 1478 left: 'auto' 1479}; // Round the offsets to the nearest suitable subpixel based on the DPR. 1480// Zooming can change the DPR, but it seems to report a value that will 1481// cleanly divide the values into the appropriate subpixels. 1482 1483function roundOffsetsByDPR(_ref, win) { 1484 var x = _ref.x, 1485 y = _ref.y; 1486 var dpr = win.devicePixelRatio || 1; 1487 return { 1488 x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0, 1489 y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0 1490 }; 1491} 1492 1493function mapToStyles(_ref2) { 1494 var _Object$assign2; 1495 1496 var popper = _ref2.popper, 1497 popperRect = _ref2.popperRect, 1498 placement = _ref2.placement, 1499 variation = _ref2.variation, 1500 offsets = _ref2.offsets, 1501 position = _ref2.position, 1502 gpuAcceleration = _ref2.gpuAcceleration, 1503 adaptive = _ref2.adaptive, 1504 roundOffsets = _ref2.roundOffsets, 1505 isFixed = _ref2.isFixed; 1506 var _offsets$x = offsets.x, 1507 x = _offsets$x === void 0 ? 0 : _offsets$x, 1508 _offsets$y = offsets.y, 1509 y = _offsets$y === void 0 ? 0 : _offsets$y; 1510 1511 var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ 1512 x: x, 1513 y: y 1514 }) : { 1515 x: x, 1516 y: y 1517 }; 1518 1519 x = _ref3.x; 1520 y = _ref3.y; 1521 var hasX = offsets.hasOwnProperty('x'); 1522 var hasY = offsets.hasOwnProperty('y'); 1523 var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left; 1524 var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; 1525 var win = window; 1526 1527 if (adaptive) { 1528 var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper); 1529 var heightProp = 'clientHeight'; 1530 var widthProp = 'clientWidth'; 1531 1532 if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) { 1533 offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper); 1534 1535 if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent).position !== 'static' && position === 'absolute') { 1536 heightProp = 'scrollHeight'; 1537 widthProp = 'scrollWidth'; 1538 } 1539 } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it 1540 1541 1542 offsetParent = offsetParent; 1543 1544 if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { 1545 sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom; 1546 var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] 1547 offsetParent[heightProp]; 1548 y -= offsetY - popperRect.height; 1549 y *= gpuAcceleration ? 1 : -1; 1550 } 1551 1552 if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { 1553 sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right; 1554 var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] 1555 offsetParent[widthProp]; 1556 x -= offsetX - popperRect.width; 1557 x *= gpuAcceleration ? 1 : -1; 1558 } 1559 } 1560 1561 var commonStyles = Object.assign({ 1562 position: position 1563 }, adaptive && unsetSides); 1564 1565 var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ 1566 x: x, 1567 y: y 1568 }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) : { 1569 x: x, 1570 y: y 1571 }; 1572 1573 x = _ref4.x; 1574 y = _ref4.y; 1575 1576 if (gpuAcceleration) { 1577 var _Object$assign; 1578 1579 return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); 1580 } 1581 1582 return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); 1583} 1584 1585function computeStyles(_ref5) { 1586 var state = _ref5.state, 1587 options = _ref5.options; 1588 var _options$gpuAccelerat = options.gpuAcceleration, 1589 gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, 1590 _options$adaptive = options.adaptive, 1591 adaptive = _options$adaptive === void 0 ? true : _options$adaptive, 1592 _options$roundOffsets = options.roundOffsets, 1593 roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; 1594 var commonStyles = { 1595 placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement), 1596 variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state.placement), 1597 popper: state.elements.popper, 1598 popperRect: state.rects.popper, 1599 gpuAcceleration: gpuAcceleration, 1600 isFixed: state.options.strategy === 'fixed' 1601 }; 1602 1603 if (state.modifiersData.popperOffsets != null) { 1604 state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { 1605 offsets: state.modifiersData.popperOffsets, 1606 position: state.options.strategy, 1607 adaptive: adaptive, 1608 roundOffsets: roundOffsets 1609 }))); 1610 } 1611 1612 if (state.modifiersData.arrow != null) { 1613 state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { 1614 offsets: state.modifiersData.arrow, 1615 position: 'absolute', 1616 adaptive: false, 1617 roundOffsets: roundOffsets 1618 }))); 1619 } 1620 1621 state.attributes.popper = Object.assign({}, state.attributes.popper, { 1622 'data-popper-placement': state.placement 1623 }); 1624} // eslint-disable-next-line import/no-unused-modules 1625 1626 1627/* harmony default export */ __webpack_exports__["default"] = ({ 1628 name: 'computeStyles', 1629 enabled: true, 1630 phase: 'beforeWrite', 1631 fn: computeStyles, 1632 data: {} 1633}); 1634 1635/***/ }), 1636
vendor: 2,019 bytes, lines 1637-1696
1637/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js": 1638/*!*********************************************************************!*\ 1639 !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! 1640 \*********************************************************************/ 1641/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1642 1643__webpack_require__.r(__webpack_exports__); 1644/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); 1645 // eslint-disable-next-line import/no-unused-modules 1646 1647var passive = { 1648 passive: true 1649}; 1650 1651function effect(_ref) { 1652 var state = _ref.state, 1653 instance = _ref.instance, 1654 options = _ref.options; 1655 var _options$scroll = options.scroll, 1656 scroll = _options$scroll === void 0 ? true : _options$scroll, 1657 _options$resize = options.resize, 1658 resize = _options$resize === void 0 ? true : _options$resize; 1659 var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper); 1660 var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); 1661 1662 if (scroll) { 1663 scrollParents.forEach(function (scrollParent) { 1664 scrollParent.addEventListener('scroll', instance.update, passive); 1665 }); 1666 } 1667 1668 if (resize) { 1669 window.addEventListener('resize', instance.update, passive); 1670 } 1671 1672 return function () { 1673 if (scroll) { 1674 scrollParents.forEach(function (scrollParent) { 1675 scrollParent.removeEventListener('scroll', instance.update, passive); 1676 }); 1677 } 1678 1679 if (resize) { 1680 window.removeEventListener('resize', instance.update, passive); 1681 } 1682 }; 1683} // eslint-disable-next-line import/no-unused-modules 1684 1685 1686/* harmony default export */ __webpack_exports__["default"] = ({ 1687 name: 'eventListeners', 1688 enabled: true, 1689 phase: 'write', 1690 fn: function fn() {}, 1691 effect: effect, 1692 data: {} 1693}); 1694 1695/***/ }), 1696
vendor: 7,367 bytes, lines 1697-1860
1697/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js": 1698/*!***********************************************************!*\ 1699 !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***! 1700 \***********************************************************/ 1701/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1702 1703__webpack_require__.r(__webpack_exports__); 1704/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js"); 1705/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1706/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js"); 1707/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 1708/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js"); 1709/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1710/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 1711 1712 1713 1714 1715 1716 1717 // eslint-disable-next-line import/no-unused-modules 1718 1719function getExpandedFallbackPlacements(placement) { 1720 if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) { 1721 return []; 1722 } 1723 1724 var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement); 1725 return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)]; 1726} 1727 1728function flip(_ref) { 1729 var state = _ref.state, 1730 options = _ref.options, 1731 name = _ref.name; 1732 1733 if (state.modifiersData[name]._skip) { 1734 return; 1735 } 1736 1737 var _options$mainAxis = options.mainAxis, 1738 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, 1739 _options$altAxis = options.altAxis, 1740 checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, 1741 specifiedFallbackPlacements = options.fallbackPlacements, 1742 padding = options.padding, 1743 boundary = options.boundary, 1744 rootBoundary = options.rootBoundary, 1745 altBoundary = options.altBoundary, 1746 _options$flipVariatio = options.flipVariations, 1747 flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, 1748 allowedAutoPlacements = options.allowedAutoPlacements; 1749 var preferredPlacement = state.options.placement; 1750 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement); 1751 var isBasePlacement = basePlacement === preferredPlacement; 1752 var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); 1753 var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { 1754 return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, { 1755 placement: placement, 1756 boundary: boundary, 1757 rootBoundary: rootBoundary, 1758 padding: padding, 1759 flipVariations: flipVariations, 1760 allowedAutoPlacements: allowedAutoPlacements 1761 }) : placement); 1762 }, []); 1763 var referenceRect = state.rects.reference; 1764 var popperRect = state.rects.popper; 1765 var checksMap = new Map(); 1766 var makeFallbackChecks = true; 1767 var firstFittingPlacement = placements[0]; 1768 1769 for (var i = 0; i < placements.length; i++) { 1770 var placement = placements[i]; 1771 1772 var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); 1773 1774 var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start; 1775 var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0; 1776 var len = isVertical ? 'width' : 'height'; 1777 var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, { 1778 placement: placement, 1779 boundary: boundary, 1780 rootBoundary: rootBoundary, 1781 altBoundary: altBoundary, 1782 padding: padding 1783 }); 1784 var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; 1785 1786 if (referenceRect[len] > popperRect[len]) { 1787 mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); 1788 } 1789 1790 var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); 1791 var checks = []; 1792 1793 if (checkMainAxis) { 1794 checks.push(overflow[_basePlacement] <= 0); 1795 } 1796 1797 if (checkAltAxis) { 1798 checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); 1799 } 1800 1801 if (checks.every(function (check) { 1802 return check; 1803 })) { 1804 firstFittingPlacement = placement; 1805 makeFallbackChecks = false; 1806 break; 1807 } 1808 1809 checksMap.set(placement, checks); 1810 } 1811 1812 if (makeFallbackChecks) { 1813 // `2` may be desired in some cases â research later 1814 var numberOfChecks = flipVariations ? 3 : 1; 1815 1816 var _loop = function _loop(_i) { 1817 var fittingPlacement = placements.find(function (placement) { 1818 var checks = checksMap.get(placement); 1819 1820 if (checks) { 1821 return checks.slice(0, _i).every(function (check) { 1822 return check; 1823 }); 1824 } 1825 }); 1826 1827 if (fittingPlacement) { 1828 firstFittingPlacement = fittingPlacement; 1829 return "break"; 1830 } 1831 }; 1832 1833 for (var _i = numberOfChecks; _i > 0; _i--) { 1834 var _ret = _loop(_i); 1835 1836 if (_ret === "break") break; 1837 } 1838 } 1839 1840 if (state.placement !== firstFittingPlacement) { 1841 state.modifiersData[name]._skip = true; 1842 state.placement = firstFittingPlacement; 1843 state.reset = true; 1844 } 1845} // eslint-disable-next-line import/no-unused-modules 1846 1847 1848/* harmony default export */ __webpack_exports__["default"] = ({ 1849 name: 'flip', 1850 enabled: true, 1851 phase: 'main', 1852 fn: flip, 1853 requiresIfExists: ['offset'], 1854 data: { 1855 _skip: false 1856 } 1857}); 1858 1859/***/ }), 1860
vendor: 2,903 bytes, lines 1861-1933
1861/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js": 1862/*!***********************************************************!*\ 1863 !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***! 1864 \***********************************************************/ 1865/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1866 1867__webpack_require__.r(__webpack_exports__); 1868/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1869/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 1870 1871 1872 1873function getSideOffsets(overflow, rect, preventedOffsets) { 1874 if (preventedOffsets === void 0) { 1875 preventedOffsets = { 1876 x: 0, 1877 y: 0 1878 }; 1879 } 1880 1881 return { 1882 top: overflow.top - rect.height - preventedOffsets.y, 1883 right: overflow.right - rect.width + preventedOffsets.x, 1884 bottom: overflow.bottom - rect.height + preventedOffsets.y, 1885 left: overflow.left - rect.width - preventedOffsets.x 1886 }; 1887} 1888 1889function isAnySideFullyClipped(overflow) { 1890 return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) { 1891 return overflow[side] >= 0; 1892 }); 1893} 1894 1895function hide(_ref) { 1896 var state = _ref.state, 1897 name = _ref.name; 1898 var referenceRect = state.rects.reference; 1899 var popperRect = state.rects.popper; 1900 var preventedOffsets = state.modifiersData.preventOverflow; 1901 var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { 1902 elementContext: 'reference' 1903 }); 1904 var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { 1905 altBoundary: true 1906 }); 1907 var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); 1908 var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); 1909 var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); 1910 var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); 1911 state.modifiersData[name] = { 1912 referenceClippingOffsets: referenceClippingOffsets, 1913 popperEscapeOffsets: popperEscapeOffsets, 1914 isReferenceHidden: isReferenceHidden, 1915 hasPopperEscaped: hasPopperEscaped 1916 }; 1917 state.attributes.popper = Object.assign({}, state.attributes.popper, { 1918 'data-popper-reference-hidden': isReferenceHidden, 1919 'data-popper-escaped': hasPopperEscaped 1920 }); 1921} // eslint-disable-next-line import/no-unused-modules 1922 1923 1924/* harmony default export */ __webpack_exports__["default"] = ({ 1925 name: 'hide', 1926 enabled: true, 1927 phase: 'main', 1928 requiresIfExists: ['preventOverflow'], 1929 fn: hide 1930}); 1931 1932/***/ }), 1933
vendor: 3,265 bytes, lines 1934-1972
1934/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js": 1935/*!************************************************************!*\ 1936 !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***! 1937 \************************************************************/ 1938/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1939 1940__webpack_require__.r(__webpack_exports__); 1941/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1942/* harmony export */ applyStyles: function() { return /* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }, 1943/* harmony export */ arrow: function() { return /* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }, 1944/* harmony export */ computeStyles: function() { return /* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]; }, 1945/* harmony export */ eventListeners: function() { return /* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }, 1946/* harmony export */ flip: function() { return /* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }, 1947/* harmony export */ hide: function() { return /* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }, 1948/* harmony export */ offset: function() { return /* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }, 1949/* harmony export */ popperOffsets: function() { return /* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }, 1950/* harmony export */ preventOverflow: function() { return /* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]; } 1951/* harmony export */ }); 1952/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); 1953/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); 1954/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); 1955/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); 1956/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); 1957/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); 1958/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); 1959/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); 1960/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971/***/ }), 1972
vendor: 2,746 bytes, lines 1973-2041
1973/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js": 1974/*!*************************************************************!*\ 1975 !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***! 1976 \*************************************************************/ 1977/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1978 1979__webpack_require__.r(__webpack_exports__); 1980/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1981/* harmony export */ distanceAndSkiddingToXY: function() { return /* binding */ distanceAndSkiddingToXY; } 1982/* harmony export */ }); 1983/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 1984/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 1985 1986 // eslint-disable-next-line import/no-unused-modules 1987 1988function distanceAndSkiddingToXY(placement, rects, offset) { 1989 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); 1990 var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1; 1991 1992 var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { 1993 placement: placement 1994 })) : offset, 1995 skidding = _ref[0], 1996 distance = _ref[1]; 1997 1998 skidding = skidding || 0; 1999 distance = (distance || 0) * invertDistance; 2000 return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? { 2001 x: distance, 2002 y: skidding 2003 } : { 2004 x: skidding, 2005 y: distance 2006 }; 2007} 2008 2009function offset(_ref2) { 2010 var state = _ref2.state, 2011 options = _ref2.options, 2012 name = _ref2.name; 2013 var _options$offset = options.offset, 2014 offset = _options$offset === void 0 ? [0, 0] : _options$offset; 2015 var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) { 2016 acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); 2017 return acc; 2018 }, {}); 2019 var _data$state$placement = data[state.placement], 2020 x = _data$state$placement.x, 2021 y = _data$state$placement.y; 2022 2023 if (state.modifiersData.popperOffsets != null) { 2024 state.modifiersData.popperOffsets.x += x; 2025 state.modifiersData.popperOffsets.y += y; 2026 } 2027 2028 state.modifiersData[name] = data; 2029} // eslint-disable-next-line import/no-unused-modules 2030 2031 2032/* harmony default export */ __webpack_exports__["default"] = ({ 2033 name: 'offset', 2034 enabled: true, 2035 phase: 'main', 2036 requires: ['popperOffsets'], 2037 fn: offset 2038}); 2039 2040/***/ }), 2041
vendor: 1,384 bytes, lines 2042-2077
2042/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js": 2043/*!********************************************************************!*\ 2044 !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! 2045 \********************************************************************/ 2046/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2047 2048__webpack_require__.r(__webpack_exports__); 2049/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); 2050 2051 2052function popperOffsets(_ref) { 2053 var state = _ref.state, 2054 name = _ref.name; 2055 // Offsets are the actual position the popper needs to have to be 2056 // properly positioned near its reference element 2057 // This is the most basic placement, and will be adjusted by 2058 // the modifiers in the next step 2059 state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ 2060 reference: state.rects.reference, 2061 element: state.rects.popper, 2062 strategy: 'absolute', 2063 placement: state.placement 2064 }); 2065} // eslint-disable-next-line import/no-unused-modules 2066 2067 2068/* harmony default export */ __webpack_exports__["default"] = ({ 2069 name: 'popperOffsets', 2070 enabled: true, 2071 phase: 'read', 2072 fn: popperOffsets, 2073 data: {} 2074}); 2075 2076/***/ }), 2077
vendor: 9,733 bytes, lines 2078-2240
2078/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js": 2079/*!**********************************************************************!*\ 2080 !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! 2081 \**********************************************************************/ 2082/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2083 2084__webpack_require__.r(__webpack_exports__); 2085/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2086/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2087/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); 2088/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js"); 2089/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); 2090/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); 2091/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); 2092/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2093/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 2094/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); 2095/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108function preventOverflow(_ref) { 2109 var state = _ref.state, 2110 options = _ref.options, 2111 name = _ref.name; 2112 var _options$mainAxis = options.mainAxis, 2113 checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, 2114 _options$altAxis = options.altAxis, 2115 checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, 2116 boundary = options.boundary, 2117 rootBoundary = options.rootBoundary, 2118 altBoundary = options.altBoundary, 2119 padding = options.padding, 2120 _options$tether = options.tether, 2121 tether = _options$tether === void 0 ? true : _options$tether, 2122 _options$tetherOffset = options.tetherOffset, 2123 tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; 2124 var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, { 2125 boundary: boundary, 2126 rootBoundary: rootBoundary, 2127 padding: padding, 2128 altBoundary: altBoundary 2129 }); 2130 var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement); 2131 var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement); 2132 var isBasePlacement = !variation; 2133 var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement); 2134 var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis); 2135 var popperOffsets = state.modifiersData.popperOffsets; 2136 var referenceRect = state.rects.reference; 2137 var popperRect = state.rects.popper; 2138 var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { 2139 placement: state.placement 2140 })) : tetherOffset; 2141 var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { 2142 mainAxis: tetherOffsetValue, 2143 altAxis: tetherOffsetValue 2144 } : Object.assign({ 2145 mainAxis: 0, 2146 altAxis: 0 2147 }, tetherOffsetValue); 2148 var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; 2149 var data = { 2150 x: 0, 2151 y: 0 2152 }; 2153 2154 if (!popperOffsets) { 2155 return; 2156 } 2157 2158 if (checkMainAxis) { 2159 var _offsetModifierState$; 2160 2161 var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; 2162 var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; 2163 var len = mainAxis === 'y' ? 'height' : 'width'; 2164 var offset = popperOffsets[mainAxis]; 2165 var min = offset + overflow[mainSide]; 2166 var max = offset - overflow[altSide]; 2167 var additive = tether ? -popperRect[len] / 2 : 0; 2168 var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len]; 2169 var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go 2170 // outside the reference bounds 2171 2172 var arrowElement = state.elements.arrow; 2173 var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : { 2174 width: 0, 2175 height: 0 2176 }; 2177 var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])(); 2178 var arrowPaddingMin = arrowPaddingObject[mainSide]; 2179 var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want 2180 // to include its full size in the calculation. If the reference is small 2181 // and near the edge of a boundary, the popper can overflow even if the 2182 // reference is not overflowing as well (e.g. virtual elements with no 2183 // width or height) 2184 2185 var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]); 2186 var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; 2187 var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; 2188 var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow); 2189 var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; 2190 var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; 2191 var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; 2192 var tetherMax = offset + maxOffset - offsetModifierValue; 2193 var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max); 2194 popperOffsets[mainAxis] = preventedOffset; 2195 data[mainAxis] = preventedOffset - offset; 2196 } 2197 2198 if (checkAltAxis) { 2199 var _offsetModifierState$2; 2200 2201 var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; 2202 2203 var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; 2204 2205 var _offset = popperOffsets[altAxis]; 2206 2207 var _len = altAxis === 'y' ? 'height' : 'width'; 2208 2209 var _min = _offset + overflow[_mainSide]; 2210 2211 var _max = _offset - overflow[_altSide]; 2212 2213 var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1; 2214 2215 var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; 2216 2217 var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; 2218 2219 var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; 2220 2221 var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); 2222 2223 popperOffsets[altAxis] = _preventedOffset; 2224 data[altAxis] = _preventedOffset - _offset; 2225 } 2226 2227 state.modifiersData[name] = data; 2228} // eslint-disable-next-line import/no-unused-modules 2229 2230 2231/* harmony default export */ __webpack_exports__["default"] = ({ 2232 name: 'preventOverflow', 2233 enabled: true, 2234 phase: 'main', 2235 fn: preventOverflow, 2236 requiresIfExists: ['offset'] 2237}); 2238 2239/***/ }), 2240
vendor: 2,615 bytes, lines 2241-2273
2241/***/ "./node_modules/@popperjs/core/lib/popper-lite.js": 2242/*!********************************************************!*\ 2243 !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***! 2244 \********************************************************/ 2245/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2246 2247__webpack_require__.r(__webpack_exports__); 2248/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2249/* harmony export */ createPopper: function() { return /* binding */ createPopper; }, 2250/* harmony export */ defaultModifiers: function() { return /* binding */ defaultModifiers; }, 2251/* harmony export */ detectOverflow: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }, 2252/* harmony export */ popperGenerator: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator; } 2253/* harmony export */ }); 2254/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); 2255/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2256/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); 2257/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); 2258/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); 2259/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); 2260 2261 2262 2263 2264 2265var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]]; 2266var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({ 2267 defaultModifiers: defaultModifiers 2268}); // eslint-disable-next-line import/no-unused-modules 2269 2270 2271 2272/***/ }), 2273
vendor: 5,704 bytes, lines 2274-2332
2274/***/ "./node_modules/@popperjs/core/lib/popper.js": 2275/*!***************************************************!*\ 2276 !*** ./node_modules/@popperjs/core/lib/popper.js ***! 2277 \***************************************************/ 2278/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2279 2280__webpack_require__.r(__webpack_exports__); 2281/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2282/* harmony export */ applyStyles: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles; }, 2283/* harmony export */ arrow: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow; }, 2284/* harmony export */ computeStyles: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles; }, 2285/* harmony export */ createPopper: function() { return /* binding */ createPopper; }, 2286/* harmony export */ createPopperLite: function() { return /* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper; }, 2287/* harmony export */ defaultModifiers: function() { return /* binding */ defaultModifiers; }, 2288/* harmony export */ detectOverflow: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }, 2289/* harmony export */ eventListeners: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners; }, 2290/* harmony export */ flip: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip; }, 2291/* harmony export */ hide: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide; }, 2292/* harmony export */ offset: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset; }, 2293/* harmony export */ popperGenerator: function() { return /* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator; }, 2294/* harmony export */ popperOffsets: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets; }, 2295/* harmony export */ preventOverflow: function() { return /* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow; } 2296/* harmony export */ }); 2297/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); 2298/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2299/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); 2300/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); 2301/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); 2302/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); 2303/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); 2304/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); 2305/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); 2306/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); 2307/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); 2308/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); 2309/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]]; 2321var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({ 2322 defaultModifiers: defaultModifiers 2323}); // eslint-disable-next-line import/no-unused-modules 2324 2325 // eslint-disable-next-line import/no-unused-modules 2326 2327 // eslint-disable-next-line import/no-unused-modules 2328 2329 2330 2331/***/ }), 2332
vendor: 3,102 bytes, lines 2333-2392
2333/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js": 2334/*!***********************************************************************!*\ 2335 !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! 2336 \***********************************************************************/ 2337/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2338 2339__webpack_require__.r(__webpack_exports__); 2340/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2341/* harmony export */ "default": function() { return /* binding */ computeAutoPlacement; } 2342/* harmony export */ }); 2343/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 2344/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2345/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); 2346/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2347 2348 2349 2350 2351function computeAutoPlacement(state, options) { 2352 if (options === void 0) { 2353 options = {}; 2354 } 2355 2356 var _options = options, 2357 placement = _options.placement, 2358 boundary = _options.boundary, 2359 rootBoundary = _options.rootBoundary, 2360 padding = _options.padding, 2361 flipVariations = _options.flipVariations, 2362 _options$allowedAutoP = _options.allowedAutoPlacements, 2363 allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP; 2364 var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement); 2365 var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) { 2366 return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation; 2367 }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements; 2368 var allowedPlacements = placements.filter(function (placement) { 2369 return allowedAutoPlacements.indexOf(placement) >= 0; 2370 }); 2371 2372 if (allowedPlacements.length === 0) { 2373 allowedPlacements = placements; 2374 } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... 2375 2376 2377 var overflows = allowedPlacements.reduce(function (acc, placement) { 2378 acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, { 2379 placement: placement, 2380 boundary: boundary, 2381 rootBoundary: rootBoundary, 2382 padding: padding 2383 })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)]; 2384 return acc; 2385 }, {}); 2386 return Object.keys(overflows).sort(function (a, b) { 2387 return overflows[a] - overflows[b]; 2388 }); 2389} 2390 2391/***/ }), 2392
vendor: 3,200 bytes, lines 2393-2479
2393/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js": 2394/*!*****************************************************************!*\ 2395 !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! 2396 \*****************************************************************/ 2397/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2398 2399__webpack_require__.r(__webpack_exports__); 2400/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2401/* harmony export */ "default": function() { return /* binding */ computeOffsets; } 2402/* harmony export */ }); 2403/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); 2404/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); 2405/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); 2406/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2407 2408 2409 2410 2411function computeOffsets(_ref) { 2412 var reference = _ref.reference, 2413 element = _ref.element, 2414 placement = _ref.placement; 2415 var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null; 2416 var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null; 2417 var commonX = reference.x + reference.width / 2 - element.width / 2; 2418 var commonY = reference.y + reference.height / 2 - element.height / 2; 2419 var offsets; 2420 2421 switch (basePlacement) { 2422 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top: 2423 offsets = { 2424 x: commonX, 2425 y: reference.y - element.height 2426 }; 2427 break; 2428 2429 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom: 2430 offsets = { 2431 x: commonX, 2432 y: reference.y + reference.height 2433 }; 2434 break; 2435 2436 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right: 2437 offsets = { 2438 x: reference.x + reference.width, 2439 y: commonY 2440 }; 2441 break; 2442 2443 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left: 2444 offsets = { 2445 x: reference.x - element.width, 2446 y: commonY 2447 }; 2448 break; 2449 2450 default: 2451 offsets = { 2452 x: reference.x, 2453 y: reference.y 2454 }; 2455 } 2456 2457 var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null; 2458 2459 if (mainAxis != null) { 2460 var len = mainAxis === 'y' ? 'height' : 'width'; 2461 2462 switch (variation) { 2463 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start: 2464 offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); 2465 break; 2466 2467 case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end: 2468 offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); 2469 break; 2470 2471 default: 2472 } 2473 } 2474 2475 return offsets; 2476} 2477 2478/***/ }), 2479
vendor: 856 bytes, lines 2480-2507
2480/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js": 2481/*!***********************************************************!*\ 2482 !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***! 2483 \***********************************************************/ 2484/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2485 2486__webpack_require__.r(__webpack_exports__); 2487/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2488/* harmony export */ "default": function() { return /* binding */ debounce; } 2489/* harmony export */ }); 2490function debounce(fn) { 2491 var pending; 2492 return function () { 2493 if (!pending) { 2494 pending = new Promise(function (resolve) { 2495 Promise.resolve().then(function () { 2496 pending = undefined; 2497 resolve(fn()); 2498 }); 2499 }); 2500 } 2501 2502 return pending; 2503 }; 2504} 2505 2506/***/ }), 2507
vendor: 6,232 bytes, lines 2508-2594
2508/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js": 2509/*!*****************************************************************!*\ 2510 !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! 2511 \*****************************************************************/ 2512/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2513 2514__webpack_require__.r(__webpack_exports__); 2515/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2516/* harmony export */ "default": function() { return /* binding */ detectOverflow; } 2517/* harmony export */ }); 2518/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js"); 2519/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); 2520/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); 2521/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); 2522/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); 2523/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2524/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); 2525/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); 2526/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); 2527 2528 2529 2530 2531 2532 2533 2534 2535 // eslint-disable-next-line import/no-unused-modules 2536 2537function detectOverflow(state, options) { 2538 if (options === void 0) { 2539 options = {}; 2540 } 2541 2542 var _options = options, 2543 _options$placement = _options.placement, 2544 placement = _options$placement === void 0 ? state.placement : _options$placement, 2545 _options$strategy = _options.strategy, 2546 strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, 2547 _options$boundary = _options.boundary, 2548 boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary, 2549 _options$rootBoundary = _options.rootBoundary, 2550 rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary, 2551 _options$elementConte = _options.elementContext, 2552 elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte, 2553 _options$altBoundary = _options.altBoundary, 2554 altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, 2555 _options$padding = _options.padding, 2556 padding = _options$padding === void 0 ? 0 : _options$padding; 2557 var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements)); 2558 var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper; 2559 var popperRect = state.rects.popper; 2560 var element = state.elements[altBoundary ? altContext : elementContext]; 2561 var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy); 2562 var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference); 2563 var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({ 2564 reference: referenceClientRect, 2565 element: popperRect, 2566 strategy: 'absolute', 2567 placement: placement 2568 }); 2569 var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets)); 2570 var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect 2571 // 0 or negative = within the clipping rect 2572 2573 var overflowOffsets = { 2574 top: clippingClientRect.top - elementClientRect.top + paddingObject.top, 2575 bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, 2576 left: clippingClientRect.left - elementClientRect.left + paddingObject.left, 2577 right: elementClientRect.right - clippingClientRect.right + paddingObject.right 2578 }; 2579 var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element 2580 2581 if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) { 2582 var offset = offsetData[placement]; 2583 Object.keys(overflowOffsets).forEach(function (key) { 2584 var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1; 2585 var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x'; 2586 overflowOffsets[key] += offset[axis] * multiply; 2587 }); 2588 } 2589 2590 return overflowOffsets; 2591} 2592 2593/***/ }), 2594
vendor: 748 bytes, lines 2595-2613
2595/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js": 2596/*!******************************************************************!*\ 2597 !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! 2598 \******************************************************************/ 2599/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2600 2601__webpack_require__.r(__webpack_exports__); 2602/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2603/* harmony export */ "default": function() { return /* binding */ expandToHashMap; } 2604/* harmony export */ }); 2605function expandToHashMap(value, keys) { 2606 return keys.reduce(function (hashMap, key) { 2607 hashMap[key] = value; 2608 return hashMap; 2609 }, {}); 2610} 2611 2612/***/ }), 2613
vendor: 643 bytes, lines 2614-2629
2614/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js": 2615/*!*************************************************************!*\ 2616 !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! 2617 \*************************************************************/ 2618/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2619 2620__webpack_require__.r(__webpack_exports__); 2621/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2622/* harmony export */ "default": function() { return /* binding */ getAltAxis; } 2623/* harmony export */ }); 2624function getAltAxis(axis) { 2625 return axis === 'x' ? 'y' : 'x'; 2626} 2627 2628/***/ }), 2629
vendor: 684 bytes, lines 2630-2646
2630/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js": 2631/*!*******************************************************************!*\ 2632 !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! 2633 \*******************************************************************/ 2634/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2635 2636__webpack_require__.r(__webpack_exports__); 2637/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2638/* harmony export */ "default": function() { return /* binding */ getBasePlacement; } 2639/* harmony export */ }); 2640 2641function getBasePlacement(placement) { 2642 return placement.split('-')[0]; 2643} 2644 2645/***/ }), 2646
vendor: 721 bytes, lines 2647-2667
2647/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js": 2648/*!*********************************************************************!*\ 2649 !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! 2650 \*********************************************************************/ 2651/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2652 2653__webpack_require__.r(__webpack_exports__); 2654/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2655/* harmony export */ "default": function() { return /* binding */ getFreshSideObject; } 2656/* harmony export */ }); 2657function getFreshSideObject() { 2658 return { 2659 top: 0, 2660 right: 0, 2661 bottom: 0, 2662 left: 0 2663 }; 2664} 2665 2666/***/ }), 2667
vendor: 761 bytes, lines 2668-2683
2668/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js": 2669/*!***************************************************************************!*\ 2670 !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! 2671 \***************************************************************************/ 2672/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2673 2674__webpack_require__.r(__webpack_exports__); 2675/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2676/* harmony export */ "default": function() { return /* binding */ getMainAxisFromPlacement; } 2677/* harmony export */ }); 2678function getMainAxisFromPlacement(placement) { 2679 return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; 2680} 2681 2682/***/ }), 2683
vendor: 862 bytes, lines 2684-2707
2684/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js": 2685/*!***********************************************************************!*\ 2686 !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! 2687 \***********************************************************************/ 2688/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2689 2690__webpack_require__.r(__webpack_exports__); 2691/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2692/* harmony export */ "default": function() { return /* binding */ getOppositePlacement; } 2693/* harmony export */ }); 2694var hash = { 2695 left: 'right', 2696 right: 'left', 2697 bottom: 'top', 2698 top: 'bottom' 2699}; 2700function getOppositePlacement(placement) { 2701 return placement.replace(/left|right|bottom|top/g, function (matched) { 2702 return hash[matched]; 2703 }); 2704} 2705 2706/***/ }), 2707
vendor: 868 bytes, lines 2708-2729
2708/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js": 2709/*!********************************************************************************!*\ 2710 !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! 2711 \********************************************************************************/ 2712/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2713 2714__webpack_require__.r(__webpack_exports__); 2715/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2716/* harmony export */ "default": function() { return /* binding */ getOppositeVariationPlacement; } 2717/* harmony export */ }); 2718var hash = { 2719 start: 'end', 2720 end: 'start' 2721}; 2722function getOppositeVariationPlacement(placement) { 2723 return placement.replace(/start|end/g, function (matched) { 2724 return hash[matched]; 2725 }); 2726} 2727 2728/***/ }), 2729
vendor: 659 bytes, lines 2730-2745
2730/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js": 2731/*!***************************************************************!*\ 2732 !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***! 2733 \***************************************************************/ 2734/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2735 2736__webpack_require__.r(__webpack_exports__); 2737/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2738/* harmony export */ "default": function() { return /* binding */ getVariation; } 2739/* harmony export */ }); 2740function getVariation(placement) { 2741 return placement.split('-')[1]; 2742} 2743 2744/***/ }), 2745
vendor: 749 bytes, lines 2746-2763
2746/***/ "./node_modules/@popperjs/core/lib/utils/math.js": 2747/*!*******************************************************!*\ 2748 !*** ./node_modules/@popperjs/core/lib/utils/math.js ***! 2749 \*******************************************************/ 2750/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2751 2752__webpack_require__.r(__webpack_exports__); 2753/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2754/* harmony export */ max: function() { return /* binding */ max; }, 2755/* harmony export */ min: function() { return /* binding */ min; }, 2756/* harmony export */ round: function() { return /* binding */ round; } 2757/* harmony export */ }); 2758var max = Math.max; 2759var min = Math.min; 2760var round = Math.round; 2761 2762/***/ }), 2763
vendor: 1,093 bytes, lines 2764-2790
2764/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js": 2765/*!**************************************************************!*\ 2766 !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***! 2767 \**************************************************************/ 2768/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2769 2770__webpack_require__.r(__webpack_exports__); 2771/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2772/* harmony export */ "default": function() { return /* binding */ mergeByName; } 2773/* harmony export */ }); 2774function mergeByName(modifiers) { 2775 var merged = modifiers.reduce(function (merged, current) { 2776 var existing = merged[current.name]; 2777 merged[current.name] = existing ? Object.assign({}, existing, current, { 2778 options: Object.assign({}, existing.options, current.options), 2779 data: Object.assign({}, existing.data, current.data) 2780 }) : current; 2781 return merged; 2782 }, {}); // IE11 does not support Object.values 2783 2784 return Object.keys(merged).map(function (key) { 2785 return merged[key]; 2786 }); 2787} 2788 2789/***/ }), 2790
vendor: 975 bytes, lines 2791-2808
2791/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js": 2792/*!*********************************************************************!*\ 2793 !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! 2794 \*********************************************************************/ 2795/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2796 2797__webpack_require__.r(__webpack_exports__); 2798/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2799/* harmony export */ "default": function() { return /* binding */ mergePaddingObject; } 2800/* harmony export */ }); 2801/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); 2802 2803function mergePaddingObject(paddingObject) { 2804 return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject); 2805} 2806 2807/***/ }), 2808
vendor: 1,970 bytes, lines 2809-2866
2809/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js": 2810/*!*****************************************************************!*\ 2811 !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! 2812 \*****************************************************************/ 2813/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2814 2815__webpack_require__.r(__webpack_exports__); 2816/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2817/* harmony export */ "default": function() { return /* binding */ orderModifiers; } 2818/* harmony export */ }); 2819/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); 2820 // source: https://stackoverflow.com/questions/49875255 2821 2822function order(modifiers) { 2823 var map = new Map(); 2824 var visited = new Set(); 2825 var result = []; 2826 modifiers.forEach(function (modifier) { 2827 map.set(modifier.name, modifier); 2828 }); // On visiting object, check for its dependencies and visit them recursively 2829 2830 function sort(modifier) { 2831 visited.add(modifier.name); 2832 var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); 2833 requires.forEach(function (dep) { 2834 if (!visited.has(dep)) { 2835 var depModifier = map.get(dep); 2836 2837 if (depModifier) { 2838 sort(depModifier); 2839 } 2840 } 2841 }); 2842 result.push(modifier); 2843 } 2844 2845 modifiers.forEach(function (modifier) { 2846 if (!visited.has(modifier.name)) { 2847 // check for visited object 2848 sort(modifier); 2849 } 2850 }); 2851 return result; 2852} 2853 2854function orderModifiers(modifiers) { 2855 // order based on dependencies 2856 var orderedModifiers = order(modifiers); // order based on phase 2857 2858 return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) { 2859 return acc.concat(orderedModifiers.filter(function (modifier) { 2860 return modifier.phase === phase; 2861 })); 2862 }, []); 2863} 2864 2865/***/ }), 2866
vendor: 785 bytes, lines 2867-2887
2867/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js": 2868/*!*******************************************************************!*\ 2869 !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! 2870 \*******************************************************************/ 2871/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2872 2873__webpack_require__.r(__webpack_exports__); 2874/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2875/* harmony export */ "default": function() { return /* binding */ rectToClientRect; } 2876/* harmony export */ }); 2877function rectToClientRect(rect) { 2878 return Object.assign({}, rect, { 2879 left: rect.x, 2880 top: rect.y, 2881 right: rect.x + rect.width, 2882 bottom: rect.y + rect.height 2883 }); 2884} 2885 2886/***/ }), 2887
vendor: 862 bytes, lines 2888-2911
2888/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js": 2889/*!************************************************************!*\ 2890 !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***! 2891 \************************************************************/ 2892/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2893 2894__webpack_require__.r(__webpack_exports__); 2895/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2896/* harmony export */ "default": function() { return /* binding */ getUAString; } 2897/* harmony export */ }); 2898function getUAString() { 2899 var uaData = navigator.userAgentData; 2900 2901 if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) { 2902 return uaData.brands.map(function (item) { 2903 return item.brand + "/" + item.version; 2904 }).join(' '); 2905 } 2906 2907 return navigator.userAgent; 2908} 2909 2910/***/ }), 2911
vendor: 1,067 bytes, lines 2912-2934
2912/***/ "./node_modules/@popperjs/core/lib/utils/within.js": 2913/*!*********************************************************!*\ 2914 !*** ./node_modules/@popperjs/core/lib/utils/within.js ***! 2915 \*********************************************************/ 2916/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2917 2918__webpack_require__.r(__webpack_exports__); 2919/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2920/* harmony export */ within: function() { return /* binding */ within; }, 2921/* harmony export */ withinMaxClamp: function() { return /* binding */ withinMaxClamp; } 2922/* harmony export */ }); 2923/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); 2924 2925function within(min, value, max) { 2926 return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max)); 2927} 2928function withinMaxClamp(min, value, max) { 2929 var v = within(min, value, max); 2930 return v > max ? max : v; 2931} 2932 2933/***/ }), 2934
vendor: 103,191 bytes, lines 2935-6699
2935/***/ "./node_modules/@splidejs/splide/dist/js/splide.esm.js": 2936/*!*************************************************************!*\ 2937 !*** ./node_modules/@splidejs/splide/dist/js/splide.esm.js ***! 2938 \*************************************************************/ 2939/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2940 2941__webpack_require__.r(__webpack_exports__); 2942/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2943/* harmony export */ CLASSES: function() { return /* binding */ CLASSES; }, 2944/* harmony export */ CLASS_ACTIVE: function() { return /* binding */ CLASS_ACTIVE; }, 2945/* harmony export */ CLASS_ARROW: function() { return /* binding */ CLASS_ARROW; }, 2946/* harmony export */ CLASS_ARROWS: function() { return /* binding */ CLASS_ARROWS; }, 2947/* harmony export */ CLASS_ARROW_NEXT: function() { return /* binding */ CLASS_ARROW_NEXT; }, 2948/* harmony export */ CLASS_ARROW_PREV: function() { return /* binding */ CLASS_ARROW_PREV; }, 2949/* harmony export */ CLASS_CLONE: function() { return /* binding */ CLASS_CLONE; }, 2950/* harmony export */ CLASS_CONTAINER: function() { return /* binding */ CLASS_CONTAINER; }, 2951/* harmony export */ CLASS_FOCUS_IN: function() { return /* binding */ CLASS_FOCUS_IN; }, 2952/* harmony export */ CLASS_INITIALIZED: function() { return /* binding */ CLASS_INITIALIZED; }, 2953/* harmony export */ CLASS_LIST: function() { return /* binding */ CLASS_LIST; }, 2954/* harmony export */ CLASS_LOADING: function() { return /* binding */ CLASS_LOADING; }, 2955/* harmony export */ CLASS_NEXT: function() { return /* binding */ CLASS_NEXT; }, 2956/* harmony export */ CLASS_OVERFLOW: function() { return /* binding */ CLASS_OVERFLOW; }, 2957/* harmony export */ CLASS_PAGINATION: function() { return /* binding */ CLASS_PAGINATION; }, 2958/* harmony export */ CLASS_PAGINATION_PAGE: function() { return /* binding */ CLASS_PAGINATION_PAGE; }, 2959/* harmony export */ CLASS_PREV: function() { return /* binding */ CLASS_PREV; }, 2960/* harmony export */ CLASS_PROGRESS: function() { return /* binding */ CLASS_PROGRESS; }, 2961/* harmony export */ CLASS_PROGRESS_BAR: function() { return /* binding */ CLASS_PROGRESS_BAR; }, 2962/* harmony export */ CLASS_ROOT: function() { return /* binding */ CLASS_ROOT; }, 2963/* harmony export */ CLASS_SLIDE: function() { return /* binding */ CLASS_SLIDE; }, 2964/* harmony export */ CLASS_SPINNER: function() { return /* binding */ CLASS_SPINNER; }, 2965/* harmony export */ CLASS_SR: function() { return /* binding */ CLASS_SR; }, 2966/* harmony export */ CLASS_TOGGLE: function() { return /* binding */ CLASS_TOGGLE; }, 2967/* harmony export */ CLASS_TOGGLE_PAUSE: function() { return /* binding */ CLASS_TOGGLE_PAUSE; }, 2968/* harmony export */ CLASS_TOGGLE_PLAY: function() { return /* binding */ CLASS_TOGGLE_PLAY; }, 2969/* harmony export */ CLASS_TRACK: function() { return /* binding */ CLASS_TRACK; }, 2970/* harmony export */ CLASS_VISIBLE: function() { return /* binding */ CLASS_VISIBLE; }, 2971/* harmony export */ DEFAULTS: function() { return /* binding */ DEFAULTS; }, 2972/* harmony export */ EVENT_ACTIVE: function() { return /* binding */ EVENT_ACTIVE; }, 2973/* harmony export */ EVENT_ARROWS_MOUNTED: function() { return /* binding */ EVENT_ARROWS_MOUNTED; }, 2974/* harmony export */ EVENT_ARROWS_UPDATED: function() { return /* binding */ EVENT_ARROWS_UPDATED; }, 2975/* harmony export */ EVENT_AUTOPLAY_PAUSE: function() { return /* binding */ EVENT_AUTOPLAY_PAUSE; }, 2976/* harmony export */ EVENT_AUTOPLAY_PLAY: function() { return /* binding */ EVENT_AUTOPLAY_PLAY; }, 2977/* harmony export */ EVENT_AUTOPLAY_PLAYING: function() { return /* binding */ EVENT_AUTOPLAY_PLAYING; }, 2978/* harmony export */ EVENT_CLICK: function() { return /* binding */ EVENT_CLICK; }, 2979/* harmony export */ EVENT_DESTROY: function() { return /* binding */ EVENT_DESTROY; }, 2980/* harmony export */ EVENT_DRAG: function() { return /* binding */ EVENT_DRAG; }, 2981/* harmony export */ EVENT_DRAGGED: function() { return /* binding */ EVENT_DRAGGED; }, 2982/* harmony export */ EVENT_DRAGGING: function() { return /* binding */ EVENT_DRAGGING; }, 2983/* harmony export */ EVENT_END_INDEX_CHANGED: function() { return /* binding */ EVENT_END_INDEX_CHANGED; }, 2984/* harmony export */ EVENT_HIDDEN: function() { return /* binding */ EVENT_HIDDEN; }, 2985/* harmony export */ EVENT_INACTIVE: function() { return /* binding */ EVENT_INACTIVE; }, 2986/* harmony export */ EVENT_LAZYLOAD_LOADED: function() { return /* binding */ EVENT_LAZYLOAD_LOADED; }, 2987/* harmony export */ EVENT_MOUNTED: function() { return /* binding */ EVENT_MOUNTED; }, 2988/* harmony export */ EVENT_MOVE: function() { return /* binding */ EVENT_MOVE; }, 2989/* harmony export */ EVENT_MOVED: function() { return /* binding */ EVENT_MOVED; }, 2990/* harmony export */ EVENT_NAVIGATION_MOUNTED: function() { return /* binding */ EVENT_NAVIGATION_MOUNTED; }, 2991/* harmony export */ EVENT_OVERFLOW: function() { return /* binding */ EVENT_OVERFLOW; }, 2992/* harmony export */ EVENT_PAGINATION_MOUNTED: function() { return /* binding */ EVENT_PAGINATION_MOUNTED; }, 2993/* harmony export */ EVENT_PAGINATION_UPDATED: function() { return /* binding */ EVENT_PAGINATION_UPDATED; }, 2994/* harmony export */ EVENT_READY: function() { return /* binding */ EVENT_READY; }, 2995/* harmony export */ EVENT_REFRESH: function() { return /* binding */ EVENT_REFRESH; }, 2996/* harmony export */ EVENT_RESIZE: function() { return /* binding */ EVENT_RESIZE; }, 2997/* harmony export */ EVENT_RESIZED: function() { return /* binding */ EVENT_RESIZED; }, 2998/* harmony export */ EVENT_SCROLL: function() { return /* binding */ EVENT_SCROLL; }, 2999/* harmony export */ EVENT_SCROLLED: function() { return /* binding */ EVENT_SCROLLED; }, 3000/* harmony export */ EVENT_SHIFTED: function() { return /* binding */ EVENT_SHIFTED; }, 3001/* harmony export */ EVENT_SLIDE_KEYDOWN: function() { return /* binding */ EVENT_SLIDE_KEYDOWN; }, 3002/* harmony export */ EVENT_UPDATED: function() { return /* binding */ EVENT_UPDATED; }, 3003/* harmony export */ EVENT_VISIBLE: function() { return /* binding */ EVENT_VISIBLE; }, 3004/* harmony export */ EventBinder: function() { return /* binding */ EventBinder; }, 3005/* harmony export */ EventInterface: function() { return /* binding */ EventInterface; }, 3006/* harmony export */ FADE: function() { return /* binding */ FADE; }, 3007/* harmony export */ LOOP: function() { return /* binding */ LOOP; }, 3008/* harmony export */ LTR: function() { return /* binding */ LTR; }, 3009/* harmony export */ RTL: function() { return /* binding */ RTL; }, 3010/* harmony export */ RequestInterval: function() { return /* binding */ RequestInterval; }, 3011/* harmony export */ SLIDE: function() { return /* binding */ SLIDE; }, 3012/* harmony export */ STATUS_CLASSES: function() { return /* binding */ STATUS_CLASSES; }, 3013/* harmony export */ Splide: function() { return /* binding */ Splide; }, 3014/* harmony export */ SplideRenderer: function() { return /* binding */ SplideRenderer; }, 3015/* harmony export */ State: function() { return /* binding */ State; }, 3016/* harmony export */ TTB: function() { return /* binding */ TTB; }, 3017/* harmony export */ Throttle: function() { return /* binding */ Throttle; }, 3018/* harmony export */ "default": function() { return /* binding */ Splide; } 3019/* harmony export */ }); 3020function _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, descriptor.key, descriptor); } } 3021 3022function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 3023 3024/*! 3025 * Splide.js 3026 * Version : 4.1.4 3027 * License : MIT 3028 * Copyright: 2022 Naotoshi Fujita 3029 */ 3030var MEDIA_PREFERS_REDUCED_MOTION = "(prefers-reduced-motion: reduce)"; 3031var CREATED = 1; 3032var MOUNTED = 2; 3033var IDLE = 3; 3034var MOVING = 4; 3035var SCROLLING = 5; 3036var DRAGGING = 6; 3037var DESTROYED = 7; 3038var STATES = { 3039 CREATED: CREATED, 3040 MOUNTED: MOUNTED, 3041 IDLE: IDLE, 3042 MOVING: MOVING, 3043 SCROLLING: SCROLLING, 3044 DRAGGING: DRAGGING, 3045 DESTROYED: DESTROYED 3046}; 3047 3048function empty(array) { 3049 array.length = 0; 3050} 3051 3052function slice(arrayLike, start, end) { 3053 return Array.prototype.slice.call(arrayLike, start, end); 3054} 3055 3056function apply(func) { 3057 return func.bind.apply(func, [null].concat(slice(arguments, 1))); 3058} 3059 3060var nextTick = setTimeout; 3061 3062var noop = function noop() {}; 3063 3064function raf(func) { 3065 return requestAnimationFrame(func); 3066} 3067 3068function typeOf(type, subject) { 3069 return typeof subject === type; 3070} 3071 3072function isObject(subject) { 3073 return !isNull(subject) && typeOf("object", subject); 3074} 3075 3076var isArray = Array.isArray; 3077var isFunction = apply(typeOf, "function"); 3078var isString = apply(typeOf, "string"); 3079var isUndefined = apply(typeOf, "undefined"); 3080 3081function isNull(subject) { 3082 return subject === null; 3083} 3084 3085function isHTMLElement(subject) { 3086 try { 3087 return subject instanceof (subject.ownerDocument.defaultView || window).HTMLElement; 3088 } catch (e) { 3089 return false; 3090 } 3091} 3092 3093function toArray(value) { 3094 return isArray(value) ? value : [value]; 3095} 3096 3097function forEach(values, iteratee) { 3098 toArray(values).forEach(iteratee); 3099} 3100 3101function includes(array, value) { 3102 return array.indexOf(value) > -1; 3103} 3104 3105function push(array, items) { 3106 array.push.apply(array, toArray(items)); 3107 return array; 3108} 3109 3110function toggleClass(elm, classes, add) { 3111 if (elm) { 3112 forEach(classes, function (name) { 3113 if (name) { 3114 elm.classList[add ? "add" : "remove"](name); 3115 } 3116 }); 3117 } 3118} 3119 3120function addClass(elm, classes) { 3121 toggleClass(elm, isString(classes) ? classes.split(" ") : classes, true); 3122} 3123 3124function append(parent, children) { 3125 forEach(children, parent.appendChild.bind(parent)); 3126} 3127 3128function before(nodes, ref) { 3129 forEach(nodes, function (node) { 3130 var parent = (ref || node).parentNode; 3131 3132 if (parent) { 3133 parent.insertBefore(node, ref); 3134 } 3135 }); 3136} 3137 3138function matches(elm, selector) { 3139 return isHTMLElement(elm) && (elm["msMatchesSelector"] || elm.matches).call(elm, selector); 3140} 3141 3142function children(parent, selector) { 3143 var children2 = parent ? slice(parent.children) : []; 3144 return selector ? children2.filter(function (child) { 3145 return matches(child, selector); 3146 }) : children2; 3147} 3148 3149function child(parent, selector) { 3150 return selector ? children(parent, selector)[0] : parent.firstElementChild; 3151} 3152 3153var ownKeys = Object.keys; 3154 3155function forOwn(object, iteratee, right) { 3156 if (object) { 3157 (right ? ownKeys(object).reverse() : ownKeys(object)).forEach(function (key) { 3158 key !== "__proto__" && iteratee(object[key], key); 3159 }); 3160 } 3161 3162 return object; 3163} 3164 3165function assign(object) { 3166 slice(arguments, 1).forEach(function (source) { 3167 forOwn(source, function (value, key) { 3168 object[key] = source[key]; 3169 }); 3170 }); 3171 return object; 3172} 3173 3174function merge(object) { 3175 slice(arguments, 1).forEach(function (source) { 3176 forOwn(source, function (value, key) { 3177 if (isArray(value)) { 3178 object[key] = value.slice(); 3179 } else if (isObject(value)) { 3180 object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value); 3181 } else { 3182 object[key] = value; 3183 } 3184 }); 3185 }); 3186 return object; 3187} 3188 3189function omit(object, keys) { 3190 forEach(keys || ownKeys(object), function (key) { 3191 delete object[key]; 3192 }); 3193} 3194 3195function removeAttribute(elms, attrs) { 3196 forEach(elms, function (elm) { 3197 forEach(attrs, function (attr) { 3198 elm && elm.removeAttribute(attr); 3199 }); 3200 }); 3201} 3202 3203function setAttribute(elms, attrs, value) { 3204 if (isObject(attrs)) { 3205 forOwn(attrs, function (value2, name) { 3206 setAttribute(elms, name, value2); 3207 }); 3208 } else { 3209 forEach(elms, function (elm) { 3210 isNull(value) || value === "" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value)); 3211 }); 3212 } 3213} 3214 3215function create(tag, attrs, parent) { 3216 var elm = document.createElement(tag); 3217 3218 if (attrs) { 3219 isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs); 3220 } 3221 3222 parent && append(parent, elm); 3223 return elm; 3224} 3225 3226function style(elm, prop, value) { 3227 if (isUndefined(value)) { 3228 return getComputedStyle(elm)[prop]; 3229 } 3230 3231 if (!isNull(value)) { 3232 elm.style[prop] = "" + value; 3233 } 3234} 3235 3236function display(elm, display2) { 3237 style(elm, "display", display2); 3238} 3239 3240function focus(elm) { 3241 elm["setActive"] && elm["setActive"]() || elm.focus({ 3242 preventScroll: true 3243 }); 3244} 3245 3246function getAttribute(elm, attr) { 3247 return elm.getAttribute(attr); 3248} 3249 3250function hasClass(elm, className) { 3251 return elm && elm.classList.contains(className); 3252} 3253 3254function rect(target) { 3255 return target.getBoundingClientRect(); 3256} 3257 3258function remove(nodes) { 3259 forEach(nodes, function (node) { 3260 if (node && node.parentNode) { 3261 node.parentNode.removeChild(node); 3262 } 3263 }); 3264} 3265 3266function parseHtml(html) { 3267 return child(new DOMParser().parseFromString(html, "text/html").body); 3268} 3269 3270function prevent(e, stopPropagation) { 3271 e.preventDefault(); 3272 3273 if (stopPropagation) { 3274 e.stopPropagation(); 3275 e.stopImmediatePropagation(); 3276 } 3277} 3278 3279function query(parent, selector) { 3280 return parent && parent.querySelector(selector); 3281} 3282 3283function queryAll(parent, selector) { 3284 return selector ? slice(parent.querySelectorAll(selector)) : []; 3285} 3286 3287function removeClass(elm, classes) { 3288 toggleClass(elm, classes, false); 3289} 3290 3291function timeOf(e) { 3292 return e.timeStamp; 3293} 3294 3295function unit(value) { 3296 return isString(value) ? value : value ? value + "px" : ""; 3297} 3298 3299var PROJECT_CODE = "splide"; 3300var DATA_ATTRIBUTE = "data-" + PROJECT_CODE; 3301 3302function assert(condition, message) { 3303 if (!condition) { 3304 throw new Error("[" + PROJECT_CODE + "] " + (message || "")); 3305 } 3306} 3307 3308var min = Math.min, 3309 max = Math.max, 3310 floor = Math.floor, 3311 ceil = Math.ceil, 3312 abs = Math.abs; 3313 3314function approximatelyEqual(x, y, epsilon) { 3315 return abs(x - y) < epsilon; 3316} 3317 3318function between(number, x, y, exclusive) { 3319 var minimum = min(x, y); 3320 var maximum = max(x, y); 3321 return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum; 3322} 3323 3324function clamp(number, x, y) { 3325 var minimum = min(x, y); 3326 var maximum = max(x, y); 3327 return min(max(minimum, number), maximum); 3328} 3329 3330function sign(x) { 3331 return +(x > 0) - +(x < 0); 3332} 3333 3334function camelToKebab(string) { 3335 return string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); 3336} 3337 3338function format(string, replacements) { 3339 forEach(replacements, function (replacement) { 3340 string = string.replace("%s", "" + replacement); 3341 }); 3342 return string; 3343} 3344 3345function pad(number) { 3346 return number < 10 ? "0" + number : "" + number; 3347} 3348 3349var ids = {}; 3350 3351function uniqueId(prefix) { 3352 return "" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1); 3353} 3354 3355function EventBinder() { 3356 var listeners = []; 3357 3358 function bind(targets, events, callback, options) { 3359 forEachEvent(targets, events, function (target, event, namespace) { 3360 var isEventTarget = ("addEventListener" in target); 3361 var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target["removeListener"].bind(target, callback); 3362 isEventTarget ? target.addEventListener(event, callback, options) : target["addListener"](callback); 3363 listeners.push([target, event, namespace, callback, remover]); 3364 }); 3365 } 3366 3367 function unbind(targets, events, callback) { 3368 forEachEvent(targets, events, function (target, event, namespace) { 3369 listeners = listeners.filter(function (listener) { 3370 if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) { 3371 listener[4](); 3372 return false; 3373 } 3374 3375 return true; 3376 }); 3377 }); 3378 } 3379 3380 function dispatch(target, type, detail) { 3381 var e; 3382 var bubbles = true; 3383 3384 if (typeof CustomEvent === "function") { 3385 e = new CustomEvent(type, { 3386 bubbles: bubbles, 3387 detail: detail 3388 }); 3389 } else { 3390 e = document.createEvent("CustomEvent"); 3391 e.initCustomEvent(type, bubbles, false, detail); 3392 } 3393 3394 target.dispatchEvent(e); 3395 return e; 3396 } 3397 3398 function forEachEvent(targets, events, iteratee) { 3399 forEach(targets, function (target) { 3400 target && forEach(events, function (events2) { 3401 events2.split(" ").forEach(function (eventNS) { 3402 var fragment = eventNS.split("."); 3403 iteratee(target, fragment[0], fragment[1]); 3404 }); 3405 }); 3406 }); 3407 } 3408 3409 function destroy() { 3410 listeners.forEach(function (data) { 3411 data[4](); 3412 }); 3413 empty(listeners); 3414 } 3415 3416 return { 3417 bind: bind, 3418 unbind: unbind, 3419 dispatch: dispatch, 3420 destroy: destroy 3421 }; 3422} 3423 3424var EVENT_MOUNTED = "mounted"; 3425var EVENT_READY = "ready"; 3426var EVENT_MOVE = "move"; 3427var EVENT_MOVED = "moved"; 3428var EVENT_CLICK = "click"; 3429var EVENT_ACTIVE = "active"; 3430var EVENT_INACTIVE = "inactive"; 3431var EVENT_VISIBLE = "visible"; 3432var EVENT_HIDDEN = "hidden"; 3433var EVENT_REFRESH = "refresh"; 3434var EVENT_UPDATED = "updated"; 3435var EVENT_RESIZE = "resize"; 3436var EVENT_RESIZED = "resized"; 3437var EVENT_DRAG = "drag"; 3438var EVENT_DRAGGING = "dragging"; 3439var EVENT_DRAGGED = "dragged"; 3440var EVENT_SCROLL = "scroll"; 3441var EVENT_SCROLLED = "scrolled"; 3442var EVENT_OVERFLOW = "overflow"; 3443var EVENT_DESTROY = "destroy"; 3444var EVENT_ARROWS_MOUNTED = "arrows:mounted"; 3445var EVENT_ARROWS_UPDATED = "arrows:updated"; 3446var EVENT_PAGINATION_MOUNTED = "pagination:mounted"; 3447var EVENT_PAGINATION_UPDATED = "pagination:updated"; 3448var EVENT_NAVIGATION_MOUNTED = "navigation:mounted"; 3449var EVENT_AUTOPLAY_PLAY = "autoplay:play"; 3450var EVENT_AUTOPLAY_PLAYING = "autoplay:playing"; 3451var EVENT_AUTOPLAY_PAUSE = "autoplay:pause"; 3452var EVENT_LAZYLOAD_LOADED = "lazyload:loaded"; 3453var EVENT_SLIDE_KEYDOWN = "sk"; 3454var EVENT_SHIFTED = "sh"; 3455var EVENT_END_INDEX_CHANGED = "ei"; 3456 3457function EventInterface(Splide2) { 3458 var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment(); 3459 var binder = EventBinder(); 3460 3461 function on(events, callback) { 3462 binder.bind(bus, toArray(events).join(" "), function (e) { 3463 callback.apply(callback, isArray(e.detail) ? e.detail : []); 3464 }); 3465 } 3466 3467 function emit(event) { 3468 binder.dispatch(bus, event, slice(arguments, 1)); 3469 } 3470 3471 if (Splide2) { 3472 Splide2.event.on(EVENT_DESTROY, binder.destroy); 3473 } 3474 3475 return assign(binder, { 3476 bus: bus, 3477 on: on, 3478 off: apply(binder.unbind, bus), 3479 emit: emit 3480 }); 3481} 3482 3483function RequestInterval(interval, onInterval, onUpdate, limit) { 3484 var now = Date.now; 3485 var startTime; 3486 var rate = 0; 3487 var id; 3488 var paused = true; 3489 var count = 0; 3490 3491 function update() { 3492 if (!paused) { 3493 rate = interval ? min((now() - startTime) / interval, 1) : 1; 3494 onUpdate && onUpdate(rate); 3495 3496 if (rate >= 1) { 3497 onInterval(); 3498 startTime = now(); 3499 3500 if (limit && ++count >= limit) { 3501 return pause(); 3502 } 3503 } 3504 3505 id = raf(update); 3506 } 3507 } 3508 3509 function start(resume) { 3510 resume || cancel(); 3511 startTime = now() - (resume ? rate * interval : 0); 3512 paused = false; 3513 id = raf(update); 3514 } 3515 3516 function pause() { 3517 paused = true; 3518 } 3519 3520 function rewind() { 3521 startTime = now(); 3522 rate = 0; 3523 3524 if (onUpdate) { 3525 onUpdate(rate); 3526 } 3527 } 3528 3529 function cancel() { 3530 id && cancelAnimationFrame(id); 3531 rate = 0; 3532 id = 0; 3533 paused = true; 3534 } 3535 3536 function set(time) { 3537 interval = time; 3538 } 3539 3540 function isPaused() { 3541 return paused; 3542 } 3543 3544 return { 3545 start: start, 3546 rewind: rewind, 3547 pause: pause, 3548 cancel: cancel, 3549 set: set, 3550 isPaused: isPaused 3551 }; 3552} 3553 3554function State(initialState) { 3555 var state = initialState; 3556 3557 function set(value) { 3558 state = value; 3559 } 3560 3561 function is(states) { 3562 return includes(toArray(states), state); 3563 } 3564 3565 return { 3566 set: set, 3567 is: is 3568 }; 3569} 3570 3571function Throttle(func, duration) { 3572 var interval = RequestInterval(duration || 0, func, null, 1); 3573 return function () { 3574 interval.isPaused() && interval.start(); 3575 }; 3576} 3577 3578function Media(Splide2, Components2, options) { 3579 var state = Splide2.state; 3580 var breakpoints = options.breakpoints || {}; 3581 var reducedMotion = options.reducedMotion || {}; 3582 var binder = EventBinder(); 3583 var queries = []; 3584 3585 function setup() { 3586 var isMin = options.mediaQuery === "min"; 3587 ownKeys(breakpoints).sort(function (n, m) { 3588 return isMin ? +n - +m : +m - +n; 3589 }).forEach(function (key) { 3590 register(breakpoints[key], "(" + (isMin ? "min" : "max") + "-width:" + key + "px)"); 3591 }); 3592 register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION); 3593 update(); 3594 } 3595 3596 function destroy(completely) { 3597 if (completely) { 3598 binder.destroy(); 3599 } 3600 } 3601 3602 function register(options2, query) { 3603 var queryList = matchMedia(query); 3604 binder.bind(queryList, "change", update); 3605 queries.push([options2, queryList]); 3606 } 3607 3608 function update() { 3609 var destroyed = state.is(DESTROYED); 3610 var direction = options.direction; 3611 var merged = queries.reduce(function (merged2, entry) { 3612 return merge(merged2, entry[1].matches ? entry[0] : {}); 3613 }, {}); 3614 omit(options); 3615 set(merged); 3616 3617 if (options.destroy) { 3618 Splide2.destroy(options.destroy === "completely"); 3619 } else if (destroyed) { 3620 destroy(true); 3621 Splide2.mount(); 3622 } else { 3623 direction !== options.direction && Splide2.refresh(); 3624 } 3625 } 3626 3627 function reduce(enable) { 3628 if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) { 3629 enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion)); 3630 } 3631 } 3632 3633 function set(opts, base, notify) { 3634 merge(options, opts); 3635 base && merge(Object.getPrototypeOf(options), opts); 3636 3637 if (notify || !state.is(CREATED)) { 3638 Splide2.emit(EVENT_UPDATED, options); 3639 } 3640 } 3641 3642 return { 3643 setup: setup, 3644 destroy: destroy, 3645 reduce: reduce, 3646 set: set 3647 }; 3648} 3649 3650var ARROW = "Arrow"; 3651var ARROW_LEFT = ARROW + "Left"; 3652var ARROW_RIGHT = ARROW + "Right"; 3653var ARROW_UP = ARROW + "Up"; 3654var ARROW_DOWN = ARROW + "Down"; 3655var LTR = "ltr"; 3656var RTL = "rtl"; 3657var TTB = "ttb"; 3658var ORIENTATION_MAP = { 3659 width: ["height"], 3660 left: ["top", "right"], 3661 right: ["bottom", "left"], 3662 x: ["y"], 3663 X: ["Y"], 3664 Y: ["X"], 3665 ArrowLeft: [ARROW_UP, ARROW_RIGHT], 3666 ArrowRight: [ARROW_DOWN, ARROW_LEFT] 3667}; 3668 3669function Direction(Splide2, Components2, options) { 3670 function resolve(prop, axisOnly, direction) { 3671 direction = direction || options.direction; 3672 var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1; 3673 return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) { 3674 var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match; 3675 return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement; 3676 }); 3677 } 3678 3679 function orient(value) { 3680 return value * (options.direction === RTL ? 1 : -1); 3681 } 3682 3683 return { 3684 resolve: resolve, 3685 orient: orient 3686 }; 3687} 3688 3689var ROLE = "role"; 3690var TAB_INDEX = "tabindex"; 3691var DISABLED = "disabled"; 3692var ARIA_PREFIX = "aria-"; 3693var ARIA_CONTROLS = ARIA_PREFIX + "controls"; 3694var ARIA_CURRENT = ARIA_PREFIX + "current"; 3695var ARIA_SELECTED = ARIA_PREFIX + "selected"; 3696var ARIA_LABEL = ARIA_PREFIX + "label"; 3697var ARIA_LABELLEDBY = ARIA_PREFIX + "labelledby"; 3698var ARIA_HIDDEN = ARIA_PREFIX + "hidden"; 3699var ARIA_ORIENTATION = ARIA_PREFIX + "orientation"; 3700var ARIA_ROLEDESCRIPTION = ARIA_PREFIX + "roledescription"; 3701var ARIA_LIVE = ARIA_PREFIX + "live"; 3702var ARIA_BUSY = ARIA_PREFIX + "busy"; 3703var ARIA_ATOMIC = ARIA_PREFIX + "atomic"; 3704var ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION]; 3705var CLASS_PREFIX = PROJECT_CODE + "__"; 3706var STATUS_CLASS_PREFIX = "is-"; 3707var CLASS_ROOT = PROJECT_CODE; 3708var CLASS_TRACK = CLASS_PREFIX + "track"; 3709var CLASS_LIST = CLASS_PREFIX + "list"; 3710var CLASS_SLIDE = CLASS_PREFIX + "slide"; 3711var CLASS_CLONE = CLASS_SLIDE + "--clone"; 3712var CLASS_CONTAINER = CLASS_SLIDE + "__container"; 3713var CLASS_ARROWS = CLASS_PREFIX + "arrows"; 3714var CLASS_ARROW = CLASS_PREFIX + "arrow"; 3715var CLASS_ARROW_PREV = CLASS_ARROW + "--prev"; 3716var CLASS_ARROW_NEXT = CLASS_ARROW + "--next"; 3717var CLASS_PAGINATION = CLASS_PREFIX + "pagination"; 3718var CLASS_PAGINATION_PAGE = CLASS_PAGINATION + "__page"; 3719var CLASS_PROGRESS = CLASS_PREFIX + "progress"; 3720var CLASS_PROGRESS_BAR = CLASS_PROGRESS + "__bar"; 3721var CLASS_TOGGLE = CLASS_PREFIX + "toggle"; 3722var CLASS_TOGGLE_PLAY = CLASS_TOGGLE + "__play"; 3723var CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + "__pause"; 3724var CLASS_SPINNER = CLASS_PREFIX + "spinner"; 3725var CLASS_SR = CLASS_PREFIX + "sr"; 3726var CLASS_INITIALIZED = STATUS_CLASS_PREFIX + "initialized"; 3727var CLASS_ACTIVE = STATUS_CLASS_PREFIX + "active"; 3728var CLASS_PREV = STATUS_CLASS_PREFIX + "prev"; 3729var CLASS_NEXT = STATUS_CLASS_PREFIX + "next"; 3730var CLASS_VISIBLE = STATUS_CLASS_PREFIX + "visible"; 3731var CLASS_LOADING = STATUS_CLASS_PREFIX + "loading"; 3732var CLASS_FOCUS_IN = STATUS_CLASS_PREFIX + "focus-in"; 3733var CLASS_OVERFLOW = STATUS_CLASS_PREFIX + "overflow"; 3734var STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN, CLASS_OVERFLOW]; 3735var CLASSES = { 3736 slide: CLASS_SLIDE, 3737 clone: CLASS_CLONE, 3738 arrows: CLASS_ARROWS, 3739 arrow: CLASS_ARROW, 3740 prev: CLASS_ARROW_PREV, 3741 next: CLASS_ARROW_NEXT, 3742 pagination: CLASS_PAGINATION, 3743 page: CLASS_PAGINATION_PAGE, 3744 spinner: CLASS_SPINNER 3745}; 3746 3747function closest(from, selector) { 3748 if (isFunction(from.closest)) { 3749 return from.closest(selector); 3750 } 3751 3752 var elm = from; 3753 3754 while (elm && elm.nodeType === 1) { 3755 if (matches(elm, selector)) { 3756 break; 3757 } 3758 3759 elm = elm.parentElement; 3760 } 3761 3762 return elm; 3763} 3764 3765var FRICTION = 5; 3766var LOG_INTERVAL = 200; 3767var POINTER_DOWN_EVENTS = "touchstart mousedown"; 3768var POINTER_MOVE_EVENTS = "touchmove mousemove"; 3769var POINTER_UP_EVENTS = "touchend touchcancel mouseup click"; 3770 3771function Elements(Splide2, Components2, options) { 3772 var _EventInterface = EventInterface(Splide2), 3773 on = _EventInterface.on, 3774 bind = _EventInterface.bind; 3775 3776 var root = Splide2.root; 3777 var i18n = options.i18n; 3778 var elements = {}; 3779 var slides = []; 3780 var rootClasses = []; 3781 var trackClasses = []; 3782 var track; 3783 var list; 3784 var isUsingKey; 3785 3786 function setup() { 3787 collect(); 3788 init(); 3789 update(); 3790 } 3791 3792 function mount() { 3793 on(EVENT_REFRESH, destroy); 3794 on(EVENT_REFRESH, setup); 3795 on(EVENT_UPDATED, update); 3796 bind(document, POINTER_DOWN_EVENTS + " keydown", function (e) { 3797 isUsingKey = e.type === "keydown"; 3798 }, { 3799 capture: true 3800 }); 3801 bind(root, "focusin", function () { 3802 toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey); 3803 }); 3804 } 3805 3806 function destroy(completely) { 3807 var attrs = ALL_ATTRIBUTES.concat("style"); 3808 empty(slides); 3809 removeClass(root, rootClasses); 3810 removeClass(track, trackClasses); 3811 removeAttribute([track, list], attrs); 3812 removeAttribute(root, completely ? attrs : ["style", ARIA_ROLEDESCRIPTION]); 3813 } 3814 3815 function update() { 3816 removeClass(root, rootClasses); 3817 removeClass(track, trackClasses); 3818 rootClasses = getClasses(CLASS_ROOT); 3819 trackClasses = getClasses(CLASS_TRACK); 3820 addClass(root, rootClasses); 3821 addClass(track, trackClasses); 3822 setAttribute(root, ARIA_LABEL, options.label); 3823 setAttribute(root, ARIA_LABELLEDBY, options.labelledby); 3824 } 3825 3826 function collect() { 3827 track = find("." + CLASS_TRACK); 3828 list = child(track, "." + CLASS_LIST); 3829 assert(track && list, "A track/list element is missing."); 3830 push(slides, children(list, "." + CLASS_SLIDE + ":not(." + CLASS_CLONE + ")")); 3831 forOwn({ 3832 arrows: CLASS_ARROWS, 3833 pagination: CLASS_PAGINATION, 3834 prev: CLASS_ARROW_PREV, 3835 next: CLASS_ARROW_NEXT, 3836 bar: CLASS_PROGRESS_BAR, 3837 toggle: CLASS_TOGGLE 3838 }, function (className, key) { 3839 elements[key] = find("." + className); 3840 }); 3841 assign(elements, { 3842 root: root, 3843 track: track, 3844 list: list, 3845 slides: slides 3846 }); 3847 } 3848 3849 function init() { 3850 var id = root.id || uniqueId(PROJECT_CODE); 3851 var role = options.role; 3852 root.id = id; 3853 track.id = track.id || id + "-track"; 3854 list.id = list.id || id + "-list"; 3855 3856 if (!getAttribute(root, ROLE) && root.tagName !== "SECTION" && role) { 3857 setAttribute(root, ROLE, role); 3858 } 3859 3860 setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel); 3861 setAttribute(list, ROLE, "presentation"); 3862 } 3863 3864 function find(selector) { 3865 var elm = query(root, selector); 3866 return elm && closest(elm, "." + CLASS_ROOT) === root ? elm : void 0; 3867 } 3868 3869 function getClasses(base) { 3870 return [base + "--" + options.type, base + "--" + options.direction, options.drag && base + "--draggable", options.isNavigation && base + "--nav", base === CLASS_ROOT && CLASS_ACTIVE]; 3871 } 3872 3873 return assign(elements, { 3874 setup: setup, 3875 mount: mount, 3876 destroy: destroy 3877 }); 3878} 3879 3880var SLIDE = "slide"; 3881var LOOP = "loop"; 3882var FADE = "fade"; 3883 3884function Slide$1(Splide2, index, slideIndex, slide) { 3885 var event = EventInterface(Splide2); 3886 var on = event.on, 3887 emit = event.emit, 3888 bind = event.bind; 3889 var Components = Splide2.Components, 3890 root = Splide2.root, 3891 options = Splide2.options; 3892 var isNavigation = options.isNavigation, 3893 updateOnMove = options.updateOnMove, 3894 i18n = options.i18n, 3895 pagination = options.pagination, 3896 slideFocus = options.slideFocus; 3897 var resolve = Components.Direction.resolve; 3898 var styles = getAttribute(slide, "style"); 3899 var label = getAttribute(slide, ARIA_LABEL); 3900 var isClone = slideIndex > -1; 3901 var container = child(slide, "." + CLASS_CONTAINER); 3902 var destroyed; 3903 3904 function mount() { 3905 if (!isClone) { 3906 slide.id = root.id + "-slide" + pad(index + 1); 3907 setAttribute(slide, ROLE, pagination ? "tabpanel" : "group"); 3908 setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide); 3909 setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length])); 3910 } 3911 3912 listen(); 3913 } 3914 3915 function listen() { 3916 bind(slide, "click", apply(emit, EVENT_CLICK, self)); 3917 bind(slide, "keydown", apply(emit, EVENT_SLIDE_KEYDOWN, self)); 3918 on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update); 3919 on(EVENT_NAVIGATION_MOUNTED, initNavigation); 3920 3921 if (updateOnMove) { 3922 on(EVENT_MOVE, onMove); 3923 } 3924 } 3925 3926 function destroy() { 3927 destroyed = true; 3928 event.destroy(); 3929 removeClass(slide, STATUS_CLASSES); 3930 removeAttribute(slide, ALL_ATTRIBUTES); 3931 setAttribute(slide, "style", styles); 3932 setAttribute(slide, ARIA_LABEL, label || ""); 3933 } 3934 3935 function initNavigation() { 3936 var controls = Splide2.splides.map(function (target) { 3937 var Slide2 = target.splide.Components.Slides.getAt(index); 3938 return Slide2 ? Slide2.slide.id : ""; 3939 }).join(" "); 3940 setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1)); 3941 setAttribute(slide, ARIA_CONTROLS, controls); 3942 setAttribute(slide, ROLE, slideFocus ? "button" : ""); 3943 slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION); 3944 } 3945 3946 function onMove() { 3947 if (!destroyed) { 3948 update(); 3949 } 3950 } 3951 3952 function update() { 3953 if (!destroyed) { 3954 var curr = Splide2.index; 3955 updateActivity(); 3956 updateVisibility(); 3957 toggleClass(slide, CLASS_PREV, index === curr - 1); 3958 toggleClass(slide, CLASS_NEXT, index === curr + 1); 3959 } 3960 } 3961 3962 function updateActivity() { 3963 var active = isActive(); 3964 3965 if (active !== hasClass(slide, CLASS_ACTIVE)) { 3966 toggleClass(slide, CLASS_ACTIVE, active); 3967 setAttribute(slide, ARIA_CURRENT, isNavigation && active || ""); 3968 emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self); 3969 } 3970 } 3971 3972 function updateVisibility() { 3973 var visible = isVisible(); 3974 var hidden = !visible && (!isActive() || isClone); 3975 3976 if (!Splide2.state.is([MOVING, SCROLLING])) { 3977 setAttribute(slide, ARIA_HIDDEN, hidden || ""); 3978 } 3979 3980 setAttribute(queryAll(slide, options.focusableNodes || ""), TAB_INDEX, hidden ? -1 : ""); 3981 3982 if (slideFocus) { 3983 setAttribute(slide, TAB_INDEX, hidden ? -1 : 0); 3984 } 3985 3986 if (visible !== hasClass(slide, CLASS_VISIBLE)) { 3987 toggleClass(slide, CLASS_VISIBLE, visible); 3988 emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self); 3989 } 3990 3991 if (!visible && document.activeElement === slide) { 3992 var Slide2 = Components.Slides.getAt(Splide2.index); 3993 Slide2 && focus(Slide2.slide); 3994 } 3995 } 3996 3997 function style$1(prop, value, useContainer) { 3998 style(useContainer && container || slide, prop, value); 3999 } 4000 4001 function isActive() { 4002 var curr = Splide2.index; 4003 return curr === index || options.cloneStatus && curr === slideIndex; 4004 } 4005 4006 function isVisible() { 4007 if (Splide2.is(FADE)) { 4008 return isActive(); 4009 } 4010 4011 var trackRect = rect(Components.Elements.track); 4012 var slideRect = rect(slide); 4013 var left = resolve("left", true); 4014 var right = resolve("right", true); 4015 return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]); 4016 } 4017 4018 function isWithin(from, distance) { 4019 var diff = abs(from - index); 4020 4021 if (!isClone && (options.rewind || Splide2.is(LOOP))) { 4022 diff = min(diff, Splide2.length - diff); 4023 } 4024 4025 return diff <= distance; 4026 } 4027 4028 var self = { 4029 index: index, 4030 slideIndex: slideIndex, 4031 slide: slide, 4032 container: container, 4033 isClone: isClone, 4034 mount: mount, 4035 destroy: destroy, 4036 update: update, 4037 style: style$1, 4038 isWithin: isWithin 4039 }; 4040 return self; 4041} 4042 4043function Slides(Splide2, Components2, options) { 4044 var _EventInterface2 = EventInterface(Splide2), 4045 on = _EventInterface2.on, 4046 emit = _EventInterface2.emit, 4047 bind = _EventInterface2.bind; 4048 4049 var _Components2$Elements = Components2.Elements, 4050 slides = _Components2$Elements.slides, 4051 list = _Components2$Elements.list; 4052 var Slides2 = []; 4053 4054 function mount() { 4055 init(); 4056 on(EVENT_REFRESH, destroy); 4057 on(EVENT_REFRESH, init); 4058 } 4059 4060 function init() { 4061 slides.forEach(function (slide, index) { 4062 register(slide, index, -1); 4063 }); 4064 } 4065 4066 function destroy() { 4067 forEach$1(function (Slide2) { 4068 Slide2.destroy(); 4069 }); 4070 empty(Slides2); 4071 } 4072 4073 function update() { 4074 forEach$1(function (Slide2) { 4075 Slide2.update(); 4076 }); 4077 } 4078 4079 function register(slide, index, slideIndex) { 4080 var object = Slide$1(Splide2, index, slideIndex, slide); 4081 object.mount(); 4082 Slides2.push(object); 4083 Slides2.sort(function (Slide1, Slide2) { 4084 return Slide1.index - Slide2.index; 4085 }); 4086 } 4087 4088 function get(excludeClones) { 4089 return excludeClones ? filter(function (Slide2) { 4090 return !Slide2.isClone; 4091 }) : Slides2; 4092 } 4093 4094 function getIn(page) { 4095 var Controller = Components2.Controller; 4096 var index = Controller.toIndex(page); 4097 var max = Controller.hasFocus() ? 1 : options.perPage; 4098 return filter(function (Slide2) { 4099 return between(Slide2.index, index, index + max - 1); 4100 }); 4101 } 4102 4103 function getAt(index) { 4104 return filter(index)[0]; 4105 } 4106 4107 function add(items, index) { 4108 forEach(items, function (slide) { 4109 if (isString(slide)) { 4110 slide = parseHtml(slide); 4111 } 4112 4113 if (isHTMLElement(slide)) { 4114 var ref = slides[index]; 4115 ref ? before(slide, ref) : append(list, slide); 4116 addClass(slide, options.classes.slide); 4117 observeImages(slide, apply(emit, EVENT_RESIZE)); 4118 } 4119 }); 4120 emit(EVENT_REFRESH); 4121 } 4122 4123 function remove$1(matcher) { 4124 remove(filter(matcher).map(function (Slide2) { 4125 return Slide2.slide; 4126 })); 4127 emit(EVENT_REFRESH); 4128 } 4129 4130 function forEach$1(iteratee, excludeClones) { 4131 get(excludeClones).forEach(iteratee); 4132 } 4133 4134 function filter(matcher) { 4135 return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) { 4136 return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index); 4137 }); 4138 } 4139 4140 function style(prop, value, useContainer) { 4141 forEach$1(function (Slide2) { 4142 Slide2.style(prop, value, useContainer); 4143 }); 4144 } 4145 4146 function observeImages(elm, callback) { 4147 var images = queryAll(elm, "img"); 4148 var length = images.length; 4149 4150 if (length) { 4151 images.forEach(function (img) { 4152 bind(img, "load error", function () { 4153 if (! --length) { 4154 callback(); 4155 } 4156 }); 4157 }); 4158 } else { 4159 callback(); 4160 } 4161 } 4162 4163 function getLength(excludeClones) { 4164 return excludeClones ? slides.length : Slides2.length; 4165 } 4166 4167 function isEnough() { 4168 return Slides2.length > options.perPage; 4169 } 4170 4171 return { 4172 mount: mount, 4173 destroy: destroy, 4174 update: update, 4175 register: register, 4176 get: get, 4177 getIn: getIn, 4178 getAt: getAt, 4179 add: add, 4180 remove: remove$1, 4181 forEach: forEach$1, 4182 filter: filter, 4183 style: style, 4184 getLength: getLength, 4185 isEnough: isEnough 4186 }; 4187} 4188 4189function Layout(Splide2, Components2, options) { 4190 var _EventInterface3 = EventInterface(Splide2), 4191 on = _EventInterface3.on, 4192 bind = _EventInterface3.bind, 4193 emit = _EventInterface3.emit; 4194 4195 var Slides = Components2.Slides; 4196 var resolve = Components2.Direction.resolve; 4197 var _Components2$Elements2 = Components2.Elements, 4198 root = _Components2$Elements2.root, 4199 track = _Components2$Elements2.track, 4200 list = _Components2$Elements2.list; 4201 var getAt = Slides.getAt, 4202 styleSlides = Slides.style; 4203 var vertical; 4204 var rootRect; 4205 var overflow; 4206 4207 function mount() { 4208 init(); 4209 bind(window, "resize load", Throttle(apply(emit, EVENT_RESIZE))); 4210 on([EVENT_UPDATED, EVENT_REFRESH], init); 4211 on(EVENT_RESIZE, resize); 4212 } 4213 4214 function init() { 4215 vertical = options.direction === TTB; 4216 style(root, "maxWidth", unit(options.width)); 4217 style(track, resolve("paddingLeft"), cssPadding(false)); 4218 style(track, resolve("paddingRight"), cssPadding(true)); 4219 resize(true); 4220 } 4221 4222 function resize(force) { 4223 var newRect = rect(root); 4224 4225 if (force || rootRect.width !== newRect.width || rootRect.height !== newRect.height) { 4226 style(track, "height", cssTrackHeight()); 4227 styleSlides(resolve("marginRight"), unit(options.gap)); 4228 styleSlides("width", cssSlideWidth()); 4229 styleSlides("height", cssSlideHeight(), true); 4230 rootRect = newRect; 4231 emit(EVENT_RESIZED); 4232 4233 if (overflow !== (overflow = isOverflow())) { 4234 toggleClass(root, CLASS_OVERFLOW, overflow); 4235 emit(EVENT_OVERFLOW, overflow); 4236 } 4237 } 4238 } 4239 4240 function cssPadding(right) { 4241 var padding = options.padding; 4242 var prop = resolve(right ? "right" : "left"); 4243 return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px"; 4244 } 4245 4246 function cssTrackHeight() { 4247 var height = ""; 4248 4249 if (vertical) { 4250 height = cssHeight(); 4251 assert(height, "height or heightRatio is missing."); 4252 height = "calc(" + height + " - " + cssPadding(false) + " - " + cssPadding(true) + ")"; 4253 } 4254 4255 return height; 4256 } 4257 4258 function cssHeight() { 4259 return unit(options.height || rect(list).width * options.heightRatio); 4260 } 4261 4262 function cssSlideWidth() { 4263 return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? "" : cssSlideSize()); 4264 } 4265 4266 function cssSlideHeight() { 4267 return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight()); 4268 } 4269 4270 function cssSlideSize() { 4271 var gap = unit(options.gap); 4272 return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")"; 4273 } 4274 4275 function listSize() { 4276 return rect(list)[resolve("width")]; 4277 } 4278 4279 function slideSize(index, withoutGap) { 4280 var Slide = getAt(index || 0); 4281 return Slide ? rect(Slide.slide)[resolve("width")] + (withoutGap ? 0 : getGap()) : 0; 4282 } 4283 4284 function totalSize(index, withoutGap) { 4285 var Slide = getAt(index); 4286 4287 if (Slide) { 4288 var right = rect(Slide.slide)[resolve("right")]; 4289 var left = rect(list)[resolve("left")]; 4290 return abs(right - left) + (withoutGap ? 0 : getGap()); 4291 } 4292 4293 return 0; 4294 } 4295 4296 function sliderSize(withoutGap) { 4297 return totalSize(Splide2.length - 1) - totalSize(0) + slideSize(0, withoutGap); 4298 } 4299 4300 function getGap() { 4301 var Slide = getAt(0); 4302 return Slide && parseFloat(style(Slide.slide, resolve("marginRight"))) || 0; 4303 } 4304 4305 function getPadding(right) { 4306 return parseFloat(style(track, resolve("padding" + (right ? "Right" : "Left")))) || 0; 4307 } 4308 4309 function isOverflow() { 4310 return Splide2.is(FADE) || sliderSize(true) > listSize(); 4311 } 4312 4313 return { 4314 mount: mount, 4315 resize: resize, 4316 listSize: listSize, 4317 slideSize: slideSize, 4318 sliderSize: sliderSize, 4319 totalSize: totalSize, 4320 getPadding: getPadding, 4321 isOverflow: isOverflow 4322 }; 4323} 4324 4325var MULTIPLIER = 2; 4326 4327function Clones(Splide2, Components2, options) { 4328 var event = EventInterface(Splide2); 4329 var on = event.on; 4330 var Elements = Components2.Elements, 4331 Slides = Components2.Slides; 4332 var resolve = Components2.Direction.resolve; 4333 var clones = []; 4334 var cloneCount; 4335 4336 function mount() { 4337 on(EVENT_REFRESH, remount); 4338 on([EVENT_UPDATED, EVENT_RESIZE], observe); 4339 4340 if (cloneCount = computeCloneCount()) { 4341 generate(cloneCount); 4342 Components2.Layout.resize(true); 4343 } 4344 } 4345 4346 function remount() { 4347 destroy(); 4348 mount(); 4349 } 4350 4351 function destroy() { 4352 remove(clones); 4353 empty(clones); 4354 event.destroy(); 4355 } 4356 4357 function observe() { 4358 var count = computeCloneCount(); 4359 4360 if (cloneCount !== count) { 4361 if (cloneCount < count || !count) { 4362 event.emit(EVENT_REFRESH); 4363 } 4364 } 4365 } 4366 4367 function generate(count) { 4368 var slides = Slides.get().slice(); 4369 var length = slides.length; 4370 4371 if (length) { 4372 while (slides.length < count) { 4373 push(slides, slides); 4374 } 4375 4376 push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) { 4377 var isHead = index < count; 4378 var clone = cloneDeep(Slide.slide, index); 4379 isHead ? before(clone, slides[0].slide) : append(Elements.list, clone); 4380 push(clones, clone); 4381 Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index); 4382 }); 4383 } 4384 } 4385 4386 function cloneDeep(elm, index) { 4387 var clone = elm.cloneNode(true); 4388 addClass(clone, options.classes.clone); 4389 clone.id = Splide2.root.id + "-clone" + pad(index + 1); 4390 return clone; 4391 } 4392 4393 function computeCloneCount() { 4394 var clones2 = options.clones; 4395 4396 if (!Splide2.is(LOOP)) { 4397 clones2 = 0; 4398 } else if (isUndefined(clones2)) { 4399 var fixedSize = options[resolve("fixedWidth")] && Components2.Layout.slideSize(0); 4400 var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve("width")] / fixedSize); 4401 clones2 = fixedCount || options[resolve("autoWidth")] && Splide2.length || options.perPage * MULTIPLIER; 4402 } 4403 4404 return clones2; 4405 } 4406 4407 return { 4408 mount: mount, 4409 destroy: destroy 4410 }; 4411} 4412 4413function Move(Splide2, Components2, options) { 4414 var _EventInterface4 = EventInterface(Splide2), 4415 on = _EventInterface4.on, 4416 emit = _EventInterface4.emit; 4417 4418 var set = Splide2.state.set; 4419 var _Components2$Layout = Components2.Layout, 4420 slideSize = _Components2$Layout.slideSize, 4421 getPadding = _Components2$Layout.getPadding, 4422 totalSize = _Components2$Layout.totalSize, 4423 listSize = _Components2$Layout.listSize, 4424 sliderSize = _Components2$Layout.sliderSize; 4425 var _Components2$Directio = Components2.Direction, 4426 resolve = _Components2$Directio.resolve, 4427 orient = _Components2$Directio.orient; 4428 var _Components2$Elements3 = Components2.Elements, 4429 list = _Components2$Elements3.list, 4430 track = _Components2$Elements3.track; 4431 var Transition; 4432 4433 function mount() { 4434 Transition = Components2.Transition; 4435 on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition); 4436 } 4437 4438 function reposition() { 4439 if (!Components2.Controller.isBusy()) { 4440 Components2.Scroll.cancel(); 4441 jump(Splide2.index); 4442 Components2.Slides.update(); 4443 } 4444 } 4445 4446 function move(dest, index, prev, callback) { 4447 if (dest !== index && canShift(dest > prev)) { 4448 cancel(); 4449 translate(shift(getPosition(), dest > prev), true); 4450 } 4451 4452 set(MOVING); 4453 emit(EVENT_MOVE, index, prev, dest); 4454 Transition.start(index, function () { 4455 set(IDLE); 4456 emit(EVENT_MOVED, index, prev, dest); 4457 callback && callback(); 4458 }); 4459 } 4460 4461 function jump(index) { 4462 translate(toPosition(index, true)); 4463 } 4464 4465 function translate(position, preventLoop) { 4466 if (!Splide2.is(FADE)) { 4467 var destination = preventLoop ? position : loop(position); 4468 style(list, "transform", "translate" + resolve("X") + "(" + destination + "px)"); 4469 position !== destination && emit(EVENT_SHIFTED); 4470 } 4471 } 4472 4473 function loop(position) { 4474 if (Splide2.is(LOOP)) { 4475 var index = toIndex(position); 4476 var exceededMax = index > Components2.Controller.getEnd(); 4477 var exceededMin = index < 0; 4478 4479 if (exceededMin || exceededMax) { 4480 position = shift(position, exceededMax); 4481 } 4482 } 4483 4484 return position; 4485 } 4486 4487 function shift(position, backwards) { 4488 var excess = position - getLimit(backwards); 4489 var size = sliderSize(); 4490 position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1); 4491 return position; 4492 } 4493 4494 function cancel() { 4495 translate(getPosition(), true); 4496 Transition.cancel(); 4497 } 4498 4499 function toIndex(position) { 4500 var Slides = Components2.Slides.get(); 4501 var index = 0; 4502 var minDistance = Infinity; 4503 4504 for (var i = 0; i < Slides.length; i++) { 4505 var slideIndex = Slides[i].index; 4506 var distance = abs(toPosition(slideIndex, true) - position); 4507 4508 if (distance <= minDistance) { 4509 minDistance = distance; 4510 index = slideIndex; 4511 } else { 4512 break; 4513 } 4514 } 4515 4516 return index; 4517 } 4518 4519 function toPosition(index, trimming) { 4520 var position = orient(totalSize(index - 1) - offset(index)); 4521 return trimming ? trim(position) : position; 4522 } 4523 4524 function getPosition() { 4525 var left = resolve("left"); 4526 return rect(list)[left] - rect(track)[left] + orient(getPadding(false)); 4527 } 4528 4529 function trim(position) { 4530 if (options.trimSpace && Splide2.is(SLIDE)) { 4531 position = clamp(position, 0, orient(sliderSize(true) - listSize())); 4532 } 4533 4534 return position; 4535 } 4536 4537 function offset(index) { 4538 var focus = options.focus; 4539 return focus === "center" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0; 4540 } 4541 4542 function getLimit(max) { 4543 return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace); 4544 } 4545 4546 function canShift(backwards) { 4547 var shifted = orient(shift(getPosition(), backwards)); 4548 return backwards ? shifted >= 0 : shifted <= list[resolve("scrollWidth")] - rect(track)[resolve("width")]; 4549 } 4550 4551 function exceededLimit(max, position) { 4552 position = isUndefined(position) ? getPosition() : position; 4553 var exceededMin = max !== true && orient(position) < orient(getLimit(false)); 4554 var exceededMax = max !== false && orient(position) > orient(getLimit(true)); 4555 return exceededMin || exceededMax; 4556 } 4557 4558 return { 4559 mount: mount, 4560 move: move, 4561 jump: jump, 4562 translate: translate, 4563 shift: shift, 4564 cancel: cancel, 4565 toIndex: toIndex, 4566 toPosition: toPosition, 4567 getPosition: getPosition, 4568 getLimit: getLimit, 4569 exceededLimit: exceededLimit, 4570 reposition: reposition 4571 }; 4572} 4573 4574function Controller(Splide2, Components2, options) { 4575 var _EventInterface5 = EventInterface(Splide2), 4576 on = _EventInterface5.on, 4577 emit = _EventInterface5.emit; 4578 4579 var Move = Components2.Move; 4580 var getPosition = Move.getPosition, 4581 getLimit = Move.getLimit, 4582 toPosition = Move.toPosition; 4583 var _Components2$Slides = Components2.Slides, 4584 isEnough = _Components2$Slides.isEnough, 4585 getLength = _Components2$Slides.getLength; 4586 var omitEnd = options.omitEnd; 4587 var isLoop = Splide2.is(LOOP); 4588 var isSlide = Splide2.is(SLIDE); 4589 var getNext = apply(getAdjacent, false); 4590 var getPrev = apply(getAdjacent, true); 4591 var currIndex = options.start || 0; 4592 var endIndex; 4593 var prevIndex = currIndex; 4594 var slideCount; 4595 var perMove; 4596 var perPage; 4597 4598 function mount() { 4599 init(); 4600 on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], init); 4601 on(EVENT_RESIZED, onResized); 4602 } 4603 4604 function init() { 4605 slideCount = getLength(true); 4606 perMove = options.perMove; 4607 perPage = options.perPage; 4608 endIndex = getEnd(); 4609 var index = clamp(currIndex, 0, omitEnd ? endIndex : slideCount - 1); 4610 4611 if (index !== currIndex) { 4612 currIndex = index; 4613 Move.reposition(); 4614 } 4615 } 4616 4617 function onResized() { 4618 if (endIndex !== getEnd()) { 4619 emit(EVENT_END_INDEX_CHANGED); 4620 } 4621 } 4622 4623 function go(control, allowSameIndex, callback) { 4624 if (!isBusy()) { 4625 var dest = parse(control); 4626 var index = loop(dest); 4627 4628 if (index > -1 && (allowSameIndex || index !== currIndex)) { 4629 setIndex(index); 4630 Move.move(dest, index, prevIndex, callback); 4631 } 4632 } 4633 } 4634 4635 function scroll(destination, duration, snap, callback) { 4636 Components2.Scroll.scroll(destination, duration, snap, function () { 4637 var index = loop(Move.toIndex(getPosition())); 4638 setIndex(omitEnd ? min(index, endIndex) : index); 4639 callback && callback(); 4640 }); 4641 } 4642 4643 function parse(control) { 4644 var index = currIndex; 4645 4646 if (isString(control)) { 4647 var _ref = control.match(/([+\-<>])(\d+)?/) || [], 4648 indicator = _ref[1], 4649 number = _ref[2]; 4650 4651 if (indicator === "+" || indicator === "-") { 4652 index = computeDestIndex(currIndex + +("" + indicator + (+number || 1)), currIndex); 4653 } else if (indicator === ">") { 4654 index = number ? toIndex(+number) : getNext(true); 4655 } else if (indicator === "<") { 4656 index = getPrev(true); 4657 } 4658 } else { 4659 index = isLoop ? control : clamp(control, 0, endIndex); 4660 } 4661 4662 return index; 4663 } 4664 4665 function getAdjacent(prev, destination) { 4666 var number = perMove || (hasFocus() ? 1 : perPage); 4667 var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus())); 4668 4669 if (dest === -1 && isSlide) { 4670 if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) { 4671 return prev ? 0 : endIndex; 4672 } 4673 } 4674 4675 return destination ? dest : loop(dest); 4676 } 4677 4678 function computeDestIndex(dest, from, snapPage) { 4679 if (isEnough() || hasFocus()) { 4680 var index = computeMovableDestIndex(dest); 4681 4682 if (index !== dest) { 4683 from = dest; 4684 dest = index; 4685 snapPage = false; 4686 } 4687 4688 if (dest < 0 || dest > endIndex) { 4689 if (!perMove && (between(0, dest, from, true) || between(endIndex, from, dest, true))) { 4690 dest = toIndex(toPage(dest)); 4691 } else { 4692 if (isLoop) { 4693 dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest; 4694 } else if (options.rewind) { 4695 dest = dest < 0 ? endIndex : 0; 4696 } else { 4697 dest = -1; 4698 } 4699 } 4700 } else { 4701 if (snapPage && dest !== from) { 4702 dest = toIndex(toPage(from) + (dest < from ? -1 : 1)); 4703 } 4704 } 4705 } else { 4706 dest = -1; 4707 } 4708 4709 return dest; 4710 } 4711 4712 function computeMovableDestIndex(dest) { 4713 if (isSlide && options.trimSpace === "move" && dest !== currIndex) { 4714 var position = getPosition(); 4715 4716 while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) { 4717 dest < currIndex ? --dest : ++dest; 4718 } 4719 } 4720 4721 return dest; 4722 } 4723 4724 function loop(index) { 4725 return isLoop ? (index + slideCount) % slideCount || 0 : index; 4726 } 4727 4728 function getEnd() { 4729 var end = slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage); 4730 4731 while (omitEnd && end-- > 0) { 4732 if (toPosition(slideCount - 1, true) !== toPosition(end, true)) { 4733 end++; 4734 break; 4735 } 4736 } 4737 4738 return clamp(end, 0, slideCount - 1); 4739 } 4740 4741 function toIndex(page) { 4742 return clamp(hasFocus() ? page : perPage * page, 0, endIndex); 4743 } 4744 4745 function toPage(index) { 4746 return hasFocus() ? min(index, endIndex) : floor((index >= endIndex ? slideCount - 1 : index) / perPage); 4747 } 4748 4749 function toDest(destination) { 4750 var closest = Move.toIndex(destination); 4751 return isSlide ? clamp(closest, 0, endIndex) : closest; 4752 } 4753 4754 function setIndex(index) { 4755 if (index !== currIndex) { 4756 prevIndex = currIndex; 4757 currIndex = index; 4758 } 4759 } 4760 4761 function getIndex(prev) { 4762 return prev ? prevIndex : currIndex; 4763 } 4764 4765 function hasFocus() { 4766 return !isUndefined(options.focus) || options.isNavigation; 4767 } 4768 4769 function isBusy() { 4770 return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition; 4771 } 4772 4773 return { 4774 mount: mount, 4775 go: go, 4776 scroll: scroll, 4777 getNext: getNext, 4778 getPrev: getPrev, 4779 getAdjacent: getAdjacent, 4780 getEnd: getEnd, 4781 setIndex: setIndex, 4782 getIndex: getIndex, 4783 toIndex: toIndex, 4784 toPage: toPage, 4785 toDest: toDest, 4786 hasFocus: hasFocus, 4787 isBusy: isBusy 4788 }; 4789} 4790 4791var XML_NAME_SPACE = "http://www.w3.org/2000/svg"; 4792var PATH = "m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z"; 4793var SIZE = 40; 4794 4795function Arrows(Splide2, Components2, options) { 4796 var event = EventInterface(Splide2); 4797 var on = event.on, 4798 bind = event.bind, 4799 emit = event.emit; 4800 var classes = options.classes, 4801 i18n = options.i18n; 4802 var Elements = Components2.Elements, 4803 Controller = Components2.Controller; 4804 var placeholder = Elements.arrows, 4805 track = Elements.track; 4806 var wrapper = placeholder; 4807 var prev = Elements.prev; 4808 var next = Elements.next; 4809 var created; 4810 var wrapperClasses; 4811 var arrows = {}; 4812 4813 function mount() { 4814 init(); 4815 on(EVENT_UPDATED, remount); 4816 } 4817 4818 function remount() { 4819 destroy(); 4820 mount(); 4821 } 4822 4823 function init() { 4824 var enabled = options.arrows; 4825 4826 if (enabled && !(prev && next)) { 4827 createArrows(); 4828 } 4829 4830 if (prev && next) { 4831 assign(arrows, { 4832 prev: prev, 4833 next: next 4834 }); 4835 display(wrapper, enabled ? "" : "none"); 4836 addClass(wrapper, wrapperClasses = CLASS_ARROWS + "--" + options.direction); 4837 4838 if (enabled) { 4839 listen(); 4840 update(); 4841 setAttribute([prev, next], ARIA_CONTROLS, track.id); 4842 emit(EVENT_ARROWS_MOUNTED, prev, next); 4843 } 4844 } 4845 } 4846 4847 function destroy() { 4848 event.destroy(); 4849 removeClass(wrapper, wrapperClasses); 4850 4851 if (created) { 4852 remove(placeholder ? [prev, next] : wrapper); 4853 prev = next = null; 4854 } else { 4855 removeAttribute([prev, next], ALL_ATTRIBUTES); 4856 } 4857 } 4858 4859 function listen() { 4860 on([EVENT_MOUNTED, EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED, EVENT_END_INDEX_CHANGED], update); 4861 bind(next, "click", apply(go, ">")); 4862 bind(prev, "click", apply(go, "<")); 4863 } 4864 4865 function go(control) { 4866 Controller.go(control, true); 4867 } 4868 4869 function createArrows() { 4870 wrapper = placeholder || create("div", classes.arrows); 4871 prev = createArrow(true); 4872 next = createArrow(false); 4873 created = true; 4874 append(wrapper, [prev, next]); 4875 !placeholder && before(wrapper, track); 4876 } 4877 4878 function createArrow(prev2) { 4879 var arrow = "<button class=\"" + classes.arrow + " " + (prev2 ? classes.prev : classes.next) + "\" type=\"button\"><svg xmlns=\"" + XML_NAME_SPACE + "\" viewBox=\"0 0 " + SIZE + " " + SIZE + "\" width=\"" + SIZE + "\" height=\"" + SIZE + "\" focusable=\"false\"><path d=\"" + (options.arrowPath || PATH) + "\" />"; 4880 return parseHtml(arrow); 4881 } 4882 4883 function update() { 4884 if (prev && next) { 4885 var index = Splide2.index; 4886 var prevIndex = Controller.getPrev(); 4887 var nextIndex = Controller.getNext(); 4888 var prevLabel = prevIndex > -1 && index < prevIndex ? i18n.last : i18n.prev; 4889 var nextLabel = nextIndex > -1 && index > nextIndex ? i18n.first : i18n.next; 4890 prev.disabled = prevIndex < 0; 4891 next.disabled = nextIndex < 0; 4892 setAttribute(prev, ARIA_LABEL, prevLabel); 4893 setAttribute(next, ARIA_LABEL, nextLabel); 4894 emit(EVENT_ARROWS_UPDATED, prev, next, prevIndex, nextIndex); 4895 } 4896 } 4897 4898 return { 4899 arrows: arrows, 4900 mount: mount, 4901 destroy: destroy, 4902 update: update 4903 }; 4904} 4905 4906var INTERVAL_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-interval"; 4907 4908function Autoplay(Splide2, Components2, options) { 4909 var _EventInterface6 = EventInterface(Splide2), 4910 on = _EventInterface6.on, 4911 bind = _EventInterface6.bind, 4912 emit = _EventInterface6.emit; 4913 4914 var interval = RequestInterval(options.interval, Splide2.go.bind(Splide2, ">"), onAnimationFrame); 4915 var isPaused = interval.isPaused; 4916 var Elements = Components2.Elements, 4917 _Components2$Elements4 = Components2.Elements, 4918 root = _Components2$Elements4.root, 4919 toggle = _Components2$Elements4.toggle; 4920 var autoplay = options.autoplay; 4921 var hovered; 4922 var focused; 4923 var stopped = autoplay === "pause"; 4924 4925 function mount() { 4926 if (autoplay) { 4927 listen(); 4928 toggle && setAttribute(toggle, ARIA_CONTROLS, Elements.track.id); 4929 stopped || play(); 4930 update(); 4931 } 4932 } 4933 4934 function listen() { 4935 if (options.pauseOnHover) { 4936 bind(root, "mouseenter mouseleave", function (e) { 4937 hovered = e.type === "mouseenter"; 4938 autoToggle(); 4939 }); 4940 } 4941 4942 if (options.pauseOnFocus) { 4943 bind(root, "focusin focusout", function (e) { 4944 focused = e.type === "focusin"; 4945 autoToggle(); 4946 }); 4947 } 4948 4949 if (toggle) { 4950 bind(toggle, "click", function () { 4951 stopped ? play() : pause(true); 4952 }); 4953 } 4954 4955 on([EVENT_MOVE, EVENT_SCROLL, EVENT_REFRESH], interval.rewind); 4956 on(EVENT_MOVE, onMove); 4957 } 4958 4959 function play() { 4960 if (isPaused() && Components2.Slides.isEnough()) { 4961 interval.start(!options.resetProgress); 4962 focused = hovered = stopped = false; 4963 update(); 4964 emit(EVENT_AUTOPLAY_PLAY); 4965 } 4966 } 4967 4968 function pause(stop) { 4969 if (stop === void 0) { 4970 stop = true; 4971 } 4972 4973 stopped = !!stop; 4974 update(); 4975 4976 if (!isPaused()) { 4977 interval.pause(); 4978 emit(EVENT_AUTOPLAY_PAUSE); 4979 } 4980 } 4981 4982 function autoToggle() { 4983 if (!stopped) { 4984 hovered || focused ? pause(false) : play(); 4985 } 4986 } 4987 4988 function update() { 4989 if (toggle) { 4990 toggleClass(toggle, CLASS_ACTIVE, !stopped); 4991 setAttribute(toggle, ARIA_LABEL, options.i18n[stopped ? "play" : "pause"]); 4992 } 4993 } 4994 4995 function onAnimationFrame(rate) { 4996 var bar = Elements.bar; 4997 bar && style(bar, "width", rate * 100 + "%"); 4998 emit(EVENT_AUTOPLAY_PLAYING, rate); 4999 } 5000 5001 function onMove(index) { 5002 var Slide = Components2.Slides.getAt(index); 5003 interval.set(Slide && +getAttribute(Slide.slide, INTERVAL_DATA_ATTRIBUTE) || options.interval); 5004 } 5005 5006 return { 5007 mount: mount, 5008 destroy: interval.cancel, 5009 play: play, 5010 pause: pause, 5011 isPaused: isPaused 5012 }; 5013} 5014 5015function Cover(Splide2, Components2, options) { 5016 var _EventInterface7 = EventInterface(Splide2), 5017 on = _EventInterface7.on; 5018 5019 function mount() { 5020 if (options.cover) { 5021 on(EVENT_LAZYLOAD_LOADED, apply(toggle, true)); 5022 on([EVENT_MOUNTED, EVENT_UPDATED, EVENT_REFRESH], apply(cover, true)); 5023 } 5024 } 5025 5026 function cover(cover2) { 5027 Components2.Slides.forEach(function (Slide) { 5028 var img = child(Slide.container || Slide.slide, "img"); 5029 5030 if (img && img.src) { 5031 toggle(cover2, img, Slide); 5032 } 5033 }); 5034 } 5035 5036 function toggle(cover2, img, Slide) { 5037 Slide.style("background", cover2 ? "center/cover no-repeat url(\"" + img.src + "\")" : "", true); 5038 display(img, cover2 ? "none" : ""); 5039 } 5040 5041 return { 5042 mount: mount, 5043 destroy: apply(cover, false) 5044 }; 5045} 5046 5047var BOUNCE_DIFF_THRESHOLD = 10; 5048var BOUNCE_DURATION = 600; 5049var FRICTION_FACTOR = 0.6; 5050var BASE_VELOCITY = 1.5; 5051var MIN_DURATION = 800; 5052 5053function Scroll(Splide2, Components2, options) { 5054 var _EventInterface8 = EventInterface(Splide2), 5055 on = _EventInterface8.on, 5056 emit = _EventInterface8.emit; 5057 5058 var set = Splide2.state.set; 5059 var Move = Components2.Move; 5060 var getPosition = Move.getPosition, 5061 getLimit = Move.getLimit, 5062 exceededLimit = Move.exceededLimit, 5063 translate = Move.translate; 5064 var isSlide = Splide2.is(SLIDE); 5065 var interval; 5066 var callback; 5067 var friction = 1; 5068 5069 function mount() { 5070 on(EVENT_MOVE, clear); 5071 on([EVENT_UPDATED, EVENT_REFRESH], cancel); 5072 } 5073 5074 function scroll(destination, duration, snap, onScrolled, noConstrain) { 5075 var from = getPosition(); 5076 clear(); 5077 5078 if (snap && (!isSlide || !exceededLimit())) { 5079 var size = Components2.Layout.sliderSize(); 5080 var offset = sign(destination) * size * floor(abs(destination) / size) || 0; 5081 destination = Move.toPosition(Components2.Controller.toDest(destination % size)) + offset; 5082 } 5083 5084 var noDistance = approximatelyEqual(from, destination, 1); 5085 friction = 1; 5086 duration = noDistance ? 0 : duration || max(abs(destination - from) / BASE_VELOCITY, MIN_DURATION); 5087 callback = onScrolled; 5088 interval = RequestInterval(duration, onEnd, apply(update, from, destination, noConstrain), 1); 5089 set(SCROLLING); 5090 emit(EVENT_SCROLL); 5091 interval.start(); 5092 } 5093 5094 function onEnd() { 5095 set(IDLE); 5096 callback && callback(); 5097 emit(EVENT_SCROLLED); 5098 } 5099 5100 function update(from, to, noConstrain, rate) { 5101 var position = getPosition(); 5102 var target = from + (to - from) * easing(rate); 5103 var diff = (target - position) * friction; 5104 translate(position + diff); 5105 5106 if (isSlide && !noConstrain && exceededLimit()) { 5107 friction *= FRICTION_FACTOR; 5108 5109 if (abs(diff) < BOUNCE_DIFF_THRESHOLD) { 5110 scroll(getLimit(exceededLimit(true)), BOUNCE_DURATION, false, callback, true); 5111 } 5112 } 5113 } 5114 5115 function clear() { 5116 if (interval) { 5117 interval.cancel(); 5118 } 5119 } 5120 5121 function cancel() { 5122 if (interval && !interval.isPaused()) { 5123 clear(); 5124 onEnd(); 5125 } 5126 } 5127 5128 function easing(t) { 5129 var easingFunc = options.easingFunc; 5130 return easingFunc ? easingFunc(t) : 1 - Math.pow(1 - t, 4); 5131 } 5132 5133 return { 5134 mount: mount, 5135 destroy: clear, 5136 scroll: scroll, 5137 cancel: cancel 5138 }; 5139} 5140 5141var SCROLL_LISTENER_OPTIONS = { 5142 passive: false, 5143 capture: true 5144}; 5145 5146function Drag(Splide2, Components2, options) { 5147 var _EventInterface9 = EventInterface(Splide2), 5148 on = _EventInterface9.on, 5149 emit = _EventInterface9.emit, 5150 bind = _EventInterface9.bind, 5151 unbind = _EventInterface9.unbind; 5152 5153 var state = Splide2.state; 5154 var Move = Components2.Move, 5155 Scroll = Components2.Scroll, 5156 Controller = Components2.Controller, 5157 track = Components2.Elements.track, 5158 reduce = Components2.Media.reduce; 5159 var _Components2$Directio2 = Components2.Direction, 5160 resolve = _Components2$Directio2.resolve, 5161 orient = _Components2$Directio2.orient; 5162 var getPosition = Move.getPosition, 5163 exceededLimit = Move.exceededLimit; 5164 var basePosition; 5165 var baseEvent; 5166 var prevBaseEvent; 5167 var isFree; 5168 var dragging; 5169 var exceeded = false; 5170 var clickPrevented; 5171 var disabled; 5172 var target; 5173 5174 function mount() { 5175 bind(track, POINTER_MOVE_EVENTS, noop, SCROLL_LISTENER_OPTIONS); 5176 bind(track, POINTER_UP_EVENTS, noop, SCROLL_LISTENER_OPTIONS); 5177 bind(track, POINTER_DOWN_EVENTS, onPointerDown, SCROLL_LISTENER_OPTIONS); 5178 bind(track, "click", onClick, { 5179 capture: true 5180 }); 5181 bind(track, "dragstart", prevent); 5182 on([EVENT_MOUNTED, EVENT_UPDATED], init); 5183 } 5184 5185 function init() { 5186 var drag = options.drag; 5187 disable(!drag); 5188 isFree = drag === "free"; 5189 } 5190 5191 function onPointerDown(e) { 5192 clickPrevented = false; 5193 5194 if (!disabled) { 5195 var isTouch = isTouchEvent(e); 5196 5197 if (isDraggable(e.target) && (isTouch || !e.button)) { 5198 if (!Controller.isBusy()) { 5199 target = isTouch ? track : window; 5200 dragging = state.is([MOVING, SCROLLING]); 5201 prevBaseEvent = null; 5202 bind(target, POINTER_MOVE_EVENTS, onPointerMove, SCROLL_LISTENER_OPTIONS); 5203 bind(target, POINTER_UP_EVENTS, onPointerUp, SCROLL_LISTENER_OPTIONS); 5204 Move.cancel(); 5205 Scroll.cancel(); 5206 save(e); 5207 } else { 5208 prevent(e, true); 5209 } 5210 } 5211 } 5212 } 5213 5214 function onPointerMove(e) { 5215 if (!state.is(DRAGGING)) { 5216 state.set(DRAGGING); 5217 emit(EVENT_DRAG); 5218 } 5219 5220 if (e.cancelable) { 5221 if (dragging) { 5222 Move.translate(basePosition + constrain(diffCoord(e))); 5223 var expired = diffTime(e) > LOG_INTERVAL; 5224 var hasExceeded = exceeded !== (exceeded = exceededLimit()); 5225 5226 if (expired || hasExceeded) { 5227 save(e); 5228 } 5229 5230 clickPrevented = true; 5231 emit(EVENT_DRAGGING); 5232 prevent(e); 5233 } else if (isSliderDirection(e)) { 5234 dragging = shouldStart(e); 5235 prevent(e); 5236 } 5237 } 5238 } 5239 5240 function onPointerUp(e) { 5241 if (state.is(DRAGGING)) { 5242 state.set(IDLE); 5243 emit(EVENT_DRAGGED); 5244 } 5245 5246 if (dragging) { 5247 move(e); 5248 prevent(e); 5249 } 5250 5251 unbind(target, POINTER_MOVE_EVENTS, onPointerMove); 5252 unbind(target, POINTER_UP_EVENTS, onPointerUp); 5253 dragging = false; 5254 } 5255 5256 function onClick(e) { 5257 if (!disabled && clickPrevented) { 5258 prevent(e, true); 5259 } 5260 } 5261 5262 function save(e) { 5263 prevBaseEvent = baseEvent; 5264 baseEvent = e; 5265 basePosition = getPosition(); 5266 } 5267 5268 function move(e) { 5269 var velocity = computeVelocity(e); 5270 var destination = computeDestination(velocity); 5271 var rewind = options.rewind && options.rewindByDrag; 5272 reduce(false); 5273 5274 if (isFree) { 5275 Controller.scroll(destination, 0, options.snap); 5276 } else if (Splide2.is(FADE)) { 5277 Controller.go(orient(sign(velocity)) < 0 ? rewind ? "<" : "-" : rewind ? ">" : "+"); 5278 } else if (Splide2.is(SLIDE) && exceeded && rewind) { 5279 Controller.go(exceededLimit(true) ? ">" : "<"); 5280 } else { 5281 Controller.go(Controller.toDest(destination), true); 5282 } 5283 5284 reduce(true); 5285 } 5286 5287 function shouldStart(e) { 5288 var thresholds = options.dragMinThreshold; 5289 var isObj = isObject(thresholds); 5290 var mouse = isObj && thresholds.mouse || 0; 5291 var touch = (isObj ? thresholds.touch : +thresholds) || 10; 5292 return abs(diffCoord(e)) > (isTouchEvent(e) ? touch : mouse); 5293 } 5294 5295 function isSliderDirection(e) { 5296 return abs(diffCoord(e)) > abs(diffCoord(e, true)); 5297 } 5298 5299 function computeVelocity(e) { 5300 if (Splide2.is(LOOP) || !exceeded) { 5301 var time = diffTime(e); 5302 5303 if (time && time < LOG_INTERVAL) { 5304 return diffCoord(e) / time; 5305 } 5306 } 5307 5308 return 0; 5309 } 5310 5311 function computeDestination(velocity) { 5312 return getPosition() + sign(velocity) * min(abs(velocity) * (options.flickPower || 600), isFree ? Infinity : Components2.Layout.listSize() * (options.flickMaxPages || 1)); 5313 } 5314 5315 function diffCoord(e, orthogonal) { 5316 return coordOf(e, orthogonal) - coordOf(getBaseEvent(e), orthogonal); 5317 } 5318 5319 function diffTime(e) { 5320 return timeOf(e) - timeOf(getBaseEvent(e)); 5321 } 5322 5323 function getBaseEvent(e) { 5324 return baseEvent === e && prevBaseEvent || baseEvent; 5325 } 5326 5327 function coordOf(e, orthogonal) { 5328 return (isTouchEvent(e) ? e.changedTouches[0] : e)["page" + resolve(orthogonal ? "Y" : "X")]; 5329 } 5330 5331 function constrain(diff) { 5332 return diff / (exceeded && Splide2.is(SLIDE) ? FRICTION : 1); 5333 } 5334 5335 function isDraggable(target2) { 5336 var noDrag = options.noDrag; 5337 return !matches(target2, "." + CLASS_PAGINATION_PAGE + ", ." + CLASS_ARROW) && (!noDrag || !matches(target2, noDrag)); 5338 } 5339 5340 function isTouchEvent(e) { 5341 return typeof TouchEvent !== "undefined" && e instanceof TouchEvent; 5342 } 5343 5344 function isDragging() { 5345 return dragging; 5346 } 5347 5348 function disable(value) { 5349 disabled = value; 5350 } 5351 5352 return { 5353 mount: mount, 5354 disable: disable, 5355 isDragging: isDragging 5356 }; 5357} 5358 5359var NORMALIZATION_MAP = { 5360 Spacebar: " ", 5361 Right: ARROW_RIGHT, 5362 Left: ARROW_LEFT, 5363 Up: ARROW_UP, 5364 Down: ARROW_DOWN 5365}; 5366 5367function normalizeKey(key) { 5368 key = isString(key) ? key : key.key; 5369 return NORMALIZATION_MAP[key] || key; 5370} 5371 5372var KEYBOARD_EVENT = "keydown"; 5373 5374function Keyboard(Splide2, Components2, options) { 5375 var _EventInterface10 = EventInterface(Splide2), 5376 on = _EventInterface10.on, 5377 bind = _EventInterface10.bind, 5378 unbind = _EventInterface10.unbind; 5379 5380 var root = Splide2.root; 5381 var resolve = Components2.Direction.resolve; 5382 var target; 5383 var disabled; 5384 5385 function mount() { 5386 init(); 5387 on(EVENT_UPDATED, destroy); 5388 on(EVENT_UPDATED, init); 5389 on(EVENT_MOVE, onMove); 5390 } 5391 5392 function init() { 5393 var keyboard = options.keyboard; 5394 5395 if (keyboard) { 5396 target = keyboard === "global" ? window : root; 5397 bind(target, KEYBOARD_EVENT, onKeydown); 5398 } 5399 } 5400 5401 function destroy() { 5402 unbind(target, KEYBOARD_EVENT); 5403 } 5404 5405 function disable(value) { 5406 disabled = value; 5407 } 5408 5409 function onMove() { 5410 var _disabled = disabled; 5411 disabled = true; 5412 nextTick(function () { 5413 disabled = _disabled; 5414 }); 5415 } 5416 5417 function onKeydown(e) { 5418 if (!disabled) { 5419 var key = normalizeKey(e); 5420 5421 if (key === resolve(ARROW_LEFT)) { 5422 Splide2.go("<"); 5423 } else if (key === resolve(ARROW_RIGHT)) { 5424 Splide2.go(">"); 5425 } 5426 } 5427 } 5428 5429 return { 5430 mount: mount, 5431 destroy: destroy, 5432 disable: disable 5433 }; 5434} 5435 5436var SRC_DATA_ATTRIBUTE = DATA_ATTRIBUTE + "-lazy"; 5437var SRCSET_DATA_ATTRIBUTE = SRC_DATA_ATTRIBUTE + "-srcset"; 5438var IMAGE_SELECTOR = "[" + SRC_DATA_ATTRIBUTE + "], [" + SRCSET_DATA_ATTRIBUTE + "]"; 5439 5440function LazyLoad(Splide2, Components2, options) { 5441 var _EventInterface11 = EventInterface(Splide2), 5442 on = _EventInterface11.on, 5443 off = _EventInterface11.off, 5444 bind = _EventInterface11.bind, 5445 emit = _EventInterface11.emit; 5446 5447 var isSequential = options.lazyLoad === "sequential"; 5448 var events = [EVENT_MOVED, EVENT_SCROLLED]; 5449 var entries = []; 5450 5451 function mount() { 5452 if (options.lazyLoad) { 5453 init(); 5454 on(EVENT_REFRESH, init); 5455 } 5456 } 5457 5458 function init() { 5459 empty(entries); 5460 register(); 5461 5462 if (isSequential) { 5463 loadNext(); 5464 } else { 5465 off(events); 5466 on(events, check); 5467 check(); 5468 } 5469 } 5470 5471 function register() { 5472 Components2.Slides.forEach(function (Slide) { 5473 queryAll(Slide.slide, IMAGE_SELECTOR).forEach(function (img) { 5474 var src = getAttribute(img, SRC_DATA_ATTRIBUTE); 5475 var srcset = getAttribute(img, SRCSET_DATA_ATTRIBUTE); 5476 5477 if (src !== img.src || srcset !== img.srcset) { 5478 var className = options.classes.spinner; 5479 var parent = img.parentElement; 5480 var spinner = child(parent, "." + className) || create("span", className, parent); 5481 entries.push([img, Slide, spinner]); 5482 img.src || display(img, "none"); 5483 } 5484 }); 5485 }); 5486 } 5487 5488 function check() { 5489 entries = entries.filter(function (data) { 5490 var distance = options.perPage * ((options.preloadPages || 1) + 1) - 1; 5491 return data[1].isWithin(Splide2.index, distance) ? load(data) : true; 5492 }); 5493 entries.length || off(events); 5494 } 5495 5496 function load(data) { 5497 var img = data[0]; 5498 addClass(data[1].slide, CLASS_LOADING); 5499 bind(img, "load error", apply(onLoad, data)); 5500 setAttribute(img, "src", getAttribute(img, SRC_DATA_ATTRIBUTE)); 5501 setAttribute(img, "srcset", getAttribute(img, SRCSET_DATA_ATTRIBUTE)); 5502 removeAttribute(img, SRC_DATA_ATTRIBUTE); 5503 removeAttribute(img, SRCSET_DATA_ATTRIBUTE); 5504 } 5505 5506 function onLoad(data, e) { 5507 var img = data[0], 5508 Slide = data[1]; 5509 removeClass(Slide.slide, CLASS_LOADING); 5510 5511 if (e.type !== "error") { 5512 remove(data[2]); 5513 display(img, ""); 5514 emit(EVENT_LAZYLOAD_LOADED, img, Slide); 5515 emit(EVENT_RESIZE); 5516 } 5517 5518 isSequential && loadNext(); 5519 } 5520 5521 function loadNext() { 5522 entries.length && load(entries.shift()); 5523 } 5524 5525 return { 5526 mount: mount, 5527 destroy: apply(empty, entries), 5528 check: check 5529 }; 5530} 5531 5532function Pagination(Splide2, Components2, options) { 5533 var event = EventInterface(Splide2); 5534 var on = event.on, 5535 emit = event.emit, 5536 bind = event.bind; 5537 var Slides = Components2.Slides, 5538 Elements = Components2.Elements, 5539 Controller = Components2.Controller; 5540 var hasFocus = Controller.hasFocus, 5541 getIndex = Controller.getIndex, 5542 go = Controller.go; 5543 var resolve = Components2.Direction.resolve; 5544 var placeholder = Elements.pagination; 5545 var items = []; 5546 var list; 5547 var paginationClasses; 5548 5549 function mount() { 5550 destroy(); 5551 on([EVENT_UPDATED, EVENT_REFRESH, EVENT_END_INDEX_CHANGED], mount); 5552 var enabled = options.pagination; 5553 placeholder && display(placeholder, enabled ? "" : "none"); 5554 5555 if (enabled) { 5556 on([EVENT_MOVE, EVENT_SCROLL, EVENT_SCROLLED], update); 5557 createPagination(); 5558 update(); 5559 emit(EVENT_PAGINATION_MOUNTED, { 5560 list: list, 5561 items: items 5562 }, getAt(Splide2.index)); 5563 } 5564 } 5565 5566 function destroy() { 5567 if (list) { 5568 remove(placeholder ? slice(list.children) : list); 5569 removeClass(list, paginationClasses); 5570 empty(items); 5571 list = null; 5572 } 5573 5574 event.destroy(); 5575 } 5576 5577 function createPagination() { 5578 var length = Splide2.length; 5579 var classes = options.classes, 5580 i18n = options.i18n, 5581 perPage = options.perPage; 5582 var max = hasFocus() ? Controller.getEnd() + 1 : ceil(length / perPage); 5583 list = placeholder || create("ul", classes.pagination, Elements.track.parentElement); 5584 addClass(list, paginationClasses = CLASS_PAGINATION + "--" + getDirection()); 5585 setAttribute(list, ROLE, "tablist"); 5586 setAttribute(list, ARIA_LABEL, i18n.select); 5587 setAttribute(list, ARIA_ORIENTATION, getDirection() === TTB ? "vertical" : ""); 5588 5589 for (var i = 0; i < max; i++) { 5590 var li = create("li", null, list); 5591 var button = create("button", { 5592 class: classes.page, 5593 type: "button" 5594 }, li); 5595 var controls = Slides.getIn(i).map(function (Slide) { 5596 return Slide.slide.id; 5597 }); 5598 var text = !hasFocus() && perPage > 1 ? i18n.pageX : i18n.slideX; 5599 bind(button, "click", apply(onClick, i)); 5600 5601 if (options.paginationKeyboard) { 5602 bind(button, "keydown", apply(onKeydown, i)); 5603 } 5604 5605 setAttribute(li, ROLE, "presentation"); 5606 setAttribute(button, ROLE, "tab"); 5607 setAttribute(button, ARIA_CONTROLS, controls.join(" ")); 5608 setAttribute(button, ARIA_LABEL, format(text, i + 1)); 5609 setAttribute(button, TAB_INDEX, -1); 5610 items.push({ 5611 li: li, 5612 button: button, 5613 page: i 5614 }); 5615 } 5616 } 5617 5618 function onClick(page) { 5619 go(">" + page, true); 5620 } 5621 5622 function onKeydown(page, e) { 5623 var length = items.length; 5624 var key = normalizeKey(e); 5625 var dir = getDirection(); 5626 var nextPage = -1; 5627 5628 if (key === resolve(ARROW_RIGHT, false, dir)) { 5629 nextPage = ++page % length; 5630 } else if (key === resolve(ARROW_LEFT, false, dir)) { 5631 nextPage = (--page + length) % length; 5632 } else if (key === "Home") { 5633 nextPage = 0; 5634 } else if (key === "End") { 5635 nextPage = length - 1; 5636 } 5637 5638 var item = items[nextPage]; 5639 5640 if (item) { 5641 focus(item.button); 5642 go(">" + nextPage); 5643 prevent(e, true); 5644 } 5645 } 5646 5647 function getDirection() { 5648 return options.paginationDirection || options.direction; 5649 } 5650 5651 function getAt(index) { 5652 return items[Controller.toPage(index)]; 5653 } 5654 5655 function update() { 5656 var prev = getAt(getIndex(true)); 5657 var curr = getAt(getIndex()); 5658 5659 if (prev) { 5660 var button = prev.button; 5661 removeClass(button, CLASS_ACTIVE); 5662 removeAttribute(button, ARIA_SELECTED); 5663 setAttribute(button, TAB_INDEX, -1); 5664 } 5665 5666 if (curr) { 5667 var _button = curr.button; 5668 addClass(_button, CLASS_ACTIVE); 5669 setAttribute(_button, ARIA_SELECTED, true); 5670 setAttribute(_button, TAB_INDEX, ""); 5671 } 5672 5673 emit(EVENT_PAGINATION_UPDATED, { 5674 list: list, 5675 items: items 5676 }, prev, curr); 5677 } 5678 5679 return { 5680 items: items, 5681 mount: mount, 5682 destroy: destroy, 5683 getAt: getAt, 5684 update: update 5685 }; 5686} 5687 5688var TRIGGER_KEYS = [" ", "Enter"]; 5689 5690function Sync(Splide2, Components2, options) { 5691 var isNavigation = options.isNavigation, 5692 slideFocus = options.slideFocus; 5693 var events = []; 5694 5695 function mount() { 5696 Splide2.splides.forEach(function (target) { 5697 if (!target.isParent) { 5698 sync(Splide2, target.splide); 5699 sync(target.splide, Splide2); 5700 } 5701 }); 5702 5703 if (isNavigation) { 5704 navigate(); 5705 } 5706 } 5707 5708 function destroy() { 5709 events.forEach(function (event) { 5710 event.destroy(); 5711 }); 5712 empty(events); 5713 } 5714 5715 function remount() { 5716 destroy(); 5717 mount(); 5718 } 5719 5720 function sync(splide, target) { 5721 var event = EventInterface(splide); 5722 event.on(EVENT_MOVE, function (index, prev, dest) { 5723 target.go(target.is(LOOP) ? dest : index); 5724 }); 5725 events.push(event); 5726 } 5727 5728 function navigate() { 5729 var event = EventInterface(Splide2); 5730 var on = event.on; 5731 on(EVENT_CLICK, onClick); 5732 on(EVENT_SLIDE_KEYDOWN, onKeydown); 5733 on([EVENT_MOUNTED, EVENT_UPDATED], update); 5734 events.push(event); 5735 event.emit(EVENT_NAVIGATION_MOUNTED, Splide2.splides); 5736 } 5737 5738 function update() { 5739 setAttribute(Components2.Elements.list, ARIA_ORIENTATION, options.direction === TTB ? "vertical" : ""); 5740 } 5741 5742 function onClick(Slide) { 5743 Splide2.go(Slide.index); 5744 } 5745 5746 function onKeydown(Slide, e) { 5747 if (includes(TRIGGER_KEYS, normalizeKey(e))) { 5748 onClick(Slide); 5749 prevent(e); 5750 } 5751 } 5752 5753 return { 5754 setup: apply(Components2.Media.set, { 5755 slideFocus: isUndefined(slideFocus) ? isNavigation : slideFocus 5756 }, true), 5757 mount: mount, 5758 destroy: destroy, 5759 remount: remount 5760 }; 5761} 5762 5763function Wheel(Splide2, Components2, options) { 5764 var _EventInterface12 = EventInterface(Splide2), 5765 bind = _EventInterface12.bind; 5766 5767 var lastTime = 0; 5768 5769 function mount() { 5770 if (options.wheel) { 5771 bind(Components2.Elements.track, "wheel", onWheel, SCROLL_LISTENER_OPTIONS); 5772 } 5773 } 5774 5775 function onWheel(e) { 5776 if (e.cancelable) { 5777 var deltaY = e.deltaY; 5778 var backwards = deltaY < 0; 5779 var timeStamp = timeOf(e); 5780 5781 var _min = options.wheelMinThreshold || 0; 5782 5783 var sleep = options.wheelSleep || 0; 5784 5785 if (abs(deltaY) > _min && timeStamp - lastTime > sleep) { 5786 Splide2.go(backwards ? "<" : ">"); 5787 lastTime = timeStamp; 5788 } 5789 5790 shouldPrevent(backwards) && prevent(e); 5791 } 5792 } 5793 5794 function shouldPrevent(backwards) { 5795 return !options.releaseWheel || Splide2.state.is(MOVING) || Components2.Controller.getAdjacent(backwards) !== -1; 5796 } 5797 5798 return { 5799 mount: mount 5800 }; 5801} 5802 5803var SR_REMOVAL_DELAY = 90; 5804 5805function Live(Splide2, Components2, options) { 5806 var _EventInterface13 = EventInterface(Splide2), 5807 on = _EventInterface13.on; 5808 5809 var track = Components2.Elements.track; 5810 var enabled = options.live && !options.isNavigation; 5811 var sr = create("span", CLASS_SR); 5812 var interval = RequestInterval(SR_REMOVAL_DELAY, apply(toggle, false)); 5813 5814 function mount() { 5815 if (enabled) { 5816 disable(!Components2.Autoplay.isPaused()); 5817 setAttribute(track, ARIA_ATOMIC, true); 5818 sr.textContent = "\u2026"; 5819 on(EVENT_AUTOPLAY_PLAY, apply(disable, true)); 5820 on(EVENT_AUTOPLAY_PAUSE, apply(disable, false)); 5821 on([EVENT_MOVED, EVENT_SCROLLED], apply(toggle, true)); 5822 } 5823 } 5824 5825 function toggle(active) { 5826 setAttribute(track, ARIA_BUSY, active); 5827 5828 if (active) { 5829 append(track, sr); 5830 interval.start(); 5831 } else { 5832 remove(sr); 5833 interval.cancel(); 5834 } 5835 } 5836 5837 function destroy() { 5838 removeAttribute(track, [ARIA_LIVE, ARIA_ATOMIC, ARIA_BUSY]); 5839 remove(sr); 5840 } 5841 5842 function disable(disabled) { 5843 if (enabled) { 5844 setAttribute(track, ARIA_LIVE, disabled ? "off" : "polite"); 5845 } 5846 } 5847 5848 return { 5849 mount: mount, 5850 disable: disable, 5851 destroy: destroy 5852 }; 5853} 5854 5855var ComponentConstructors = /*#__PURE__*/Object.freeze({ 5856 __proto__: null, 5857 Media: Media, 5858 Direction: Direction, 5859 Elements: Elements, 5860 Slides: Slides, 5861 Layout: Layout, 5862 Clones: Clones, 5863 Move: Move, 5864 Controller: Controller, 5865 Arrows: Arrows, 5866 Autoplay: Autoplay, 5867 Cover: Cover, 5868 Scroll: Scroll, 5869 Drag: Drag, 5870 Keyboard: Keyboard, 5871 LazyLoad: LazyLoad, 5872 Pagination: Pagination, 5873 Sync: Sync, 5874 Wheel: Wheel, 5875 Live: Live 5876}); 5877var I18N = { 5878 prev: "Previous slide", 5879 next: "Next slide", 5880 first: "Go to first slide", 5881 last: "Go to last slide", 5882 slideX: "Go to slide %s", 5883 pageX: "Go to page %s", 5884 play: "Start autoplay", 5885 pause: "Pause autoplay", 5886 carousel: "carousel", 5887 slide: "slide", 5888 select: "Select a slide to show", 5889 slideLabel: "%s of %s" 5890}; 5891var DEFAULTS = { 5892 type: "slide", 5893 role: "region", 5894 speed: 400, 5895 perPage: 1, 5896 cloneStatus: true, 5897 arrows: true, 5898 pagination: true, 5899 paginationKeyboard: true, 5900 interval: 5e3, 5901 pauseOnHover: true, 5902 pauseOnFocus: true, 5903 resetProgress: true, 5904 easing: "cubic-bezier(0.25, 1, 0.5, 1)", 5905 drag: true, 5906 direction: "ltr", 5907 trimSpace: true, 5908 focusableNodes: "a, button, textarea, input, select, iframe", 5909 live: true, 5910 classes: CLASSES, 5911 i18n: I18N, 5912 reducedMotion: { 5913 speed: 0, 5914 rewindSpeed: 0, 5915 autoplay: "pause" 5916 } 5917}; 5918 5919function Fade(Splide2, Components2, options) { 5920 var Slides = Components2.Slides; 5921 5922 function mount() { 5923 EventInterface(Splide2).on([EVENT_MOUNTED, EVENT_REFRESH], init); 5924 } 5925 5926 function init() { 5927 Slides.forEach(function (Slide) { 5928 Slide.style("transform", "translateX(-" + 100 * Slide.index + "%)"); 5929 }); 5930 } 5931 5932 function start(index, done) { 5933 Slides.style("transition", "opacity " + options.speed + "ms " + options.easing); 5934 nextTick(done); 5935 } 5936 5937 return { 5938 mount: mount, 5939 start: start, 5940 cancel: noop 5941 }; 5942} 5943 5944function Slide(Splide2, Components2, options) { 5945 var Move = Components2.Move, 5946 Controller = Components2.Controller, 5947 Scroll = Components2.Scroll; 5948 var list = Components2.Elements.list; 5949 var transition = apply(style, list, "transition"); 5950 var endCallback; 5951 5952 function mount() { 5953 EventInterface(Splide2).bind(list, "transitionend", function (e) { 5954 if (e.target === list && endCallback) { 5955 cancel(); 5956 endCallback(); 5957 } 5958 }); 5959 } 5960 5961 function start(index, done) { 5962 var destination = Move.toPosition(index, true); 5963 var position = Move.getPosition(); 5964 var speed = getSpeed(index); 5965 5966 if (abs(destination - position) >= 1 && speed >= 1) { 5967 if (options.useScroll) { 5968 Scroll.scroll(destination, speed, false, done); 5969 } else { 5970 transition("transform " + speed + "ms " + options.easing); 5971 Move.translate(destination, true); 5972 endCallback = done; 5973 } 5974 } else { 5975 Move.jump(index); 5976 done(); 5977 } 5978 } 5979 5980 function cancel() { 5981 transition(""); 5982 Scroll.cancel(); 5983 } 5984 5985 function getSpeed(index) { 5986 var rewindSpeed = options.rewindSpeed; 5987 5988 if (Splide2.is(SLIDE) && rewindSpeed) { 5989 var prev = Controller.getIndex(true); 5990 var end = Controller.getEnd(); 5991 5992 if (prev === 0 && index >= end || prev >= end && index === 0) { 5993 return rewindSpeed; 5994 } 5995 } 5996 5997 return options.speed; 5998 } 5999 6000 return { 6001 mount: mount, 6002 start: start, 6003 cancel: cancel 6004 }; 6005} 6006 6007var _Splide = /*#__PURE__*/function () { 6008 function _Splide(target, options) { 6009 this.event = EventInterface(); 6010 this.Components = {}; 6011 this.state = State(CREATED); 6012 this.splides = []; 6013 this._o = {}; 6014 this._E = {}; 6015 var root = isString(target) ? query(document, target) : target; 6016 assert(root, root + " is invalid."); 6017 this.root = root; 6018 options = merge({ 6019 label: getAttribute(root, ARIA_LABEL) || "", 6020 labelledby: getAttribute(root, ARIA_LABELLEDBY) || "" 6021 }, DEFAULTS, _Splide.defaults, options || {}); 6022 6023 try { 6024 merge(options, JSON.parse(getAttribute(root, DATA_ATTRIBUTE))); 6025 } catch (e) { 6026 assert(false, "Invalid JSON"); 6027 } 6028 6029 this._o = Object.create(merge({}, options)); 6030 } 6031 6032 var _proto = _Splide.prototype; 6033 6034 _proto.mount = function mount(Extensions, Transition) { 6035 var _this = this; 6036 6037 var state = this.state, 6038 Components2 = this.Components; 6039 assert(state.is([CREATED, DESTROYED]), "Already mounted!"); 6040 state.set(CREATED); 6041 this._C = Components2; 6042 this._T = Transition || this._T || (this.is(FADE) ? Fade : Slide); 6043 this._E = Extensions || this._E; 6044 var Constructors = assign({}, ComponentConstructors, this._E, { 6045 Transition: this._T 6046 }); 6047 forOwn(Constructors, function (Component, key) { 6048 var component = Component(_this, Components2, _this._o); 6049 Components2[key] = component; 6050 component.setup && component.setup(); 6051 }); 6052 forOwn(Components2, function (component) { 6053 component.mount && component.mount(); 6054 }); 6055 this.emit(EVENT_MOUNTED); 6056 addClass(this.root, CLASS_INITIALIZED); 6057 state.set(IDLE); 6058 this.emit(EVENT_READY); 6059 return this; 6060 }; 6061 6062 _proto.sync = function sync(splide) { 6063 this.splides.push({ 6064 splide: splide 6065 }); 6066 splide.splides.push({ 6067 splide: this, 6068 isParent: true 6069 }); 6070 6071 if (this.state.is(IDLE)) { 6072 this._C.Sync.remount(); 6073 6074 splide.Components.Sync.remount(); 6075 } 6076 6077 return this; 6078 }; 6079 6080 _proto.go = function go(control) { 6081 this._C.Controller.go(control); 6082 6083 return this; 6084 }; 6085 6086 _proto.on = function on(events, callback) { 6087 this.event.on(events, callback); 6088 return this; 6089 }; 6090 6091 _proto.off = function off(events) { 6092 this.event.off(events); 6093 return this; 6094 }; 6095 6096 _proto.emit = function emit(event) { 6097 var _this$event; 6098 6099 (_this$event = this.event).emit.apply(_this$event, [event].concat(slice(arguments, 1))); 6100 6101 return this; 6102 }; 6103 6104 _proto.add = function add(slides, index) { 6105 this._C.Slides.add(slides, index); 6106 6107 return this; 6108 }; 6109 6110 _proto.remove = function remove(matcher) { 6111 this._C.Slides.remove(matcher); 6112 6113 return this; 6114 }; 6115 6116 _proto.is = function is(type) { 6117 return this._o.type === type; 6118 }; 6119 6120 _proto.refresh = function refresh() { 6121 this.emit(EVENT_REFRESH); 6122 return this; 6123 }; 6124 6125 _proto.destroy = function destroy(completely) { 6126 if (completely === void 0) { 6127 completely = true; 6128 } 6129 6130 var event = this.event, 6131 state = this.state; 6132 6133 if (state.is(CREATED)) { 6134 EventInterface(this).on(EVENT_READY, this.destroy.bind(this, completely)); 6135 } else { 6136 forOwn(this._C, function (component) { 6137 component.destroy && component.destroy(completely); 6138 }, true); 6139 event.emit(EVENT_DESTROY); 6140 event.destroy(); 6141 completely && empty(this.splides); 6142 state.set(DESTROYED); 6143 } 6144 6145 return this; 6146 }; 6147 6148 _createClass(_Splide, [{ 6149 key: "options", 6150 get: function get() { 6151 return this._o; 6152 }, 6153 set: function set(options) { 6154 this._C.Media.set(options, true, true); 6155 } 6156 }, { 6157 key: "length", 6158 get: function get() { 6159 return this._C.Slides.getLength(true); 6160 } 6161 }, { 6162 key: "index", 6163 get: function get() { 6164 return this._C.Controller.getIndex(); 6165 } 6166 }]); 6167 6168 return _Splide; 6169}(); 6170 6171var Splide = _Splide; 6172Splide.defaults = {}; 6173Splide.STATES = STATES; 6174var CLASS_RENDERED = "is-rendered"; 6175var RENDERER_DEFAULT_CONFIG = { 6176 listTag: "ul", 6177 slideTag: "li" 6178}; 6179 6180var Style = /*#__PURE__*/function () { 6181 function Style(id, options) { 6182 this.styles = {}; 6183 this.id = id; 6184 this.options = options; 6185 } 6186 6187 var _proto2 = Style.prototype; 6188 6189 _proto2.rule = function rule(selector, prop, value, breakpoint) { 6190 breakpoint = breakpoint || "default"; 6191 var selectors = this.styles[breakpoint] = this.styles[breakpoint] || {}; 6192 var styles = selectors[selector] = selectors[selector] || {}; 6193 styles[prop] = value; 6194 }; 6195 6196 _proto2.build = function build() { 6197 var _this2 = this; 6198 6199 var css = ""; 6200 6201 if (this.styles.default) { 6202 css += this.buildSelectors(this.styles.default); 6203 } 6204 6205 Object.keys(this.styles).sort(function (n, m) { 6206 return _this2.options.mediaQuery === "min" ? +n - +m : +m - +n; 6207 }).forEach(function (breakpoint) { 6208 if (breakpoint !== "default") { 6209 css += "@media screen and (max-width: " + breakpoint + "px) {"; 6210 css += _this2.buildSelectors(_this2.styles[breakpoint]); 6211 css += "}"; 6212 } 6213 }); 6214 return css; 6215 }; 6216 6217 _proto2.buildSelectors = function buildSelectors(selectors) { 6218 var _this3 = this; 6219 6220 var css = ""; 6221 forOwn(selectors, function (styles, selector) { 6222 selector = ("#" + _this3.id + " " + selector).trim(); 6223 css += selector + " {"; 6224 forOwn(styles, function (value, prop) { 6225 if (value || value === 0) { 6226 css += prop + ": " + value + ";"; 6227 } 6228 }); 6229 css += "}"; 6230 }); 6231 return css; 6232 }; 6233 6234 return Style; 6235}(); 6236 6237var SplideRenderer = /*#__PURE__*/function () { 6238 function SplideRenderer(contents, options, config, defaults) { 6239 this.slides = []; 6240 this.options = {}; 6241 this.breakpoints = []; 6242 merge(DEFAULTS, defaults || {}); 6243 merge(merge(this.options, DEFAULTS), options || {}); 6244 this.contents = contents; 6245 this.config = assign({}, RENDERER_DEFAULT_CONFIG, config || {}); 6246 this.id = this.config.id || uniqueId("splide"); 6247 this.Style = new Style(this.id, this.options); 6248 this.Direction = Direction(null, null, this.options); 6249 assert(this.contents.length, "Provide at least 1 content."); 6250 this.init(); 6251 } 6252 6253 SplideRenderer.clean = function clean(splide) { 6254 var _EventInterface14 = EventInterface(splide), 6255 on = _EventInterface14.on; 6256 6257 var root = splide.root; 6258 var clones = queryAll(root, "." + CLASS_CLONE); 6259 on(EVENT_MOUNTED, function () { 6260 remove(child(root, "style")); 6261 }); 6262 remove(clones); 6263 }; 6264 6265 var _proto3 = SplideRenderer.prototype; 6266 6267 _proto3.init = function init() { 6268 this.parseBreakpoints(); 6269 this.initSlides(); 6270 this.registerRootStyles(); 6271 this.registerTrackStyles(); 6272 this.registerSlideStyles(); 6273 this.registerListStyles(); 6274 }; 6275 6276 _proto3.initSlides = function initSlides() { 6277 var _this4 = this; 6278 6279 push(this.slides, this.contents.map(function (content, index) { 6280 content = isString(content) ? { 6281 html: content 6282 } : content; 6283 content.styles = content.styles || {}; 6284 content.attrs = content.attrs || {}; 6285 6286 _this4.cover(content); 6287 6288 var classes = _this4.options.classes.slide + " " + (index === 0 ? CLASS_ACTIVE : ""); 6289 assign(content.attrs, { 6290 class: (classes + " " + (content.attrs.class || "")).trim(), 6291 style: _this4.buildStyles(content.styles) 6292 }); 6293 return content; 6294 })); 6295 6296 if (this.isLoop()) { 6297 this.generateClones(this.slides); 6298 } 6299 }; 6300 6301 _proto3.registerRootStyles = function registerRootStyles() { 6302 var _this5 = this; 6303 6304 this.breakpoints.forEach(function (_ref2) { 6305 var width = _ref2[0], 6306 options = _ref2[1]; 6307 6308 _this5.Style.rule(" ", "max-width", unit(options.width), width); 6309 }); 6310 }; 6311 6312 _proto3.registerTrackStyles = function registerTrackStyles() { 6313 var _this6 = this; 6314 6315 var Style2 = this.Style; 6316 var selector = "." + CLASS_TRACK; 6317 this.breakpoints.forEach(function (_ref3) { 6318 var width = _ref3[0], 6319 options = _ref3[1]; 6320 Style2.rule(selector, _this6.resolve("paddingLeft"), _this6.cssPadding(options, false), width); 6321 Style2.rule(selector, _this6.resolve("paddingRight"), _this6.cssPadding(options, true), width); 6322 Style2.rule(selector, "height", _this6.cssTrackHeight(options), width); 6323 }); 6324 }; 6325 6326 _proto3.registerListStyles = function registerListStyles() { 6327 var _this7 = this; 6328 6329 var Style2 = this.Style; 6330 var selector = "." + CLASS_LIST; 6331 this.breakpoints.forEach(function (_ref4) { 6332 var width = _ref4[0], 6333 options = _ref4[1]; 6334 Style2.rule(selector, "transform", _this7.buildTranslate(options), width); 6335 6336 if (!_this7.cssSlideHeight(options)) { 6337 Style2.rule(selector, "aspect-ratio", _this7.cssAspectRatio(options), width); 6338 } 6339 }); 6340 }; 6341 6342 _proto3.registerSlideStyles = function registerSlideStyles() { 6343 var _this8 = this; 6344 6345 var Style2 = this.Style; 6346 var selector = "." + CLASS_SLIDE; 6347 this.breakpoints.forEach(function (_ref5) { 6348 var width = _ref5[0], 6349 options = _ref5[1]; 6350 Style2.rule(selector, "width", _this8.cssSlideWidth(options), width); 6351 Style2.rule(selector, "height", _this8.cssSlideHeight(options) || "100%", width); 6352 Style2.rule(selector, _this8.resolve("marginRight"), unit(options.gap) || "0px", width); 6353 Style2.rule(selector + " > img", "display", options.cover ? "none" : "inline", width); 6354 }); 6355 }; 6356 6357 _proto3.buildTranslate = function buildTranslate(options) { 6358 var _this$Direction = this.Direction, 6359 resolve = _this$Direction.resolve, 6360 orient = _this$Direction.orient; 6361 var values = []; 6362 values.push(this.cssOffsetClones(options)); 6363 values.push(this.cssOffsetGaps(options)); 6364 6365 if (this.isCenter(options)) { 6366 values.push(this.buildCssValue(orient(-50), "%")); 6367 values.push.apply(values, this.cssOffsetCenter(options)); 6368 } 6369 6370 return values.filter(Boolean).map(function (value) { 6371 return "translate" + resolve("X") + "(" + value + ")"; 6372 }).join(" "); 6373 }; 6374 6375 _proto3.cssOffsetClones = function cssOffsetClones(options) { 6376 var _this$Direction2 = this.Direction, 6377 resolve = _this$Direction2.resolve, 6378 orient = _this$Direction2.orient; 6379 var cloneCount = this.getCloneCount(); 6380 6381 if (this.isFixedWidth(options)) { 6382 var _this$parseCssValue = this.parseCssValue(options[resolve("fixedWidth")]), 6383 value = _this$parseCssValue.value, 6384 unit2 = _this$parseCssValue.unit; 6385 6386 return this.buildCssValue(orient(value) * cloneCount, unit2); 6387 } 6388 6389 var percent = 100 * cloneCount / options.perPage; 6390 return orient(percent) + "%"; 6391 }; 6392 6393 _proto3.cssOffsetCenter = function cssOffsetCenter(options) { 6394 var _this$Direction3 = this.Direction, 6395 resolve = _this$Direction3.resolve, 6396 orient = _this$Direction3.orient; 6397 6398 if (this.isFixedWidth(options)) { 6399 var _this$parseCssValue2 = this.parseCssValue(options[resolve("fixedWidth")]), 6400 value = _this$parseCssValue2.value, 6401 unit2 = _this$parseCssValue2.unit; 6402 6403 return [this.buildCssValue(orient(value / 2), unit2)]; 6404 } 6405 6406 var values = []; 6407 var perPage = options.perPage, 6408 gap = options.gap; 6409 values.push(orient(50 / perPage) + "%"); 6410 6411 if (gap) { 6412 var _this$parseCssValue3 = this.parseCssValue(gap), 6413 _value = _this$parseCssValue3.value, 6414 _unit = _this$parseCssValue3.unit; 6415 6416 var gapOffset = (_value / perPage - _value) / 2; 6417 values.push(this.buildCssValue(orient(gapOffset), _unit)); 6418 } 6419 6420 return values; 6421 }; 6422 6423 _proto3.cssOffsetGaps = function cssOffsetGaps(options) { 6424 var cloneCount = this.getCloneCount(); 6425 6426 if (cloneCount && options.gap) { 6427 var orient = this.Direction.orient; 6428 6429 var _this$parseCssValue4 = this.parseCssValue(options.gap), 6430 value = _this$parseCssValue4.value, 6431 unit2 = _this$parseCssValue4.unit; 6432 6433 if (this.isFixedWidth(options)) { 6434 return this.buildCssValue(orient(value * cloneCount), unit2); 6435 } 6436 6437 var perPage = options.perPage; 6438 var gaps = cloneCount / perPage; 6439 return this.buildCssValue(orient(gaps * value), unit2); 6440 } 6441 6442 return ""; 6443 }; 6444 6445 _proto3.resolve = function resolve(prop) { 6446 return camelToKebab(this.Direction.resolve(prop)); 6447 }; 6448 6449 _proto3.cssPadding = function cssPadding(options, right) { 6450 var padding = options.padding; 6451 var prop = this.Direction.resolve(right ? "right" : "left", true); 6452 return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || "0px"; 6453 }; 6454 6455 _proto3.cssTrackHeight = function cssTrackHeight(options) { 6456 var height = ""; 6457 6458 if (this.isVertical()) { 6459 height = this.cssHeight(options); 6460 assert(height, '"height" is missing.'); 6461 height = "calc(" + height + " - " + this.cssPadding(options, false) + " - " + this.cssPadding(options, true) + ")"; 6462 } 6463 6464 return height; 6465 }; 6466 6467 _proto3.cssHeight = function cssHeight(options) { 6468 return unit(options.height); 6469 }; 6470 6471 _proto3.cssSlideWidth = function cssSlideWidth(options) { 6472 return options.autoWidth ? "" : unit(options.fixedWidth) || (this.isVertical() ? "" : this.cssSlideSize(options)); 6473 }; 6474 6475 _proto3.cssSlideHeight = function cssSlideHeight(options) { 6476 return unit(options.fixedHeight) || (this.isVertical() ? options.autoHeight ? "" : this.cssSlideSize(options) : this.cssHeight(options)); 6477 }; 6478 6479 _proto3.cssSlideSize = function cssSlideSize(options) { 6480 var gap = unit(options.gap); 6481 return "calc((100%" + (gap && " + " + gap) + ")/" + (options.perPage || 1) + (gap && " - " + gap) + ")"; 6482 }; 6483 6484 _proto3.cssAspectRatio = function cssAspectRatio(options) { 6485 var heightRatio = options.heightRatio; 6486 return heightRatio ? "" + 1 / heightRatio : ""; 6487 }; 6488 6489 _proto3.buildCssValue = function buildCssValue(value, unit2) { 6490 return "" + value + unit2; 6491 }; 6492 6493 _proto3.parseCssValue = function parseCssValue(value) { 6494 if (isString(value)) { 6495 var number = parseFloat(value) || 0; 6496 var unit2 = value.replace(/\d*(\.\d*)?/, "") || "px"; 6497 return { 6498 value: number, 6499 unit: unit2 6500 }; 6501 } 6502 6503 return { 6504 value: value, 6505 unit: "px" 6506 }; 6507 }; 6508 6509 _proto3.parseBreakpoints = function parseBreakpoints() { 6510 var _this9 = this; 6511 6512 var breakpoints = this.options.breakpoints; 6513 this.breakpoints.push(["default", this.options]); 6514 6515 if (breakpoints) { 6516 forOwn(breakpoints, function (options, width) { 6517 _this9.breakpoints.push([width, merge(merge({}, _this9.options), options)]); 6518 }); 6519 } 6520 }; 6521 6522 _proto3.isFixedWidth = function isFixedWidth(options) { 6523 return !!options[this.Direction.resolve("fixedWidth")]; 6524 }; 6525 6526 _proto3.isLoop = function isLoop() { 6527 return this.options.type === LOOP; 6528 }; 6529 6530 _proto3.isCenter = function isCenter(options) { 6531 if (options.focus === "center") { 6532 if (this.isLoop()) { 6533 return true; 6534 } 6535 6536 if (this.options.type === SLIDE) { 6537 return !this.options.trimSpace; 6538 } 6539 } 6540 6541 return false; 6542 }; 6543 6544 _proto3.isVertical = function isVertical() { 6545 return this.options.direction === TTB; 6546 }; 6547 6548 _proto3.buildClasses = function buildClasses() { 6549 var options = this.options; 6550 return [CLASS_ROOT, CLASS_ROOT + "--" + options.type, CLASS_ROOT + "--" + options.direction, options.drag && CLASS_ROOT + "--draggable", options.isNavigation && CLASS_ROOT + "--nav", CLASS_ACTIVE, !this.config.hidden && CLASS_RENDERED].filter(Boolean).join(" "); 6551 }; 6552 6553 _proto3.buildAttrs = function buildAttrs(attrs) { 6554 var attr = ""; 6555 forOwn(attrs, function (value, key) { 6556 attr += value ? " " + camelToKebab(key) + "=\"" + value + "\"" : ""; 6557 }); 6558 return attr.trim(); 6559 }; 6560 6561 _proto3.buildStyles = function buildStyles(styles) { 6562 var style = ""; 6563 forOwn(styles, function (value, key) { 6564 style += " " + camelToKebab(key) + ":" + value + ";"; 6565 }); 6566 return style.trim(); 6567 }; 6568 6569 _proto3.renderSlides = function renderSlides() { 6570 var _this10 = this; 6571 6572 var tag = this.config.slideTag; 6573 return this.slides.map(function (content) { 6574 return "<" + tag + " " + _this10.buildAttrs(content.attrs) + ">" + (content.html || "") + "</" + tag + ">"; 6575 }).join(""); 6576 }; 6577 6578 _proto3.cover = function cover(content) { 6579 var styles = content.styles, 6580 _content$html = content.html, 6581 html = _content$html === void 0 ? "" : _content$html; 6582 6583 if (this.options.cover && !this.options.lazyLoad) { 6584 var src = html.match(/<img.*?src\s*=\s*(['"])(.+?)\1.*?>/); 6585 6586 if (src && src[2]) { 6587 styles.background = "center/cover no-repeat url('" + src[2] + "')"; 6588 } 6589 } 6590 }; 6591 6592 _proto3.generateClones = function generateClones(contents) { 6593 var classes = this.options.classes; 6594 var count = this.getCloneCount(); 6595 var slides = contents.slice(); 6596 6597 while (slides.length < count) { 6598 push(slides, slides); 6599 } 6600 6601 push(slides.slice(-count).reverse(), slides.slice(0, count)).forEach(function (content, index) { 6602 var attrs = assign({}, content.attrs, { 6603 class: content.attrs.class + " " + classes.clone 6604 }); 6605 var clone = assign({}, content, { 6606 attrs: attrs 6607 }); 6608 index < count ? contents.unshift(clone) : contents.push(clone); 6609 }); 6610 }; 6611 6612 _proto3.getCloneCount = function getCloneCount() { 6613 if (this.isLoop()) { 6614 var options = this.options; 6615 6616 if (options.clones) { 6617 return options.clones; 6618 } 6619 6620 var perPage = max.apply(void 0, this.breakpoints.map(function (_ref6) { 6621 var options2 = _ref6[1]; 6622 return options2.perPage; 6623 })); 6624 return perPage * ((options.flickMaxPages || 1) + 1); 6625 } 6626 6627 return 0; 6628 }; 6629 6630 _proto3.renderArrows = function renderArrows() { 6631 var html = ""; 6632 html += "<div class=\"" + this.options.classes.arrows + "\">"; 6633 html += this.renderArrow(true); 6634 html += this.renderArrow(false); 6635 html += "</div>"; 6636 return html; 6637 }; 6638 6639 _proto3.renderArrow = function renderArrow(prev) { 6640 var _this$options = this.options, 6641 classes = _this$options.classes, 6642 i18n = _this$options.i18n; 6643 var attrs = { 6644 class: classes.arrow + " " + (prev ? classes.prev : classes.next), 6645 type: "button", 6646 ariaLabel: prev ? i18n.prev : i18n.next 6647 }; 6648 return "<button " + this.buildAttrs(attrs) + "><svg xmlns=\"" + XML_NAME_SPACE + "\" viewBox=\"0 0 " + SIZE + " " + SIZE + "\" width=\"" + SIZE + "\" height=\"" + SIZE + "\"><path d=\"" + (this.options.arrowPath || PATH) + "\" /></svg></button>"; 6649 }; 6650 6651 _proto3.html = function html() { 6652 var _this$config = this.config, 6653 rootClass = _this$config.rootClass, 6654 listTag = _this$config.listTag, 6655 arrows = _this$config.arrows, 6656 beforeTrack = _this$config.beforeTrack, 6657 afterTrack = _this$config.afterTrack, 6658 slider = _this$config.slider, 6659 beforeSlider = _this$config.beforeSlider, 6660 afterSlider = _this$config.afterSlider; 6661 var html = ""; 6662 html += "<div id=\"" + this.id + "\" class=\"" + this.buildClasses() + " " + (rootClass || "") + "\">"; 6663 html += "<style>" + this.Style.build() + "</style>"; 6664 6665 if (slider) { 6666 html += beforeSlider || ""; 6667 html += "<div class=\"splide__slider\">"; 6668 } 6669 6670 html += beforeTrack || ""; 6671 6672 if (arrows) { 6673 html += this.renderArrows(); 6674 } 6675 6676 html += "<div class=\"splide__track\">"; 6677 html += "<" + listTag + " class=\"splide__list\">"; 6678 html += this.renderSlides(); 6679 html += "</" + listTag + ">"; 6680 html += "</div>"; 6681 html += afterTrack || ""; 6682 6683 if (slider) { 6684 html += "</div>"; 6685 html += afterSlider || ""; 6686 } 6687 6688 html += "</div>"; 6689 return html; 6690 }; 6691 6692 return SplideRenderer; 6693}(); 6694 6695 6696 6697 6698/***/ }), 6699
6700/***/ "./src/js/app.js": 6701/*!***********************!*\ 6702 !*** ./src/js/app.js ***! 6703 \***********************/ 6704/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6705 6706__webpack_require__.r(__webpack_exports__); 6707/* harmony import */ var _header_opener_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./header-opener.js */ "./src/js/header-opener.js"); 6708/* harmony import */ var _testimonials_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./testimonials.js */ "./src/js/testimonials.js"); 6709/* harmony import */ var _progress_stars_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./progress-stars.js */ "./src/js/progress-stars.js"); 6710/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.esm.js"); 6711/* harmony import */ var _swiper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./swiper.js */ "./src/js/swiper.js"); 6712/** 6713 * Main app 6714 * 6715 */ 6716 6717 6718 6719function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 6720function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } 6721function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } 6722function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } 6723function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } 6724function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } 6725function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } 6726function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6727function _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); } } 6728function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 6729function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } 6730function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 6731 6732 6733 6734 6735 6736var App = /*#__PURE__*/function () { 6737 function App() { 6738 _classCallCheck(this, App); 6739 this.init_menu(); 6740 this.init_custom_events(); 6741 this.init_popovers(); 6742 var header_opener = new _header_opener_js__WEBPACK_IMPORTED_MODULE_0__.HeaderOpener(); 6743 var testimonial = new _testimonials_js__WEBPACK_IMPORTED_MODULE_1__.Testimonial(); 6744 var progress_stars = new _progress_stars_js__WEBPACK_IMPORTED_MODULE_2__.ProgressStars(); 6745 var swiper_controls = new _swiper_js__WEBPACK_IMPORTED_MODULE_4__.SwiperControls(); 6746 } 6747 6748 /** 6749 * Add hover to menu dropdowns 6750 * 6751 */ 6752 return _createClass(App, [{ 6753 key: "init_menu", 6754 value: function init_menu() { 6755 var _document$querySelect; 6756 (_document$querySelect = document.querySelectorAll('header ul.navbar-nav li.dropdown')) === null || _document$querySelect === void 0 || _document$querySelect.forEach(function (item) { 6757 item.addEventListener('mouseenter', function () { 6758 if (window.innerWidth >= 992) { 6759 item.lastElementChild.classList.add('show'); 6760 } 6761 }); 6762 item.addEventListener('mouseleave', function () { 6763 if (window.innerWidth >= 992) { 6764 item.lastElementChild.classList.remove('show'); 6765 } 6766 }); 6767 item.addEventListener('click', function () { 6768 if (window.innerWidth < 992) { 6769 item.lastElementChild.toggle(); 6770 } 6771 }); 6772 }); 6773 } 6774 6775 /** 6776 * Init custom events 6777 * 6778 */ 6779 }, { 6780 key: "init_custom_events", 6781 value: function init_custom_events() { 6782 window.dataLayer = window.dataLayer || []; 6783 var progress_bar = document.querySelector('.progress-bar'); 6784 6785 // Toggle the form progress bar 6786 document.addEventListener('form:stepChange', function (e) { 6787 var _e$detail, _e$detail2; 6788 console.log('form:stepChange'); 6789 console.log(e); 6790 if (((_e$detail = e.detail) === null || _e$detail === void 0 ? void 0 : _e$detail.form_details.nextStep) == 'contact-step') { 6791 progress_bar === null || progress_bar === void 0 || progress_bar.setAttribute('style', 'width: 50%'); 6792 } 6793 if (((_e$detail2 = e.detail) === null || _e$detail2 === void 0 ? void 0 : _e$detail2.form_details.nextStep) == 'address-step') { 6794 progress_bar === null || progress_bar === void 0 || progress_bar.setAttribute('style', 'width: 80%'); 6795 } 6796 }); 6797 6798 // Fire dataLayer events 6799 document.addEventListener('form:aftersubmit', function (e) { 6800 console.log(e); 6801 if (e && e.detail.form_details && e.detail.response) { 6802 var form_details = e.detail.form_details; 6803 var response = e.detail.response; 6804 if (!response.status || response.status == 200) { 6805 // Step 1 - Mailer Code 6806 if (form_details.leadAction == 'offer_code') { 6807 window.dataLayer.push({ 6808 event: "mailer_code", 6809 lead_id: response.uuid 6810 }); 6811 } 6812 6813 // Step 2 - Debt Amount 6814 if (form_details.currentStep == 'debt-step') { 6815 window.dataLayer.push({ 6816 event: "leadDebtAmount", 6817 debt: response.debt 6818 }); 6819 } 6820 if (form_details.currentStep == 'contact-step') { 6821 window.dataLayer.push({ 6822 event: "leadInfo", 6823 lead_id: response.uuid 6824 }); 6825 } 6826 if (form_details.currentStep == 'zip-step') { 6827 window.dataLayer.push({ 6828 event: "zipcode", 6829 zip: response.zip 6830 }); 6831 } 6832 if (form_details.isCompleted) { 6833 window.dataLayer.push({ 6834 event: "leadGenerated", 6835 lead_id: response.uuid, 6836 firstName: response.firstName, 6837 lastName: response.lastName, 6838 phoneNumber: response.phone, 6839 leadStatus: response.quality, 6840 email: response.email, 6841 city: response.city, 6842 zip: response.zip, 6843 debt_amount: response.debt, 6844 credit_pull: response.debtCreditReport ? parseFloat(response.debtCreditReport) : 0.00 6845 }); 6846 } 6847 } 6848 } 6849 }); 6850 } 6851 }, { 6852 key: "init_popovers", 6853 value: function init_popovers() { 6854 window.Popover = bootstrap__WEBPACK_IMPORTED_MODULE_3__.Popover; 6855 var popoverTriggerList = document.querySelectorAll('[data-bs-toggle="popover"]'); 6856 var popoverList = _toConsumableArray(popoverTriggerList).map(function (popoverTriggerEl) { 6857 return new bootstrap__WEBPACK_IMPORTED_MODULE_3__.Popover(popoverTriggerEl, { 6858 html: true, 6859 sanitize: false 6860 }); 6861 }); 6862 } 6863 }]); 6864}(); 6865var app = new App(); 6866 6867/***/ }), 6868
6869/***/ "./src/js/header-opener.js": 6870/*!*********************************!*\ 6871 !*** ./src/js/header-opener.js ***! 6872 \*********************************/ 6873/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6874 6875__webpack_require__.r(__webpack_exports__); 6876/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6877/* harmony export */ HeaderOpener: function() { return /* binding */ HeaderOpener; } 6878/* harmony export */ }); 6879/** 6880 * Header Opener 6881 * 6882 */ 6883 6884 6885function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 6886function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6887function _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); } } 6888function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 6889function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 6890function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } 6891function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 6892var HeaderOpener = /*#__PURE__*/function () { 6893 function HeaderOpener() { 6894 _classCallCheck(this, HeaderOpener); 6895 this.init(); 6896 } 6897 return _createClass(HeaderOpener, [{ 6898 key: "init", 6899 value: function init() { 6900 var _this = this; 6901 if (!HeaderOpener.wrapper) return; 6902 HeaderOpener.wrapper.forEach(function (opener) { 6903 var imgOpener = opener.querySelector("#img-opener"); 6904 var closer = opener.querySelector("#closer"); 6905 _this.add_listeners(opener, imgOpener, closer); 6906 }); 6907 } 6908 }, { 6909 key: "add_listeners", 6910 value: function add_listeners(opener, imgOpener, closer) { 6911 imgOpener.addEventListener('click', function () { 6912 opener.classList.add('active'); 6913 }); 6914 closer.addEventListener('click', function () { 6915 opener.classList.remove('active'); 6916 }); 6917 } 6918 }]); 6919}(); 6920/** 6921 * Wrapper 6922 * 6923 * @var object 6924 */ 6925_defineProperty(HeaderOpener, "wrapper", document.querySelectorAll("header > .container > .opener")); 6926 6927/***/ }), 6928
6929/***/ "./src/js/progress-stars.js": 6930/*!**********************************!*\ 6931 !*** ./src/js/progress-stars.js ***! 6932 \**********************************/ 6933/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6934 6935__webpack_require__.r(__webpack_exports__); 6936/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6937/* harmony export */ ProgressStars: function() { return /* binding */ ProgressStars; } 6938/* harmony export */ }); 6939/** 6940 * Progress Stars 6941 * 6942 */ 6943 6944 6945function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 6946function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 6947function _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); } } 6948function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 6949function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } 6950function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 6951var ProgressStars = /*#__PURE__*/function () { 6952 function ProgressStars() { 6953 _classCallCheck(this, ProgressStars); 6954 this.init(); 6955 } 6956 return _createClass(ProgressStars, [{ 6957 key: "init", 6958 value: function init() { 6959 var progress_stars = document.querySelectorAll('.progress-stars'); 6960 progress_stars === null || progress_stars === void 0 || progress_stars.forEach(function (progress_star, key) { 6961 var _progress_star$getAtt, _progress_star$getAtt2; 6962 var value = progress_star.getAttribute('data-value'); 6963 var fillColor = progress_star.getAttribute('data-fill-color'); 6964 var strokeColor = (_progress_star$getAtt = progress_star.getAttribute('data-stroke-color')) !== null && _progress_star$getAtt !== void 0 ? _progress_star$getAtt : ''; 6965 var emptyColor = progress_star.getAttribute('data-empty-color'); 6966 var size = (_progress_star$getAtt2 = progress_star.getAttribute('data-size')) !== null && _progress_star$getAtt2 !== void 0 ? _progress_star$getAtt2 : '20'; 6967 var stars = [1, 2, 3, 4, 5].map(function (i) { 6968 // Default is filled star 6969 var offset = '100'; 6970 if (i - 1 >= value) { 6971 offset = 0; 6972 } else if (value < i) { 6973 offset = Math.floor(Math.abs(i - value - 1) * 100); 6974 } 6975 return "<svg width=\"".concat(size, "\" height=\"").concat(size, "\" viewBox=\"0 0 20 20\" stroke=\"").concat(strokeColor, "\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <defs>\n <linearGradient id=\"grad").concat(key, "-").concat(i, "\">\n <stop offset=\"").concat(offset, "%\" stop-color=\"").concat(fillColor, "\"/>\n <stop offset=\"").concat(offset, "%\" stop-color=\"").concat(emptyColor, "\"/>\n </linearGradient>\n </defs>\n <path d=\"M9.99982 0.954895L12.9387 6.90981L19.5104 7.86473L14.7551 12.5L15.8777 19.0451L9.99982 15.9549L4.12197 19.0451L5.24454 12.5L0.489258 7.86473L7.0609 6.90981L9.99982 0.954895Z\" fill=\"url(#grad").concat(key, "-").concat(i, ")\"/>\n </svg>"); 6976 }).join(''); 6977 progress_star.innerHTML = stars; 6978 }); 6979 } 6980 }]); 6981}(); 6982 6983/***/ }), 6984
6985/***/ "./src/js/swiper.js": 6986/*!**************************!*\ 6987 !*** ./src/js/swiper.js ***! 6988 \**************************/ 6989/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6990 6991__webpack_require__.r(__webpack_exports__); 6992/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6993/* harmony export */ SwiperControls: function() { return /* binding */ SwiperControls; } 6994/* harmony export */ }); 6995/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.mjs"); 6996/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "./node_modules/swiper/modules/index.mjs"); 6997/** 6998 * Swiper 6999 */ 7000 7001 7002 7003function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 7004function _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); } } 7005function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 7006function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } 7007function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 7008function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 7009 7010 7011var SwiperControls = /*#__PURE__*/_createClass( 7012/** 7013 * Constructor 7014 */ 7015function SwiperControls() { 7016 _classCallCheck(this, SwiperControls); 7017 window.addEventListener('load', function () { 7018 document.querySelectorAll('.swiper').forEach(function (item) { 7019 var _item$dataset$slidesT, _item$dataset$Mobiles; 7020 var loop = item.dataset.loop === 'true' ? true : false; 7021 var slides = (_item$dataset$slidesT = item.dataset.slidesToShow) !== null && _item$dataset$slidesT !== void 0 ? _item$dataset$slidesT : 1; 7022 var mobileSlides = (_item$dataset$Mobiles = item.dataset.MobileslidesToShow) !== null && _item$dataset$Mobiles !== void 0 ? _item$dataset$Mobiles : 1; 7023 new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](item, { 7024 modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Autoplay], 7025 slidesPerView: mobileSlides, 7026 spaceBetween: 20, 7027 loop: loop, 7028 navigation: { 7029 nextEl: '.swiper-button-next', 7030 prevEl: '.swiper-button-prev' 7031 }, 7032 pagination: { 7033 el: '.swiper-pagination', 7034 type: 'bullets', 7035 clickable: true 7036 }, 7037 breakpoints: { 7038 768: { 7039 slidesPerView: slides 7040 } 7041 } 7042 }); 7043 }); 7044 }); 7045}); 7046 7047/***/ }), 7048
7049/***/ "./src/js/testimonials.js": 7050/*!********************************!*\ 7051 !*** ./src/js/testimonials.js ***! 7052 \********************************/ 7053/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7054 7055__webpack_require__.r(__webpack_exports__); 7056/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7057/* harmony export */ Testimonial: function() { return /* binding */ Testimonial; } 7058/* harmony export */ }); 7059/* harmony import */ var _splidejs_splide__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @splidejs/splide */ "./node_modules/@splidejs/splide/dist/js/splide.esm.js"); 7060/** 7061 * Testimonials 7062 * 7063 */ 7064 7065 7066function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } 7067function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 7068function _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); } } 7069function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } 7070function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 7071function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } 7072function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } 7073 7074var Testimonial = /*#__PURE__*/function () { 7075 function Testimonial() { 7076 _classCallCheck(this, Testimonial); 7077 this.init(); 7078 } 7079 return _createClass(Testimonial, [{ 7080 key: "init", 7081 value: function init() { 7082 if (!Testimonial.wrapper) return; 7083 Testimonial.wrapper.forEach(function (slider) { 7084 var splide = new _splidejs_splide__WEBPACK_IMPORTED_MODULE_0__["default"](slider, { 7085 type: 'loop', 7086 arrows: false, 7087 perPage: '3', 7088 width: '100%', 7089 gap: '1rem', 7090 pagination: true, 7091 breakpoints: { 7092 1024: { 7093 perPage: '2' 7094 }, 7095 768: { 7096 perPage: '1', 7097 padding: { 7098 left: 0, 7099 right: 50 7100 } 7101 } 7102 } 7103 }); 7104 splide.mount(); 7105 }); 7106 } 7107 }]); 7108}(); 7109/** 7110 * Wrapper 7111 * 7112 * @var object 7113 */ 7114_defineProperty(Testimonial, "wrapper", document.querySelectorAll("section.splide")); 7115 7116/***/ }), 7117
vendor: 137,551 bytes, lines 7118-11591
7118/***/ "./node_modules/bootstrap/dist/js/bootstrap.esm.js": 7119/*!*********************************************************!*\ 7120 !*** ./node_modules/bootstrap/dist/js/bootstrap.esm.js ***! 7121 \*********************************************************/ 7122/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 7123 7124__webpack_require__.r(__webpack_exports__); 7125/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7126/* harmony export */ Alert: function() { return /* binding */ Alert; }, 7127/* harmony export */ Button: function() { return /* binding */ Button; }, 7128/* harmony export */ Carousel: function() { return /* binding */ Carousel; }, 7129/* harmony export */ Collapse: function() { return /* binding */ Collapse; }, 7130/* harmony export */ Dropdown: function() { return /* binding */ Dropdown; }, 7131/* harmony export */ Modal: function() { return /* binding */ Modal; }, 7132/* harmony export */ Offcanvas: function() { return /* binding */ Offcanvas; }, 7133/* harmony export */ Popover: function() { return /* binding */ Popover; }, 7134/* harmony export */ ScrollSpy: function() { return /* binding */ ScrollSpy; }, 7135/* harmony export */ Tab: function() { return /* binding */ Tab; }, 7136/* harmony export */ Toast: function() { return /* binding */ Toast; }, 7137/* harmony export */ Tooltip: function() { return /* binding */ Tooltip; } 7138/* harmony export */ }); 7139/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/index.js"); 7140/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ "./node_modules/@popperjs/core/lib/popper.js"); 7141/*! 7142 * Bootstrap v5.3.3 (https://getbootstrap.com/) 7143 * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 7144 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7145 */ 7146 7147 7148/** 7149 * -------------------------------------------------------------------------- 7150 * Bootstrap dom/data.js 7151 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7152 * -------------------------------------------------------------------------- 7153 */ 7154 7155/** 7156 * Constants 7157 */ 7158 7159const elementMap = new Map(); 7160const Data = { 7161 set(element, key, instance) { 7162 if (!elementMap.has(element)) { 7163 elementMap.set(element, new Map()); 7164 } 7165 const instanceMap = elementMap.get(element); 7166 7167 // make it clear we only want one instance per element 7168 // can be removed later when multiple key/instances are fine to be used 7169 if (!instanceMap.has(key) && instanceMap.size !== 0) { 7170 // eslint-disable-next-line no-console 7171 console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`); 7172 return; 7173 } 7174 instanceMap.set(key, instance); 7175 }, 7176 get(element, key) { 7177 if (elementMap.has(element)) { 7178 return elementMap.get(element).get(key) || null; 7179 } 7180 return null; 7181 }, 7182 remove(element, key) { 7183 if (!elementMap.has(element)) { 7184 return; 7185 } 7186 const instanceMap = elementMap.get(element); 7187 instanceMap.delete(key); 7188 7189 // free up element references if there are no instances left for an element 7190 if (instanceMap.size === 0) { 7191 elementMap.delete(element); 7192 } 7193 } 7194}; 7195 7196/** 7197 * -------------------------------------------------------------------------- 7198 * Bootstrap util/index.js 7199 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7200 * -------------------------------------------------------------------------- 7201 */ 7202 7203const MAX_UID = 1000000; 7204const MILLISECONDS_MULTIPLIER = 1000; 7205const TRANSITION_END = 'transitionend'; 7206 7207/** 7208 * Properly escape IDs selectors to handle weird IDs 7209 * @param {string} selector 7210 * @returns {string} 7211 */ 7212const parseSelector = selector => { 7213 if (selector && window.CSS && window.CSS.escape) { 7214 // document.querySelector needs escaping to handle IDs (html5+) containing for instance / 7215 selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`); 7216 } 7217 return selector; 7218}; 7219 7220// Shout-out Angus Croll (https://goo.gl/pxwQGp) 7221const toType = object => { 7222 if (object === null || object === undefined) { 7223 return `${object}`; 7224 } 7225 return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase(); 7226}; 7227 7228/** 7229 * Public Util API 7230 */ 7231 7232const getUID = prefix => { 7233 do { 7234 prefix += Math.floor(Math.random() * MAX_UID); 7235 } while (document.getElementById(prefix)); 7236 return prefix; 7237}; 7238const getTransitionDurationFromElement = element => { 7239 if (!element) { 7240 return 0; 7241 } 7242 7243 // Get transition-duration of the element 7244 let { 7245 transitionDuration, 7246 transitionDelay 7247 } = window.getComputedStyle(element); 7248 const floatTransitionDuration = Number.parseFloat(transitionDuration); 7249 const floatTransitionDelay = Number.parseFloat(transitionDelay); 7250 7251 // Return 0 if element or transition duration is not found 7252 if (!floatTransitionDuration && !floatTransitionDelay) { 7253 return 0; 7254 } 7255 7256 // If multiple durations are defined, take the first 7257 transitionDuration = transitionDuration.split(',')[0]; 7258 transitionDelay = transitionDelay.split(',')[0]; 7259 return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; 7260}; 7261const triggerTransitionEnd = element => { 7262 element.dispatchEvent(new Event(TRANSITION_END)); 7263}; 7264const isElement = object => { 7265 if (!object || typeof object !== 'object') { 7266 return false; 7267 } 7268 if (typeof object.jquery !== 'undefined') { 7269 object = object[0]; 7270 } 7271 return typeof object.nodeType !== 'undefined'; 7272}; 7273const getElement = object => { 7274 // it's a jQuery object or a node element 7275 if (isElement(object)) { 7276 return object.jquery ? object[0] : object; 7277 } 7278 if (typeof object === 'string' && object.length > 0) { 7279 return document.querySelector(parseSelector(object)); 7280 } 7281 return null; 7282}; 7283const isVisible = element => { 7284 if (!isElement(element) || element.getClientRects().length === 0) { 7285 return false; 7286 } 7287 const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; 7288 // Handle `details` element as its content may falsie appear visible when it is closed 7289 const closedDetails = element.closest('details:not([open])'); 7290 if (!closedDetails) { 7291 return elementIsVisible; 7292 } 7293 if (closedDetails !== element) { 7294 const summary = element.closest('summary'); 7295 if (summary && summary.parentNode !== closedDetails) { 7296 return false; 7297 } 7298 if (summary === null) { 7299 return false; 7300 } 7301 } 7302 return elementIsVisible; 7303}; 7304const isDisabled = element => { 7305 if (!element || element.nodeType !== Node.ELEMENT_NODE) { 7306 return true; 7307 } 7308 if (element.classList.contains('disabled')) { 7309 return true; 7310 } 7311 if (typeof element.disabled !== 'undefined') { 7312 return element.disabled; 7313 } 7314 return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'; 7315}; 7316const findShadowRoot = element => { 7317 if (!document.documentElement.attachShadow) { 7318 return null; 7319 } 7320 7321 // Can find the shadow root otherwise it'll return the document 7322 if (typeof element.getRootNode === 'function') { 7323 const root = element.getRootNode(); 7324 return root instanceof ShadowRoot ? root : null; 7325 } 7326 if (element instanceof ShadowRoot) { 7327 return element; 7328 } 7329 7330 // when we don't find a shadow root 7331 if (!element.parentNode) { 7332 return null; 7333 } 7334 return findShadowRoot(element.parentNode); 7335}; 7336const noop = () => {}; 7337 7338/** 7339 * Trick to restart an element's animation 7340 * 7341 * @param {HTMLElement} element 7342 * @return void 7343 * 7344 * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation 7345 */ 7346const reflow = element => { 7347 element.offsetHeight; // eslint-disable-line no-unused-expressions 7348}; 7349const getjQuery = () => { 7350 if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { 7351 return window.jQuery; 7352 } 7353 return null; 7354}; 7355const DOMContentLoadedCallbacks = []; 7356const onDOMContentLoaded = callback => { 7357 if (document.readyState === 'loading') { 7358 // add listener on the first call when the document is in loading state 7359 if (!DOMContentLoadedCallbacks.length) { 7360 document.addEventListener('DOMContentLoaded', () => { 7361 for (const callback of DOMContentLoadedCallbacks) { 7362 callback(); 7363 } 7364 }); 7365 } 7366 DOMContentLoadedCallbacks.push(callback); 7367 } else { 7368 callback(); 7369 } 7370}; 7371const isRTL = () => document.documentElement.dir === 'rtl'; 7372const defineJQueryPlugin = plugin => { 7373 onDOMContentLoaded(() => { 7374 const $ = getjQuery(); 7375 /* istanbul ignore if */ 7376 if ($) { 7377 const name = plugin.NAME; 7378 const JQUERY_NO_CONFLICT = $.fn[name]; 7379 $.fn[name] = plugin.jQueryInterface; 7380 $.fn[name].Constructor = plugin; 7381 $.fn[name].noConflict = () => { 7382 $.fn[name] = JQUERY_NO_CONFLICT; 7383 return plugin.jQueryInterface; 7384 }; 7385 } 7386 }); 7387}; 7388const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => { 7389 return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue; 7390}; 7391const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => { 7392 if (!waitForTransition) { 7393 execute(callback); 7394 return; 7395 } 7396 const durationPadding = 5; 7397 const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding; 7398 let called = false; 7399 const handler = ({ 7400 target 7401 }) => { 7402 if (target !== transitionElement) { 7403 return; 7404 } 7405 called = true; 7406 transitionElement.removeEventListener(TRANSITION_END, handler); 7407 execute(callback); 7408 }; 7409 transitionElement.addEventListener(TRANSITION_END, handler); 7410 setTimeout(() => { 7411 if (!called) { 7412 triggerTransitionEnd(transitionElement); 7413 } 7414 }, emulatedDuration); 7415}; 7416 7417/** 7418 * Return the previous/next element of a list. 7419 * 7420 * @param {array} list The list of elements 7421 * @param activeElement The active element 7422 * @param shouldGetNext Choose to get next or previous element 7423 * @param isCycleAllowed 7424 * @return {Element|elem} The proper element 7425 */ 7426const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => { 7427 const listLength = list.length; 7428 let index = list.indexOf(activeElement); 7429 7430 // if the element does not exist in the list return an element 7431 // depending on the direction and if cycle is allowed 7432 if (index === -1) { 7433 return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]; 7434 } 7435 index += shouldGetNext ? 1 : -1; 7436 if (isCycleAllowed) { 7437 index = (index + listLength) % listLength; 7438 } 7439 return list[Math.max(0, Math.min(index, listLength - 1))]; 7440}; 7441 7442/** 7443 * -------------------------------------------------------------------------- 7444 * Bootstrap dom/event-handler.js 7445 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7446 * -------------------------------------------------------------------------- 7447 */ 7448 7449 7450/** 7451 * Constants 7452 */ 7453 7454const namespaceRegex = /[^.]*(?=\..*)\.|.*/; 7455const stripNameRegex = /\..*/; 7456const stripUidRegex = /::\d+$/; 7457const eventRegistry = {}; // Events storage 7458let uidEvent = 1; 7459const customEvents = { 7460 mouseenter: 'mouseover', 7461 mouseleave: 'mouseout' 7462}; 7463const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']); 7464 7465/** 7466 * Private methods 7467 */ 7468 7469function makeEventUid(element, uid) { 7470 return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++; 7471} 7472function getElementEvents(element) { 7473 const uid = makeEventUid(element); 7474 element.uidEvent = uid; 7475 eventRegistry[uid] = eventRegistry[uid] || {}; 7476 return eventRegistry[uid]; 7477} 7478function bootstrapHandler(element, fn) { 7479 return function handler(event) { 7480 hydrateObj(event, { 7481 delegateTarget: element 7482 }); 7483 if (handler.oneOff) { 7484 EventHandler.off(element, event.type, fn); 7485 } 7486 return fn.apply(element, [event]); 7487 }; 7488} 7489function bootstrapDelegationHandler(element, selector, fn) { 7490 return function handler(event) { 7491 const domElements = element.querySelectorAll(selector); 7492 for (let { 7493 target 7494 } = event; target && target !== this; target = target.parentNode) { 7495 for (const domElement of domElements) { 7496 if (domElement !== target) { 7497 continue; 7498 } 7499 hydrateObj(event, { 7500 delegateTarget: target 7501 }); 7502 if (handler.oneOff) { 7503 EventHandler.off(element, event.type, selector, fn); 7504 } 7505 return fn.apply(target, [event]); 7506 } 7507 } 7508 }; 7509} 7510function findHandler(events, callable, delegationSelector = null) { 7511 return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector); 7512} 7513function normalizeParameters(originalTypeEvent, handler, delegationFunction) { 7514 const isDelegated = typeof handler === 'string'; 7515 // TODO: tooltip passes `false` instead of selector, so we need to check 7516 const callable = isDelegated ? delegationFunction : handler || delegationFunction; 7517 let typeEvent = getTypeEvent(originalTypeEvent); 7518 if (!nativeEvents.has(typeEvent)) { 7519 typeEvent = originalTypeEvent; 7520 } 7521 return [isDelegated, callable, typeEvent]; 7522} 7523function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) { 7524 if (typeof originalTypeEvent !== 'string' || !element) { 7525 return; 7526 } 7527 let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 7528 7529 // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position 7530 // this prevents the handler from being dispatched the same way as mouseover or mouseout does 7531 if (originalTypeEvent in customEvents) { 7532 const wrapFunction = fn => { 7533 return function (event) { 7534 if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) { 7535 return fn.call(this, event); 7536 } 7537 }; 7538 }; 7539 callable = wrapFunction(callable); 7540 } 7541 const events = getElementEvents(element); 7542 const handlers = events[typeEvent] || (events[typeEvent] = {}); 7543 const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null); 7544 if (previousFunction) { 7545 previousFunction.oneOff = previousFunction.oneOff && oneOff; 7546 return; 7547 } 7548 const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, '')); 7549 const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable); 7550 fn.delegationSelector = isDelegated ? handler : null; 7551 fn.callable = callable; 7552 fn.oneOff = oneOff; 7553 fn.uidEvent = uid; 7554 handlers[uid] = fn; 7555 element.addEventListener(typeEvent, fn, isDelegated); 7556} 7557function removeHandler(element, events, typeEvent, handler, delegationSelector) { 7558 const fn = findHandler(events[typeEvent], handler, delegationSelector); 7559 if (!fn) { 7560 return; 7561 } 7562 element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); 7563 delete events[typeEvent][fn.uidEvent]; 7564} 7565function removeNamespacedHandlers(element, events, typeEvent, namespace) { 7566 const storeElementEvent = events[typeEvent] || {}; 7567 for (const [handlerKey, event] of Object.entries(storeElementEvent)) { 7568 if (handlerKey.includes(namespace)) { 7569 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 7570 } 7571 } 7572} 7573function getTypeEvent(event) { 7574 // allow to get the native events from namespaced events ('click.bs.button' --> 'click') 7575 event = event.replace(stripNameRegex, ''); 7576 return customEvents[event] || event; 7577} 7578const EventHandler = { 7579 on(element, event, handler, delegationFunction) { 7580 addHandler(element, event, handler, delegationFunction, false); 7581 }, 7582 one(element, event, handler, delegationFunction) { 7583 addHandler(element, event, handler, delegationFunction, true); 7584 }, 7585 off(element, originalTypeEvent, handler, delegationFunction) { 7586 if (typeof originalTypeEvent !== 'string' || !element) { 7587 return; 7588 } 7589 const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); 7590 const inNamespace = typeEvent !== originalTypeEvent; 7591 const events = getElementEvents(element); 7592 const storeElementEvent = events[typeEvent] || {}; 7593 const isNamespace = originalTypeEvent.startsWith('.'); 7594 if (typeof callable !== 'undefined') { 7595 // Simplest case: handler is passed, remove that listener ONLY. 7596 if (!Object.keys(storeElementEvent).length) { 7597 return; 7598 } 7599 removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null); 7600 return; 7601 } 7602 if (isNamespace) { 7603 for (const elementEvent of Object.keys(events)) { 7604 removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1)); 7605 } 7606 } 7607 for (const [keyHandlers, event] of Object.entries(storeElementEvent)) { 7608 const handlerKey = keyHandlers.replace(stripUidRegex, ''); 7609 if (!inNamespace || originalTypeEvent.includes(handlerKey)) { 7610 removeHandler(element, events, typeEvent, event.callable, event.delegationSelector); 7611 } 7612 } 7613 }, 7614 trigger(element, event, args) { 7615 if (typeof event !== 'string' || !element) { 7616 return null; 7617 } 7618 const $ = getjQuery(); 7619 const typeEvent = getTypeEvent(event); 7620 const inNamespace = event !== typeEvent; 7621 let jQueryEvent = null; 7622 let bubbles = true; 7623 let nativeDispatch = true; 7624 let defaultPrevented = false; 7625 if (inNamespace && $) { 7626 jQueryEvent = $.Event(event, args); 7627 $(element).trigger(jQueryEvent); 7628 bubbles = !jQueryEvent.isPropagationStopped(); 7629 nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); 7630 defaultPrevented = jQueryEvent.isDefaultPrevented(); 7631 } 7632 const evt = hydrateObj(new Event(event, { 7633 bubbles, 7634 cancelable: true 7635 }), args); 7636 if (defaultPrevented) { 7637 evt.preventDefault(); 7638 } 7639 if (nativeDispatch) { 7640 element.dispatchEvent(evt); 7641 } 7642 if (evt.defaultPrevented && jQueryEvent) { 7643 jQueryEvent.preventDefault(); 7644 } 7645 return evt; 7646 } 7647}; 7648function hydrateObj(obj, meta = {}) { 7649 for (const [key, value] of Object.entries(meta)) { 7650 try { 7651 obj[key] = value; 7652 } catch (_unused) { 7653 Object.defineProperty(obj, key, { 7654 configurable: true, 7655 get() { 7656 return value; 7657 } 7658 }); 7659 } 7660 } 7661 return obj; 7662} 7663 7664/** 7665 * -------------------------------------------------------------------------- 7666 * Bootstrap dom/manipulator.js 7667 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7668 * -------------------------------------------------------------------------- 7669 */ 7670 7671function normalizeData(value) { 7672 if (value === 'true') { 7673 return true; 7674 } 7675 if (value === 'false') { 7676 return false; 7677 } 7678 if (value === Number(value).toString()) { 7679 return Number(value); 7680 } 7681 if (value === '' || value === 'null') { 7682 return null; 7683 } 7684 if (typeof value !== 'string') { 7685 return value; 7686 } 7687 try { 7688 return JSON.parse(decodeURIComponent(value)); 7689 } catch (_unused) { 7690 return value; 7691 } 7692} 7693function normalizeDataKey(key) { 7694 return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`); 7695} 7696const Manipulator = { 7697 setDataAttribute(element, key, value) { 7698 element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value); 7699 }, 7700 removeDataAttribute(element, key) { 7701 element.removeAttribute(`data-bs-${normalizeDataKey(key)}`); 7702 }, 7703 getDataAttributes(element) { 7704 if (!element) { 7705 return {}; 7706 } 7707 const attributes = {}; 7708 const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig')); 7709 for (const key of bsKeys) { 7710 let pureKey = key.replace(/^bs/, ''); 7711 pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length); 7712 attributes[pureKey] = normalizeData(element.dataset[key]); 7713 } 7714 return attributes; 7715 }, 7716 getDataAttribute(element, key) { 7717 return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`)); 7718 } 7719}; 7720 7721/** 7722 * -------------------------------------------------------------------------- 7723 * Bootstrap util/config.js 7724 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7725 * -------------------------------------------------------------------------- 7726 */ 7727 7728 7729/** 7730 * Class definition 7731 */ 7732 7733class Config { 7734 // Getters 7735 static get Default() { 7736 return {}; 7737 } 7738 static get DefaultType() { 7739 return {}; 7740 } 7741 static get NAME() { 7742 throw new Error('You have to implement the static method "NAME", for each component!'); 7743 } 7744 _getConfig(config) { 7745 config = this._mergeConfigObj(config); 7746 config = this._configAfterMerge(config); 7747 this._typeCheckConfig(config); 7748 return config; 7749 } 7750 _configAfterMerge(config) { 7751 return config; 7752 } 7753 _mergeConfigObj(config, element) { 7754 const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse 7755 7756 return { 7757 ...this.constructor.Default, 7758 ...(typeof jsonConfig === 'object' ? jsonConfig : {}), 7759 ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}), 7760 ...(typeof config === 'object' ? config : {}) 7761 }; 7762 } 7763 _typeCheckConfig(config, configTypes = this.constructor.DefaultType) { 7764 for (const [property, expectedTypes] of Object.entries(configTypes)) { 7765 const value = config[property]; 7766 const valueType = isElement(value) ? 'element' : toType(value); 7767 if (!new RegExp(expectedTypes).test(valueType)) { 7768 throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`); 7769 } 7770 } 7771 } 7772} 7773 7774/** 7775 * -------------------------------------------------------------------------- 7776 * Bootstrap base-component.js 7777 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7778 * -------------------------------------------------------------------------- 7779 */ 7780 7781 7782/** 7783 * Constants 7784 */ 7785 7786const VERSION = '5.3.3'; 7787 7788/** 7789 * Class definition 7790 */ 7791 7792class BaseComponent extends Config { 7793 constructor(element, config) { 7794 super(); 7795 element = getElement(element); 7796 if (!element) { 7797 return; 7798 } 7799 this._element = element; 7800 this._config = this._getConfig(config); 7801 Data.set(this._element, this.constructor.DATA_KEY, this); 7802 } 7803 7804 // Public 7805 dispose() { 7806 Data.remove(this._element, this.constructor.DATA_KEY); 7807 EventHandler.off(this._element, this.constructor.EVENT_KEY); 7808 for (const propertyName of Object.getOwnPropertyNames(this)) { 7809 this[propertyName] = null; 7810 } 7811 } 7812 _queueCallback(callback, element, isAnimated = true) { 7813 executeAfterTransition(callback, element, isAnimated); 7814 } 7815 _getConfig(config) { 7816 config = this._mergeConfigObj(config, this._element); 7817 config = this._configAfterMerge(config); 7818 this._typeCheckConfig(config); 7819 return config; 7820 } 7821 7822 // Static 7823 static getInstance(element) { 7824 return Data.get(getElement(element), this.DATA_KEY); 7825 } 7826 static getOrCreateInstance(element, config = {}) { 7827 return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null); 7828 } 7829 static get VERSION() { 7830 return VERSION; 7831 } 7832 static get DATA_KEY() { 7833 return `bs.${this.NAME}`; 7834 } 7835 static get EVENT_KEY() { 7836 return `.${this.DATA_KEY}`; 7837 } 7838 static eventName(name) { 7839 return `${name}${this.EVENT_KEY}`; 7840 } 7841} 7842 7843/** 7844 * -------------------------------------------------------------------------- 7845 * Bootstrap dom/selector-engine.js 7846 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7847 * -------------------------------------------------------------------------- 7848 */ 7849 7850const getSelector = element => { 7851 let selector = element.getAttribute('data-bs-target'); 7852 if (!selector || selector === '#') { 7853 let hrefAttribute = element.getAttribute('href'); 7854 7855 // The only valid content that could double as a selector are IDs or classes, 7856 // so everything starting with `#` or `.`. If a "real" URL is used as the selector, 7857 // `document.querySelector` will rightfully complain it is invalid. 7858 // See https://github.com/twbs/bootstrap/issues/32273 7859 if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) { 7860 return null; 7861 } 7862 7863 // Just in case some CMS puts out a full URL with the anchor appended 7864 if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) { 7865 hrefAttribute = `#${hrefAttribute.split('#')[1]}`; 7866 } 7867 selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null; 7868 } 7869 return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null; 7870}; 7871const SelectorEngine = { 7872 find(selector, element = document.documentElement) { 7873 return [].concat(...Element.prototype.querySelectorAll.call(element, selector)); 7874 }, 7875 findOne(selector, element = document.documentElement) { 7876 return Element.prototype.querySelector.call(element, selector); 7877 }, 7878 children(element, selector) { 7879 return [].concat(...element.children).filter(child => child.matches(selector)); 7880 }, 7881 parents(element, selector) { 7882 const parents = []; 7883 let ancestor = element.parentNode.closest(selector); 7884 while (ancestor) { 7885 parents.push(ancestor); 7886 ancestor = ancestor.parentNode.closest(selector); 7887 } 7888 return parents; 7889 }, 7890 prev(element, selector) { 7891 let previous = element.previousElementSibling; 7892 while (previous) { 7893 if (previous.matches(selector)) { 7894 return [previous]; 7895 } 7896 previous = previous.previousElementSibling; 7897 } 7898 return []; 7899 }, 7900 // TODO: this is now unused; remove later along with prev() 7901 next(element, selector) { 7902 let next = element.nextElementSibling; 7903 while (next) { 7904 if (next.matches(selector)) { 7905 return [next]; 7906 } 7907 next = next.nextElementSibling; 7908 } 7909 return []; 7910 }, 7911 focusableChildren(element) { 7912 const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(','); 7913 return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el)); 7914 }, 7915 getSelectorFromElement(element) { 7916 const selector = getSelector(element); 7917 if (selector) { 7918 return SelectorEngine.findOne(selector) ? selector : null; 7919 } 7920 return null; 7921 }, 7922 getElementFromSelector(element) { 7923 const selector = getSelector(element); 7924 return selector ? SelectorEngine.findOne(selector) : null; 7925 }, 7926 getMultipleElementsFromSelector(element) { 7927 const selector = getSelector(element); 7928 return selector ? SelectorEngine.find(selector) : []; 7929 } 7930}; 7931 7932/** 7933 * -------------------------------------------------------------------------- 7934 * Bootstrap util/component-functions.js 7935 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7936 * -------------------------------------------------------------------------- 7937 */ 7938 7939const enableDismissTrigger = (component, method = 'hide') => { 7940 const clickEvent = `click.dismiss${component.EVENT_KEY}`; 7941 const name = component.NAME; 7942 EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) { 7943 if (['A', 'AREA'].includes(this.tagName)) { 7944 event.preventDefault(); 7945 } 7946 if (isDisabled(this)) { 7947 return; 7948 } 7949 const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`); 7950 const instance = component.getOrCreateInstance(target); 7951 7952 // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method 7953 instance[method](); 7954 }); 7955}; 7956 7957/** 7958 * -------------------------------------------------------------------------- 7959 * Bootstrap alert.js 7960 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 7961 * -------------------------------------------------------------------------- 7962 */ 7963 7964 7965/** 7966 * Constants 7967 */ 7968 7969const NAME$f = 'alert'; 7970const DATA_KEY$a = 'bs.alert'; 7971const EVENT_KEY$b = `.${DATA_KEY$a}`; 7972const EVENT_CLOSE = `close${EVENT_KEY$b}`; 7973const EVENT_CLOSED = `closed${EVENT_KEY$b}`; 7974const CLASS_NAME_FADE$5 = 'fade'; 7975const CLASS_NAME_SHOW$8 = 'show'; 7976 7977/** 7978 * Class definition 7979 */ 7980 7981class Alert extends BaseComponent { 7982 // Getters 7983 static get NAME() { 7984 return NAME$f; 7985 } 7986 7987 // Public 7988 close() { 7989 const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE); 7990 if (closeEvent.defaultPrevented) { 7991 return; 7992 } 7993 this._element.classList.remove(CLASS_NAME_SHOW$8); 7994 const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5); 7995 this._queueCallback(() => this._destroyElement(), this._element, isAnimated); 7996 } 7997 7998 // Private 7999 _destroyElement() { 8000 this._element.remove(); 8001 EventHandler.trigger(this._element, EVENT_CLOSED); 8002 this.dispose(); 8003 } 8004 8005 // Static 8006 static jQueryInterface(config) { 8007 return this.each(function () { 8008 const data = Alert.getOrCreateInstance(this); 8009 if (typeof config !== 'string') { 8010 return; 8011 } 8012 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 8013 throw new TypeError(`No method named "${config}"`); 8014 } 8015 data[config](this); 8016 }); 8017 } 8018} 8019 8020/** 8021 * Data API implementation 8022 */ 8023 8024enableDismissTrigger(Alert, 'close'); 8025 8026/** 8027 * jQuery 8028 */ 8029 8030defineJQueryPlugin(Alert); 8031 8032/** 8033 * -------------------------------------------------------------------------- 8034 * Bootstrap button.js 8035 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 8036 * -------------------------------------------------------------------------- 8037 */ 8038 8039 8040/** 8041 * Constants 8042 */ 8043 8044const NAME$e = 'button'; 8045const DATA_KEY$9 = 'bs.button'; 8046const EVENT_KEY$a = `.${DATA_KEY$9}`; 8047const DATA_API_KEY$6 = '.data-api'; 8048const CLASS_NAME_ACTIVE$3 = 'active'; 8049const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]'; 8050const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`; 8051 8052/** 8053 * Class definition 8054 */ 8055 8056class Button extends BaseComponent { 8057 // Getters 8058 static get NAME() { 8059 return NAME$e; 8060 } 8061 8062 // Public 8063 toggle() { 8064 // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method 8065 this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3)); 8066 } 8067 8068 // Static 8069 static jQueryInterface(config) { 8070 return this.each(function () { 8071 const data = Button.getOrCreateInstance(this); 8072 if (config === 'toggle') { 8073 data[config](); 8074 } 8075 }); 8076 } 8077} 8078 8079/** 8080 * Data API implementation 8081 */ 8082 8083EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => { 8084 event.preventDefault(); 8085 const button = event.target.closest(SELECTOR_DATA_TOGGLE$5); 8086 const data = Button.getOrCreateInstance(button); 8087 data.toggle(); 8088}); 8089 8090/** 8091 * jQuery 8092 */ 8093 8094defineJQueryPlugin(Button); 8095 8096/** 8097 * -------------------------------------------------------------------------- 8098 * Bootstrap util/swipe.js 8099 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 8100 * -------------------------------------------------------------------------- 8101 */ 8102 8103 8104/** 8105 * Constants 8106 */ 8107 8108const NAME$d = 'swipe'; 8109const EVENT_KEY$9 = '.bs.swipe'; 8110const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`; 8111const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`; 8112const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`; 8113const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`; 8114const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`; 8115const POINTER_TYPE_TOUCH = 'touch'; 8116const POINTER_TYPE_PEN = 'pen'; 8117const CLASS_NAME_POINTER_EVENT = 'pointer-event'; 8118const SWIPE_THRESHOLD = 40; 8119const Default$c = { 8120 endCallback: null, 8121 leftCallback: null, 8122 rightCallback: null 8123}; 8124const DefaultType$c = { 8125 endCallback: '(function|null)', 8126 leftCallback: '(function|null)', 8127 rightCallback: '(function|null)' 8128}; 8129 8130/** 8131 * Class definition 8132 */ 8133 8134class Swipe extends Config { 8135 constructor(element, config) { 8136 super(); 8137 this._element = element; 8138 if (!element || !Swipe.isSupported()) { 8139 return; 8140 } 8141 this._config = this._getConfig(config); 8142 this._deltaX = 0; 8143 this._supportPointerEvents = Boolean(window.PointerEvent); 8144 this._initEvents(); 8145 } 8146 8147 // Getters 8148 static get Default() { 8149 return Default$c; 8150 } 8151 static get DefaultType() { 8152 return DefaultType$c; 8153 } 8154 static get NAME() { 8155 return NAME$d; 8156 } 8157 8158 // Public 8159 dispose() { 8160 EventHandler.off(this._element, EVENT_KEY$9); 8161 } 8162 8163 // Private 8164 _start(event) { 8165 if (!this._supportPointerEvents) { 8166 this._deltaX = event.touches[0].clientX; 8167 return; 8168 } 8169 if (this._eventIsPointerPenTouch(event)) { 8170 this._deltaX = event.clientX; 8171 } 8172 } 8173 _end(event) { 8174 if (this._eventIsPointerPenTouch(event)) { 8175 this._deltaX = event.clientX - this._deltaX; 8176 } 8177 this._handleSwipe(); 8178 execute(this._config.endCallback); 8179 } 8180 _move(event) { 8181 this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX; 8182 } 8183 _handleSwipe() { 8184 const absDeltaX = Math.abs(this._deltaX); 8185 if (absDeltaX <= SWIPE_THRESHOLD) { 8186 return; 8187 } 8188 const direction = absDeltaX / this._deltaX; 8189 this._deltaX = 0; 8190 if (!direction) { 8191 return; 8192 } 8193 execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback); 8194 } 8195 _initEvents() { 8196 if (this._supportPointerEvents) { 8197 EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event)); 8198 EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event)); 8199 this._element.classList.add(CLASS_NAME_POINTER_EVENT); 8200 } else { 8201 EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event)); 8202 EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event)); 8203 EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event)); 8204 } 8205 } 8206 _eventIsPointerPenTouch(event) { 8207 return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH); 8208 } 8209 8210 // Static 8211 static isSupported() { 8212 return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; 8213 } 8214} 8215 8216/** 8217 * -------------------------------------------------------------------------- 8218 * Bootstrap carousel.js 8219 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 8220 * -------------------------------------------------------------------------- 8221 */ 8222 8223 8224/** 8225 * Constants 8226 */ 8227 8228const NAME$c = 'carousel'; 8229const DATA_KEY$8 = 'bs.carousel'; 8230const EVENT_KEY$8 = `.${DATA_KEY$8}`; 8231const DATA_API_KEY$5 = '.data-api'; 8232const ARROW_LEFT_KEY$1 = 'ArrowLeft'; 8233const ARROW_RIGHT_KEY$1 = 'ArrowRight'; 8234const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch 8235 8236const ORDER_NEXT = 'next'; 8237const ORDER_PREV = 'prev'; 8238const DIRECTION_LEFT = 'left'; 8239const DIRECTION_RIGHT = 'right'; 8240const EVENT_SLIDE = `slide${EVENT_KEY$8}`; 8241const EVENT_SLID = `slid${EVENT_KEY$8}`; 8242const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`; 8243const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`; 8244const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`; 8245const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`; 8246const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`; 8247const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`; 8248const CLASS_NAME_CAROUSEL = 'carousel'; 8249const CLASS_NAME_ACTIVE$2 = 'active'; 8250const CLASS_NAME_SLIDE = 'slide'; 8251const CLASS_NAME_END = 'carousel-item-end'; 8252const CLASS_NAME_START = 'carousel-item-start'; 8253const CLASS_NAME_NEXT = 'carousel-item-next'; 8254const CLASS_NAME_PREV = 'carousel-item-prev'; 8255const SELECTOR_ACTIVE = '.active'; 8256const SELECTOR_ITEM = '.carousel-item'; 8257const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM; 8258const SELECTOR_ITEM_IMG = '.carousel-item img'; 8259const SELECTOR_INDICATORS = '.carousel-indicators'; 8260const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'; 8261const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]'; 8262const KEY_TO_DIRECTION = { 8263 [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT, 8264 [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT 8265}; 8266const Default$b = { 8267 interval: 5000, 8268 keyboard: true, 8269 pause: 'hover', 8270 ride: false, 8271 touch: true, 8272 wrap: true 8273}; 8274const DefaultType$b = { 8275 interval: '(number|boolean)', 8276 // TODO:v6 remove boolean support 8277 keyboard: 'boolean', 8278 pause: '(string|boolean)', 8279 ride: '(boolean|string)', 8280 touch: 'boolean', 8281 wrap: 'boolean' 8282}; 8283 8284/** 8285 * Class definition 8286 */ 8287 8288class Carousel extends BaseComponent { 8289 constructor(element, config) { 8290 super(element, config); 8291 this._interval = null; 8292 this._activeElement = null; 8293 this._isSliding = false; 8294 this.touchTimeout = null; 8295 this._swipeHelper = null; 8296 this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element); 8297 this._addEventListeners(); 8298 if (this._config.ride === CLASS_NAME_CAROUSEL) { 8299 this.cycle(); 8300 } 8301 } 8302 8303 // Getters 8304 static get Default() { 8305 return Default$b; 8306 } 8307 static get DefaultType() { 8308 return DefaultType$b; 8309 } 8310 static get NAME() { 8311 return NAME$c; 8312 } 8313 8314 // Public 8315 next() { 8316 this._slide(ORDER_NEXT); 8317 } 8318 nextWhenVisible() { 8319 // FIXME TODO use `document.visibilityState` 8320 // Don't call next when the page isn't visible 8321 // or the carousel or its parent isn't visible 8322 if (!document.hidden && isVisible(this._element)) { 8323 this.next(); 8324 } 8325 } 8326 prev() { 8327 this._slide(ORDER_PREV); 8328 } 8329 pause() { 8330 if (this._isSliding) { 8331 triggerTransitionEnd(this._element); 8332 } 8333 this._clearInterval(); 8334 } 8335 cycle() { 8336 this._clearInterval(); 8337 this._updateInterval(); 8338 this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval); 8339 } 8340 _maybeEnableCycle() { 8341 if (!this._config.ride) { 8342 return; 8343 } 8344 if (this._isSliding) { 8345 EventHandler.one(this._element, EVENT_SLID, () => this.cycle()); 8346 return; 8347 } 8348 this.cycle(); 8349 } 8350 to(index) { 8351 const items = this._getItems(); 8352 if (index > items.length - 1 || index < 0) { 8353 return; 8354 } 8355 if (this._isSliding) { 8356 EventHandler.one(this._element, EVENT_SLID, () => this.to(index)); 8357 return; 8358 } 8359 const activeIndex = this._getItemIndex(this._getActive()); 8360 if (activeIndex === index) { 8361 return; 8362 } 8363 const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV; 8364 this._slide(order, items[index]); 8365 } 8366 dispose() { 8367 if (this._swipeHelper) { 8368 this._swipeHelper.dispose(); 8369 } 8370 super.dispose(); 8371 } 8372 8373 // Private 8374 _configAfterMerge(config) { 8375 config.defaultInterval = config.interval; 8376 return config; 8377 } 8378 _addEventListeners() { 8379 if (this._config.keyboard) { 8380 EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event)); 8381 } 8382 if (this._config.pause === 'hover') { 8383 EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause()); 8384 EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle()); 8385 } 8386 if (this._config.touch && Swipe.isSupported()) { 8387 this._addTouchEventListeners(); 8388 } 8389 } 8390 _addTouchEventListeners() { 8391 for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) { 8392 EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault()); 8393 } 8394 const endCallBack = () => { 8395 if (this._config.pause !== 'hover') { 8396 return; 8397 } 8398 8399 // If it's a touch-enabled device, mouseenter/leave are fired as 8400 // part of the mouse compatibility events on first tap - the carousel 8401 // would stop cycling until user tapped out of it; 8402 // here, we listen for touchend, explicitly pause the carousel 8403 // (as if it's the second time we tap on it, mouseenter compat event 8404 // is NOT fired) and after a timeout (to allow for mouse compatibility 8405 // events to fire) we explicitly restart cycling 8406 8407 this.pause(); 8408 if (this.touchTimeout) { 8409 clearTimeout(this.touchTimeout); 8410 } 8411 this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval); 8412 }; 8413 const swipeConfig = { 8414 leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)), 8415 rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)), 8416 endCallback: endCallBack 8417 }; 8418 this._swipeHelper = new Swipe(this._element, swipeConfig); 8419 } 8420 _keydown(event) { 8421 if (/input|textarea/i.test(event.target.tagName)) { 8422 return; 8423 } 8424 const direction = KEY_TO_DIRECTION[event.key]; 8425 if (direction) { 8426 event.preventDefault(); 8427 this._slide(this._directionToOrder(direction)); 8428 } 8429 } 8430 _getItemIndex(element) { 8431 return this._getItems().indexOf(element); 8432 } 8433 _setActiveIndicatorElement(index) { 8434 if (!this._indicatorsElement) { 8435 return; 8436 } 8437 const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement); 8438 activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2); 8439 activeIndicator.removeAttribute('aria-current'); 8440 const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement); 8441 if (newActiveIndicator) { 8442 newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2); 8443 newActiveIndicator.setAttribute('aria-current', 'true'); 8444 } 8445 } 8446 _updateInterval() { 8447 const element = this._activeElement || this._getActive(); 8448 if (!element) { 8449 return; 8450 } 8451 const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10); 8452 this._config.interval = elementInterval || this._config.defaultInterval; 8453 } 8454 _slide(order, element = null) { 8455 if (this._isSliding) { 8456 return; 8457 } 8458 const activeElement = this._getActive(); 8459 const isNext = order === ORDER_NEXT; 8460 const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap); 8461 if (nextElement === activeElement) { 8462 return; 8463 } 8464 const nextElementIndex = this._getItemIndex(nextElement); 8465 const triggerEvent = eventName => { 8466 return EventHandler.trigger(this._element, eventName, { 8467 relatedTarget: nextElement, 8468 direction: this._orderToDirection(order), 8469 from: this._getItemIndex(activeElement), 8470 to: nextElementIndex 8471 }); 8472 }; 8473 const slideEvent = triggerEvent(EVENT_SLIDE); 8474 if (slideEvent.defaultPrevented) { 8475 return; 8476 } 8477 if (!activeElement || !nextElement) { 8478 // Some weirdness is happening, so we bail 8479 // TODO: change tests that use empty divs to avoid this check 8480 return; 8481 } 8482 const isCycling = Boolean(this._interval); 8483 this.pause(); 8484 this._isSliding = true; 8485 this._setActiveIndicatorElement(nextElementIndex); 8486 this._activeElement = nextElement; 8487 const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END; 8488 const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV; 8489 nextElement.classList.add(orderClassName); 8490 reflow(nextElement); 8491 activeElement.classList.add(directionalClassName); 8492 nextElement.classList.add(directionalClassName); 8493 const completeCallBack = () => { 8494 nextElement.classList.remove(directionalClassName, orderClassName); 8495 nextElement.classList.add(CLASS_NAME_ACTIVE$2); 8496 activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName); 8497 this._isSliding = false; 8498 triggerEvent(EVENT_SLID); 8499 }; 8500 this._queueCallback(completeCallBack, activeElement, this._isAnimated()); 8501 if (isCycling) { 8502 this.cycle(); 8503 } 8504 } 8505 _isAnimated() { 8506 return this._element.classList.contains(CLASS_NAME_SLIDE); 8507 } 8508 _getActive() { 8509 return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element); 8510 } 8511 _getItems() { 8512 return SelectorEngine.find(SELECTOR_ITEM, this._element); 8513 } 8514 _clearInterval() { 8515 if (this._interval) { 8516 clearInterval(this._interval); 8517 this._interval = null; 8518 } 8519 } 8520 _directionToOrder(direction) { 8521 if (isRTL()) { 8522 return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT; 8523 } 8524 return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV; 8525 } 8526 _orderToDirection(order) { 8527 if (isRTL()) { 8528 return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT; 8529 } 8530 return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT; 8531 } 8532 8533 // Static 8534 static jQueryInterface(config) { 8535 return this.each(function () { 8536 const data = Carousel.getOrCreateInstance(this, config); 8537 if (typeof config === 'number') { 8538 data.to(config); 8539 return; 8540 } 8541 if (typeof config === 'string') { 8542 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 8543 throw new TypeError(`No method named "${config}"`); 8544 } 8545 data[config](); 8546 } 8547 }); 8548 } 8549} 8550 8551/** 8552 * Data API implementation 8553 */ 8554 8555EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) { 8556 const target = SelectorEngine.getElementFromSelector(this); 8557 if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) { 8558 return; 8559 } 8560 event.preventDefault(); 8561 const carousel = Carousel.getOrCreateInstance(target); 8562 const slideIndex = this.getAttribute('data-bs-slide-to'); 8563 if (slideIndex) { 8564 carousel.to(slideIndex); 8565 carousel._maybeEnableCycle(); 8566 return; 8567 } 8568 if (Manipulator.getDataAttribute(this, 'slide') === 'next') { 8569 carousel.next(); 8570 carousel._maybeEnableCycle(); 8571 return; 8572 } 8573 carousel.prev(); 8574 carousel._maybeEnableCycle(); 8575}); 8576EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => { 8577 const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE); 8578 for (const carousel of carousels) { 8579 Carousel.getOrCreateInstance(carousel); 8580 } 8581}); 8582 8583/** 8584 * jQuery 8585 */ 8586 8587defineJQueryPlugin(Carousel); 8588 8589/** 8590 * -------------------------------------------------------------------------- 8591 * Bootstrap collapse.js 8592 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 8593 * -------------------------------------------------------------------------- 8594 */ 8595 8596 8597/** 8598 * Constants 8599 */ 8600 8601const NAME$b = 'collapse'; 8602const DATA_KEY$7 = 'bs.collapse'; 8603const EVENT_KEY$7 = `.${DATA_KEY$7}`; 8604const DATA_API_KEY$4 = '.data-api'; 8605const EVENT_SHOW$6 = `show${EVENT_KEY$7}`; 8606const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`; 8607const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`; 8608const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`; 8609const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`; 8610const CLASS_NAME_SHOW$7 = 'show'; 8611const CLASS_NAME_COLLAPSE = 'collapse'; 8612const CLASS_NAME_COLLAPSING = 'collapsing'; 8613const CLASS_NAME_COLLAPSED = 'collapsed'; 8614const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`; 8615const CLASS_NAME_HORIZONTAL = 'collapse-horizontal'; 8616const WIDTH = 'width'; 8617const HEIGHT = 'height'; 8618const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'; 8619const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]'; 8620const Default$a = { 8621 parent: null, 8622 toggle: true 8623}; 8624const DefaultType$a = { 8625 parent: '(null|element)', 8626 toggle: 'boolean' 8627}; 8628 8629/** 8630 * Class definition 8631 */ 8632 8633class Collapse extends BaseComponent { 8634 constructor(element, config) { 8635 super(element, config); 8636 this._isTransitioning = false; 8637 this._triggerArray = []; 8638 const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4); 8639 for (const elem of toggleList) { 8640 const selector = SelectorEngine.getSelectorFromElement(elem); 8641 const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element); 8642 if (selector !== null && filterElement.length) { 8643 this._triggerArray.push(elem); 8644 } 8645 } 8646 this._initializeChildren(); 8647 if (!this._config.parent) { 8648 this._addAriaAndCollapsedClass(this._triggerArray, this._isShown()); 8649 } 8650 if (this._config.toggle) { 8651 this.toggle(); 8652 } 8653 } 8654 8655 // Getters 8656 static get Default() { 8657 return Default$a; 8658 } 8659 static get DefaultType() { 8660 return DefaultType$a; 8661 } 8662 static get NAME() { 8663 return NAME$b; 8664 } 8665 8666 // Public 8667 toggle() { 8668 if (this._isShown()) { 8669 this.hide(); 8670 } else { 8671 this.show(); 8672 } 8673 } 8674 show() { 8675 if (this._isTransitioning || this._isShown()) { 8676 return; 8677 } 8678 let activeChildren = []; 8679 8680 // find active children 8681 if (this._config.parent) { 8682 activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, { 8683 toggle: false 8684 })); 8685 } 8686 if (activeChildren.length && activeChildren[0]._isTransitioning) { 8687 return; 8688 } 8689 const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6); 8690 if (startEvent.defaultPrevented) { 8691 return; 8692 } 8693 for (const activeInstance of activeChildren) { 8694 activeInstance.hide(); 8695 } 8696 const dimension = this._getDimension(); 8697 this._element.classList.remove(CLASS_NAME_COLLAPSE); 8698 this._element.classList.add(CLASS_NAME_COLLAPSING); 8699 this._element.style[dimension] = 0; 8700 this._addAriaAndCollapsedClass(this._triggerArray, true); 8701 this._isTransitioning = true; 8702 const complete = () => { 8703 this._isTransitioning = false; 8704 this._element.classList.remove(CLASS_NAME_COLLAPSING); 8705 this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 8706 this._element.style[dimension] = ''; 8707 EventHandler.trigger(this._element, EVENT_SHOWN$6); 8708 }; 8709 const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); 8710 const scrollSize = `scroll${capitalizedDimension}`; 8711 this._queueCallback(complete, this._element, true); 8712 this._element.style[dimension] = `${this._element[scrollSize]}px`; 8713 } 8714 hide() { 8715 if (this._isTransitioning || !this._isShown()) { 8716 return; 8717 } 8718 const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6); 8719 if (startEvent.defaultPrevented) { 8720 return; 8721 } 8722 const dimension = this._getDimension(); 8723 this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`; 8724 reflow(this._element); 8725 this._element.classList.add(CLASS_NAME_COLLAPSING); 8726 this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7); 8727 for (const trigger of this._triggerArray) { 8728 const element = SelectorEngine.getElementFromSelector(trigger); 8729 if (element && !this._isShown(element)) { 8730 this._addAriaAndCollapsedClass([trigger], false); 8731 } 8732 } 8733 this._isTransitioning = true; 8734 const complete = () => { 8735 this._isTransitioning = false; 8736 this._element.classList.remove(CLASS_NAME_COLLAPSING); 8737 this._element.classList.add(CLASS_NAME_COLLAPSE); 8738 EventHandler.trigger(this._element, EVENT_HIDDEN$6); 8739 }; 8740 this._element.style[dimension] = ''; 8741 this._queueCallback(complete, this._element, true); 8742 } 8743 _isShown(element = this._element) { 8744 return element.classList.contains(CLASS_NAME_SHOW$7); 8745 } 8746 8747 // Private 8748 _configAfterMerge(config) { 8749 config.toggle = Boolean(config.toggle); // Coerce string values 8750 config.parent = getElement(config.parent); 8751 return config; 8752 } 8753 _getDimension() { 8754 return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT; 8755 } 8756 _initializeChildren() { 8757 if (!this._config.parent) { 8758 return; 8759 } 8760 const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4); 8761 for (const element of children) { 8762 const selected = SelectorEngine.getElementFromSelector(element); 8763 if (selected) { 8764 this._addAriaAndCollapsedClass([element], this._isShown(selected)); 8765 } 8766 } 8767 } 8768 _getFirstLevelChildren(selector) { 8769 const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); 8770 // remove children if greater depth 8771 return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element)); 8772 } 8773 _addAriaAndCollapsedClass(triggerArray, isOpen) { 8774 if (!triggerArray.length) { 8775 return; 8776 } 8777 for (const element of triggerArray) { 8778 element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen); 8779 element.setAttribute('aria-expanded', isOpen); 8780 } 8781 } 8782 8783 // Static 8784 static jQueryInterface(config) { 8785 const _config = {}; 8786 if (typeof config === 'string' && /show|hide/.test(config)) { 8787 _config.toggle = false; 8788 } 8789 return this.each(function () { 8790 const data = Collapse.getOrCreateInstance(this, _config); 8791 if (typeof config === 'string') { 8792 if (typeof data[config] === 'undefined') { 8793 throw new TypeError(`No method named "${config}"`); 8794 } 8795 data[config](); 8796 } 8797 }); 8798 } 8799} 8800 8801/** 8802 * Data API implementation 8803 */ 8804 8805EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) { 8806 // preventDefault only for <a> elements (which change the URL) not inside the collapsible element 8807 if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') { 8808 event.preventDefault(); 8809 } 8810 for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) { 8811 Collapse.getOrCreateInstance(element, { 8812 toggle: false 8813 }).toggle(); 8814 } 8815}); 8816 8817/** 8818 * jQuery 8819 */ 8820 8821defineJQueryPlugin(Collapse); 8822 8823/** 8824 * -------------------------------------------------------------------------- 8825 * Bootstrap dropdown.js 8826 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 8827 * -------------------------------------------------------------------------- 8828 */ 8829 8830 8831/** 8832 * Constants 8833 */ 8834 8835const NAME$a = 'dropdown'; 8836const DATA_KEY$6 = 'bs.dropdown'; 8837const EVENT_KEY$6 = `.${DATA_KEY$6}`; 8838const DATA_API_KEY$3 = '.data-api'; 8839const ESCAPE_KEY$2 = 'Escape'; 8840const TAB_KEY$1 = 'Tab'; 8841const ARROW_UP_KEY$1 = 'ArrowUp'; 8842const ARROW_DOWN_KEY$1 = 'ArrowDown'; 8843const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button 8844 8845const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`; 8846const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`; 8847const EVENT_SHOW$5 = `show${EVENT_KEY$6}`; 8848const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`; 8849const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`; 8850const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`; 8851const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`; 8852const CLASS_NAME_SHOW$6 = 'show'; 8853const CLASS_NAME_DROPUP = 'dropup'; 8854const CLASS_NAME_DROPEND = 'dropend'; 8855const CLASS_NAME_DROPSTART = 'dropstart'; 8856const CLASS_NAME_DROPUP_CENTER = 'dropup-center'; 8857const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center'; 8858const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)'; 8859const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`; 8860const SELECTOR_MENU = '.dropdown-menu'; 8861const SELECTOR_NAVBAR = '.navbar'; 8862const SELECTOR_NAVBAR_NAV = '.navbar-nav'; 8863const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'; 8864const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'; 8865const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'; 8866const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'; 8867const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'; 8868const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'; 8869const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'; 8870const PLACEMENT_TOPCENTER = 'top'; 8871const PLACEMENT_BOTTOMCENTER = 'bottom'; 8872const Default$9 = { 8873 autoClose: true, 8874 boundary: 'clippingParents', 8875 display: 'dynamic', 8876 offset: [0, 2], 8877 popperConfig: null, 8878 reference: 'toggle' 8879}; 8880const DefaultType$9 = { 8881 autoClose: '(boolean|string)', 8882 boundary: '(string|element)', 8883 display: 'string', 8884 offset: '(array|string|function)', 8885 popperConfig: '(null|object|function)', 8886 reference: '(string|element|object)' 8887}; 8888 8889/** 8890 * Class definition 8891 */ 8892 8893class Dropdown extends BaseComponent { 8894 constructor(element, config) { 8895 super(element, config); 8896 this._popper = null; 8897 this._parent = this._element.parentNode; // dropdown wrapper 8898 // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ 8899 this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent); 8900 this._inNavbar = this._detectNavbar(); 8901 } 8902 8903 // Getters 8904 static get Default() { 8905 return Default$9; 8906 } 8907 static get DefaultType() { 8908 return DefaultType$9; 8909 } 8910 static get NAME() { 8911 return NAME$a; 8912 } 8913 8914 // Public 8915 toggle() { 8916 return this._isShown() ? this.hide() : this.show(); 8917 } 8918 show() { 8919 if (isDisabled(this._element) || this._isShown()) { 8920 return; 8921 } 8922 const relatedTarget = { 8923 relatedTarget: this._element 8924 }; 8925 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget); 8926 if (showEvent.defaultPrevented) { 8927 return; 8928 } 8929 this._createPopper(); 8930 8931 // If this is a touch-enabled device we add extra 8932 // empty mouseover listeners to the body's immediate children; 8933 // only needed because of broken event delegation on iOS 8934 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 8935 if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) { 8936 for (const element of [].concat(...document.body.children)) { 8937 EventHandler.on(element, 'mouseover', noop); 8938 } 8939 } 8940 this._element.focus(); 8941 this._element.setAttribute('aria-expanded', true); 8942 this._menu.classList.add(CLASS_NAME_SHOW$6); 8943 this._element.classList.add(CLASS_NAME_SHOW$6); 8944 EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget); 8945 } 8946 hide() { 8947 if (isDisabled(this._element) || !this._isShown()) { 8948 return; 8949 } 8950 const relatedTarget = { 8951 relatedTarget: this._element 8952 }; 8953 this._completeHide(relatedTarget); 8954 } 8955 dispose() { 8956 if (this._popper) { 8957 this._popper.destroy(); 8958 } 8959 super.dispose(); 8960 } 8961 update() { 8962 this._inNavbar = this._detectNavbar(); 8963 if (this._popper) { 8964 this._popper.update(); 8965 } 8966 } 8967 8968 // Private 8969 _completeHide(relatedTarget) { 8970 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget); 8971 if (hideEvent.defaultPrevented) { 8972 return; 8973 } 8974 8975 // If this is a touch-enabled device we remove the extra 8976 // empty mouseover listeners we added for iOS support 8977 if ('ontouchstart' in document.documentElement) { 8978 for (const element of [].concat(...document.body.children)) { 8979 EventHandler.off(element, 'mouseover', noop); 8980 } 8981 } 8982 if (this._popper) { 8983 this._popper.destroy(); 8984 } 8985 this._menu.classList.remove(CLASS_NAME_SHOW$6); 8986 this._element.classList.remove(CLASS_NAME_SHOW$6); 8987 this._element.setAttribute('aria-expanded', 'false'); 8988 Manipulator.removeDataAttribute(this._menu, 'popper'); 8989 EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget); 8990 } 8991 _getConfig(config) { 8992 config = super._getConfig(config); 8993 if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') { 8994 // Popper virtual elements require a getBoundingClientRect method 8995 throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`); 8996 } 8997 return config; 8998 } 8999 _createPopper() { 9000 if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') { 9001 throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)'); 9002 } 9003 let referenceElement = this._element; 9004 if (this._config.reference === 'parent') { 9005 referenceElement = this._parent; 9006 } else if (isElement(this._config.reference)) { 9007 referenceElement = getElement(this._config.reference); 9008 } else if (typeof this._config.reference === 'object') { 9009 referenceElement = this._config.reference; 9010 } 9011 const popperConfig = this._getPopperConfig(); 9012 this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig); 9013 } 9014 _isShown() { 9015 return this._menu.classList.contains(CLASS_NAME_SHOW$6); 9016 } 9017 _getPlacement() { 9018 const parentDropdown = this._parent; 9019 if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) { 9020 return PLACEMENT_RIGHT; 9021 } 9022 if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) { 9023 return PLACEMENT_LEFT; 9024 } 9025 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) { 9026 return PLACEMENT_TOPCENTER; 9027 } 9028 if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) { 9029 return PLACEMENT_BOTTOMCENTER; 9030 } 9031 9032 // We need to trim the value because custom properties can also include spaces 9033 const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'; 9034 if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) { 9035 return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP; 9036 } 9037 return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM; 9038 } 9039 _detectNavbar() { 9040 return this._element.closest(SELECTOR_NAVBAR) !== null; 9041 } 9042 _getOffset() { 9043 const { 9044 offset 9045 } = this._config; 9046 if (typeof offset === 'string') { 9047 return offset.split(',').map(value => Number.parseInt(value, 10)); 9048 } 9049 if (typeof offset === 'function') { 9050 return popperData => offset(popperData, this._element); 9051 } 9052 return offset; 9053 } 9054 _getPopperConfig() { 9055 const defaultBsPopperConfig = { 9056 placement: this._getPlacement(), 9057 modifiers: [{ 9058 name: 'preventOverflow', 9059 options: { 9060 boundary: this._config.boundary 9061 } 9062 }, { 9063 name: 'offset', 9064 options: { 9065 offset: this._getOffset() 9066 } 9067 }] 9068 }; 9069 9070 // Disable Popper if we have a static display or Dropdown is in Navbar 9071 if (this._inNavbar || this._config.display === 'static') { 9072 Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove 9073 defaultBsPopperConfig.modifiers = [{ 9074 name: 'applyStyles', 9075 enabled: false 9076 }]; 9077 } 9078 return { 9079 ...defaultBsPopperConfig, 9080 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 9081 }; 9082 } 9083 _selectMenuItem({ 9084 key, 9085 target 9086 }) { 9087 const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element)); 9088 if (!items.length) { 9089 return; 9090 } 9091 9092 // if target isn't included in items (e.g. when expanding the dropdown) 9093 // allow cycling to get the last item in case key equals ARROW_UP_KEY 9094 getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus(); 9095 } 9096 9097 // Static 9098 static jQueryInterface(config) { 9099 return this.each(function () { 9100 const data = Dropdown.getOrCreateInstance(this, config); 9101 if (typeof config !== 'string') { 9102 return; 9103 } 9104 if (typeof data[config] === 'undefined') { 9105 throw new TypeError(`No method named "${config}"`); 9106 } 9107 data[config](); 9108 }); 9109 } 9110 static clearMenus(event) { 9111 if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) { 9112 return; 9113 } 9114 const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN); 9115 for (const toggle of openToggles) { 9116 const context = Dropdown.getInstance(toggle); 9117 if (!context || context._config.autoClose === false) { 9118 continue; 9119 } 9120 const composedPath = event.composedPath(); 9121 const isMenuTarget = composedPath.includes(context._menu); 9122 if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) { 9123 continue; 9124 } 9125 9126 // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu 9127 if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) { 9128 continue; 9129 } 9130 const relatedTarget = { 9131 relatedTarget: context._element 9132 }; 9133 if (event.type === 'click') { 9134 relatedTarget.clickEvent = event; 9135 } 9136 context._completeHide(relatedTarget); 9137 } 9138 } 9139 static dataApiKeydownHandler(event) { 9140 // If not an UP | DOWN | ESCAPE key => not a dropdown command 9141 // If input/textarea && if key is other than ESCAPE => not a dropdown command 9142 9143 const isInput = /input|textarea/i.test(event.target.tagName); 9144 const isEscapeEvent = event.key === ESCAPE_KEY$2; 9145 const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key); 9146 if (!isUpOrDownEvent && !isEscapeEvent) { 9147 return; 9148 } 9149 if (isInput && !isEscapeEvent) { 9150 return; 9151 } 9152 event.preventDefault(); 9153 9154 // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/ 9155 const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode); 9156 const instance = Dropdown.getOrCreateInstance(getToggleButton); 9157 if (isUpOrDownEvent) { 9158 event.stopPropagation(); 9159 instance.show(); 9160 instance._selectMenuItem(event); 9161 return; 9162 } 9163 if (instance._isShown()) { 9164 // else is escape and we check if it is shown 9165 event.stopPropagation(); 9166 instance.hide(); 9167 getToggleButton.focus(); 9168 } 9169 } 9170} 9171 9172/** 9173 * Data API implementation 9174 */ 9175 9176EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler); 9177EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler); 9178EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus); 9179EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus); 9180EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) { 9181 event.preventDefault(); 9182 Dropdown.getOrCreateInstance(this).toggle(); 9183}); 9184 9185/** 9186 * jQuery 9187 */ 9188 9189defineJQueryPlugin(Dropdown); 9190 9191/** 9192 * -------------------------------------------------------------------------- 9193 * Bootstrap util/backdrop.js 9194 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 9195 * -------------------------------------------------------------------------- 9196 */ 9197 9198 9199/** 9200 * Constants 9201 */ 9202 9203const NAME$9 = 'backdrop'; 9204const CLASS_NAME_FADE$4 = 'fade'; 9205const CLASS_NAME_SHOW$5 = 'show'; 9206const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`; 9207const Default$8 = { 9208 className: 'modal-backdrop', 9209 clickCallback: null, 9210 isAnimated: false, 9211 isVisible: true, 9212 // if false, we use the backdrop helper without adding any element to the dom 9213 rootElement: 'body' // give the choice to place backdrop under different elements 9214}; 9215const DefaultType$8 = { 9216 className: 'string', 9217 clickCallback: '(function|null)', 9218 isAnimated: 'boolean', 9219 isVisible: 'boolean', 9220 rootElement: '(element|string)' 9221}; 9222 9223/** 9224 * Class definition 9225 */ 9226 9227class Backdrop extends Config { 9228 constructor(config) { 9229 super(); 9230 this._config = this._getConfig(config); 9231 this._isAppended = false; 9232 this._element = null; 9233 } 9234 9235 // Getters 9236 static get Default() { 9237 return Default$8; 9238 } 9239 static get DefaultType() { 9240 return DefaultType$8; 9241 } 9242 static get NAME() { 9243 return NAME$9; 9244 } 9245 9246 // Public 9247 show(callback) { 9248 if (!this._config.isVisible) { 9249 execute(callback); 9250 return; 9251 } 9252 this._append(); 9253 const element = this._getElement(); 9254 if (this._config.isAnimated) { 9255 reflow(element); 9256 } 9257 element.classList.add(CLASS_NAME_SHOW$5); 9258 this._emulateAnimation(() => { 9259 execute(callback); 9260 }); 9261 } 9262 hide(callback) { 9263 if (!this._config.isVisible) { 9264 execute(callback); 9265 return; 9266 } 9267 this._getElement().classList.remove(CLASS_NAME_SHOW$5); 9268 this._emulateAnimation(() => { 9269 this.dispose(); 9270 execute(callback); 9271 }); 9272 } 9273 dispose() { 9274 if (!this._isAppended) { 9275 return; 9276 } 9277 EventHandler.off(this._element, EVENT_MOUSEDOWN); 9278 this._element.remove(); 9279 this._isAppended = false; 9280 } 9281 9282 // Private 9283 _getElement() { 9284 if (!this._element) { 9285 const backdrop = document.createElement('div'); 9286 backdrop.className = this._config.className; 9287 if (this._config.isAnimated) { 9288 backdrop.classList.add(CLASS_NAME_FADE$4); 9289 } 9290 this._element = backdrop; 9291 } 9292 return this._element; 9293 } 9294 _configAfterMerge(config) { 9295 // use getElement() with the default "body" to get a fresh Element on each instantiation 9296 config.rootElement = getElement(config.rootElement); 9297 return config; 9298 } 9299 _append() { 9300 if (this._isAppended) { 9301 return; 9302 } 9303 const element = this._getElement(); 9304 this._config.rootElement.append(element); 9305 EventHandler.on(element, EVENT_MOUSEDOWN, () => { 9306 execute(this._config.clickCallback); 9307 }); 9308 this._isAppended = true; 9309 } 9310 _emulateAnimation(callback) { 9311 executeAfterTransition(callback, this._getElement(), this._config.isAnimated); 9312 } 9313} 9314 9315/** 9316 * -------------------------------------------------------------------------- 9317 * Bootstrap util/focustrap.js 9318 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 9319 * -------------------------------------------------------------------------- 9320 */ 9321 9322 9323/** 9324 * Constants 9325 */ 9326 9327const NAME$8 = 'focustrap'; 9328const DATA_KEY$5 = 'bs.focustrap'; 9329const EVENT_KEY$5 = `.${DATA_KEY$5}`; 9330const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`; 9331const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`; 9332const TAB_KEY = 'Tab'; 9333const TAB_NAV_FORWARD = 'forward'; 9334const TAB_NAV_BACKWARD = 'backward'; 9335const Default$7 = { 9336 autofocus: true, 9337 trapElement: null // The element to trap focus inside of 9338}; 9339const DefaultType$7 = { 9340 autofocus: 'boolean', 9341 trapElement: 'element' 9342}; 9343 9344/** 9345 * Class definition 9346 */ 9347 9348class FocusTrap extends Config { 9349 constructor(config) { 9350 super(); 9351 this._config = this._getConfig(config); 9352 this._isActive = false; 9353 this._lastTabNavDirection = null; 9354 } 9355 9356 // Getters 9357 static get Default() { 9358 return Default$7; 9359 } 9360 static get DefaultType() { 9361 return DefaultType$7; 9362 } 9363 static get NAME() { 9364 return NAME$8; 9365 } 9366 9367 // Public 9368 activate() { 9369 if (this._isActive) { 9370 return; 9371 } 9372 if (this._config.autofocus) { 9373 this._config.trapElement.focus(); 9374 } 9375 EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop 9376 EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event)); 9377 EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event)); 9378 this._isActive = true; 9379 } 9380 deactivate() { 9381 if (!this._isActive) { 9382 return; 9383 } 9384 this._isActive = false; 9385 EventHandler.off(document, EVENT_KEY$5); 9386 } 9387 9388 // Private 9389 _handleFocusin(event) { 9390 const { 9391 trapElement 9392 } = this._config; 9393 if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) { 9394 return; 9395 } 9396 const elements = SelectorEngine.focusableChildren(trapElement); 9397 if (elements.length === 0) { 9398 trapElement.focus(); 9399 } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) { 9400 elements[elements.length - 1].focus(); 9401 } else { 9402 elements[0].focus(); 9403 } 9404 } 9405 _handleKeydown(event) { 9406 if (event.key !== TAB_KEY) { 9407 return; 9408 } 9409 this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD; 9410 } 9411} 9412 9413/** 9414 * -------------------------------------------------------------------------- 9415 * Bootstrap util/scrollBar.js 9416 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 9417 * -------------------------------------------------------------------------- 9418 */ 9419 9420 9421/** 9422 * Constants 9423 */ 9424 9425const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; 9426const SELECTOR_STICKY_CONTENT = '.sticky-top'; 9427const PROPERTY_PADDING = 'padding-right'; 9428const PROPERTY_MARGIN = 'margin-right'; 9429 9430/** 9431 * Class definition 9432 */ 9433 9434class ScrollBarHelper { 9435 constructor() { 9436 this._element = document.body; 9437 } 9438 9439 // Public 9440 getWidth() { 9441 // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes 9442 const documentWidth = document.documentElement.clientWidth; 9443 return Math.abs(window.innerWidth - documentWidth); 9444 } 9445 hide() { 9446 const width = this.getWidth(); 9447 this._disableOverFlow(); 9448 // give padding to element to balance the hidden scrollbar width 9449 this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 9450 // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth 9451 this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width); 9452 this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width); 9453 } 9454 reset() { 9455 this._resetElementAttributes(this._element, 'overflow'); 9456 this._resetElementAttributes(this._element, PROPERTY_PADDING); 9457 this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING); 9458 this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN); 9459 } 9460 isOverflowing() { 9461 return this.getWidth() > 0; 9462 } 9463 9464 // Private 9465 _disableOverFlow() { 9466 this._saveInitialAttribute(this._element, 'overflow'); 9467 this._element.style.overflow = 'hidden'; 9468 } 9469 _setElementAttributes(selector, styleProperty, callback) { 9470 const scrollbarWidth = this.getWidth(); 9471 const manipulationCallBack = element => { 9472 if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) { 9473 return; 9474 } 9475 this._saveInitialAttribute(element, styleProperty); 9476 const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty); 9477 element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`); 9478 }; 9479 this._applyManipulationCallback(selector, manipulationCallBack); 9480 } 9481 _saveInitialAttribute(element, styleProperty) { 9482 const actualValue = element.style.getPropertyValue(styleProperty); 9483 if (actualValue) { 9484 Manipulator.setDataAttribute(element, styleProperty, actualValue); 9485 } 9486 } 9487 _resetElementAttributes(selector, styleProperty) { 9488 const manipulationCallBack = element => { 9489 const value = Manipulator.getDataAttribute(element, styleProperty); 9490 // We only want to remove the property if the value is `null`; the value can also be zero 9491 if (value === null) { 9492 element.style.removeProperty(styleProperty); 9493 return; 9494 } 9495 Manipulator.removeDataAttribute(element, styleProperty); 9496 element.style.setProperty(styleProperty, value); 9497 }; 9498 this._applyManipulationCallback(selector, manipulationCallBack); 9499 } 9500 _applyManipulationCallback(selector, callBack) { 9501 if (isElement(selector)) { 9502 callBack(selector); 9503 return; 9504 } 9505 for (const sel of SelectorEngine.find(selector, this._element)) { 9506 callBack(sel); 9507 } 9508 } 9509} 9510 9511/** 9512 * -------------------------------------------------------------------------- 9513 * Bootstrap modal.js 9514 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 9515 * -------------------------------------------------------------------------- 9516 */ 9517 9518 9519/** 9520 * Constants 9521 */ 9522 9523const NAME$7 = 'modal'; 9524const DATA_KEY$4 = 'bs.modal'; 9525const EVENT_KEY$4 = `.${DATA_KEY$4}`; 9526const DATA_API_KEY$2 = '.data-api'; 9527const ESCAPE_KEY$1 = 'Escape'; 9528const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`; 9529const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`; 9530const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`; 9531const EVENT_SHOW$4 = `show${EVENT_KEY$4}`; 9532const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`; 9533const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`; 9534const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`; 9535const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`; 9536const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`; 9537const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`; 9538const CLASS_NAME_OPEN = 'modal-open'; 9539const CLASS_NAME_FADE$3 = 'fade'; 9540const CLASS_NAME_SHOW$4 = 'show'; 9541const CLASS_NAME_STATIC = 'modal-static'; 9542const OPEN_SELECTOR$1 = '.modal.show'; 9543const SELECTOR_DIALOG = '.modal-dialog'; 9544const SELECTOR_MODAL_BODY = '.modal-body'; 9545const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]'; 9546const Default$6 = { 9547 backdrop: true, 9548 focus: true, 9549 keyboard: true 9550}; 9551const DefaultType$6 = { 9552 backdrop: '(boolean|string)', 9553 focus: 'boolean', 9554 keyboard: 'boolean' 9555}; 9556 9557/** 9558 * Class definition 9559 */ 9560 9561class Modal extends BaseComponent { 9562 constructor(element, config) { 9563 super(element, config); 9564 this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element); 9565 this._backdrop = this._initializeBackDrop(); 9566 this._focustrap = this._initializeFocusTrap(); 9567 this._isShown = false; 9568 this._isTransitioning = false; 9569 this._scrollBar = new ScrollBarHelper(); 9570 this._addEventListeners(); 9571 } 9572 9573 // Getters 9574 static get Default() { 9575 return Default$6; 9576 } 9577 static get DefaultType() { 9578 return DefaultType$6; 9579 } 9580 static get NAME() { 9581 return NAME$7; 9582 } 9583 9584 // Public 9585 toggle(relatedTarget) { 9586 return this._isShown ? this.hide() : this.show(relatedTarget); 9587 } 9588 show(relatedTarget) { 9589 if (this._isShown || this._isTransitioning) { 9590 return; 9591 } 9592 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, { 9593 relatedTarget 9594 }); 9595 if (showEvent.defaultPrevented) { 9596 return; 9597 } 9598 this._isShown = true; 9599 this._isTransitioning = true; 9600 this._scrollBar.hide(); 9601 document.body.classList.add(CLASS_NAME_OPEN); 9602 this._adjustDialog(); 9603 this._backdrop.show(() => this._showElement(relatedTarget)); 9604 } 9605 hide() { 9606 if (!this._isShown || this._isTransitioning) { 9607 return; 9608 } 9609 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4); 9610 if (hideEvent.defaultPrevented) { 9611 return; 9612 } 9613 this._isShown = false; 9614 this._isTransitioning = true; 9615 this._focustrap.deactivate(); 9616 this._element.classList.remove(CLASS_NAME_SHOW$4); 9617 this._queueCallback(() => this._hideModal(), this._element, this._isAnimated()); 9618 } 9619 dispose() { 9620 EventHandler.off(window, EVENT_KEY$4); 9621 EventHandler.off(this._dialog, EVENT_KEY$4); 9622 this._backdrop.dispose(); 9623 this._focustrap.deactivate(); 9624 super.dispose(); 9625 } 9626 handleUpdate() { 9627 this._adjustDialog(); 9628 } 9629 9630 // Private 9631 _initializeBackDrop() { 9632 return new Backdrop({ 9633 isVisible: Boolean(this._config.backdrop), 9634 // 'static' option will be translated to true, and booleans will keep their value, 9635 isAnimated: this._isAnimated() 9636 }); 9637 } 9638 _initializeFocusTrap() { 9639 return new FocusTrap({ 9640 trapElement: this._element 9641 }); 9642 } 9643 _showElement(relatedTarget) { 9644 // try to append dynamic modal 9645 if (!document.body.contains(this._element)) { 9646 document.body.append(this._element); 9647 } 9648 this._element.style.display = 'block'; 9649 this._element.removeAttribute('aria-hidden'); 9650 this._element.setAttribute('aria-modal', true); 9651 this._element.setAttribute('role', 'dialog'); 9652 this._element.scrollTop = 0; 9653 const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog); 9654 if (modalBody) { 9655 modalBody.scrollTop = 0; 9656 } 9657 reflow(this._element); 9658 this._element.classList.add(CLASS_NAME_SHOW$4); 9659 const transitionComplete = () => { 9660 if (this._config.focus) { 9661 this._focustrap.activate(); 9662 } 9663 this._isTransitioning = false; 9664 EventHandler.trigger(this._element, EVENT_SHOWN$4, { 9665 relatedTarget 9666 }); 9667 }; 9668 this._queueCallback(transitionComplete, this._dialog, this._isAnimated()); 9669 } 9670 _addEventListeners() { 9671 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => { 9672 if (event.key !== ESCAPE_KEY$1) { 9673 return; 9674 } 9675 if (this._config.keyboard) { 9676 this.hide(); 9677 return; 9678 } 9679 this._triggerBackdropTransition(); 9680 }); 9681 EventHandler.on(window, EVENT_RESIZE$1, () => { 9682 if (this._isShown && !this._isTransitioning) { 9683 this._adjustDialog(); 9684 } 9685 }); 9686 EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => { 9687 // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks 9688 EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => { 9689 if (this._element !== event.target || this._element !== event2.target) { 9690 return; 9691 } 9692 if (this._config.backdrop === 'static') { 9693 this._triggerBackdropTransition(); 9694 return; 9695 } 9696 if (this._config.backdrop) { 9697 this.hide(); 9698 } 9699 }); 9700 }); 9701 } 9702 _hideModal() { 9703 this._element.style.display = 'none'; 9704 this._element.setAttribute('aria-hidden', true); 9705 this._element.removeAttribute('aria-modal'); 9706 this._element.removeAttribute('role'); 9707 this._isTransitioning = false; 9708 this._backdrop.hide(() => { 9709 document.body.classList.remove(CLASS_NAME_OPEN); 9710 this._resetAdjustments(); 9711 this._scrollBar.reset(); 9712 EventHandler.trigger(this._element, EVENT_HIDDEN$4); 9713 }); 9714 } 9715 _isAnimated() { 9716 return this._element.classList.contains(CLASS_NAME_FADE$3); 9717 } 9718 _triggerBackdropTransition() { 9719 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1); 9720 if (hideEvent.defaultPrevented) { 9721 return; 9722 } 9723 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 9724 const initialOverflowY = this._element.style.overflowY; 9725 // return if the following background transition hasn't yet completed 9726 if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) { 9727 return; 9728 } 9729 if (!isModalOverflowing) { 9730 this._element.style.overflowY = 'hidden'; 9731 } 9732 this._element.classList.add(CLASS_NAME_STATIC); 9733 this._queueCallback(() => { 9734 this._element.classList.remove(CLASS_NAME_STATIC); 9735 this._queueCallback(() => { 9736 this._element.style.overflowY = initialOverflowY; 9737 }, this._dialog); 9738 }, this._dialog); 9739 this._element.focus(); 9740 } 9741 9742 /** 9743 * The following methods are used to handle overflowing modals 9744 */ 9745 9746 _adjustDialog() { 9747 const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; 9748 const scrollbarWidth = this._scrollBar.getWidth(); 9749 const isBodyOverflowing = scrollbarWidth > 0; 9750 if (isBodyOverflowing && !isModalOverflowing) { 9751 const property = isRTL() ? 'paddingLeft' : 'paddingRight'; 9752 this._element.style[property] = `${scrollbarWidth}px`; 9753 } 9754 if (!isBodyOverflowing && isModalOverflowing) { 9755 const property = isRTL() ? 'paddingRight' : 'paddingLeft'; 9756 this._element.style[property] = `${scrollbarWidth}px`; 9757 } 9758 } 9759 _resetAdjustments() { 9760 this._element.style.paddingLeft = ''; 9761 this._element.style.paddingRight = ''; 9762 } 9763 9764 // Static 9765 static jQueryInterface(config, relatedTarget) { 9766 return this.each(function () { 9767 const data = Modal.getOrCreateInstance(this, config); 9768 if (typeof config !== 'string') { 9769 return; 9770 } 9771 if (typeof data[config] === 'undefined') { 9772 throw new TypeError(`No method named "${config}"`); 9773 } 9774 data[config](relatedTarget); 9775 }); 9776 } 9777} 9778 9779/** 9780 * Data API implementation 9781 */ 9782 9783EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) { 9784 const target = SelectorEngine.getElementFromSelector(this); 9785 if (['A', 'AREA'].includes(this.tagName)) { 9786 event.preventDefault(); 9787 } 9788 EventHandler.one(target, EVENT_SHOW$4, showEvent => { 9789 if (showEvent.defaultPrevented) { 9790 // only register focus restorer if modal will actually get shown 9791 return; 9792 } 9793 EventHandler.one(target, EVENT_HIDDEN$4, () => { 9794 if (isVisible(this)) { 9795 this.focus(); 9796 } 9797 }); 9798 }); 9799 9800 // avoid conflict when clicking modal toggler while another one is open 9801 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1); 9802 if (alreadyOpen) { 9803 Modal.getInstance(alreadyOpen).hide(); 9804 } 9805 const data = Modal.getOrCreateInstance(target); 9806 data.toggle(this); 9807}); 9808enableDismissTrigger(Modal); 9809 9810/** 9811 * jQuery 9812 */ 9813 9814defineJQueryPlugin(Modal); 9815 9816/** 9817 * -------------------------------------------------------------------------- 9818 * Bootstrap offcanvas.js 9819 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 9820 * -------------------------------------------------------------------------- 9821 */ 9822 9823 9824/** 9825 * Constants 9826 */ 9827 9828const NAME$6 = 'offcanvas'; 9829const DATA_KEY$3 = 'bs.offcanvas'; 9830const EVENT_KEY$3 = `.${DATA_KEY$3}`; 9831const DATA_API_KEY$1 = '.data-api'; 9832const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`; 9833const ESCAPE_KEY = 'Escape'; 9834const CLASS_NAME_SHOW$3 = 'show'; 9835const CLASS_NAME_SHOWING$1 = 'showing'; 9836const CLASS_NAME_HIDING = 'hiding'; 9837const CLASS_NAME_BACKDROP = 'offcanvas-backdrop'; 9838const OPEN_SELECTOR = '.offcanvas.show'; 9839const EVENT_SHOW$3 = `show${EVENT_KEY$3}`; 9840const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`; 9841const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`; 9842const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`; 9843const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`; 9844const EVENT_RESIZE = `resize${EVENT_KEY$3}`; 9845const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`; 9846const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`; 9847const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]'; 9848const Default$5 = { 9849 backdrop: true, 9850 keyboard: true, 9851 scroll: false 9852}; 9853const DefaultType$5 = { 9854 backdrop: '(boolean|string)', 9855 keyboard: 'boolean', 9856 scroll: 'boolean' 9857}; 9858 9859/** 9860 * Class definition 9861 */ 9862 9863class Offcanvas extends BaseComponent { 9864 constructor(element, config) { 9865 super(element, config); 9866 this._isShown = false; 9867 this._backdrop = this._initializeBackDrop(); 9868 this._focustrap = this._initializeFocusTrap(); 9869 this._addEventListeners(); 9870 } 9871 9872 // Getters 9873 static get Default() { 9874 return Default$5; 9875 } 9876 static get DefaultType() { 9877 return DefaultType$5; 9878 } 9879 static get NAME() { 9880 return NAME$6; 9881 } 9882 9883 // Public 9884 toggle(relatedTarget) { 9885 return this._isShown ? this.hide() : this.show(relatedTarget); 9886 } 9887 show(relatedTarget) { 9888 if (this._isShown) { 9889 return; 9890 } 9891 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, { 9892 relatedTarget 9893 }); 9894 if (showEvent.defaultPrevented) { 9895 return; 9896 } 9897 this._isShown = true; 9898 this._backdrop.show(); 9899 if (!this._config.scroll) { 9900 new ScrollBarHelper().hide(); 9901 } 9902 this._element.setAttribute('aria-modal', true); 9903 this._element.setAttribute('role', 'dialog'); 9904 this._element.classList.add(CLASS_NAME_SHOWING$1); 9905 const completeCallBack = () => { 9906 if (!this._config.scroll || this._config.backdrop) { 9907 this._focustrap.activate(); 9908 } 9909 this._element.classList.add(CLASS_NAME_SHOW$3); 9910 this._element.classList.remove(CLASS_NAME_SHOWING$1); 9911 EventHandler.trigger(this._element, EVENT_SHOWN$3, { 9912 relatedTarget 9913 }); 9914 }; 9915 this._queueCallback(completeCallBack, this._element, true); 9916 } 9917 hide() { 9918 if (!this._isShown) { 9919 return; 9920 } 9921 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3); 9922 if (hideEvent.defaultPrevented) { 9923 return; 9924 } 9925 this._focustrap.deactivate(); 9926 this._element.blur(); 9927 this._isShown = false; 9928 this._element.classList.add(CLASS_NAME_HIDING); 9929 this._backdrop.hide(); 9930 const completeCallback = () => { 9931 this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING); 9932 this._element.removeAttribute('aria-modal'); 9933 this._element.removeAttribute('role'); 9934 if (!this._config.scroll) { 9935 new ScrollBarHelper().reset(); 9936 } 9937 EventHandler.trigger(this._element, EVENT_HIDDEN$3); 9938 }; 9939 this._queueCallback(completeCallback, this._element, true); 9940 } 9941 dispose() { 9942 this._backdrop.dispose(); 9943 this._focustrap.deactivate(); 9944 super.dispose(); 9945 } 9946 9947 // Private 9948 _initializeBackDrop() { 9949 const clickCallback = () => { 9950 if (this._config.backdrop === 'static') { 9951 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 9952 return; 9953 } 9954 this.hide(); 9955 }; 9956 9957 // 'static' option will be translated to true, and booleans will keep their value 9958 const isVisible = Boolean(this._config.backdrop); 9959 return new Backdrop({ 9960 className: CLASS_NAME_BACKDROP, 9961 isVisible, 9962 isAnimated: true, 9963 rootElement: this._element.parentNode, 9964 clickCallback: isVisible ? clickCallback : null 9965 }); 9966 } 9967 _initializeFocusTrap() { 9968 return new FocusTrap({ 9969 trapElement: this._element 9970 }); 9971 } 9972 _addEventListeners() { 9973 EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => { 9974 if (event.key !== ESCAPE_KEY) { 9975 return; 9976 } 9977 if (this._config.keyboard) { 9978 this.hide(); 9979 return; 9980 } 9981 EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED); 9982 }); 9983 } 9984 9985 // Static 9986 static jQueryInterface(config) { 9987 return this.each(function () { 9988 const data = Offcanvas.getOrCreateInstance(this, config); 9989 if (typeof config !== 'string') { 9990 return; 9991 } 9992 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 9993 throw new TypeError(`No method named "${config}"`); 9994 } 9995 data[config](this); 9996 }); 9997 } 9998} 9999 10000/** 10001 * Data API implementation 10002 */ 10003 10004EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) { 10005 const target = SelectorEngine.getElementFromSelector(this); 10006 if (['A', 'AREA'].includes(this.tagName)) { 10007 event.preventDefault(); 10008 } 10009 if (isDisabled(this)) { 10010 return; 10011 } 10012 EventHandler.one(target, EVENT_HIDDEN$3, () => { 10013 // focus on trigger when it is closed 10014 if (isVisible(this)) { 10015 this.focus(); 10016 } 10017 }); 10018 10019 // avoid conflict when clicking a toggler of an offcanvas, while another is open 10020 const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR); 10021 if (alreadyOpen && alreadyOpen !== target) { 10022 Offcanvas.getInstance(alreadyOpen).hide(); 10023 } 10024 const data = Offcanvas.getOrCreateInstance(target); 10025 data.toggle(this); 10026}); 10027EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => { 10028 for (const selector of SelectorEngine.find(OPEN_SELECTOR)) { 10029 Offcanvas.getOrCreateInstance(selector).show(); 10030 } 10031}); 10032EventHandler.on(window, EVENT_RESIZE, () => { 10033 for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) { 10034 if (getComputedStyle(element).position !== 'fixed') { 10035 Offcanvas.getOrCreateInstance(element).hide(); 10036 } 10037 } 10038}); 10039enableDismissTrigger(Offcanvas); 10040 10041/** 10042 * jQuery 10043 */ 10044 10045defineJQueryPlugin(Offcanvas); 10046 10047/** 10048 * -------------------------------------------------------------------------- 10049 * Bootstrap util/sanitizer.js 10050 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 10051 * -------------------------------------------------------------------------- 10052 */ 10053 10054// js-docs-start allow-list 10055const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; 10056const DefaultAllowlist = { 10057 // Global attributes allowed on any supplied element below. 10058 '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], 10059 a: ['target', 'href', 'title', 'rel'], 10060 area: [], 10061 b: [], 10062 br: [], 10063 col: [], 10064 code: [], 10065 dd: [], 10066 div: [], 10067 dl: [], 10068 dt: [], 10069 em: [], 10070 hr: [], 10071 h1: [], 10072 h2: [], 10073 h3: [], 10074 h4: [], 10075 h5: [], 10076 h6: [], 10077 i: [], 10078 img: ['src', 'srcset', 'alt', 'title', 'width', 'height'], 10079 li: [], 10080 ol: [], 10081 p: [], 10082 pre: [], 10083 s: [], 10084 small: [], 10085 span: [], 10086 sub: [], 10087 sup: [], 10088 strong: [], 10089 u: [], 10090 ul: [] 10091}; 10092// js-docs-end allow-list 10093 10094const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']); 10095 10096/** 10097 * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation 10098 * contexts. 10099 * 10100 * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38 10101 */ 10102// eslint-disable-next-line unicorn/better-regex 10103const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i; 10104const allowedAttribute = (attribute, allowedAttributeList) => { 10105 const attributeName = attribute.nodeName.toLowerCase(); 10106 if (allowedAttributeList.includes(attributeName)) { 10107 if (uriAttributes.has(attributeName)) { 10108 return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue)); 10109 } 10110 return true; 10111 } 10112 10113 // Check if a regular expression validates the attribute. 10114 return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName)); 10115}; 10116function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) { 10117 if (!unsafeHtml.length) { 10118 return unsafeHtml; 10119 } 10120 if (sanitizeFunction && typeof sanitizeFunction === 'function') { 10121 return sanitizeFunction(unsafeHtml); 10122 } 10123 const domParser = new window.DOMParser(); 10124 const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); 10125 const elements = [].concat(...createdDocument.body.querySelectorAll('*')); 10126 for (const element of elements) { 10127 const elementName = element.nodeName.toLowerCase(); 10128 if (!Object.keys(allowList).includes(elementName)) { 10129 element.remove(); 10130 continue; 10131 } 10132 const attributeList = [].concat(...element.attributes); 10133 const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []); 10134 for (const attribute of attributeList) { 10135 if (!allowedAttribute(attribute, allowedAttributes)) { 10136 element.removeAttribute(attribute.nodeName); 10137 } 10138 } 10139 } 10140 return createdDocument.body.innerHTML; 10141} 10142 10143/** 10144 * -------------------------------------------------------------------------- 10145 * Bootstrap util/template-factory.js 10146 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 10147 * -------------------------------------------------------------------------- 10148 */ 10149 10150 10151/** 10152 * Constants 10153 */ 10154 10155const NAME$5 = 'TemplateFactory'; 10156const Default$4 = { 10157 allowList: DefaultAllowlist, 10158 content: {}, 10159 // { selector : text , selector2 : text2 , } 10160 extraClass: '', 10161 html: false, 10162 sanitize: true, 10163 sanitizeFn: null, 10164 template: '<div></div>' 10165}; 10166const DefaultType$4 = { 10167 allowList: 'object', 10168 content: 'object', 10169 extraClass: '(string|function)', 10170 html: 'boolean', 10171 sanitize: 'boolean', 10172 sanitizeFn: '(null|function)', 10173 template: 'string' 10174}; 10175const DefaultContentType = { 10176 entry: '(string|element|function|null)', 10177 selector: '(string|element)' 10178}; 10179 10180/** 10181 * Class definition 10182 */ 10183 10184class TemplateFactory extends Config { 10185 constructor(config) { 10186 super(); 10187 this._config = this._getConfig(config); 10188 } 10189 10190 // Getters 10191 static get Default() { 10192 return Default$4; 10193 } 10194 static get DefaultType() { 10195 return DefaultType$4; 10196 } 10197 static get NAME() { 10198 return NAME$5; 10199 } 10200 10201 // Public 10202 getContent() { 10203 return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean); 10204 } 10205 hasContent() { 10206 return this.getContent().length > 0; 10207 } 10208 changeContent(content) { 10209 this._checkContent(content); 10210 this._config.content = { 10211 ...this._config.content, 10212 ...content 10213 }; 10214 return this; 10215 } 10216 toHtml() { 10217 const templateWrapper = document.createElement('div'); 10218 templateWrapper.innerHTML = this._maybeSanitize(this._config.template); 10219 for (const [selector, text] of Object.entries(this._config.content)) { 10220 this._setContent(templateWrapper, text, selector); 10221 } 10222 const template = templateWrapper.children[0]; 10223 const extraClass = this._resolvePossibleFunction(this._config.extraClass); 10224 if (extraClass) { 10225 template.classList.add(...extraClass.split(' ')); 10226 } 10227 return template; 10228 } 10229 10230 // Private 10231 _typeCheckConfig(config) { 10232 super._typeCheckConfig(config); 10233 this._checkContent(config.content); 10234 } 10235 _checkContent(arg) { 10236 for (const [selector, content] of Object.entries(arg)) { 10237 super._typeCheckConfig({ 10238 selector, 10239 entry: content 10240 }, DefaultContentType); 10241 } 10242 } 10243 _setContent(template, content, selector) { 10244 const templateElement = SelectorEngine.findOne(selector, template); 10245 if (!templateElement) { 10246 return; 10247 } 10248 content = this._resolvePossibleFunction(content); 10249 if (!content) { 10250 templateElement.remove(); 10251 return; 10252 } 10253 if (isElement(content)) { 10254 this._putElementInTemplate(getElement(content), templateElement); 10255 return; 10256 } 10257 if (this._config.html) { 10258 templateElement.innerHTML = this._maybeSanitize(content); 10259 return; 10260 } 10261 templateElement.textContent = content; 10262 } 10263 _maybeSanitize(arg) { 10264 return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg; 10265 } 10266 _resolvePossibleFunction(arg) { 10267 return execute(arg, [this]); 10268 } 10269 _putElementInTemplate(element, templateElement) { 10270 if (this._config.html) { 10271 templateElement.innerHTML = ''; 10272 templateElement.append(element); 10273 return; 10274 } 10275 templateElement.textContent = element.textContent; 10276 } 10277} 10278 10279/** 10280 * -------------------------------------------------------------------------- 10281 * Bootstrap tooltip.js 10282 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 10283 * -------------------------------------------------------------------------- 10284 */ 10285 10286 10287/** 10288 * Constants 10289 */ 10290 10291const NAME$4 = 'tooltip'; 10292const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']); 10293const CLASS_NAME_FADE$2 = 'fade'; 10294const CLASS_NAME_MODAL = 'modal'; 10295const CLASS_NAME_SHOW$2 = 'show'; 10296const SELECTOR_TOOLTIP_INNER = '.tooltip-inner'; 10297const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`; 10298const EVENT_MODAL_HIDE = 'hide.bs.modal'; 10299const TRIGGER_HOVER = 'hover'; 10300const TRIGGER_FOCUS = 'focus'; 10301const TRIGGER_CLICK = 'click'; 10302const TRIGGER_MANUAL = 'manual'; 10303const EVENT_HIDE$2 = 'hide'; 10304const EVENT_HIDDEN$2 = 'hidden'; 10305const EVENT_SHOW$2 = 'show'; 10306const EVENT_SHOWN$2 = 'shown'; 10307const EVENT_INSERTED = 'inserted'; 10308const EVENT_CLICK$1 = 'click'; 10309const EVENT_FOCUSIN$1 = 'focusin'; 10310const EVENT_FOCUSOUT$1 = 'focusout'; 10311const EVENT_MOUSEENTER = 'mouseenter'; 10312const EVENT_MOUSELEAVE = 'mouseleave'; 10313const AttachmentMap = { 10314 AUTO: 'auto', 10315 TOP: 'top', 10316 RIGHT: isRTL() ? 'left' : 'right', 10317 BOTTOM: 'bottom', 10318 LEFT: isRTL() ? 'right' : 'left' 10319}; 10320const Default$3 = { 10321 allowList: DefaultAllowlist, 10322 animation: true, 10323 boundary: 'clippingParents', 10324 container: false, 10325 customClass: '', 10326 delay: 0, 10327 fallbackPlacements: ['top', 'right', 'bottom', 'left'], 10328 html: false, 10329 offset: [0, 6], 10330 placement: 'top', 10331 popperConfig: null, 10332 sanitize: true, 10333 sanitizeFn: null, 10334 selector: false, 10335 template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>', 10336 title: '', 10337 trigger: 'hover focus' 10338}; 10339const DefaultType$3 = { 10340 allowList: 'object', 10341 animation: 'boolean', 10342 boundary: '(string|element)', 10343 container: '(string|element|boolean)', 10344 customClass: '(string|function)', 10345 delay: '(number|object)', 10346 fallbackPlacements: 'array', 10347 html: 'boolean', 10348 offset: '(array|string|function)', 10349 placement: '(string|function)', 10350 popperConfig: '(null|object|function)', 10351 sanitize: 'boolean', 10352 sanitizeFn: '(null|function)', 10353 selector: '(string|boolean)', 10354 template: 'string', 10355 title: '(string|element|function)', 10356 trigger: 'string' 10357}; 10358 10359/** 10360 * Class definition 10361 */ 10362 10363class Tooltip extends BaseComponent { 10364 constructor(element, config) { 10365 if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') { 10366 throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)'); 10367 } 10368 super(element, config); 10369 10370 // Private 10371 this._isEnabled = true; 10372 this._timeout = 0; 10373 this._isHovered = null; 10374 this._activeTrigger = {}; 10375 this._popper = null; 10376 this._templateFactory = null; 10377 this._newContent = null; 10378 10379 // Protected 10380 this.tip = null; 10381 this._setListeners(); 10382 if (!this._config.selector) { 10383 this._fixTitle(); 10384 } 10385 } 10386 10387 // Getters 10388 static get Default() { 10389 return Default$3; 10390 } 10391 static get DefaultType() { 10392 return DefaultType$3; 10393 } 10394 static get NAME() { 10395 return NAME$4; 10396 } 10397 10398 // Public 10399 enable() { 10400 this._isEnabled = true; 10401 } 10402 disable() { 10403 this._isEnabled = false; 10404 } 10405 toggleEnabled() { 10406 this._isEnabled = !this._isEnabled; 10407 } 10408 toggle() { 10409 if (!this._isEnabled) { 10410 return; 10411 } 10412 this._activeTrigger.click = !this._activeTrigger.click; 10413 if (this._isShown()) { 10414 this._leave(); 10415 return; 10416 } 10417 this._enter(); 10418 } 10419 dispose() { 10420 clearTimeout(this._timeout); 10421 EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 10422 if (this._element.getAttribute('data-bs-original-title')) { 10423 this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title')); 10424 } 10425 this._disposePopper(); 10426 super.dispose(); 10427 } 10428 show() { 10429 if (this._element.style.display === 'none') { 10430 throw new Error('Please use show on visible elements'); 10431 } 10432 if (!(this._isWithContent() && this._isEnabled)) { 10433 return; 10434 } 10435 const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2)); 10436 const shadowRoot = findShadowRoot(this._element); 10437 const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element); 10438 if (showEvent.defaultPrevented || !isInTheDom) { 10439 return; 10440 } 10441 10442 // TODO: v6 remove this or make it optional 10443 this._disposePopper(); 10444 const tip = this._getTipElement(); 10445 this._element.setAttribute('aria-describedby', tip.getAttribute('id')); 10446 const { 10447 container 10448 } = this._config; 10449 if (!this._element.ownerDocument.documentElement.contains(this.tip)) { 10450 container.append(tip); 10451 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED)); 10452 } 10453 this._popper = this._createPopper(tip); 10454 tip.classList.add(CLASS_NAME_SHOW$2); 10455 10456 // If this is a touch-enabled device we add extra 10457 // empty mouseover listeners to the body's immediate children; 10458 // only needed because of broken event delegation on iOS 10459 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html 10460 if ('ontouchstart' in document.documentElement) { 10461 for (const element of [].concat(...document.body.children)) { 10462 EventHandler.on(element, 'mouseover', noop); 10463 } 10464 } 10465 const complete = () => { 10466 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2)); 10467 if (this._isHovered === false) { 10468 this._leave(); 10469 } 10470 this._isHovered = false; 10471 }; 10472 this._queueCallback(complete, this.tip, this._isAnimated()); 10473 } 10474 hide() { 10475 if (!this._isShown()) { 10476 return; 10477 } 10478 const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2)); 10479 if (hideEvent.defaultPrevented) { 10480 return; 10481 } 10482 const tip = this._getTipElement(); 10483 tip.classList.remove(CLASS_NAME_SHOW$2); 10484 10485 // If this is a touch-enabled device we remove the extra 10486 // empty mouseover listeners we added for iOS support 10487 if ('ontouchstart' in document.documentElement) { 10488 for (const element of [].concat(...document.body.children)) { 10489 EventHandler.off(element, 'mouseover', noop); 10490 } 10491 } 10492 this._activeTrigger[TRIGGER_CLICK] = false; 10493 this._activeTrigger[TRIGGER_FOCUS] = false; 10494 this._activeTrigger[TRIGGER_HOVER] = false; 10495 this._isHovered = null; // it is a trick to support manual triggering 10496 10497 const complete = () => { 10498 if (this._isWithActiveTrigger()) { 10499 return; 10500 } 10501 if (!this._isHovered) { 10502 this._disposePopper(); 10503 } 10504 this._element.removeAttribute('aria-describedby'); 10505 EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2)); 10506 }; 10507 this._queueCallback(complete, this.tip, this._isAnimated()); 10508 } 10509 update() { 10510 if (this._popper) { 10511 this._popper.update(); 10512 } 10513 } 10514 10515 // Protected 10516 _isWithContent() { 10517 return Boolean(this._getTitle()); 10518 } 10519 _getTipElement() { 10520 if (!this.tip) { 10521 this.tip = this._createTipElement(this._newContent || this._getContentForTemplate()); 10522 } 10523 return this.tip; 10524 } 10525 _createTipElement(content) { 10526 const tip = this._getTemplateFactory(content).toHtml(); 10527 10528 // TODO: remove this check in v6 10529 if (!tip) { 10530 return null; 10531 } 10532 tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); 10533 // TODO: v6 the following can be achieved with CSS only 10534 tip.classList.add(`bs-${this.constructor.NAME}-auto`); 10535 const tipId = getUID(this.constructor.NAME).toString(); 10536 tip.setAttribute('id', tipId); 10537 if (this._isAnimated()) { 10538 tip.classList.add(CLASS_NAME_FADE$2); 10539 } 10540 return tip; 10541 } 10542 setContent(content) { 10543 this._newContent = content; 10544 if (this._isShown()) { 10545 this._disposePopper(); 10546 this.show(); 10547 } 10548 } 10549 _getTemplateFactory(content) { 10550 if (this._templateFactory) { 10551 this._templateFactory.changeContent(content); 10552 } else { 10553 this._templateFactory = new TemplateFactory({ 10554 ...this._config, 10555 // the `content` var has to be after `this._config` 10556 // to override config.content in case of popover 10557 content, 10558 extraClass: this._resolvePossibleFunction(this._config.customClass) 10559 }); 10560 } 10561 return this._templateFactory; 10562 } 10563 _getContentForTemplate() { 10564 return { 10565 [SELECTOR_TOOLTIP_INNER]: this._getTitle() 10566 }; 10567 } 10568 _getTitle() { 10569 return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title'); 10570 } 10571 10572 // Private 10573 _initializeOnDelegatedTarget(event) { 10574 return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig()); 10575 } 10576 _isAnimated() { 10577 return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2); 10578 } 10579 _isShown() { 10580 return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2); 10581 } 10582 _createPopper(tip) { 10583 const placement = execute(this._config.placement, [this, tip, this._element]); 10584 const attachment = AttachmentMap[placement.toUpperCase()]; 10585 return _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment)); 10586 } 10587 _getOffset() { 10588 const { 10589 offset 10590 } = this._config; 10591 if (typeof offset === 'string') { 10592 return offset.split(',').map(value => Number.parseInt(value, 10)); 10593 } 10594 if (typeof offset === 'function') { 10595 return popperData => offset(popperData, this._element); 10596 } 10597 return offset; 10598 } 10599 _resolvePossibleFunction(arg) { 10600 return execute(arg, [this._element]); 10601 } 10602 _getPopperConfig(attachment) { 10603 const defaultBsPopperConfig = { 10604 placement: attachment, 10605 modifiers: [{ 10606 name: 'flip', 10607 options: { 10608 fallbackPlacements: this._config.fallbackPlacements 10609 } 10610 }, { 10611 name: 'offset', 10612 options: { 10613 offset: this._getOffset() 10614 } 10615 }, { 10616 name: 'preventOverflow', 10617 options: { 10618 boundary: this._config.boundary 10619 } 10620 }, { 10621 name: 'arrow', 10622 options: { 10623 element: `.${this.constructor.NAME}-arrow` 10624 } 10625 }, { 10626 name: 'preSetPlacement', 10627 enabled: true, 10628 phase: 'beforeMain', 10629 fn: data => { 10630 // Pre-set Popper's placement attribute in order to read the arrow sizes properly. 10631 // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement 10632 this._getTipElement().setAttribute('data-popper-placement', data.state.placement); 10633 } 10634 }] 10635 }; 10636 return { 10637 ...defaultBsPopperConfig, 10638 ...execute(this._config.popperConfig, [defaultBsPopperConfig]) 10639 }; 10640 } 10641 _setListeners() { 10642 const triggers = this._config.trigger.split(' '); 10643 for (const trigger of triggers) { 10644 if (trigger === 'click') { 10645 EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => { 10646 const context = this._initializeOnDelegatedTarget(event); 10647 context.toggle(); 10648 }); 10649 } else if (trigger !== TRIGGER_MANUAL) { 10650 const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1); 10651 const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1); 10652 EventHandler.on(this._element, eventIn, this._config.selector, event => { 10653 const context = this._initializeOnDelegatedTarget(event); 10654 context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true; 10655 context._enter(); 10656 }); 10657 EventHandler.on(this._element, eventOut, this._config.selector, event => { 10658 const context = this._initializeOnDelegatedTarget(event); 10659 context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget); 10660 context._leave(); 10661 }); 10662 } 10663 } 10664 this._hideModalHandler = () => { 10665 if (this._element) { 10666 this.hide(); 10667 } 10668 }; 10669 EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler); 10670 } 10671 _fixTitle() { 10672 const title = this._element.getAttribute('title'); 10673 if (!title) { 10674 return; 10675 } 10676 if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) { 10677 this._element.setAttribute('aria-label', title); 10678 } 10679 this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility 10680 this._element.removeAttribute('title'); 10681 } 10682 _enter() { 10683 if (this._isShown() || this._isHovered) { 10684 this._isHovered = true; 10685 return; 10686 } 10687 this._isHovered = true; 10688 this._setTimeout(() => { 10689 if (this._isHovered) { 10690 this.show(); 10691 } 10692 }, this._config.delay.show); 10693 } 10694 _leave() { 10695 if (this._isWithActiveTrigger()) { 10696 return; 10697 } 10698 this._isHovered = false; 10699 this._setTimeout(() => { 10700 if (!this._isHovered) { 10701 this.hide(); 10702 } 10703 }, this._config.delay.hide); 10704 } 10705 _setTimeout(handler, timeout) { 10706 clearTimeout(this._timeout); 10707 this._timeout = setTimeout(handler, timeout); 10708 } 10709 _isWithActiveTrigger() { 10710 return Object.values(this._activeTrigger).includes(true); 10711 } 10712 _getConfig(config) { 10713 const dataAttributes = Manipulator.getDataAttributes(this._element); 10714 for (const dataAttribute of Object.keys(dataAttributes)) { 10715 if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) { 10716 delete dataAttributes[dataAttribute]; 10717 } 10718 } 10719 config = { 10720 ...dataAttributes, 10721 ...(typeof config === 'object' && config ? config : {}) 10722 }; 10723 config = this._mergeConfigObj(config); 10724 config = this._configAfterMerge(config); 10725 this._typeCheckConfig(config); 10726 return config; 10727 } 10728 _configAfterMerge(config) { 10729 config.container = config.container === false ? document.body : getElement(config.container); 10730 if (typeof config.delay === 'number') { 10731 config.delay = { 10732 show: config.delay, 10733 hide: config.delay 10734 }; 10735 } 10736 if (typeof config.title === 'number') { 10737 config.title = config.title.toString(); 10738 } 10739 if (typeof config.content === 'number') { 10740 config.content = config.content.toString(); 10741 } 10742 return config; 10743 } 10744 _getDelegateConfig() { 10745 const config = {}; 10746 for (const [key, value] of Object.entries(this._config)) { 10747 if (this.constructor.Default[key] !== value) { 10748 config[key] = value; 10749 } 10750 } 10751 config.selector = false; 10752 config.trigger = 'manual'; 10753 10754 // In the future can be replaced with: 10755 // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]]) 10756 // `Object.fromEntries(keysWithDifferentValues)` 10757 return config; 10758 } 10759 _disposePopper() { 10760 if (this._popper) { 10761 this._popper.destroy(); 10762 this._popper = null; 10763 } 10764 if (this.tip) { 10765 this.tip.remove(); 10766 this.tip = null; 10767 } 10768 } 10769 10770 // Static 10771 static jQueryInterface(config) { 10772 return this.each(function () { 10773 const data = Tooltip.getOrCreateInstance(this, config); 10774 if (typeof config !== 'string') { 10775 return; 10776 } 10777 if (typeof data[config] === 'undefined') { 10778 throw new TypeError(`No method named "${config}"`); 10779 } 10780 data[config](); 10781 }); 10782 } 10783} 10784 10785/** 10786 * jQuery 10787 */ 10788 10789defineJQueryPlugin(Tooltip); 10790 10791/** 10792 * -------------------------------------------------------------------------- 10793 * Bootstrap popover.js 10794 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 10795 * -------------------------------------------------------------------------- 10796 */ 10797 10798 10799/** 10800 * Constants 10801 */ 10802 10803const NAME$3 = 'popover'; 10804const SELECTOR_TITLE = '.popover-header'; 10805const SELECTOR_CONTENT = '.popover-body'; 10806const Default$2 = { 10807 ...Tooltip.Default, 10808 content: '', 10809 offset: [0, 8], 10810 placement: 'right', 10811 template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>', 10812 trigger: 'click' 10813}; 10814const DefaultType$2 = { 10815 ...Tooltip.DefaultType, 10816 content: '(null|string|element|function)' 10817}; 10818 10819/** 10820 * Class definition 10821 */ 10822 10823class Popover extends Tooltip { 10824 // Getters 10825 static get Default() { 10826 return Default$2; 10827 } 10828 static get DefaultType() { 10829 return DefaultType$2; 10830 } 10831 static get NAME() { 10832 return NAME$3; 10833 } 10834 10835 // Overrides 10836 _isWithContent() { 10837 return this._getTitle() || this._getContent(); 10838 } 10839 10840 // Private 10841 _getContentForTemplate() { 10842 return { 10843 [SELECTOR_TITLE]: this._getTitle(), 10844 [SELECTOR_CONTENT]: this._getContent() 10845 }; 10846 } 10847 _getContent() { 10848 return this._resolvePossibleFunction(this._config.content); 10849 } 10850 10851 // Static 10852 static jQueryInterface(config) { 10853 return this.each(function () { 10854 const data = Popover.getOrCreateInstance(this, config); 10855 if (typeof config !== 'string') { 10856 return; 10857 } 10858 if (typeof data[config] === 'undefined') { 10859 throw new TypeError(`No method named "${config}"`); 10860 } 10861 data[config](); 10862 }); 10863 } 10864} 10865 10866/** 10867 * jQuery 10868 */ 10869 10870defineJQueryPlugin(Popover); 10871 10872/** 10873 * -------------------------------------------------------------------------- 10874 * Bootstrap scrollspy.js 10875 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 10876 * -------------------------------------------------------------------------- 10877 */ 10878 10879 10880/** 10881 * Constants 10882 */ 10883 10884const NAME$2 = 'scrollspy'; 10885const DATA_KEY$2 = 'bs.scrollspy'; 10886const EVENT_KEY$2 = `.${DATA_KEY$2}`; 10887const DATA_API_KEY = '.data-api'; 10888const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`; 10889const EVENT_CLICK = `click${EVENT_KEY$2}`; 10890const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`; 10891const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'; 10892const CLASS_NAME_ACTIVE$1 = 'active'; 10893const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]'; 10894const SELECTOR_TARGET_LINKS = '[href]'; 10895const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'; 10896const SELECTOR_NAV_LINKS = '.nav-link'; 10897const SELECTOR_NAV_ITEMS = '.nav-item'; 10898const SELECTOR_LIST_ITEMS = '.list-group-item'; 10899const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`; 10900const SELECTOR_DROPDOWN = '.dropdown'; 10901const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle'; 10902const Default$1 = { 10903 offset: null, 10904 // TODO: v6 @deprecated, keep it for backwards compatibility reasons 10905 rootMargin: '0px 0px -25%', 10906 smoothScroll: false, 10907 target: null, 10908 threshold: [0.1, 0.5, 1] 10909}; 10910const DefaultType$1 = { 10911 offset: '(number|null)', 10912 // TODO v6 @deprecated, keep it for backwards compatibility reasons 10913 rootMargin: 'string', 10914 smoothScroll: 'boolean', 10915 target: 'element', 10916 threshold: 'array' 10917}; 10918 10919/** 10920 * Class definition 10921 */ 10922 10923class ScrollSpy extends BaseComponent { 10924 constructor(element, config) { 10925 super(element, config); 10926 10927 // this._element is the observablesContainer and config.target the menu links wrapper 10928 this._targetLinks = new Map(); 10929 this._observableSections = new Map(); 10930 this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element; 10931 this._activeTarget = null; 10932 this._observer = null; 10933 this._previousScrollData = { 10934 visibleEntryTop: 0, 10935 parentScrollTop: 0 10936 }; 10937 this.refresh(); // initialize 10938 } 10939 10940 // Getters 10941 static get Default() { 10942 return Default$1; 10943 } 10944 static get DefaultType() { 10945 return DefaultType$1; 10946 } 10947 static get NAME() { 10948 return NAME$2; 10949 } 10950 10951 // Public 10952 refresh() { 10953 this._initializeTargetsAndObservables(); 10954 this._maybeEnableSmoothScroll(); 10955 if (this._observer) { 10956 this._observer.disconnect(); 10957 } else { 10958 this._observer = this._getNewObserver(); 10959 } 10960 for (const section of this._observableSections.values()) { 10961 this._observer.observe(section); 10962 } 10963 } 10964 dispose() { 10965 this._observer.disconnect(); 10966 super.dispose(); 10967 } 10968 10969 // Private 10970 _configAfterMerge(config) { 10971 // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case 10972 config.target = getElement(config.target) || document.body; 10973 10974 // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only 10975 config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin; 10976 if (typeof config.threshold === 'string') { 10977 config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value)); 10978 } 10979 return config; 10980 } 10981 _maybeEnableSmoothScroll() { 10982 if (!this._config.smoothScroll) { 10983 return; 10984 } 10985 10986 // unregister any previous listeners 10987 EventHandler.off(this._config.target, EVENT_CLICK); 10988 EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => { 10989 const observableSection = this._observableSections.get(event.target.hash); 10990 if (observableSection) { 10991 event.preventDefault(); 10992 const root = this._rootElement || window; 10993 const height = observableSection.offsetTop - this._element.offsetTop; 10994 if (root.scrollTo) { 10995 root.scrollTo({ 10996 top: height, 10997 behavior: 'smooth' 10998 }); 10999 return; 11000 } 11001 11002 // Chrome 60 doesn't support `scrollTo` 11003 root.scrollTop = height; 11004 } 11005 }); 11006 } 11007 _getNewObserver() { 11008 const options = { 11009 root: this._rootElement, 11010 threshold: this._config.threshold, 11011 rootMargin: this._config.rootMargin 11012 }; 11013 return new IntersectionObserver(entries => this._observerCallback(entries), options); 11014 } 11015 11016 // The logic of selection 11017 _observerCallback(entries) { 11018 const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`); 11019 const activate = entry => { 11020 this._previousScrollData.visibleEntryTop = entry.target.offsetTop; 11021 this._process(targetElement(entry)); 11022 }; 11023 const parentScrollTop = (this._rootElement || document.documentElement).scrollTop; 11024 const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop; 11025 this._previousScrollData.parentScrollTop = parentScrollTop; 11026 for (const entry of entries) { 11027 if (!entry.isIntersecting) { 11028 this._activeTarget = null; 11029 this._clearActiveClass(targetElement(entry)); 11030 continue; 11031 } 11032 const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; 11033 // if we are scrolling down, pick the bigger offsetTop 11034 if (userScrollsDown && entryIsLowerThanPrevious) { 11035 activate(entry); 11036 // if parent isn't scrolled, let's keep the first visible item, breaking the iteration 11037 if (!parentScrollTop) { 11038 return; 11039 } 11040 continue; 11041 } 11042 11043 // if we are scrolling up, pick the smallest offsetTop 11044 if (!userScrollsDown && !entryIsLowerThanPrevious) { 11045 activate(entry); 11046 } 11047 } 11048 } 11049 _initializeTargetsAndObservables() { 11050 this._targetLinks = new Map(); 11051 this._observableSections = new Map(); 11052 const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target); 11053 for (const anchor of targetLinks) { 11054 // ensure that the anchor has an id and is not disabled 11055 if (!anchor.hash || isDisabled(anchor)) { 11056 continue; 11057 } 11058 const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element); 11059 11060 // ensure that the observableSection exists & is visible 11061 if (isVisible(observableSection)) { 11062 this._targetLinks.set(decodeURI(anchor.hash), anchor); 11063 this._observableSections.set(anchor.hash, observableSection); 11064 } 11065 } 11066 } 11067 _process(target) { 11068 if (this._activeTarget === target) { 11069 return; 11070 } 11071 this._clearActiveClass(this._config.target); 11072 this._activeTarget = target; 11073 target.classList.add(CLASS_NAME_ACTIVE$1); 11074 this._activateParents(target); 11075 EventHandler.trigger(this._element, EVENT_ACTIVATE, { 11076 relatedTarget: target 11077 }); 11078 } 11079 _activateParents(target) { 11080 // Activate dropdown parents 11081 if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) { 11082 SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1); 11083 return; 11084 } 11085 for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) { 11086 // Set triggered links parents as active 11087 // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor 11088 for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) { 11089 item.classList.add(CLASS_NAME_ACTIVE$1); 11090 } 11091 } 11092 } 11093 _clearActiveClass(parent) { 11094 parent.classList.remove(CLASS_NAME_ACTIVE$1); 11095 const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent); 11096 for (const node of activeNodes) { 11097 node.classList.remove(CLASS_NAME_ACTIVE$1); 11098 } 11099 } 11100 11101 // Static 11102 static jQueryInterface(config) { 11103 return this.each(function () { 11104 const data = ScrollSpy.getOrCreateInstance(this, config); 11105 if (typeof config !== 'string') { 11106 return; 11107 } 11108 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 11109 throw new TypeError(`No method named "${config}"`); 11110 } 11111 data[config](); 11112 }); 11113 } 11114} 11115 11116/** 11117 * Data API implementation 11118 */ 11119 11120EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => { 11121 for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) { 11122 ScrollSpy.getOrCreateInstance(spy); 11123 } 11124}); 11125 11126/** 11127 * jQuery 11128 */ 11129 11130defineJQueryPlugin(ScrollSpy); 11131 11132/** 11133 * -------------------------------------------------------------------------- 11134 * Bootstrap tab.js 11135 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 11136 * -------------------------------------------------------------------------- 11137 */ 11138 11139 11140/** 11141 * Constants 11142 */ 11143 11144const NAME$1 = 'tab'; 11145const DATA_KEY$1 = 'bs.tab'; 11146const EVENT_KEY$1 = `.${DATA_KEY$1}`; 11147const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`; 11148const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`; 11149const EVENT_SHOW$1 = `show${EVENT_KEY$1}`; 11150const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`; 11151const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`; 11152const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`; 11153const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`; 11154const ARROW_LEFT_KEY = 'ArrowLeft'; 11155const ARROW_RIGHT_KEY = 'ArrowRight'; 11156const ARROW_UP_KEY = 'ArrowUp'; 11157const ARROW_DOWN_KEY = 'ArrowDown'; 11158const HOME_KEY = 'Home'; 11159const END_KEY = 'End'; 11160const CLASS_NAME_ACTIVE = 'active'; 11161const CLASS_NAME_FADE$1 = 'fade'; 11162const CLASS_NAME_SHOW$1 = 'show'; 11163const CLASS_DROPDOWN = 'dropdown'; 11164const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'; 11165const SELECTOR_DROPDOWN_MENU = '.dropdown-menu'; 11166const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`; 11167const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]'; 11168const SELECTOR_OUTER = '.nav-item, .list-group-item'; 11169const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`; 11170const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6 11171const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`; 11172const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`; 11173 11174/** 11175 * Class definition 11176 */ 11177 11178class Tab extends BaseComponent { 11179 constructor(element) { 11180 super(element); 11181 this._parent = this._element.closest(SELECTOR_TAB_PANEL); 11182 if (!this._parent) { 11183 return; 11184 // TODO: should throw exception in v6 11185 // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`) 11186 } 11187 11188 // Set up initial aria attributes 11189 this._setInitialAttributes(this._parent, this._getChildren()); 11190 EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event)); 11191 } 11192 11193 // Getters 11194 static get NAME() { 11195 return NAME$1; 11196 } 11197 11198 // Public 11199 show() { 11200 // Shows this elem and deactivate the active sibling if exists 11201 const innerElem = this._element; 11202 if (this._elemIsActive(innerElem)) { 11203 return; 11204 } 11205 11206 // Search for active tab on same parent to deactivate it 11207 const active = this._getActiveElem(); 11208 const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, { 11209 relatedTarget: innerElem 11210 }) : null; 11211 const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, { 11212 relatedTarget: active 11213 }); 11214 if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) { 11215 return; 11216 } 11217 this._deactivate(active, innerElem); 11218 this._activate(innerElem, active); 11219 } 11220 11221 // Private 11222 _activate(element, relatedElem) { 11223 if (!element) { 11224 return; 11225 } 11226 element.classList.add(CLASS_NAME_ACTIVE); 11227 this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section 11228 11229 const complete = () => { 11230 if (element.getAttribute('role') !== 'tab') { 11231 element.classList.add(CLASS_NAME_SHOW$1); 11232 return; 11233 } 11234 element.removeAttribute('tabindex'); 11235 element.setAttribute('aria-selected', true); 11236 this._toggleDropDown(element, true); 11237 EventHandler.trigger(element, EVENT_SHOWN$1, { 11238 relatedTarget: relatedElem 11239 }); 11240 }; 11241 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 11242 } 11243 _deactivate(element, relatedElem) { 11244 if (!element) { 11245 return; 11246 } 11247 element.classList.remove(CLASS_NAME_ACTIVE); 11248 element.blur(); 11249 this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too 11250 11251 const complete = () => { 11252 if (element.getAttribute('role') !== 'tab') { 11253 element.classList.remove(CLASS_NAME_SHOW$1); 11254 return; 11255 } 11256 element.setAttribute('aria-selected', false); 11257 element.setAttribute('tabindex', '-1'); 11258 this._toggleDropDown(element, false); 11259 EventHandler.trigger(element, EVENT_HIDDEN$1, { 11260 relatedTarget: relatedElem 11261 }); 11262 }; 11263 this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1)); 11264 } 11265 _keydown(event) { 11266 if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) { 11267 return; 11268 } 11269 event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page 11270 event.preventDefault(); 11271 const children = this._getChildren().filter(element => !isDisabled(element)); 11272 let nextActiveElement; 11273 if ([HOME_KEY, END_KEY].includes(event.key)) { 11274 nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1]; 11275 } else { 11276 const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key); 11277 nextActiveElement = getNextActiveElement(children, event.target, isNext, true); 11278 } 11279 if (nextActiveElement) { 11280 nextActiveElement.focus({ 11281 preventScroll: true 11282 }); 11283 Tab.getOrCreateInstance(nextActiveElement).show(); 11284 } 11285 } 11286 _getChildren() { 11287 // collection of inner elements 11288 return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent); 11289 } 11290 _getActiveElem() { 11291 return this._getChildren().find(child => this._elemIsActive(child)) || null; 11292 } 11293 _setInitialAttributes(parent, children) { 11294 this._setAttributeIfNotExists(parent, 'role', 'tablist'); 11295 for (const child of children) { 11296 this._setInitialAttributesOnChild(child); 11297 } 11298 } 11299 _setInitialAttributesOnChild(child) { 11300 child = this._getInnerElement(child); 11301 const isActive = this._elemIsActive(child); 11302 const outerElem = this._getOuterElement(child); 11303 child.setAttribute('aria-selected', isActive); 11304 if (outerElem !== child) { 11305 this._setAttributeIfNotExists(outerElem, 'role', 'presentation'); 11306 } 11307 if (!isActive) { 11308 child.setAttribute('tabindex', '-1'); 11309 } 11310 this._setAttributeIfNotExists(child, 'role', 'tab'); 11311 11312 // set attributes to the related panel too 11313 this._setInitialAttributesOnTargetPanel(child); 11314 } 11315 _setInitialAttributesOnTargetPanel(child) { 11316 const target = SelectorEngine.getElementFromSelector(child); 11317 if (!target) { 11318 return; 11319 } 11320 this._setAttributeIfNotExists(target, 'role', 'tabpanel'); 11321 if (child.id) { 11322 this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`); 11323 } 11324 } 11325 _toggleDropDown(element, open) { 11326 const outerElem = this._getOuterElement(element); 11327 if (!outerElem.classList.contains(CLASS_DROPDOWN)) { 11328 return; 11329 } 11330 const toggle = (selector, className) => { 11331 const element = SelectorEngine.findOne(selector, outerElem); 11332 if (element) { 11333 element.classList.toggle(className, open); 11334 } 11335 }; 11336 toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE); 11337 toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1); 11338 outerElem.setAttribute('aria-expanded', open); 11339 } 11340 _setAttributeIfNotExists(element, attribute, value) { 11341 if (!element.hasAttribute(attribute)) { 11342 element.setAttribute(attribute, value); 11343 } 11344 } 11345 _elemIsActive(elem) { 11346 return elem.classList.contains(CLASS_NAME_ACTIVE); 11347 } 11348 11349 // Try to get the inner element (usually the .nav-link) 11350 _getInnerElement(elem) { 11351 return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem); 11352 } 11353 11354 // Try to get the outer element (usually the .nav-item) 11355 _getOuterElement(elem) { 11356 return elem.closest(SELECTOR_OUTER) || elem; 11357 } 11358 11359 // Static 11360 static jQueryInterface(config) { 11361 return this.each(function () { 11362 const data = Tab.getOrCreateInstance(this); 11363 if (typeof config !== 'string') { 11364 return; 11365 } 11366 if (data[config] === undefined || config.startsWith('_') || config === 'constructor') { 11367 throw new TypeError(`No method named "${config}"`); 11368 } 11369 data[config](); 11370 }); 11371 } 11372} 11373 11374/** 11375 * Data API implementation 11376 */ 11377 11378EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { 11379 if (['A', 'AREA'].includes(this.tagName)) { 11380 event.preventDefault(); 11381 } 11382 if (isDisabled(this)) { 11383 return; 11384 } 11385 Tab.getOrCreateInstance(this).show(); 11386}); 11387 11388/** 11389 * Initialize on focus 11390 */ 11391EventHandler.on(window, EVENT_LOAD_DATA_API, () => { 11392 for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) { 11393 Tab.getOrCreateInstance(element); 11394 } 11395}); 11396/** 11397 * jQuery 11398 */ 11399 11400defineJQueryPlugin(Tab); 11401 11402/** 11403 * -------------------------------------------------------------------------- 11404 * Bootstrap toast.js 11405 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 11406 * -------------------------------------------------------------------------- 11407 */ 11408 11409 11410/** 11411 * Constants 11412 */ 11413 11414const NAME = 'toast'; 11415const DATA_KEY = 'bs.toast'; 11416const EVENT_KEY = `.${DATA_KEY}`; 11417const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`; 11418const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`; 11419const EVENT_FOCUSIN = `focusin${EVENT_KEY}`; 11420const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`; 11421const EVENT_HIDE = `hide${EVENT_KEY}`; 11422const EVENT_HIDDEN = `hidden${EVENT_KEY}`; 11423const EVENT_SHOW = `show${EVENT_KEY}`; 11424const EVENT_SHOWN = `shown${EVENT_KEY}`; 11425const CLASS_NAME_FADE = 'fade'; 11426const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility 11427const CLASS_NAME_SHOW = 'show'; 11428const CLASS_NAME_SHOWING = 'showing'; 11429const DefaultType = { 11430 animation: 'boolean', 11431 autohide: 'boolean', 11432 delay: 'number' 11433}; 11434const Default = { 11435 animation: true, 11436 autohide: true, 11437 delay: 5000 11438}; 11439 11440/** 11441 * Class definition 11442 */ 11443 11444class Toast extends BaseComponent { 11445 constructor(element, config) { 11446 super(element, config); 11447 this._timeout = null; 11448 this._hasMouseInteraction = false; 11449 this._hasKeyboardInteraction = false; 11450 this._setListeners(); 11451 } 11452 11453 // Getters 11454 static get Default() { 11455 return Default; 11456 } 11457 static get DefaultType() { 11458 return DefaultType; 11459 } 11460 static get NAME() { 11461 return NAME; 11462 } 11463 11464 // Public 11465 show() { 11466 const showEvent = EventHandler.trigger(this._element, EVENT_SHOW); 11467 if (showEvent.defaultPrevented) { 11468 return; 11469 } 11470 this._clearTimeout(); 11471 if (this._config.animation) { 11472 this._element.classList.add(CLASS_NAME_FADE); 11473 } 11474 const complete = () => { 11475 this._element.classList.remove(CLASS_NAME_SHOWING); 11476 EventHandler.trigger(this._element, EVENT_SHOWN); 11477 this._maybeScheduleHide(); 11478 }; 11479 this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated 11480 reflow(this._element); 11481 this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING); 11482 this._queueCallback(complete, this._element, this._config.animation); 11483 } 11484 hide() { 11485 if (!this.isShown()) { 11486 return; 11487 } 11488 const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE); 11489 if (hideEvent.defaultPrevented) { 11490 return; 11491 } 11492 const complete = () => { 11493 this._element.classList.add(CLASS_NAME_HIDE); // @deprecated 11494 this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW); 11495 EventHandler.trigger(this._element, EVENT_HIDDEN); 11496 }; 11497 this._element.classList.add(CLASS_NAME_SHOWING); 11498 this._queueCallback(complete, this._element, this._config.animation); 11499 } 11500 dispose() { 11501 this._clearTimeout(); 11502 if (this.isShown()) { 11503 this._element.classList.remove(CLASS_NAME_SHOW); 11504 } 11505 super.dispose(); 11506 } 11507 isShown() { 11508 return this._element.classList.contains(CLASS_NAME_SHOW); 11509 } 11510 11511 // Private 11512 11513 _maybeScheduleHide() { 11514 if (!this._config.autohide) { 11515 return; 11516 } 11517 if (this._hasMouseInteraction || this._hasKeyboardInteraction) { 11518 return; 11519 } 11520 this._timeout = setTimeout(() => { 11521 this.hide(); 11522 }, this._config.delay); 11523 } 11524 _onInteraction(event, isInteracting) { 11525 switch (event.type) { 11526 case 'mouseover': 11527 case 'mouseout': 11528 { 11529 this._hasMouseInteraction = isInteracting; 11530 break; 11531 } 11532 case 'focusin': 11533 case 'focusout': 11534 { 11535 this._hasKeyboardInteraction = isInteracting; 11536 break; 11537 } 11538 } 11539 if (isInteracting) { 11540 this._clearTimeout(); 11541 return; 11542 } 11543 const nextElement = event.relatedTarget; 11544 if (this._element === nextElement || this._element.contains(nextElement)) { 11545 return; 11546 } 11547 this._maybeScheduleHide(); 11548 } 11549 _setListeners() { 11550 EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true)); 11551 EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false)); 11552 EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true)); 11553 EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false)); 11554 } 11555 _clearTimeout() { 11556 clearTimeout(this._timeout); 11557 this._timeout = null; 11558 } 11559 11560 // Static 11561 static jQueryInterface(config) { 11562 return this.each(function () { 11563 const data = Toast.getOrCreateInstance(this, config); 11564 if (typeof config === 'string') { 11565 if (typeof data[config] === 'undefined') { 11566 throw new TypeError(`No method named "${config}"`); 11567 } 11568 data[config](this); 11569 } 11570 }); 11571 } 11572} 11573 11574/** 11575 * Data API implementation 11576 */ 11577 11578enableDismissTrigger(Toast); 11579 11580/** 11581 * jQuery 11582 */ 11583 11584defineJQueryPlugin(Toast); 11585 11586 11587//# sourceMappingURL=bootstrap.esm.js.map 11588 11589 11590/***/ }), 11591
11592/***/ "./src/scss/app.scss": 11593/*!***************************!*\ 11594 !*** ./src/scss/app.scss ***! 11595 \***************************/ 11596/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 11597 11598__webpack_require__.r(__webpack_exports__); 11599// extracted by mini-css-extract-plugin 11600 11601 11602/***/ }), 11603
vendor: 13,981 bytes, lines 11604-11994
11604/***/ "./node_modules/swiper/modules/a11y.mjs": 11605/*!**********************************************!*\ 11606 !*** ./node_modules/swiper/modules/a11y.mjs ***! 11607 \**********************************************/ 11608/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 11609 11610__webpack_require__.r(__webpack_exports__); 11611/* harmony export */ __webpack_require__.d(__webpack_exports__, { 11612/* harmony export */ "default": function() { return /* binding */ A11y; } 11613/* harmony export */ }); 11614/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 11615/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs"); 11616/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 11617 11618 11619 11620 11621function A11y(_ref) { 11622 let { 11623 swiper, 11624 extendParams, 11625 on 11626 } = _ref; 11627 extendParams({ 11628 a11y: { 11629 enabled: true, 11630 notificationClass: 'swiper-notification', 11631 prevSlideMessage: 'Previous slide', 11632 nextSlideMessage: 'Next slide', 11633 firstSlideMessage: 'This is the first slide', 11634 lastSlideMessage: 'This is the last slide', 11635 paginationBulletMessage: 'Go to slide {{index}}', 11636 slideLabelMessage: '{{index}} / {{slidesLength}}', 11637 containerMessage: null, 11638 containerRoleDescriptionMessage: null, 11639 itemRoleDescriptionMessage: null, 11640 slideRole: 'group', 11641 id: null, 11642 scrollOnFocus: true 11643 } 11644 }); 11645 swiper.a11y = { 11646 clicked: false 11647 }; 11648 let liveRegion = null; 11649 let preventFocusHandler; 11650 let focusTargetSlideEl; 11651 let visibilityChangedTimestamp = new Date().getTime(); 11652 function notify(message) { 11653 const notification = liveRegion; 11654 if (notification.length === 0) return; 11655 notification.innerHTML = ''; 11656 notification.innerHTML = message; 11657 } 11658 function getRandomNumber(size) { 11659 if (size === void 0) { 11660 size = 16; 11661 } 11662 const randomChar = () => Math.round(16 * Math.random()).toString(16); 11663 return 'x'.repeat(size).replace(/x/g, randomChar); 11664 } 11665 function makeElFocusable(el) { 11666 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11667 el.forEach(subEl => { 11668 subEl.setAttribute('tabIndex', '0'); 11669 }); 11670 } 11671 function makeElNotFocusable(el) { 11672 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11673 el.forEach(subEl => { 11674 subEl.setAttribute('tabIndex', '-1'); 11675 }); 11676 } 11677 function addElRole(el, role) { 11678 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11679 el.forEach(subEl => { 11680 subEl.setAttribute('role', role); 11681 }); 11682 } 11683 function addElRoleDescription(el, description) { 11684 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11685 el.forEach(subEl => { 11686 subEl.setAttribute('aria-roledescription', description); 11687 }); 11688 } 11689 function addElControls(el, controls) { 11690 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11691 el.forEach(subEl => { 11692 subEl.setAttribute('aria-controls', controls); 11693 }); 11694 } 11695 function addElLabel(el, label) { 11696 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11697 el.forEach(subEl => { 11698 subEl.setAttribute('aria-label', label); 11699 }); 11700 } 11701 function addElId(el, id) { 11702 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11703 el.forEach(subEl => { 11704 subEl.setAttribute('id', id); 11705 }); 11706 } 11707 function addElLive(el, live) { 11708 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11709 el.forEach(subEl => { 11710 subEl.setAttribute('aria-live', live); 11711 }); 11712 } 11713 function disableEl(el) { 11714 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11715 el.forEach(subEl => { 11716 subEl.setAttribute('aria-disabled', true); 11717 }); 11718 } 11719 function enableEl(el) { 11720 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 11721 el.forEach(subEl => { 11722 subEl.setAttribute('aria-disabled', false); 11723 }); 11724 } 11725 function onEnterOrSpaceKey(e) { 11726 if (e.keyCode !== 13 && e.keyCode !== 32) return; 11727 const params = swiper.params.a11y; 11728 const targetEl = e.target; 11729 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 11730 if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return; 11731 } 11732 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 11733 const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl); 11734 const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl); 11735 if (nextEls.includes(targetEl)) { 11736 if (!(swiper.isEnd && !swiper.params.loop)) { 11737 swiper.slideNext(); 11738 } 11739 if (swiper.isEnd) { 11740 notify(params.lastSlideMessage); 11741 } else { 11742 notify(params.nextSlideMessage); 11743 } 11744 } 11745 if (prevEls.includes(targetEl)) { 11746 if (!(swiper.isBeginning && !swiper.params.loop)) { 11747 swiper.slidePrev(); 11748 } 11749 if (swiper.isBeginning) { 11750 notify(params.firstSlideMessage); 11751 } else { 11752 notify(params.prevSlideMessage); 11753 } 11754 } 11755 } 11756 if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) { 11757 targetEl.click(); 11758 } 11759 } 11760 function updateNavigation() { 11761 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 11762 const { 11763 nextEl, 11764 prevEl 11765 } = swiper.navigation; 11766 if (prevEl) { 11767 if (swiper.isBeginning) { 11768 disableEl(prevEl); 11769 makeElNotFocusable(prevEl); 11770 } else { 11771 enableEl(prevEl); 11772 makeElFocusable(prevEl); 11773 } 11774 } 11775 if (nextEl) { 11776 if (swiper.isEnd) { 11777 disableEl(nextEl); 11778 makeElNotFocusable(nextEl); 11779 } else { 11780 enableEl(nextEl); 11781 makeElFocusable(nextEl); 11782 } 11783 } 11784 } 11785 function hasPagination() { 11786 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 11787 } 11788 function hasClickablePagination() { 11789 return hasPagination() && swiper.params.pagination.clickable; 11790 } 11791 function updatePagination() { 11792 const params = swiper.params.a11y; 11793 if (!hasPagination()) return; 11794 swiper.pagination.bullets.forEach(bulletEl => { 11795 if (swiper.params.pagination.clickable) { 11796 makeElFocusable(bulletEl); 11797 if (!swiper.params.pagination.renderBullet) { 11798 addElRole(bulletEl, 'button'); 11799 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) + 1)); 11800 } 11801 } 11802 if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) { 11803 bulletEl.setAttribute('aria-current', 'true'); 11804 } else { 11805 bulletEl.removeAttribute('aria-current'); 11806 } 11807 }); 11808 } 11809 const initNavEl = (el, wrapperId, message) => { 11810 makeElFocusable(el); 11811 if (el.tagName !== 'BUTTON') { 11812 addElRole(el, 'button'); 11813 el.addEventListener('keydown', onEnterOrSpaceKey); 11814 } 11815 addElLabel(el, message); 11816 addElControls(el, wrapperId); 11817 }; 11818 const handlePointerDown = e => { 11819 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 11820 preventFocusHandler = true; 11821 } 11822 swiper.a11y.clicked = true; 11823 }; 11824 const handlePointerUp = () => { 11825 preventFocusHandler = false; 11826 requestAnimationFrame(() => { 11827 requestAnimationFrame(() => { 11828 if (!swiper.destroyed) { 11829 swiper.a11y.clicked = false; 11830 } 11831 }); 11832 }); 11833 }; 11834 const onVisibilityChange = e => { 11835 visibilityChangedTimestamp = new Date().getTime(); 11836 }; 11837 const handleFocus = e => { 11838 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 11839 if (new Date().getTime() - visibilityChangedTimestamp < 100) return; 11840 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 11841 if (!slideEl || !swiper.slides.includes(slideEl)) return; 11842 focusTargetSlideEl = slideEl; 11843 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 11844 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 11845 if (isActive || isVisible) return; 11846 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 11847 if (swiper.isHorizontal()) { 11848 swiper.el.scrollLeft = 0; 11849 } else { 11850 swiper.el.scrollTop = 0; 11851 } 11852 requestAnimationFrame(() => { 11853 if (preventFocusHandler) return; 11854 if (swiper.params.loop) { 11855 swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); 11856 } else { 11857 swiper.slideTo(swiper.slides.indexOf(slideEl), 0); 11858 } 11859 preventFocusHandler = false; 11860 }); 11861 }; 11862 const initSlides = () => { 11863 const params = swiper.params.a11y; 11864 if (params.itemRoleDescriptionMessage) { 11865 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 11866 } 11867 if (params.slideRole) { 11868 addElRole(swiper.slides, params.slideRole); 11869 } 11870 const slidesLength = swiper.slides.length; 11871 if (params.slideLabelMessage) { 11872 swiper.slides.forEach((slideEl, index) => { 11873 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; 11874 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 11875 addElLabel(slideEl, ariaLabelMessage); 11876 }); 11877 } 11878 }; 11879 const init = () => { 11880 const params = swiper.params.a11y; 11881 swiper.el.append(liveRegion); 11882 11883 // Container 11884 const containerEl = swiper.el; 11885 if (params.containerRoleDescriptionMessage) { 11886 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 11887 } 11888 if (params.containerMessage) { 11889 addElLabel(containerEl, params.containerMessage); 11890 } 11891 11892 // Wrapper 11893 const wrapperEl = swiper.wrapperEl; 11894 const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; 11895 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 11896 addElId(wrapperEl, wrapperId); 11897 addElLive(wrapperEl, live); 11898 11899 // Slide 11900 initSlides(); 11901 11902 // Navigation 11903 let { 11904 nextEl, 11905 prevEl 11906 } = swiper.navigation ? swiper.navigation : {}; 11907 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 11908 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 11909 if (nextEl) { 11910 nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); 11911 } 11912 if (prevEl) { 11913 prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); 11914 } 11915 11916 // Pagination 11917 if (hasClickablePagination()) { 11918 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 11919 paginationEl.forEach(el => { 11920 el.addEventListener('keydown', onEnterOrSpaceKey); 11921 }); 11922 } 11923 11924 // Tab focus 11925 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 11926 document.addEventListener('visibilitychange', onVisibilityChange); 11927 swiper.el.addEventListener('focus', handleFocus, true); 11928 swiper.el.addEventListener('focus', handleFocus, true); 11929 swiper.el.addEventListener('pointerdown', handlePointerDown, true); 11930 swiper.el.addEventListener('pointerup', handlePointerUp, true); 11931 }; 11932 function destroy() { 11933 if (liveRegion) liveRegion.remove(); 11934 let { 11935 nextEl, 11936 prevEl 11937 } = swiper.navigation ? swiper.navigation : {}; 11938 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 11939 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 11940 if (nextEl) { 11941 nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 11942 } 11943 if (prevEl) { 11944 prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 11945 } 11946 11947 // Pagination 11948 if (hasClickablePagination()) { 11949 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 11950 paginationEl.forEach(el => { 11951 el.removeEventListener('keydown', onEnterOrSpaceKey); 11952 }); 11953 } 11954 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 11955 document.removeEventListener('visibilitychange', onVisibilityChange); 11956 // Tab focus 11957 if (swiper.el && typeof swiper.el !== 'string') { 11958 swiper.el.removeEventListener('focus', handleFocus, true); 11959 swiper.el.removeEventListener('pointerdown', handlePointerDown, true); 11960 swiper.el.removeEventListener('pointerup', handlePointerUp, true); 11961 } 11962 } 11963 on('beforeInit', () => { 11964 liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass); 11965 liveRegion.setAttribute('aria-live', 'assertive'); 11966 liveRegion.setAttribute('aria-atomic', 'true'); 11967 }); 11968 on('afterInit', () => { 11969 if (!swiper.params.a11y.enabled) return; 11970 init(); 11971 }); 11972 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 11973 if (!swiper.params.a11y.enabled) return; 11974 initSlides(); 11975 }); 11976 on('fromEdge toEdge afterInit lock unlock', () => { 11977 if (!swiper.params.a11y.enabled) return; 11978 updateNavigation(); 11979 }); 11980 on('paginationUpdate', () => { 11981 if (!swiper.params.a11y.enabled) return; 11982 updatePagination(); 11983 }); 11984 on('destroy', () => { 11985 if (!swiper.params.a11y.enabled) return; 11986 destroy(); 11987 }); 11988} 11989 11990 11991 11992 11993/***/ }), 11994
vendor: 10,055 bytes, lines 11995-12313
11995/***/ "./node_modules/swiper/modules/autoplay.mjs": 11996/*!**************************************************!*\ 11997 !*** ./node_modules/swiper/modules/autoplay.mjs ***! 11998 \**************************************************/ 11999/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12000 12001__webpack_require__.r(__webpack_exports__); 12002/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12003/* harmony export */ "default": function() { return /* binding */ Autoplay; } 12004/* harmony export */ }); 12005/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 12006 12007 12008/* eslint no-underscore-dangle: "off" */ 12009/* eslint no-use-before-define: "off" */ 12010function Autoplay(_ref) { 12011 let { 12012 swiper, 12013 extendParams, 12014 on, 12015 emit, 12016 params 12017 } = _ref; 12018 swiper.autoplay = { 12019 running: false, 12020 paused: false, 12021 timeLeft: 0 12022 }; 12023 extendParams({ 12024 autoplay: { 12025 enabled: false, 12026 delay: 3000, 12027 waitForTransition: true, 12028 disableOnInteraction: false, 12029 stopOnLastSlide: false, 12030 reverseDirection: false, 12031 pauseOnMouseEnter: false 12032 } 12033 }); 12034 let timeout; 12035 let raf; 12036 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; 12037 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; 12038 let autoplayTimeLeft; 12039 let autoplayStartTime = new Date().getTime(); 12040 let wasPaused; 12041 let isTouched; 12042 let pausedByTouch; 12043 let touchStartTimeout; 12044 let slideChanged; 12045 let pausedByInteraction; 12046 let pausedByPointerEnter; 12047 function onTransitionEnd(e) { 12048 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 12049 if (e.target !== swiper.wrapperEl) return; 12050 swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); 12051 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 12052 return; 12053 } 12054 resume(); 12055 } 12056 const calcTimeLeft = () => { 12057 if (swiper.destroyed || !swiper.autoplay.running) return; 12058 if (swiper.autoplay.paused) { 12059 wasPaused = true; 12060 } else if (wasPaused) { 12061 autoplayDelayCurrent = autoplayTimeLeft; 12062 wasPaused = false; 12063 } 12064 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); 12065 swiper.autoplay.timeLeft = timeLeft; 12066 emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); 12067 raf = requestAnimationFrame(() => { 12068 calcTimeLeft(); 12069 }); 12070 }; 12071 const getSlideDelay = () => { 12072 let activeSlideEl; 12073 if (swiper.virtual && swiper.params.virtual.enabled) { 12074 activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; 12075 } else { 12076 activeSlideEl = swiper.slides[swiper.activeIndex]; 12077 } 12078 if (!activeSlideEl) return undefined; 12079 const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); 12080 return currentSlideDelay; 12081 }; 12082 const run = delayForce => { 12083 if (swiper.destroyed || !swiper.autoplay.running) return; 12084 cancelAnimationFrame(raf); 12085 calcTimeLeft(); 12086 let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; 12087 autoplayDelayTotal = swiper.params.autoplay.delay; 12088 autoplayDelayCurrent = swiper.params.autoplay.delay; 12089 const currentSlideDelay = getSlideDelay(); 12090 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { 12091 delay = currentSlideDelay; 12092 autoplayDelayTotal = currentSlideDelay; 12093 autoplayDelayCurrent = currentSlideDelay; 12094 } 12095 autoplayTimeLeft = delay; 12096 const speed = swiper.params.speed; 12097 const proceed = () => { 12098 if (!swiper || swiper.destroyed) return; 12099 if (swiper.params.autoplay.reverseDirection) { 12100 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 12101 swiper.slidePrev(speed, true, true); 12102 emit('autoplay'); 12103 } else if (!swiper.params.autoplay.stopOnLastSlide) { 12104 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 12105 emit('autoplay'); 12106 } 12107 } else { 12108 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 12109 swiper.slideNext(speed, true, true); 12110 emit('autoplay'); 12111 } else if (!swiper.params.autoplay.stopOnLastSlide) { 12112 swiper.slideTo(0, speed, true, true); 12113 emit('autoplay'); 12114 } 12115 } 12116 if (swiper.params.cssMode) { 12117 autoplayStartTime = new Date().getTime(); 12118 requestAnimationFrame(() => { 12119 run(); 12120 }); 12121 } 12122 }; 12123 if (delay > 0) { 12124 clearTimeout(timeout); 12125 timeout = setTimeout(() => { 12126 proceed(); 12127 }, delay); 12128 } else { 12129 requestAnimationFrame(() => { 12130 proceed(); 12131 }); 12132 } 12133 12134 // eslint-disable-next-line 12135 return delay; 12136 }; 12137 const start = () => { 12138 autoplayStartTime = new Date().getTime(); 12139 swiper.autoplay.running = true; 12140 run(); 12141 emit('autoplayStart'); 12142 }; 12143 const stop = () => { 12144 swiper.autoplay.running = false; 12145 clearTimeout(timeout); 12146 cancelAnimationFrame(raf); 12147 emit('autoplayStop'); 12148 }; 12149 const pause = (internal, reset) => { 12150 if (swiper.destroyed || !swiper.autoplay.running) return; 12151 clearTimeout(timeout); 12152 if (!internal) { 12153 pausedByInteraction = true; 12154 } 12155 const proceed = () => { 12156 emit('autoplayPause'); 12157 if (swiper.params.autoplay.waitForTransition) { 12158 swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); 12159 } else { 12160 resume(); 12161 } 12162 }; 12163 swiper.autoplay.paused = true; 12164 if (reset) { 12165 if (slideChanged) { 12166 autoplayTimeLeft = swiper.params.autoplay.delay; 12167 } 12168 slideChanged = false; 12169 proceed(); 12170 return; 12171 } 12172 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 12173 autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); 12174 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 12175 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 12176 proceed(); 12177 }; 12178 const resume = () => { 12179 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 12180 autoplayStartTime = new Date().getTime(); 12181 if (pausedByInteraction) { 12182 pausedByInteraction = false; 12183 run(autoplayTimeLeft); 12184 } else { 12185 run(); 12186 } 12187 swiper.autoplay.paused = false; 12188 emit('autoplayResume'); 12189 }; 12190 const onVisibilityChange = () => { 12191 if (swiper.destroyed || !swiper.autoplay.running) return; 12192 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 12193 if (document.visibilityState === 'hidden') { 12194 pausedByInteraction = true; 12195 pause(true); 12196 } 12197 if (document.visibilityState === 'visible') { 12198 resume(); 12199 } 12200 }; 12201 const onPointerEnter = e => { 12202 if (e.pointerType !== 'mouse') return; 12203 pausedByInteraction = true; 12204 pausedByPointerEnter = true; 12205 if (swiper.animating || swiper.autoplay.paused) return; 12206 pause(true); 12207 }; 12208 const onPointerLeave = e => { 12209 if (e.pointerType !== 'mouse') return; 12210 pausedByPointerEnter = false; 12211 if (swiper.autoplay.paused) { 12212 resume(); 12213 } 12214 }; 12215 const attachMouseEvents = () => { 12216 if (swiper.params.autoplay.pauseOnMouseEnter) { 12217 swiper.el.addEventListener('pointerenter', onPointerEnter); 12218 swiper.el.addEventListener('pointerleave', onPointerLeave); 12219 } 12220 }; 12221 const detachMouseEvents = () => { 12222 if (swiper.el && typeof swiper.el !== 'string') { 12223 swiper.el.removeEventListener('pointerenter', onPointerEnter); 12224 swiper.el.removeEventListener('pointerleave', onPointerLeave); 12225 } 12226 }; 12227 const attachDocumentEvents = () => { 12228 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 12229 document.addEventListener('visibilitychange', onVisibilityChange); 12230 }; 12231 const detachDocumentEvents = () => { 12232 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 12233 document.removeEventListener('visibilitychange', onVisibilityChange); 12234 }; 12235 on('init', () => { 12236 if (swiper.params.autoplay.enabled) { 12237 attachMouseEvents(); 12238 attachDocumentEvents(); 12239 start(); 12240 } 12241 }); 12242 on('destroy', () => { 12243 detachMouseEvents(); 12244 detachDocumentEvents(); 12245 if (swiper.autoplay.running) { 12246 stop(); 12247 } 12248 }); 12249 on('_freeModeStaticRelease', () => { 12250 if (pausedByTouch || pausedByInteraction) { 12251 resume(); 12252 } 12253 }); 12254 on('_freeModeNoMomentumRelease', () => { 12255 if (!swiper.params.autoplay.disableOnInteraction) { 12256 pause(true, true); 12257 } else { 12258 stop(); 12259 } 12260 }); 12261 on('beforeTransitionStart', (_s, speed, internal) => { 12262 if (swiper.destroyed || !swiper.autoplay.running) return; 12263 if (internal || !swiper.params.autoplay.disableOnInteraction) { 12264 pause(true, true); 12265 } else { 12266 stop(); 12267 } 12268 }); 12269 on('sliderFirstMove', () => { 12270 if (swiper.destroyed || !swiper.autoplay.running) return; 12271 if (swiper.params.autoplay.disableOnInteraction) { 12272 stop(); 12273 return; 12274 } 12275 isTouched = true; 12276 pausedByTouch = false; 12277 pausedByInteraction = false; 12278 touchStartTimeout = setTimeout(() => { 12279 pausedByInteraction = true; 12280 pausedByTouch = true; 12281 pause(true); 12282 }, 200); 12283 }); 12284 on('touchEnd', () => { 12285 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 12286 clearTimeout(touchStartTimeout); 12287 clearTimeout(timeout); 12288 if (swiper.params.autoplay.disableOnInteraction) { 12289 pausedByTouch = false; 12290 isTouched = false; 12291 return; 12292 } 12293 if (pausedByTouch && swiper.params.cssMode) resume(); 12294 pausedByTouch = false; 12295 isTouched = false; 12296 }); 12297 on('slideChange', () => { 12298 if (swiper.destroyed || !swiper.autoplay.running) return; 12299 slideChanged = true; 12300 }); 12301 Object.assign(swiper.autoplay, { 12302 start, 12303 stop, 12304 pause, 12305 resume 12306 }); 12307} 12308 12309 12310 12311 12312/***/ }), 12313
vendor: 7,519 bytes, lines 12314-12519
12314/***/ "./node_modules/swiper/modules/controller.mjs": 12315/*!****************************************************!*\ 12316 !*** ./node_modules/swiper/modules/controller.mjs ***! 12317 \****************************************************/ 12318/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12319 12320__webpack_require__.r(__webpack_exports__); 12321/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12322/* harmony export */ "default": function() { return /* binding */ Controller; } 12323/* harmony export */ }); 12324/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 12325 12326 12327/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 12328function Controller(_ref) { 12329 let { 12330 swiper, 12331 extendParams, 12332 on 12333 } = _ref; 12334 extendParams({ 12335 controller: { 12336 control: undefined, 12337 inverse: false, 12338 by: 'slide' // or 'container' 12339 } 12340 }); 12341 12342 swiper.controller = { 12343 control: undefined 12344 }; 12345 function LinearSpline(x, y) { 12346 const binarySearch = function search() { 12347 let maxIndex; 12348 let minIndex; 12349 let guess; 12350 return (array, val) => { 12351 minIndex = -1; 12352 maxIndex = array.length; 12353 while (maxIndex - minIndex > 1) { 12354 guess = maxIndex + minIndex >> 1; 12355 if (array[guess] <= val) { 12356 minIndex = guess; 12357 } else { 12358 maxIndex = guess; 12359 } 12360 } 12361 return maxIndex; 12362 }; 12363 }(); 12364 this.x = x; 12365 this.y = y; 12366 this.lastIndex = x.length - 1; 12367 // Given an x value (x2), return the expected y2 value: 12368 // (x1,y1) is the known point before given value, 12369 // (x3,y3) is the known point after given value. 12370 let i1; 12371 let i3; 12372 this.interpolate = function interpolate(x2) { 12373 if (!x2) return 0; 12374 12375 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 12376 i3 = binarySearch(this.x, x2); 12377 i1 = i3 - 1; 12378 12379 // We have our indexes i1 & i3, so we can calculate already: 12380 // y2 := ((x2âx1) à (y3ây1)) ÷ (x3âx1) + y1 12381 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 12382 }; 12383 return this; 12384 } 12385 function getInterpolateFunction(c) { 12386 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 12387 } 12388 function setTranslate(_t, byController) { 12389 const controlled = swiper.controller.control; 12390 let multiplier; 12391 let controlledTranslate; 12392 const Swiper = swiper.constructor; 12393 function setControlledTranslate(c) { 12394 if (c.destroyed) return; 12395 12396 // this will create an Interpolate function based on the snapGrids 12397 // x is the Grid of the scrolled scroller and y will be the controlled scroller 12398 // it makes sense to create this only once and recall it for the interpolation 12399 // the function does a lot of value caching for performance 12400 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 12401 if (swiper.params.controller.by === 'slide') { 12402 getInterpolateFunction(c); 12403 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 12404 // but it did not work out 12405 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 12406 } 12407 if (!controlledTranslate || swiper.params.controller.by === 'container') { 12408 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 12409 if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { 12410 multiplier = 1; 12411 } 12412 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 12413 } 12414 if (swiper.params.controller.inverse) { 12415 controlledTranslate = c.maxTranslate() - controlledTranslate; 12416 } 12417 c.updateProgress(controlledTranslate); 12418 c.setTranslate(controlledTranslate, swiper); 12419 c.updateActiveIndex(); 12420 c.updateSlidesClasses(); 12421 } 12422 if (Array.isArray(controlled)) { 12423 for (let i = 0; i < controlled.length; i += 1) { 12424 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 12425 setControlledTranslate(controlled[i]); 12426 } 12427 } 12428 } else if (controlled instanceof Swiper && byController !== controlled) { 12429 setControlledTranslate(controlled); 12430 } 12431 } 12432 function setTransition(duration, byController) { 12433 const Swiper = swiper.constructor; 12434 const controlled = swiper.controller.control; 12435 let i; 12436 function setControlledTransition(c) { 12437 if (c.destroyed) return; 12438 c.setTransition(duration, swiper); 12439 if (duration !== 0) { 12440 c.transitionStart(); 12441 if (c.params.autoHeight) { 12442 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => { 12443 c.updateAutoHeight(); 12444 }); 12445 } 12446 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(c.wrapperEl, () => { 12447 if (!controlled) return; 12448 c.transitionEnd(); 12449 }); 12450 } 12451 } 12452 if (Array.isArray(controlled)) { 12453 for (i = 0; i < controlled.length; i += 1) { 12454 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 12455 setControlledTransition(controlled[i]); 12456 } 12457 } 12458 } else if (controlled instanceof Swiper && byController !== controlled) { 12459 setControlledTransition(controlled); 12460 } 12461 } 12462 function removeSpline() { 12463 if (!swiper.controller.control) return; 12464 if (swiper.controller.spline) { 12465 swiper.controller.spline = undefined; 12466 delete swiper.controller.spline; 12467 } 12468 } 12469 on('beforeInit', () => { 12470 if (typeof window !== 'undefined' && ( 12471 // eslint-disable-line 12472 typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { 12473 const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; 12474 controlElements.forEach(controlElement => { 12475 if (!swiper.controller.control) swiper.controller.control = []; 12476 if (controlElement && controlElement.swiper) { 12477 swiper.controller.control.push(controlElement.swiper); 12478 } else if (controlElement) { 12479 const eventName = `${swiper.params.eventsPrefix}init`; 12480 const onControllerSwiper = e => { 12481 swiper.controller.control.push(e.detail[0]); 12482 swiper.update(); 12483 controlElement.removeEventListener(eventName, onControllerSwiper); 12484 }; 12485 controlElement.addEventListener(eventName, onControllerSwiper); 12486 } 12487 }); 12488 return; 12489 } 12490 swiper.controller.control = swiper.params.controller.control; 12491 }); 12492 on('update', () => { 12493 removeSpline(); 12494 }); 12495 on('resize', () => { 12496 removeSpline(); 12497 }); 12498 on('observerUpdate', () => { 12499 removeSpline(); 12500 }); 12501 on('setTranslate', (_s, translate, byController) => { 12502 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 12503 swiper.controller.setTranslate(translate, byController); 12504 }); 12505 on('setTransition', (_s, duration, byController) => { 12506 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 12507 swiper.controller.setTransition(duration, byController); 12508 }); 12509 Object.assign(swiper.controller, { 12510 setTranslate, 12511 setTransition 12512 }); 12513} 12514 12515 12516 12517 12518/***/ }), 12519
vendor: 5,916 bytes, lines 12520-12663
12520/***/ "./node_modules/swiper/modules/effect-cards.mjs": 12521/*!******************************************************!*\ 12522 !*** ./node_modules/swiper/modules/effect-cards.mjs ***! 12523 \******************************************************/ 12524/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12525 12526__webpack_require__.r(__webpack_exports__); 12527/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12528/* harmony export */ "default": function() { return /* binding */ EffectCards; } 12529/* harmony export */ }); 12530/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 12531/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 12532/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 12533/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs"); 12534/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 12535 12536 12537 12538 12539 12540 12541function EffectCards(_ref) { 12542 let { 12543 swiper, 12544 extendParams, 12545 on 12546 } = _ref; 12547 extendParams({ 12548 cardsEffect: { 12549 slideShadows: true, 12550 rotate: true, 12551 perSlideRotate: 2, 12552 perSlideOffset: 8 12553 } 12554 }); 12555 const setTranslate = () => { 12556 const { 12557 slides, 12558 activeIndex, 12559 rtlTranslate: rtl 12560 } = swiper; 12561 const params = swiper.params.cardsEffect; 12562 const { 12563 startTranslate, 12564 isTouched 12565 } = swiper.touchEventsData; 12566 const currentTranslate = rtl ? -swiper.translate : swiper.translate; 12567 for (let i = 0; i < slides.length; i += 1) { 12568 const slideEl = slides[i]; 12569 const slideProgress = slideEl.progress; 12570 const progress = Math.min(Math.max(slideProgress, -4), 4); 12571 let offset = slideEl.swiperSlideOffset; 12572 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 12573 swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; 12574 } 12575 if (swiper.params.centeredSlides && swiper.params.cssMode) { 12576 offset -= slides[0].swiperSlideOffset; 12577 } 12578 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 12579 let tY = 0; 12580 const tZ = -100 * Math.abs(progress); 12581 let scale = 1; 12582 let rotate = -params.perSlideRotate * progress; 12583 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 12584 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 12585 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 12586 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 12587 if (isSwipeToNext || isSwipeToPrev) { 12588 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 12589 rotate += -28 * progress * subProgress; 12590 scale += -0.5 * subProgress; 12591 tXAdd += 96 * subProgress; 12592 tY = `${-25 * subProgress * Math.abs(progress)}%`; 12593 } 12594 if (progress < 0) { 12595 // next 12596 tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; 12597 } else if (progress > 0) { 12598 // prev 12599 tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; 12600 } else { 12601 tX = `${tX}px`; 12602 } 12603 if (!swiper.isHorizontal()) { 12604 const prevY = tY; 12605 tY = tX; 12606 tX = prevY; 12607 } 12608 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 12609 12610 /* eslint-disable */ 12611 const transform = ` 12612 translate3d(${tX}, ${tY}, ${tZ}px) 12613 rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) 12614 scale(${scaleString}) 12615 `; 12616 /* eslint-enable */ 12617 12618 if (params.slideShadows) { 12619 // Set shadows 12620 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 12621 if (!shadowEl) { 12622 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl); 12623 } 12624 if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 12625 } 12626 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 12627 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 12628 targetEl.style.transform = transform; 12629 } 12630 }; 12631 const setTransition = duration => { 12632 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 12633 transformElements.forEach(el => { 12634 el.style.transitionDuration = `${duration}ms`; 12635 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 12636 shadowEl.style.transitionDuration = `${duration}ms`; 12637 }); 12638 }); 12639 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 12640 swiper, 12641 duration, 12642 transformElements 12643 }); 12644 }; 12645 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 12646 effect: 'cards', 12647 swiper, 12648 on, 12649 setTranslate, 12650 setTransition, 12651 perspective: () => true, 12652 overwriteParams: () => ({ 12653 watchSlidesProgress: true, 12654 virtualTranslate: !swiper.params.cssMode 12655 }) 12656 }); 12657} 12658 12659 12660 12661 12662/***/ }), 12663
vendor: 5,700 bytes, lines 12664-12785
12664/***/ "./node_modules/swiper/modules/effect-coverflow.mjs": 12665/*!**********************************************************!*\ 12666 !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***! 12667 \**********************************************************/ 12668/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12669 12670__webpack_require__.r(__webpack_exports__); 12671/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12672/* harmony export */ "default": function() { return /* binding */ EffectCoverflow; } 12673/* harmony export */ }); 12674/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 12675/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 12676/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 12677/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 12678 12679 12680 12681 12682 12683function EffectCoverflow(_ref) { 12684 let { 12685 swiper, 12686 extendParams, 12687 on 12688 } = _ref; 12689 extendParams({ 12690 coverflowEffect: { 12691 rotate: 50, 12692 stretch: 0, 12693 depth: 100, 12694 scale: 1, 12695 modifier: 1, 12696 slideShadows: true 12697 } 12698 }); 12699 const setTranslate = () => { 12700 const { 12701 width: swiperWidth, 12702 height: swiperHeight, 12703 slides, 12704 slidesSizesGrid 12705 } = swiper; 12706 const params = swiper.params.coverflowEffect; 12707 const isHorizontal = swiper.isHorizontal(); 12708 const transform = swiper.translate; 12709 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 12710 const rotate = isHorizontal ? params.rotate : -params.rotate; 12711 const translate = params.depth; 12712 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.o)(swiper); 12713 // Each slide offset from center 12714 for (let i = 0, length = slides.length; i < length; i += 1) { 12715 const slideEl = slides[i]; 12716 const slideSize = slidesSizesGrid[i]; 12717 const slideOffset = slideEl.swiperSlideOffset; 12718 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 12719 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 12720 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 12721 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 12722 // var rotateZ = 0 12723 let translateZ = -translate * Math.abs(offsetMultiplier); 12724 let stretch = params.stretch; 12725 // Allow percentage to make a relative stretch for responsive sliders 12726 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 12727 stretch = parseFloat(params.stretch) / 100 * slideSize; 12728 } 12729 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 12730 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 12731 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); 12732 12733 // Fix for ultra small values 12734 if (Math.abs(translateX) < 0.001) translateX = 0; 12735 if (Math.abs(translateY) < 0.001) translateY = 0; 12736 if (Math.abs(translateZ) < 0.001) translateZ = 0; 12737 if (Math.abs(rotateY) < 0.001) rotateY = 0; 12738 if (Math.abs(rotateX) < 0.001) rotateX = 0; 12739 if (Math.abs(scale) < 0.001) scale = 0; 12740 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; 12741 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 12742 targetEl.style.transform = slideTransform; 12743 slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 12744 if (params.slideShadows) { 12745 // Set shadows 12746 let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 12747 let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 12748 if (!shadowBeforeEl) { 12749 shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top'); 12750 } 12751 if (!shadowAfterEl) { 12752 shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); 12753 } 12754 if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 12755 if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 12756 } 12757 } 12758 }; 12759 const setTransition = duration => { 12760 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 12761 transformElements.forEach(el => { 12762 el.style.transitionDuration = `${duration}ms`; 12763 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 12764 shadowEl.style.transitionDuration = `${duration}ms`; 12765 }); 12766 }); 12767 }; 12768 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 12769 effect: 'coverflow', 12770 swiper, 12771 on, 12772 setTranslate, 12773 setTransition, 12774 perspective: () => true, 12775 overwriteParams: () => ({ 12776 watchSlidesProgress: true 12777 }) 12778 }); 12779} 12780 12781 12782 12783 12784/***/ }), 12785
vendor: 6,469 bytes, lines 12786-12950
12786/***/ "./node_modules/swiper/modules/effect-creative.mjs": 12787/*!*********************************************************!*\ 12788 !*** ./node_modules/swiper/modules/effect-creative.mjs ***! 12789 \*********************************************************/ 12790/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12791 12792__webpack_require__.r(__webpack_exports__); 12793/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12794/* harmony export */ "default": function() { return /* binding */ EffectCreative; } 12795/* harmony export */ }); 12796/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 12797/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 12798/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 12799/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs"); 12800/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 12801 12802 12803 12804 12805 12806 12807function EffectCreative(_ref) { 12808 let { 12809 swiper, 12810 extendParams, 12811 on 12812 } = _ref; 12813 extendParams({ 12814 creativeEffect: { 12815 limitProgress: 1, 12816 shadowPerProgress: false, 12817 progressMultiplier: 1, 12818 perspective: true, 12819 prev: { 12820 translate: [0, 0, 0], 12821 rotate: [0, 0, 0], 12822 opacity: 1, 12823 scale: 1 12824 }, 12825 next: { 12826 translate: [0, 0, 0], 12827 rotate: [0, 0, 0], 12828 opacity: 1, 12829 scale: 1 12830 } 12831 } 12832 }); 12833 const getTranslateValue = value => { 12834 if (typeof value === 'string') return value; 12835 return `${value}px`; 12836 }; 12837 const setTranslate = () => { 12838 const { 12839 slides, 12840 wrapperEl, 12841 slidesSizesGrid 12842 } = swiper; 12843 const params = swiper.params.creativeEffect; 12844 const { 12845 progressMultiplier: multiplier 12846 } = params; 12847 const isCenteredSlides = swiper.params.centeredSlides; 12848 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 12849 if (isCenteredSlides) { 12850 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 12851 wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; 12852 } 12853 for (let i = 0; i < slides.length; i += 1) { 12854 const slideEl = slides[i]; 12855 const slideProgress = slideEl.progress; 12856 const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); 12857 let originalProgress = progress; 12858 if (!isCenteredSlides) { 12859 originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); 12860 } 12861 const offset = slideEl.swiperSlideOffset; 12862 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 12863 const r = [0, 0, 0]; 12864 let custom = false; 12865 if (!swiper.isHorizontal()) { 12866 t[1] = t[0]; 12867 t[0] = 0; 12868 } 12869 let data = { 12870 translate: [0, 0, 0], 12871 rotate: [0, 0, 0], 12872 scale: 1, 12873 opacity: 1 12874 }; 12875 if (progress < 0) { 12876 data = params.next; 12877 custom = true; 12878 } else if (progress > 0) { 12879 data = params.prev; 12880 custom = true; 12881 } 12882 // set translate 12883 t.forEach((value, index) => { 12884 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 12885 }); 12886 // set rotates 12887 r.forEach((value, index) => { 12888 let val = data.rotate[index] * Math.abs(progress * multiplier); 12889 r[index] = val; 12890 }); 12891 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 12892 const translateString = t.join(', '); 12893 const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; 12894 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 12895 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 12896 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; 12897 12898 // Set shadows 12899 if (custom && data.shadow || !custom) { 12900 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 12901 if (!shadowEl && data.shadow) { 12902 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl); 12903 } 12904 if (shadowEl) { 12905 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 12906 shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 12907 } 12908 } 12909 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 12910 targetEl.style.transform = transform; 12911 targetEl.style.opacity = opacityString; 12912 if (data.origin) { 12913 targetEl.style.transformOrigin = data.origin; 12914 } 12915 } 12916 }; 12917 const setTransition = duration => { 12918 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 12919 transformElements.forEach(el => { 12920 el.style.transitionDuration = `${duration}ms`; 12921 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 12922 shadowEl.style.transitionDuration = `${duration}ms`; 12923 }); 12924 }); 12925 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 12926 swiper, 12927 duration, 12928 transformElements, 12929 allSlides: true 12930 }); 12931 }; 12932 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 12933 effect: 'creative', 12934 swiper, 12935 on, 12936 setTranslate, 12937 setTransition, 12938 perspective: () => swiper.params.creativeEffect.perspective, 12939 overwriteParams: () => ({ 12940 watchSlidesProgress: true, 12941 virtualTranslate: !swiper.params.cssMode 12942 }) 12943 }); 12944} 12945 12946 12947 12948 12949/***/ }), 12950
vendor: 7,622 bytes, lines 12951-13140
12951/***/ "./node_modules/swiper/modules/effect-cube.mjs": 12952/*!*****************************************************!*\ 12953 !*** ./node_modules/swiper/modules/effect-cube.mjs ***! 12954 \*****************************************************/ 12955/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12956 12957__webpack_require__.r(__webpack_exports__); 12958/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12959/* harmony export */ "default": function() { return /* binding */ EffectCube; } 12960/* harmony export */ }); 12961/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 12962/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 12963 12964 12965 12966function EffectCube(_ref) { 12967 let { 12968 swiper, 12969 extendParams, 12970 on 12971 } = _ref; 12972 extendParams({ 12973 cubeEffect: { 12974 slideShadows: true, 12975 shadow: true, 12976 shadowOffset: 20, 12977 shadowScale: 0.94 12978 } 12979 }); 12980 const createSlideShadows = (slideEl, progress, isHorizontal) => { 12981 let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 12982 let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 12983 if (!shadowBefore) { 12984 shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); 12985 slideEl.append(shadowBefore); 12986 } 12987 if (!shadowAfter) { 12988 shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); 12989 slideEl.append(shadowAfter); 12990 } 12991 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 12992 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 12993 }; 12994 const recreateShadows = () => { 12995 // create new ones 12996 const isHorizontal = swiper.isHorizontal(); 12997 swiper.slides.forEach(slideEl => { 12998 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 12999 createSlideShadows(slideEl, progress, isHorizontal); 13000 }); 13001 }; 13002 const setTranslate = () => { 13003 const { 13004 el, 13005 wrapperEl, 13006 slides, 13007 width: swiperWidth, 13008 height: swiperHeight, 13009 rtlTranslate: rtl, 13010 size: swiperSize, 13011 browser 13012 } = swiper; 13013 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(swiper); 13014 const params = swiper.params.cubeEffect; 13015 const isHorizontal = swiper.isHorizontal(); 13016 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 13017 let wrapperRotate = 0; 13018 let cubeShadowEl; 13019 if (params.shadow) { 13020 if (isHorizontal) { 13021 cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); 13022 if (!cubeShadowEl) { 13023 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 13024 swiper.wrapperEl.append(cubeShadowEl); 13025 } 13026 cubeShadowEl.style.height = `${swiperWidth}px`; 13027 } else { 13028 cubeShadowEl = el.querySelector('.swiper-cube-shadow'); 13029 if (!cubeShadowEl) { 13030 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 13031 el.append(cubeShadowEl); 13032 } 13033 } 13034 } 13035 for (let i = 0; i < slides.length; i += 1) { 13036 const slideEl = slides[i]; 13037 let slideIndex = i; 13038 if (isVirtual) { 13039 slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); 13040 } 13041 let slideAngle = slideIndex * 90; 13042 let round = Math.floor(slideAngle / 360); 13043 if (rtl) { 13044 slideAngle = -slideAngle; 13045 round = Math.floor(-slideAngle / 360); 13046 } 13047 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 13048 let tx = 0; 13049 let ty = 0; 13050 let tz = 0; 13051 if (slideIndex % 4 === 0) { 13052 tx = -round * 4 * swiperSize; 13053 tz = 0; 13054 } else if ((slideIndex - 1) % 4 === 0) { 13055 tx = 0; 13056 tz = -round * 4 * swiperSize; 13057 } else if ((slideIndex - 2) % 4 === 0) { 13058 tx = swiperSize + round * 4 * swiperSize; 13059 tz = swiperSize; 13060 } else if ((slideIndex - 3) % 4 === 0) { 13061 tx = -swiperSize; 13062 tz = 3 * swiperSize + swiperSize * 4 * round; 13063 } 13064 if (rtl) { 13065 tx = -tx; 13066 } 13067 if (!isHorizontal) { 13068 ty = tx; 13069 tx = 0; 13070 } 13071 const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 13072 if (progress <= 1 && progress > -1) { 13073 wrapperRotate = slideIndex * 90 + progress * 90; 13074 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 13075 } 13076 slideEl.style.transform = transform; 13077 if (params.slideShadows) { 13078 createSlideShadows(slideEl, progress, isHorizontal); 13079 } 13080 } 13081 wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; 13082 wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; 13083 if (params.shadow) { 13084 if (isHorizontal) { 13085 cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; 13086 } else { 13087 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 13088 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 13089 const scale1 = params.shadowScale; 13090 const scale2 = params.shadowScale / multiplier; 13091 const offset = params.shadowOffset; 13092 cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; 13093 } 13094 } 13095 const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; 13096 wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; 13097 wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 13098 }; 13099 const setTransition = duration => { 13100 const { 13101 el, 13102 slides 13103 } = swiper; 13104 slides.forEach(slideEl => { 13105 slideEl.style.transitionDuration = `${duration}ms`; 13106 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { 13107 subEl.style.transitionDuration = `${duration}ms`; 13108 }); 13109 }); 13110 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 13111 const shadowEl = el.querySelector('.swiper-cube-shadow'); 13112 if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; 13113 } 13114 }; 13115 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 13116 effect: 'cube', 13117 swiper, 13118 on, 13119 setTranslate, 13120 setTransition, 13121 recreateShadows, 13122 getEffectParams: () => swiper.params.cubeEffect, 13123 perspective: () => true, 13124 overwriteParams: () => ({ 13125 slidesPerView: 1, 13126 slidesPerGroup: 1, 13127 watchSlidesProgress: true, 13128 resistanceRatio: 0, 13129 spaceBetween: 0, 13130 centeredSlides: false, 13131 virtualTranslate: true 13132 }) 13133 }); 13134} 13135 13136 13137 13138 13139/***/ }), 13140
vendor: 3,089 bytes, lines 13141-13224
13141/***/ "./node_modules/swiper/modules/effect-fade.mjs": 13142/*!*****************************************************!*\ 13143 !*** ./node_modules/swiper/modules/effect-fade.mjs ***! 13144 \*****************************************************/ 13145/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13146 13147__webpack_require__.r(__webpack_exports__); 13148/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13149/* harmony export */ "default": function() { return /* binding */ EffectFade; } 13150/* harmony export */ }); 13151/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 13152/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 13153/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs"); 13154/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 13155 13156 13157 13158 13159 13160function EffectFade(_ref) { 13161 let { 13162 swiper, 13163 extendParams, 13164 on 13165 } = _ref; 13166 extendParams({ 13167 fadeEffect: { 13168 crossFade: false 13169 } 13170 }); 13171 const setTranslate = () => { 13172 const { 13173 slides 13174 } = swiper; 13175 const params = swiper.params.fadeEffect; 13176 for (let i = 0; i < slides.length; i += 1) { 13177 const slideEl = swiper.slides[i]; 13178 const offset = slideEl.swiperSlideOffset; 13179 let tx = -offset; 13180 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 13181 let ty = 0; 13182 if (!swiper.isHorizontal()) { 13183 ty = tx; 13184 tx = 0; 13185 } 13186 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 13187 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl); 13188 targetEl.style.opacity = slideOpacity; 13189 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 13190 } 13191 }; 13192 const setTransition = duration => { 13193 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 13194 transformElements.forEach(el => { 13195 el.style.transitionDuration = `${duration}ms`; 13196 }); 13197 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({ 13198 swiper, 13199 duration, 13200 transformElements, 13201 allSlides: true 13202 }); 13203 }; 13204 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 13205 effect: 'fade', 13206 swiper, 13207 on, 13208 setTranslate, 13209 setTransition, 13210 overwriteParams: () => ({ 13211 slidesPerView: 1, 13212 slidesPerGroup: 1, 13213 watchSlidesProgress: true, 13214 spaceBetween: 0, 13215 virtualTranslate: !swiper.params.cssMode 13216 }) 13217 }); 13218} 13219 13220 13221 13222 13223/***/ }), 13224
vendor: 5,322 bytes, lines 13225-13354
13225/***/ "./node_modules/swiper/modules/effect-flip.mjs": 13226/*!*****************************************************!*\ 13227 !*** ./node_modules/swiper/modules/effect-flip.mjs ***! 13228 \*****************************************************/ 13229/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13230 13231__webpack_require__.r(__webpack_exports__); 13232/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13233/* harmony export */ "default": function() { return /* binding */ EffectFlip; } 13234/* harmony export */ }); 13235/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 13236/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 13237/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 13238/* harmony import */ var _shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/effect-virtual-transition-end.mjs */ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs"); 13239/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 13240 13241 13242 13243 13244 13245 13246function EffectFlip(_ref) { 13247 let { 13248 swiper, 13249 extendParams, 13250 on 13251 } = _ref; 13252 extendParams({ 13253 flipEffect: { 13254 slideShadows: true, 13255 limitRotation: true 13256 } 13257 }); 13258 const createSlideShadows = (slideEl, progress) => { 13259 let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 13260 let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 13261 if (!shadowBefore) { 13262 shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); 13263 } 13264 if (!shadowAfter) { 13265 shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 13266 } 13267 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 13268 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 13269 }; 13270 const recreateShadows = () => { 13271 // Set shadows 13272 swiper.params.flipEffect; 13273 swiper.slides.forEach(slideEl => { 13274 let progress = slideEl.progress; 13275 if (swiper.params.flipEffect.limitRotation) { 13276 progress = Math.max(Math.min(slideEl.progress, 1), -1); 13277 } 13278 createSlideShadows(slideEl, progress); 13279 }); 13280 }; 13281 const setTranslate = () => { 13282 const { 13283 slides, 13284 rtlTranslate: rtl 13285 } = swiper; 13286 const params = swiper.params.flipEffect; 13287 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 13288 for (let i = 0; i < slides.length; i += 1) { 13289 const slideEl = slides[i]; 13290 let progress = slideEl.progress; 13291 if (swiper.params.flipEffect.limitRotation) { 13292 progress = Math.max(Math.min(slideEl.progress, 1), -1); 13293 } 13294 const offset = slideEl.swiperSlideOffset; 13295 const rotate = -180 * progress; 13296 let rotateY = rotate; 13297 let rotateX = 0; 13298 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 13299 let ty = 0; 13300 if (!swiper.isHorizontal()) { 13301 ty = tx; 13302 tx = 0; 13303 rotateX = -rotateY; 13304 rotateY = 0; 13305 } else if (rtl) { 13306 rotateY = -rotateY; 13307 } 13308 slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 13309 if (params.slideShadows) { 13310 createSlideShadows(slideEl, progress); 13311 } 13312 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; 13313 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 13314 targetEl.style.transform = transform; 13315 } 13316 }; 13317 const setTransition = duration => { 13318 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 13319 transformElements.forEach(el => { 13320 el.style.transitionDuration = `${duration}ms`; 13321 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 13322 shadowEl.style.transitionDuration = `${duration}ms`; 13323 }); 13324 }); 13325 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 13326 swiper, 13327 duration, 13328 transformElements 13329 }); 13330 }; 13331 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 13332 effect: 'flip', 13333 swiper, 13334 on, 13335 setTranslate, 13336 setTransition, 13337 recreateShadows, 13338 getEffectParams: () => swiper.params.flipEffect, 13339 perspective: () => true, 13340 overwriteParams: () => ({ 13341 slidesPerView: 1, 13342 slidesPerGroup: 1, 13343 watchSlidesProgress: true, 13344 spaceBetween: 0, 13345 virtualTranslate: !swiper.params.cssMode 13346 }) 13347 }); 13348} 13349 13350 13351 13352 13353/***/ }), 13354
vendor: 9,247 bytes, lines 13355-13606
13355/***/ "./node_modules/swiper/modules/free-mode.mjs": 13356/*!***************************************************!*\ 13357 !*** ./node_modules/swiper/modules/free-mode.mjs ***! 13358 \***************************************************/ 13359/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13360 13361__webpack_require__.r(__webpack_exports__); 13362/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13363/* harmony export */ "default": function() { return /* binding */ freeMode; } 13364/* harmony export */ }); 13365/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 13366 13367 13368function freeMode(_ref) { 13369 let { 13370 swiper, 13371 extendParams, 13372 emit, 13373 once 13374 } = _ref; 13375 extendParams({ 13376 freeMode: { 13377 enabled: false, 13378 momentum: true, 13379 momentumRatio: 1, 13380 momentumBounce: true, 13381 momentumBounceRatio: 1, 13382 momentumVelocityRatio: 1, 13383 sticky: false, 13384 minimumVelocity: 0.02 13385 } 13386 }); 13387 function onTouchStart() { 13388 if (swiper.params.cssMode) return; 13389 const translate = swiper.getTranslate(); 13390 swiper.setTranslate(translate); 13391 swiper.setTransition(0); 13392 swiper.touchEventsData.velocities.length = 0; 13393 swiper.freeMode.onTouchEnd({ 13394 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 13395 }); 13396 } 13397 function onTouchMove() { 13398 if (swiper.params.cssMode) return; 13399 const { 13400 touchEventsData: data, 13401 touches 13402 } = swiper; 13403 // Velocity 13404 if (data.velocities.length === 0) { 13405 data.velocities.push({ 13406 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 13407 time: data.touchStartTime 13408 }); 13409 } 13410 data.velocities.push({ 13411 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 13412 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() 13413 }); 13414 } 13415 function onTouchEnd(_ref2) { 13416 let { 13417 currentPos 13418 } = _ref2; 13419 if (swiper.params.cssMode) return; 13420 const { 13421 params, 13422 wrapperEl, 13423 rtlTranslate: rtl, 13424 snapGrid, 13425 touchEventsData: data 13426 } = swiper; 13427 // Time diff 13428 const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)(); 13429 const timeDiff = touchEndTime - data.touchStartTime; 13430 if (currentPos < -swiper.minTranslate()) { 13431 swiper.slideTo(swiper.activeIndex); 13432 return; 13433 } 13434 if (currentPos > -swiper.maxTranslate()) { 13435 if (swiper.slides.length < snapGrid.length) { 13436 swiper.slideTo(snapGrid.length - 1); 13437 } else { 13438 swiper.slideTo(swiper.slides.length - 1); 13439 } 13440 return; 13441 } 13442 if (params.freeMode.momentum) { 13443 if (data.velocities.length > 1) { 13444 const lastMoveEvent = data.velocities.pop(); 13445 const velocityEvent = data.velocities.pop(); 13446 const distance = lastMoveEvent.position - velocityEvent.position; 13447 const time = lastMoveEvent.time - velocityEvent.time; 13448 swiper.velocity = distance / time; 13449 swiper.velocity /= 2; 13450 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 13451 swiper.velocity = 0; 13452 } 13453 // this implies that the user stopped moving a finger then released. 13454 // There would be no events with distance zero, so the last event is stale. 13455 if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() - lastMoveEvent.time > 300) { 13456 swiper.velocity = 0; 13457 } 13458 } else { 13459 swiper.velocity = 0; 13460 } 13461 swiper.velocity *= params.freeMode.momentumVelocityRatio; 13462 data.velocities.length = 0; 13463 let momentumDuration = 1000 * params.freeMode.momentumRatio; 13464 const momentumDistance = swiper.velocity * momentumDuration; 13465 let newPosition = swiper.translate + momentumDistance; 13466 if (rtl) newPosition = -newPosition; 13467 let doBounce = false; 13468 let afterBouncePosition; 13469 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 13470 let needsLoopFix; 13471 if (newPosition < swiper.maxTranslate()) { 13472 if (params.freeMode.momentumBounce) { 13473 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 13474 newPosition = swiper.maxTranslate() - bounceAmount; 13475 } 13476 afterBouncePosition = swiper.maxTranslate(); 13477 doBounce = true; 13478 data.allowMomentumBounce = true; 13479 } else { 13480 newPosition = swiper.maxTranslate(); 13481 } 13482 if (params.loop && params.centeredSlides) needsLoopFix = true; 13483 } else if (newPosition > swiper.minTranslate()) { 13484 if (params.freeMode.momentumBounce) { 13485 if (newPosition - swiper.minTranslate() > bounceAmount) { 13486 newPosition = swiper.minTranslate() + bounceAmount; 13487 } 13488 afterBouncePosition = swiper.minTranslate(); 13489 doBounce = true; 13490 data.allowMomentumBounce = true; 13491 } else { 13492 newPosition = swiper.minTranslate(); 13493 } 13494 if (params.loop && params.centeredSlides) needsLoopFix = true; 13495 } else if (params.freeMode.sticky) { 13496 let nextSlide; 13497 for (let j = 0; j < snapGrid.length; j += 1) { 13498 if (snapGrid[j] > -newPosition) { 13499 nextSlide = j; 13500 break; 13501 } 13502 } 13503 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 13504 newPosition = snapGrid[nextSlide]; 13505 } else { 13506 newPosition = snapGrid[nextSlide - 1]; 13507 } 13508 newPosition = -newPosition; 13509 } 13510 if (needsLoopFix) { 13511 once('transitionEnd', () => { 13512 swiper.loopFix(); 13513 }); 13514 } 13515 // Fix duration 13516 if (swiper.velocity !== 0) { 13517 if (rtl) { 13518 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 13519 } else { 13520 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 13521 } 13522 if (params.freeMode.sticky) { 13523 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 13524 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 13525 // It's easy to see this when simulating touch with mouse events. To fix this, 13526 // limit single-slide swipes to the default slide duration. This also has the 13527 // nice side effect of matching slide speed if the user stopped moving before 13528 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 13529 // For faster swipes, also apply limits (albeit higher ones). 13530 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 13531 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 13532 if (moveDistance < currentSlideSize) { 13533 momentumDuration = params.speed; 13534 } else if (moveDistance < 2 * currentSlideSize) { 13535 momentumDuration = params.speed * 1.5; 13536 } else { 13537 momentumDuration = params.speed * 2.5; 13538 } 13539 } 13540 } else if (params.freeMode.sticky) { 13541 swiper.slideToClosest(); 13542 return; 13543 } 13544 if (params.freeMode.momentumBounce && doBounce) { 13545 swiper.updateProgress(afterBouncePosition); 13546 swiper.setTransition(momentumDuration); 13547 swiper.setTranslate(newPosition); 13548 swiper.transitionStart(true, swiper.swipeDirection); 13549 swiper.animating = true; 13550 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 13551 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 13552 emit('momentumBounce'); 13553 swiper.setTransition(params.speed); 13554 setTimeout(() => { 13555 swiper.setTranslate(afterBouncePosition); 13556 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 13557 if (!swiper || swiper.destroyed) return; 13558 swiper.transitionEnd(); 13559 }); 13560 }, 0); 13561 }); 13562 } else if (swiper.velocity) { 13563 emit('_freeModeNoMomentumRelease'); 13564 swiper.updateProgress(newPosition); 13565 swiper.setTransition(momentumDuration); 13566 swiper.setTranslate(newPosition); 13567 swiper.transitionStart(true, swiper.swipeDirection); 13568 if (!swiper.animating) { 13569 swiper.animating = true; 13570 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 13571 if (!swiper || swiper.destroyed) return; 13572 swiper.transitionEnd(); 13573 }); 13574 } 13575 } else { 13576 swiper.updateProgress(newPosition); 13577 } 13578 swiper.updateActiveIndex(); 13579 swiper.updateSlidesClasses(); 13580 } else if (params.freeMode.sticky) { 13581 swiper.slideToClosest(); 13582 return; 13583 } else if (params.freeMode) { 13584 emit('_freeModeNoMomentumRelease'); 13585 } 13586 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 13587 emit('_freeModeStaticRelease'); 13588 swiper.updateProgress(); 13589 swiper.updateActiveIndex(); 13590 swiper.updateSlidesClasses(); 13591 } 13592 } 13593 Object.assign(swiper, { 13594 freeMode: { 13595 onTouchStart, 13596 onTouchMove, 13597 onTouchEnd 13598 } 13599 }); 13600} 13601 13602 13603 13604 13605/***/ }), 13606
vendor: 5,717 bytes, lines 13607-13775
13607/***/ "./node_modules/swiper/modules/grid.mjs": 13608/*!**********************************************!*\ 13609 !*** ./node_modules/swiper/modules/grid.mjs ***! 13610 \**********************************************/ 13611/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13612 13613__webpack_require__.r(__webpack_exports__); 13614/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13615/* harmony export */ "default": function() { return /* binding */ Grid; } 13616/* harmony export */ }); 13617function Grid(_ref) { 13618 let { 13619 swiper, 13620 extendParams, 13621 on 13622 } = _ref; 13623 extendParams({ 13624 grid: { 13625 rows: 1, 13626 fill: 'column' 13627 } 13628 }); 13629 let slidesNumberEvenToRows; 13630 let slidesPerRow; 13631 let numFullColumns; 13632 let wasMultiRow; 13633 const getSpaceBetween = () => { 13634 let spaceBetween = swiper.params.spaceBetween; 13635 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 13636 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 13637 } else if (typeof spaceBetween === 'string') { 13638 spaceBetween = parseFloat(spaceBetween); 13639 } 13640 return spaceBetween; 13641 }; 13642 const initSlides = slides => { 13643 const { 13644 slidesPerView 13645 } = swiper.params; 13646 const { 13647 rows, 13648 fill 13649 } = swiper.params.grid; 13650 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 13651 numFullColumns = Math.floor(slidesLength / rows); 13652 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 13653 slidesNumberEvenToRows = slidesLength; 13654 } else { 13655 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 13656 } 13657 if (slidesPerView !== 'auto' && fill === 'row') { 13658 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 13659 } 13660 slidesPerRow = slidesNumberEvenToRows / rows; 13661 }; 13662 const unsetSlides = () => { 13663 if (swiper.slides) { 13664 swiper.slides.forEach(slide => { 13665 if (slide.swiperSlideGridSet) { 13666 slide.style.height = ''; 13667 slide.style[swiper.getDirectionLabel('margin-top')] = ''; 13668 } 13669 }); 13670 } 13671 }; 13672 const updateSlide = (i, slide, slides) => { 13673 const { 13674 slidesPerGroup 13675 } = swiper.params; 13676 const spaceBetween = getSpaceBetween(); 13677 const { 13678 rows, 13679 fill 13680 } = swiper.params.grid; 13681 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 13682 // Set slides order 13683 let newSlideOrderIndex; 13684 let column; 13685 let row; 13686 if (fill === 'row' && slidesPerGroup > 1) { 13687 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 13688 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 13689 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 13690 row = Math.floor(slideIndexInGroup / columnsInGroup); 13691 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 13692 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 13693 slide.style.order = newSlideOrderIndex; 13694 } else if (fill === 'column') { 13695 column = Math.floor(i / rows); 13696 row = i - column * rows; 13697 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 13698 row += 1; 13699 if (row >= rows) { 13700 row = 0; 13701 column += 1; 13702 } 13703 } 13704 } else { 13705 row = Math.floor(i / slidesPerRow); 13706 column = i - row * slidesPerRow; 13707 } 13708 slide.row = row; 13709 slide.column = column; 13710 slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; 13711 slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; 13712 slide.swiperSlideGridSet = true; 13713 }; 13714 const updateWrapperSize = (slideSize, snapGrid) => { 13715 const { 13716 centeredSlides, 13717 roundLengths 13718 } = swiper.params; 13719 const spaceBetween = getSpaceBetween(); 13720 const { 13721 rows 13722 } = swiper.params.grid; 13723 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 13724 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 13725 if (!swiper.params.cssMode) { 13726 swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 13727 } 13728 if (centeredSlides) { 13729 const newSlidesGrid = []; 13730 for (let i = 0; i < snapGrid.length; i += 1) { 13731 let slidesGridItem = snapGrid[i]; 13732 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 13733 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 13734 } 13735 snapGrid.splice(0, snapGrid.length); 13736 snapGrid.push(...newSlidesGrid); 13737 } 13738 }; 13739 const onInit = () => { 13740 wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; 13741 }; 13742 const onUpdate = () => { 13743 const { 13744 params, 13745 el 13746 } = swiper; 13747 const isMultiRow = params.grid && params.grid.rows > 1; 13748 if (wasMultiRow && !isMultiRow) { 13749 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 13750 numFullColumns = 1; 13751 swiper.emitContainerClasses(); 13752 } else if (!wasMultiRow && isMultiRow) { 13753 el.classList.add(`${params.containerModifierClass}grid`); 13754 if (params.grid.fill === 'column') { 13755 el.classList.add(`${params.containerModifierClass}grid-column`); 13756 } 13757 swiper.emitContainerClasses(); 13758 } 13759 wasMultiRow = isMultiRow; 13760 }; 13761 on('init', onInit); 13762 on('update', onUpdate); 13763 swiper.grid = { 13764 initSlides, 13765 unsetSlides, 13766 updateSlide, 13767 updateWrapperSize 13768 }; 13769} 13770 13771 13772 13773 13774/***/ }), 13775
vendor: 4,418 bytes, lines 13776-13884
13776/***/ "./node_modules/swiper/modules/hash-navigation.mjs": 13777/*!*********************************************************!*\ 13778 !*** ./node_modules/swiper/modules/hash-navigation.mjs ***! 13779 \*********************************************************/ 13780/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13781 13782__webpack_require__.r(__webpack_exports__); 13783/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13784/* harmony export */ "default": function() { return /* binding */ HashNavigation; } 13785/* harmony export */ }); 13786/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 13787/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 13788 13789 13790 13791function HashNavigation(_ref) { 13792 let { 13793 swiper, 13794 extendParams, 13795 emit, 13796 on 13797 } = _ref; 13798 let initialized = false; 13799 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 13800 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 13801 extendParams({ 13802 hashNavigation: { 13803 enabled: false, 13804 replaceState: false, 13805 watchState: false, 13806 getSlideIndex(_s, hash) { 13807 if (swiper.virtual && swiper.params.virtual.enabled) { 13808 const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; 13809 if (!slideWithHash) return 0; 13810 const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); 13811 return index; 13812 } 13813 return swiper.getSlideIndex((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); 13814 } 13815 } 13816 }); 13817 const onHashChange = () => { 13818 emit('hashChange'); 13819 const newHash = document.location.hash.replace('#', ''); 13820 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 13821 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; 13822 if (newHash !== activeSlideHash) { 13823 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 13824 if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; 13825 swiper.slideTo(newIndex); 13826 } 13827 }; 13828 const setHash = () => { 13829 if (!initialized || !swiper.params.hashNavigation.enabled) return; 13830 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 13831 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; 13832 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 13833 window.history.replaceState(null, null, `#${activeSlideHash}` || ''); 13834 emit('hashSet'); 13835 } else { 13836 document.location.hash = activeSlideHash || ''; 13837 emit('hashSet'); 13838 } 13839 }; 13840 const init = () => { 13841 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 13842 initialized = true; 13843 const hash = document.location.hash.replace('#', ''); 13844 if (hash) { 13845 const speed = 0; 13846 const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 13847 swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); 13848 } 13849 if (swiper.params.hashNavigation.watchState) { 13850 window.addEventListener('hashchange', onHashChange); 13851 } 13852 }; 13853 const destroy = () => { 13854 if (swiper.params.hashNavigation.watchState) { 13855 window.removeEventListener('hashchange', onHashChange); 13856 } 13857 }; 13858 on('init', () => { 13859 if (swiper.params.hashNavigation.enabled) { 13860 init(); 13861 } 13862 }); 13863 on('destroy', () => { 13864 if (swiper.params.hashNavigation.enabled) { 13865 destroy(); 13866 } 13867 }); 13868 on('transitionEnd _freeModeNoMomentumRelease', () => { 13869 if (initialized) { 13870 setHash(); 13871 } 13872 }); 13873 on('slideChange', () => { 13874 if (initialized && swiper.params.cssMode) { 13875 setHash(); 13876 } 13877 }); 13878} 13879 13880 13881 13882 13883/***/ }), 13884
vendor: 5,130 bytes, lines 13885-14041
13885/***/ "./node_modules/swiper/modules/history.mjs": 13886/*!*************************************************!*\ 13887 !*** ./node_modules/swiper/modules/history.mjs ***! 13888 \*************************************************/ 13889/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13890 13891__webpack_require__.r(__webpack_exports__); 13892/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13893/* harmony export */ "default": function() { return /* binding */ History; } 13894/* harmony export */ }); 13895/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 13896 13897 13898function History(_ref) { 13899 let { 13900 swiper, 13901 extendParams, 13902 on 13903 } = _ref; 13904 extendParams({ 13905 history: { 13906 enabled: false, 13907 root: '', 13908 replaceState: false, 13909 key: 'slides', 13910 keepQuery: false 13911 } 13912 }); 13913 let initialized = false; 13914 let paths = {}; 13915 const slugify = text => { 13916 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 13917 }; 13918 const getPathValues = urlOverride => { 13919 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 13920 let location; 13921 if (urlOverride) { 13922 location = new URL(urlOverride); 13923 } else { 13924 location = window.location; 13925 } 13926 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 13927 const total = pathArray.length; 13928 const key = pathArray[total - 2]; 13929 const value = pathArray[total - 1]; 13930 return { 13931 key, 13932 value 13933 }; 13934 }; 13935 const setHistory = (key, index) => { 13936 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 13937 if (!initialized || !swiper.params.history.enabled) return; 13938 let location; 13939 if (swiper.params.url) { 13940 location = new URL(swiper.params.url); 13941 } else { 13942 location = window.location; 13943 } 13944 const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; 13945 let value = slugify(slide.getAttribute('data-history')); 13946 if (swiper.params.history.root.length > 0) { 13947 let root = swiper.params.history.root; 13948 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 13949 value = `${root}/${key ? `${key}/` : ''}${value}`; 13950 } else if (!location.pathname.includes(key)) { 13951 value = `${key ? `${key}/` : ''}${value}`; 13952 } 13953 if (swiper.params.history.keepQuery) { 13954 value += location.search; 13955 } 13956 const currentState = window.history.state; 13957 if (currentState && currentState.value === value) { 13958 return; 13959 } 13960 if (swiper.params.history.replaceState) { 13961 window.history.replaceState({ 13962 value 13963 }, null, value); 13964 } else { 13965 window.history.pushState({ 13966 value 13967 }, null, value); 13968 } 13969 }; 13970 const scrollToSlide = (speed, value, runCallbacks) => { 13971 if (value) { 13972 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 13973 const slide = swiper.slides[i]; 13974 const slideHistory = slugify(slide.getAttribute('data-history')); 13975 if (slideHistory === value) { 13976 const index = swiper.getSlideIndex(slide); 13977 swiper.slideTo(index, speed, runCallbacks); 13978 } 13979 } 13980 } else { 13981 swiper.slideTo(0, speed, runCallbacks); 13982 } 13983 }; 13984 const setHistoryPopState = () => { 13985 paths = getPathValues(swiper.params.url); 13986 scrollToSlide(swiper.params.speed, paths.value, false); 13987 }; 13988 const init = () => { 13989 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 13990 if (!swiper.params.history) return; 13991 if (!window.history || !window.history.pushState) { 13992 swiper.params.history.enabled = false; 13993 swiper.params.hashNavigation.enabled = true; 13994 return; 13995 } 13996 initialized = true; 13997 paths = getPathValues(swiper.params.url); 13998 if (!paths.key && !paths.value) { 13999 if (!swiper.params.history.replaceState) { 14000 window.addEventListener('popstate', setHistoryPopState); 14001 } 14002 return; 14003 } 14004 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 14005 if (!swiper.params.history.replaceState) { 14006 window.addEventListener('popstate', setHistoryPopState); 14007 } 14008 }; 14009 const destroy = () => { 14010 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 14011 if (!swiper.params.history.replaceState) { 14012 window.removeEventListener('popstate', setHistoryPopState); 14013 } 14014 }; 14015 on('init', () => { 14016 if (swiper.params.history.enabled) { 14017 init(); 14018 } 14019 }); 14020 on('destroy', () => { 14021 if (swiper.params.history.enabled) { 14022 destroy(); 14023 } 14024 }); 14025 on('transitionEnd _freeModeNoMomentumRelease', () => { 14026 if (initialized) { 14027 setHistory(swiper.params.history.key, swiper.activeIndex); 14028 } 14029 }); 14030 on('slideChange', () => { 14031 if (initialized && swiper.params.cssMode) { 14032 setHistory(swiper.params.history.key, swiper.activeIndex); 14033 } 14034 }); 14035} 14036 14037 14038 14039 14040/***/ }), 14041
vendor: 7,327 bytes, lines 14042-14122
14042/***/ "./node_modules/swiper/modules/index.mjs": 14043/*!***********************************************!*\ 14044 !*** ./node_modules/swiper/modules/index.mjs ***! 14045 \***********************************************/ 14046/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 14047 14048__webpack_require__.r(__webpack_exports__); 14049/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14050/* harmony export */ A11y: function() { return /* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]; }, 14051/* harmony export */ Autoplay: function() { return /* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]; }, 14052/* harmony export */ Controller: function() { return /* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]; }, 14053/* harmony export */ EffectCards: function() { return /* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]; }, 14054/* harmony export */ EffectCoverflow: function() { return /* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]; }, 14055/* harmony export */ EffectCreative: function() { return /* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]; }, 14056/* harmony export */ EffectCube: function() { return /* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]; }, 14057/* harmony export */ EffectFade: function() { return /* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]; }, 14058/* harmony export */ EffectFlip: function() { return /* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]; }, 14059/* harmony export */ FreeMode: function() { return /* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]; }, 14060/* harmony export */ Grid: function() { return /* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]; }, 14061/* harmony export */ HashNavigation: function() { return /* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]; }, 14062/* harmony export */ History: function() { return /* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]; }, 14063/* harmony export */ Keyboard: function() { return /* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]; }, 14064/* harmony export */ Manipulation: function() { return /* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]; }, 14065/* harmony export */ Mousewheel: function() { return /* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]; }, 14066/* harmony export */ Navigation: function() { return /* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]; }, 14067/* harmony export */ Pagination: function() { return /* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]; }, 14068/* harmony export */ Parallax: function() { return /* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]; }, 14069/* harmony export */ Scrollbar: function() { return /* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]; }, 14070/* harmony export */ Thumbs: function() { return /* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]; }, 14071/* harmony export */ Virtual: function() { return /* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]; }, 14072/* harmony export */ Zoom: function() { return /* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]; } 14073/* harmony export */ }); 14074/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 14075/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 14076/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 14077/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 14078/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 14079/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 14080/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 14081/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 14082/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 14083/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 14084/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "./node_modules/swiper/modules/history.mjs"); 14085/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 14086/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 14087/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 14088/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 14089/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 14090/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 14091/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 14092/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 14093/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 14094/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 14095/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 14096/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 14097 14098 14099 14100 14101 14102 14103 14104 14105 14106 14107 14108 14109 14110 14111 14112 14113 14114 14115 14116 14117 14118 14119 14120 14121/***/ }), 14122
vendor: 5,279 bytes, lines 14123-14255
14123/***/ "./node_modules/swiper/modules/keyboard.mjs": 14124/*!**************************************************!*\ 14125 !*** ./node_modules/swiper/modules/keyboard.mjs ***! 14126 \**************************************************/ 14127/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 14128 14129__webpack_require__.r(__webpack_exports__); 14130/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14131/* harmony export */ "default": function() { return /* binding */ Keyboard; } 14132/* harmony export */ }); 14133/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 14134/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 14135 14136 14137 14138/* eslint-disable consistent-return */ 14139function Keyboard(_ref) { 14140 let { 14141 swiper, 14142 extendParams, 14143 on, 14144 emit 14145 } = _ref; 14146 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 14147 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 14148 swiper.keyboard = { 14149 enabled: false 14150 }; 14151 extendParams({ 14152 keyboard: { 14153 enabled: false, 14154 onlyInViewport: true, 14155 pageUpDown: true 14156 } 14157 }); 14158 function handle(event) { 14159 if (!swiper.enabled) return; 14160 const { 14161 rtlTranslate: rtl 14162 } = swiper; 14163 let e = event; 14164 if (e.originalEvent) e = e.originalEvent; // jquery fix 14165 const kc = e.keyCode || e.charCode; 14166 const pageUpDown = swiper.params.keyboard.pageUpDown; 14167 const isPageUp = pageUpDown && kc === 33; 14168 const isPageDown = pageUpDown && kc === 34; 14169 const isArrowLeft = kc === 37; 14170 const isArrowRight = kc === 39; 14171 const isArrowUp = kc === 38; 14172 const isArrowDown = kc === 40; 14173 // Directions locks 14174 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 14175 return false; 14176 } 14177 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 14178 return false; 14179 } 14180 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 14181 return undefined; 14182 } 14183 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { 14184 return undefined; 14185 } 14186 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 14187 let inView = false; 14188 // Check that swiper should be inside of visible area of window 14189 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { 14190 return undefined; 14191 } 14192 const el = swiper.el; 14193 const swiperWidth = el.clientWidth; 14194 const swiperHeight = el.clientHeight; 14195 const windowWidth = window.innerWidth; 14196 const windowHeight = window.innerHeight; 14197 const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el); 14198 if (rtl) swiperOffset.left -= el.scrollLeft; 14199 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 14200 for (let i = 0; i < swiperCoord.length; i += 1) { 14201 const point = swiperCoord[i]; 14202 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 14203 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 14204 inView = true; 14205 } 14206 } 14207 if (!inView) return undefined; 14208 } 14209 if (swiper.isHorizontal()) { 14210 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 14211 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 14212 } 14213 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 14214 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 14215 } else { 14216 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 14217 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 14218 } 14219 if (isPageDown || isArrowDown) swiper.slideNext(); 14220 if (isPageUp || isArrowUp) swiper.slidePrev(); 14221 } 14222 emit('keyPress', kc); 14223 return undefined; 14224 } 14225 function enable() { 14226 if (swiper.keyboard.enabled) return; 14227 document.addEventListener('keydown', handle); 14228 swiper.keyboard.enabled = true; 14229 } 14230 function disable() { 14231 if (!swiper.keyboard.enabled) return; 14232 document.removeEventListener('keydown', handle); 14233 swiper.keyboard.enabled = false; 14234 } 14235 on('init', () => { 14236 if (swiper.params.keyboard.enabled) { 14237 enable(); 14238 } 14239 }); 14240 on('destroy', () => { 14241 if (swiper.keyboard.enabled) { 14242 disable(); 14243 } 14244 }); 14245 Object.assign(swiper.keyboard, { 14246 enable, 14247 disable 14248 }); 14249} 14250 14251 14252 14253 14254/***/ }), 14255
vendor: 5,523 bytes, lines 14256-14460
14256/***/ "./node_modules/swiper/modules/manipulation.mjs": 14257/*!******************************************************!*\ 14258 !*** ./node_modules/swiper/modules/manipulation.mjs ***! 14259 \******************************************************/ 14260/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 14261 14262__webpack_require__.r(__webpack_exports__); 14263/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14264/* harmony export */ "default": function() { return /* binding */ Manipulation; } 14265/* harmony export */ }); 14266function appendSlide(slides) { 14267 const swiper = this; 14268 const { 14269 params, 14270 slidesEl 14271 } = swiper; 14272 if (params.loop) { 14273 swiper.loopDestroy(); 14274 } 14275 const appendElement = slideEl => { 14276 if (typeof slideEl === 'string') { 14277 const tempDOM = document.createElement('div'); 14278 tempDOM.innerHTML = slideEl; 14279 slidesEl.append(tempDOM.children[0]); 14280 tempDOM.innerHTML = ''; 14281 } else { 14282 slidesEl.append(slideEl); 14283 } 14284 }; 14285 if (typeof slides === 'object' && 'length' in slides) { 14286 for (let i = 0; i < slides.length; i += 1) { 14287 if (slides[i]) appendElement(slides[i]); 14288 } 14289 } else { 14290 appendElement(slides); 14291 } 14292 swiper.recalcSlides(); 14293 if (params.loop) { 14294 swiper.loopCreate(); 14295 } 14296 if (!params.observer || swiper.isElement) { 14297 swiper.update(); 14298 } 14299} 14300 14301function prependSlide(slides) { 14302 const swiper = this; 14303 const { 14304 params, 14305 activeIndex, 14306 slidesEl 14307 } = swiper; 14308 if (params.loop) { 14309 swiper.loopDestroy(); 14310 } 14311 let newActiveIndex = activeIndex + 1; 14312 const prependElement = slideEl => { 14313 if (typeof slideEl === 'string') { 14314 const tempDOM = document.createElement('div'); 14315 tempDOM.innerHTML = slideEl; 14316 slidesEl.prepend(tempDOM.children[0]); 14317 tempDOM.innerHTML = ''; 14318 } else { 14319 slidesEl.prepend(slideEl); 14320 } 14321 }; 14322 if (typeof slides === 'object' && 'length' in slides) { 14323 for (let i = 0; i < slides.length; i += 1) { 14324 if (slides[i]) prependElement(slides[i]); 14325 } 14326 newActiveIndex = activeIndex + slides.length; 14327 } else { 14328 prependElement(slides); 14329 } 14330 swiper.recalcSlides(); 14331 if (params.loop) { 14332 swiper.loopCreate(); 14333 } 14334 if (!params.observer || swiper.isElement) { 14335 swiper.update(); 14336 } 14337 swiper.slideTo(newActiveIndex, 0, false); 14338} 14339 14340function addSlide(index, slides) { 14341 const swiper = this; 14342 const { 14343 params, 14344 activeIndex, 14345 slidesEl 14346 } = swiper; 14347 let activeIndexBuffer = activeIndex; 14348 if (params.loop) { 14349 activeIndexBuffer -= swiper.loopedSlides; 14350 swiper.loopDestroy(); 14351 swiper.recalcSlides(); 14352 } 14353 const baseLength = swiper.slides.length; 14354 if (index <= 0) { 14355 swiper.prependSlide(slides); 14356 return; 14357 } 14358 if (index >= baseLength) { 14359 swiper.appendSlide(slides); 14360 return; 14361 } 14362 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 14363 const slidesBuffer = []; 14364 for (let i = baseLength - 1; i >= index; i -= 1) { 14365 const currentSlide = swiper.slides[i]; 14366 currentSlide.remove(); 14367 slidesBuffer.unshift(currentSlide); 14368 } 14369 if (typeof slides === 'object' && 'length' in slides) { 14370 for (let i = 0; i < slides.length; i += 1) { 14371 if (slides[i]) slidesEl.append(slides[i]); 14372 } 14373 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 14374 } else { 14375 slidesEl.append(slides); 14376 } 14377 for (let i = 0; i < slidesBuffer.length; i += 1) { 14378 slidesEl.append(slidesBuffer[i]); 14379 } 14380 swiper.recalcSlides(); 14381 if (params.loop) { 14382 swiper.loopCreate(); 14383 } 14384 if (!params.observer || swiper.isElement) { 14385 swiper.update(); 14386 } 14387 if (params.loop) { 14388 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 14389 } else { 14390 swiper.slideTo(newActiveIndex, 0, false); 14391 } 14392} 14393 14394function removeSlide(slidesIndexes) { 14395 const swiper = this; 14396 const { 14397 params, 14398 activeIndex 14399 } = swiper; 14400 let activeIndexBuffer = activeIndex; 14401 if (params.loop) { 14402 activeIndexBuffer -= swiper.loopedSlides; 14403 swiper.loopDestroy(); 14404 } 14405 let newActiveIndex = activeIndexBuffer; 14406 let indexToRemove; 14407 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 14408 for (let i = 0; i < slidesIndexes.length; i += 1) { 14409 indexToRemove = slidesIndexes[i]; 14410 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 14411 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 14412 } 14413 newActiveIndex = Math.max(newActiveIndex, 0); 14414 } else { 14415 indexToRemove = slidesIndexes; 14416 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 14417 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 14418 newActiveIndex = Math.max(newActiveIndex, 0); 14419 } 14420 swiper.recalcSlides(); 14421 if (params.loop) { 14422 swiper.loopCreate(); 14423 } 14424 if (!params.observer || swiper.isElement) { 14425 swiper.update(); 14426 } 14427 if (params.loop) { 14428 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 14429 } else { 14430 swiper.slideTo(newActiveIndex, 0, false); 14431 } 14432} 14433 14434function removeAllSlides() { 14435 const swiper = this; 14436 const slidesIndexes = []; 14437 for (let i = 0; i < swiper.slides.length; i += 1) { 14438 slidesIndexes.push(i); 14439 } 14440 swiper.removeSlide(slidesIndexes); 14441} 14442 14443function Manipulation(_ref) { 14444 let { 14445 swiper 14446 } = _ref; 14447 Object.assign(swiper, { 14448 appendSlide: appendSlide.bind(swiper), 14449 prependSlide: prependSlide.bind(swiper), 14450 addSlide: addSlide.bind(swiper), 14451 removeSlide: removeSlide.bind(swiper), 14452 removeAllSlides: removeAllSlides.bind(swiper) 14453 }); 14454} 14455 14456 14457 14458 14459/***/ }), 14460
vendor: 15,890 bytes, lines 14461-14869
14461/***/ "./node_modules/swiper/modules/mousewheel.mjs": 14462/*!****************************************************!*\ 14463 !*** ./node_modules/swiper/modules/mousewheel.mjs ***! 14464 \****************************************************/ 14465/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 14466 14467__webpack_require__.r(__webpack_exports__); 14468/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14469/* harmony export */ "default": function() { return /* binding */ Mousewheel; } 14470/* harmony export */ }); 14471/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 14472/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 14473 14474 14475 14476/* eslint-disable consistent-return */ 14477function Mousewheel(_ref) { 14478 let { 14479 swiper, 14480 extendParams, 14481 on, 14482 emit 14483 } = _ref; 14484 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 14485 extendParams({ 14486 mousewheel: { 14487 enabled: false, 14488 releaseOnEdges: false, 14489 invert: false, 14490 forceToAxis: false, 14491 sensitivity: 1, 14492 eventsTarget: 'container', 14493 thresholdDelta: null, 14494 thresholdTime: null, 14495 noMousewheelClass: 'swiper-no-mousewheel' 14496 } 14497 }); 14498 swiper.mousewheel = { 14499 enabled: false 14500 }; 14501 let timeout; 14502 let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 14503 let lastEventBeforeSnap; 14504 const recentWheelEvents = []; 14505 function normalize(e) { 14506 // Reasonable defaults 14507 const PIXEL_STEP = 10; 14508 const LINE_HEIGHT = 40; 14509 const PAGE_HEIGHT = 800; 14510 let sX = 0; 14511 let sY = 0; // spinX, spinY 14512 let pX = 0; 14513 let pY = 0; // pixelX, pixelY 14514 14515 // Legacy 14516 if ('detail' in e) { 14517 sY = e.detail; 14518 } 14519 if ('wheelDelta' in e) { 14520 sY = -e.wheelDelta / 120; 14521 } 14522 if ('wheelDeltaY' in e) { 14523 sY = -e.wheelDeltaY / 120; 14524 } 14525 if ('wheelDeltaX' in e) { 14526 sX = -e.wheelDeltaX / 120; 14527 } 14528 14529 // side scrolling on FF with DOMMouseScroll 14530 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 14531 sX = sY; 14532 sY = 0; 14533 } 14534 pX = sX * PIXEL_STEP; 14535 pY = sY * PIXEL_STEP; 14536 if ('deltaY' in e) { 14537 pY = e.deltaY; 14538 } 14539 if ('deltaX' in e) { 14540 pX = e.deltaX; 14541 } 14542 if (e.shiftKey && !pX) { 14543 // if user scrolls with shift he wants horizontal scroll 14544 pX = pY; 14545 pY = 0; 14546 } 14547 if ((pX || pY) && e.deltaMode) { 14548 if (e.deltaMode === 1) { 14549 // delta in LINE units 14550 pX *= LINE_HEIGHT; 14551 pY *= LINE_HEIGHT; 14552 } else { 14553 // delta in PAGE units 14554 pX *= PAGE_HEIGHT; 14555 pY *= PAGE_HEIGHT; 14556 } 14557 } 14558 14559 // Fall-back if spin cannot be determined 14560 if (pX && !sX) { 14561 sX = pX < 1 ? -1 : 1; 14562 } 14563 if (pY && !sY) { 14564 sY = pY < 1 ? -1 : 1; 14565 } 14566 return { 14567 spinX: sX, 14568 spinY: sY, 14569 pixelX: pX, 14570 pixelY: pY 14571 }; 14572 } 14573 function handleMouseEnter() { 14574 if (!swiper.enabled) return; 14575 swiper.mouseEntered = true; 14576 } 14577 function handleMouseLeave() { 14578 if (!swiper.enabled) return; 14579 swiper.mouseEntered = false; 14580 } 14581 function animateSlider(newEvent) { 14582 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 14583 // Prevent if delta of wheel scroll delta is below configured threshold 14584 return false; 14585 } 14586 if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 14587 // Prevent if time between scrolls is below configured threshold 14588 return false; 14589 } 14590 14591 // If the movement is NOT big enough and 14592 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 14593 // Don't go any further (avoid insignificant scroll movement). 14594 if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < 60) { 14595 // Return false as a default 14596 return true; 14597 } 14598 // If user is scrolling towards the end: 14599 // If the slider hasn't hit the latest slide or 14600 // if the slider is a loop and 14601 // if the slider isn't moving right now: 14602 // Go to next slide and 14603 // emit a scroll event. 14604 // Else (the user is scrolling towards the beginning) and 14605 // if the slider hasn't hit the first slide or 14606 // if the slider is a loop and 14607 // if the slider isn't moving right now: 14608 // Go to prev slide and 14609 // emit a scroll event. 14610 if (newEvent.direction < 0) { 14611 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 14612 swiper.slideNext(); 14613 emit('scroll', newEvent.raw); 14614 } 14615 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 14616 swiper.slidePrev(); 14617 emit('scroll', newEvent.raw); 14618 } 14619 // If you got here is because an animation has been triggered so store the current time 14620 lastScrollTime = new window.Date().getTime(); 14621 // Return false as a default 14622 return false; 14623 } 14624 function releaseScroll(newEvent) { 14625 const params = swiper.params.mousewheel; 14626 if (newEvent.direction < 0) { 14627 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 14628 // Return true to animate scroll on edges 14629 return true; 14630 } 14631 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 14632 // Return true to animate scroll on edges 14633 return true; 14634 } 14635 return false; 14636 } 14637 function handle(event) { 14638 let e = event; 14639 let disableParentSwiper = true; 14640 if (!swiper.enabled) return; 14641 14642 // Ignore event if the target or its parents have the swiper-no-mousewheel class 14643 if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; 14644 const params = swiper.params.mousewheel; 14645 if (swiper.params.cssMode) { 14646 e.preventDefault(); 14647 } 14648 let targetEl = swiper.el; 14649 if (swiper.params.mousewheel.eventsTarget !== 'container') { 14650 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 14651 } 14652 const targetElContainsTarget = targetEl && targetEl.contains(e.target); 14653 if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; 14654 if (e.originalEvent) e = e.originalEvent; // jquery fix 14655 let delta = 0; 14656 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 14657 const data = normalize(e); 14658 if (params.forceToAxis) { 14659 if (swiper.isHorizontal()) { 14660 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 14661 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 14662 } else { 14663 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 14664 } 14665 if (delta === 0) return true; 14666 if (params.invert) delta = -delta; 14667 14668 // Get the scroll positions 14669 let positions = swiper.getTranslate() + delta * params.sensitivity; 14670 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 14671 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); 14672 14673 // When loop is true: 14674 // the disableParentSwiper will be true. 14675 // When loop is false: 14676 // if the scroll positions is not on edge, 14677 // then the disableParentSwiper will be true. 14678 // if the scroll on edge positions, 14679 // then the disableParentSwiper will be false. 14680 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 14681 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 14682 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 14683 // Register the new event in a variable which stores the relevant data 14684 const newEvent = { 14685 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 14686 delta: Math.abs(delta), 14687 direction: Math.sign(delta), 14688 raw: event 14689 }; 14690 14691 // Keep the most recent events 14692 if (recentWheelEvents.length >= 2) { 14693 recentWheelEvents.shift(); // only store the last N events 14694 } 14695 14696 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 14697 recentWheelEvents.push(newEvent); 14698 14699 // If there is at least one previous recorded event: 14700 // If direction has changed or 14701 // if the scroll is quicker than the previous one: 14702 // Animate the slider. 14703 // Else (this is the first time the wheel is moved): 14704 // Animate the slider. 14705 if (prevEvent) { 14706 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 14707 animateSlider(newEvent); 14708 } 14709 } else { 14710 animateSlider(newEvent); 14711 } 14712 14713 // If it's time to release the scroll: 14714 // Return now so you don't hit the preventDefault. 14715 if (releaseScroll(newEvent)) { 14716 return true; 14717 } 14718 } else { 14719 // Freemode or scrollContainer: 14720 14721 // If we recently snapped after a momentum scroll, then ignore wheel events 14722 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 14723 // or if it's a new scroll (larger delta or inverse sign as last event before 14724 // an end-of-momentum snap). 14725 const newEvent = { 14726 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 14727 delta: Math.abs(delta), 14728 direction: Math.sign(delta) 14729 }; 14730 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 14731 if (!ignoreWheelEvents) { 14732 lastEventBeforeSnap = undefined; 14733 let position = swiper.getTranslate() + delta * params.sensitivity; 14734 const wasBeginning = swiper.isBeginning; 14735 const wasEnd = swiper.isEnd; 14736 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 14737 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 14738 swiper.setTransition(0); 14739 swiper.setTranslate(position); 14740 swiper.updateProgress(); 14741 swiper.updateActiveIndex(); 14742 swiper.updateSlidesClasses(); 14743 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 14744 swiper.updateSlidesClasses(); 14745 } 14746 if (swiper.params.loop) { 14747 swiper.loopFix({ 14748 direction: newEvent.direction < 0 ? 'next' : 'prev', 14749 byMousewheel: true 14750 }); 14751 } 14752 if (swiper.params.freeMode.sticky) { 14753 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 14754 // the end of a momentum scroll by storing recent (N=15?) wheel events. 14755 // 1. do all N events have decreasing or same (absolute value) delta? 14756 // 2. did all N events arrive in the last M (M=500?) msecs? 14757 // 3. does the earliest event have an (absolute value) delta that's 14758 // at least P (P=1?) larger than the most recent event's delta? 14759 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 14760 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 14761 // Snap immediately and ignore remaining wheel events in this scroll. 14762 // See comment above for "remaining wheel events in this scroll" determination. 14763 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 14764 clearTimeout(timeout); 14765 timeout = undefined; 14766 if (recentWheelEvents.length >= 15) { 14767 recentWheelEvents.shift(); // only store the last N events 14768 } 14769 14770 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 14771 const firstEvent = recentWheelEvents[0]; 14772 recentWheelEvents.push(newEvent); 14773 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 14774 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 14775 recentWheelEvents.splice(0); 14776 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 14777 // We're at the end of the deceleration of a momentum scroll, so there's no need 14778 // to wait for more events. Snap ASAP on the next tick. 14779 // Also, because there's some remaining momentum we'll bias the snap in the 14780 // direction of the ongoing scroll because it's better UX for the scroll to snap 14781 // in the same direction as the scroll instead of reversing to snap. Therefore, 14782 // if it's already scrolled more than 20% in the current direction, keep going. 14783 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 14784 lastEventBeforeSnap = newEvent; 14785 recentWheelEvents.splice(0); 14786 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 14787 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 14788 }, 0); // no delay; move on next tick 14789 } 14790 14791 if (!timeout) { 14792 // if we get here, then we haven't detected the end of a momentum scroll, so 14793 // we'll consider a scroll "complete" when there haven't been any wheel events 14794 // for 500ms. 14795 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 14796 const snapToThreshold = 0.5; 14797 lastEventBeforeSnap = newEvent; 14798 recentWheelEvents.splice(0); 14799 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 14800 }, 500); 14801 } 14802 } 14803 14804 // Emit event 14805 if (!ignoreWheelEvents) emit('scroll', e); 14806 14807 // Stop autoplay 14808 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); 14809 // Return page scroll on edge positions 14810 if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { 14811 return true; 14812 } 14813 } 14814 } 14815 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 14816 return false; 14817 } 14818 function events(method) { 14819 let targetEl = swiper.el; 14820 if (swiper.params.mousewheel.eventsTarget !== 'container') { 14821 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 14822 } 14823 targetEl[method]('mouseenter', handleMouseEnter); 14824 targetEl[method]('mouseleave', handleMouseLeave); 14825 targetEl[method]('wheel', handle); 14826 } 14827 function enable() { 14828 if (swiper.params.cssMode) { 14829 swiper.wrapperEl.removeEventListener('wheel', handle); 14830 return true; 14831 } 14832 if (swiper.mousewheel.enabled) return false; 14833 events('addEventListener'); 14834 swiper.mousewheel.enabled = true; 14835 return true; 14836 } 14837 function disable() { 14838 if (swiper.params.cssMode) { 14839 swiper.wrapperEl.addEventListener(event, handle); 14840 return true; 14841 } 14842 if (!swiper.mousewheel.enabled) return false; 14843 events('removeEventListener'); 14844 swiper.mousewheel.enabled = false; 14845 return true; 14846 } 14847 on('init', () => { 14848 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 14849 disable(); 14850 } 14851 if (swiper.params.mousewheel.enabled) enable(); 14852 }); 14853 on('destroy', () => { 14854 if (swiper.params.cssMode) { 14855 enable(); 14856 } 14857 if (swiper.mousewheel.enabled) disable(); 14858 }); 14859 Object.assign(swiper.mousewheel, { 14860 enable, 14861 disable 14862 }); 14863} 14864 14865 14866 14867 14868/***/ }), 14869
vendor: 7,393 bytes, lines 14870-15085
14870/***/ "./node_modules/swiper/modules/navigation.mjs": 14871/*!****************************************************!*\ 14872 !*** ./node_modules/swiper/modules/navigation.mjs ***! 14873 \****************************************************/ 14874/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 14875 14876__webpack_require__.r(__webpack_exports__); 14877/* harmony export */ __webpack_require__.d(__webpack_exports__, { 14878/* harmony export */ "default": function() { return /* binding */ Navigation; } 14879/* harmony export */ }); 14880/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs"); 14881/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 14882 14883 14884 14885function Navigation(_ref) { 14886 let { 14887 swiper, 14888 extendParams, 14889 on, 14890 emit 14891 } = _ref; 14892 extendParams({ 14893 navigation: { 14894 nextEl: null, 14895 prevEl: null, 14896 hideOnClick: false, 14897 disabledClass: 'swiper-button-disabled', 14898 hiddenClass: 'swiper-button-hidden', 14899 lockClass: 'swiper-button-lock', 14900 navigationDisabledClass: 'swiper-navigation-disabled' 14901 } 14902 }); 14903 swiper.navigation = { 14904 nextEl: null, 14905 prevEl: null 14906 }; 14907 function getEl(el) { 14908 let res; 14909 if (el && typeof el === 'string' && swiper.isElement) { 14910 res = swiper.el.querySelector(el); 14911 if (res) return res; 14912 } 14913 if (el) { 14914 if (typeof el === 'string') res = [...document.querySelectorAll(el)]; 14915 if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 14916 res = swiper.el.querySelector(el); 14917 } else if (res && res.length === 1) { 14918 res = res[0]; 14919 } 14920 } 14921 if (el && !res) return el; 14922 // if (Array.isArray(res) && res.length === 1) res = res[0]; 14923 return res; 14924 } 14925 function toggleEl(el, disabled) { 14926 const params = swiper.params.navigation; 14927 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 14928 el.forEach(subEl => { 14929 if (subEl) { 14930 subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); 14931 if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; 14932 if (swiper.params.watchOverflow && swiper.enabled) { 14933 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 14934 } 14935 } 14936 }); 14937 } 14938 function update() { 14939 // Update Navigation Buttons 14940 const { 14941 nextEl, 14942 prevEl 14943 } = swiper.navigation; 14944 if (swiper.params.loop) { 14945 toggleEl(prevEl, false); 14946 toggleEl(nextEl, false); 14947 return; 14948 } 14949 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 14950 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 14951 } 14952 function onPrevClick(e) { 14953 e.preventDefault(); 14954 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 14955 swiper.slidePrev(); 14956 emit('navigationPrev'); 14957 } 14958 function onNextClick(e) { 14959 e.preventDefault(); 14960 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 14961 swiper.slideNext(); 14962 emit('navigationNext'); 14963 } 14964 function init() { 14965 const params = swiper.params.navigation; 14966 swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 14967 nextEl: 'swiper-button-next', 14968 prevEl: 'swiper-button-prev' 14969 }); 14970 if (!(params.nextEl || params.prevEl)) return; 14971 let nextEl = getEl(params.nextEl); 14972 let prevEl = getEl(params.prevEl); 14973 Object.assign(swiper.navigation, { 14974 nextEl, 14975 prevEl 14976 }); 14977 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 14978 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 14979 const initButton = (el, dir) => { 14980 if (el) { 14981 el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 14982 } 14983 if (!swiper.enabled && el) { 14984 el.classList.add(...params.lockClass.split(' ')); 14985 } 14986 }; 14987 nextEl.forEach(el => initButton(el, 'next')); 14988 prevEl.forEach(el => initButton(el, 'prev')); 14989 } 14990 function destroy() { 14991 let { 14992 nextEl, 14993 prevEl 14994 } = swiper.navigation; 14995 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 14996 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 14997 const destroyButton = (el, dir) => { 14998 el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 14999 el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); 15000 }; 15001 nextEl.forEach(el => destroyButton(el, 'next')); 15002 prevEl.forEach(el => destroyButton(el, 'prev')); 15003 } 15004 on('init', () => { 15005 if (swiper.params.navigation.enabled === false) { 15006 // eslint-disable-next-line 15007 disable(); 15008 } else { 15009 init(); 15010 update(); 15011 } 15012 }); 15013 on('toEdge fromEdge lock unlock', () => { 15014 update(); 15015 }); 15016 on('destroy', () => { 15017 destroy(); 15018 }); 15019 on('enable disable', () => { 15020 let { 15021 nextEl, 15022 prevEl 15023 } = swiper.navigation; 15024 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 15025 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 15026 if (swiper.enabled) { 15027 update(); 15028 return; 15029 } 15030 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); 15031 }); 15032 on('click', (_s, e) => { 15033 let { 15034 nextEl, 15035 prevEl 15036 } = swiper.navigation; 15037 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 15038 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 15039 const targetEl = e.target; 15040 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 15041 if (swiper.isElement && !targetIsButton) { 15042 const path = e.path || e.composedPath && e.composedPath(); 15043 if (path) { 15044 targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 15045 } 15046 } 15047 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 15048 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 15049 let isHidden; 15050 if (nextEl.length) { 15051 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 15052 } else if (prevEl.length) { 15053 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 15054 } 15055 if (isHidden === true) { 15056 emit('navigationShow'); 15057 } else { 15058 emit('navigationHide'); 15059 } 15060 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); 15061 } 15062 }); 15063 const enable = () => { 15064 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); 15065 init(); 15066 update(); 15067 }; 15068 const disable = () => { 15069 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); 15070 destroy(); 15071 }; 15072 Object.assign(swiper.navigation, { 15073 enable, 15074 disable, 15075 update, 15076 init, 15077 destroy 15078 }); 15079} 15080 15081 15082 15083 15084/***/ }), 15085
vendor: 18,514 bytes, lines 15086-15545
15086/***/ "./node_modules/swiper/modules/pagination.mjs": 15087/*!****************************************************!*\ 15088 !*** ./node_modules/swiper/modules/pagination.mjs ***! 15089 \****************************************************/ 15090/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 15091 15092__webpack_require__.r(__webpack_exports__); 15093/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15094/* harmony export */ "default": function() { return /* binding */ Pagination; } 15095/* harmony export */ }); 15096/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs"); 15097/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs"); 15098/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 15099 15100 15101 15102 15103function Pagination(_ref) { 15104 let { 15105 swiper, 15106 extendParams, 15107 on, 15108 emit 15109 } = _ref; 15110 const pfx = 'swiper-pagination'; 15111 extendParams({ 15112 pagination: { 15113 el: null, 15114 bulletElement: 'span', 15115 clickable: false, 15116 hideOnClick: false, 15117 renderBullet: null, 15118 renderProgressbar: null, 15119 renderFraction: null, 15120 renderCustom: null, 15121 progressbarOpposite: false, 15122 type: 'bullets', 15123 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 15124 dynamicBullets: false, 15125 dynamicMainBullets: 1, 15126 formatFractionCurrent: number => number, 15127 formatFractionTotal: number => number, 15128 bulletClass: `${pfx}-bullet`, 15129 bulletActiveClass: `${pfx}-bullet-active`, 15130 modifierClass: `${pfx}-`, 15131 currentClass: `${pfx}-current`, 15132 totalClass: `${pfx}-total`, 15133 hiddenClass: `${pfx}-hidden`, 15134 progressbarFillClass: `${pfx}-progressbar-fill`, 15135 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 15136 clickableClass: `${pfx}-clickable`, 15137 lockClass: `${pfx}-lock`, 15138 horizontalClass: `${pfx}-horizontal`, 15139 verticalClass: `${pfx}-vertical`, 15140 paginationDisabledClass: `${pfx}-disabled` 15141 } 15142 }); 15143 swiper.pagination = { 15144 el: null, 15145 bullets: [] 15146 }; 15147 let bulletSize; 15148 let dynamicBulletIndex = 0; 15149 function isPaginationDisabled() { 15150 return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; 15151 } 15152 function setSideBullets(bulletEl, position) { 15153 const { 15154 bulletActiveClass 15155 } = swiper.params.pagination; 15156 if (!bulletEl) return; 15157 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 15158 if (bulletEl) { 15159 bulletEl.classList.add(`${bulletActiveClass}-${position}`); 15160 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 15161 if (bulletEl) { 15162 bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); 15163 } 15164 } 15165 } 15166 function onBulletClick(e) { 15167 const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass)); 15168 if (!bulletEl) { 15169 return; 15170 } 15171 e.preventDefault(); 15172 const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) * swiper.params.slidesPerGroup; 15173 if (swiper.params.loop) { 15174 if (swiper.realIndex === index) return; 15175 swiper.slideToLoop(index); 15176 } else { 15177 swiper.slideTo(index); 15178 } 15179 } 15180 function update() { 15181 // Render || Update Pagination bullets/items 15182 const rtl = swiper.rtl; 15183 const params = swiper.params.pagination; 15184 if (isPaginationDisabled()) return; 15185 let el = swiper.pagination.el; 15186 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15187 // Current/Total 15188 let current; 15189 let previousIndex; 15190 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 15191 const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 15192 if (swiper.params.loop) { 15193 previousIndex = swiper.previousRealIndex || 0; 15194 current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; 15195 } else if (typeof swiper.snapIndex !== 'undefined') { 15196 current = swiper.snapIndex; 15197 previousIndex = swiper.previousSnapIndex; 15198 } else { 15199 previousIndex = swiper.previousIndex || 0; 15200 current = swiper.activeIndex || 0; 15201 } 15202 // Types 15203 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 15204 const bullets = swiper.pagination.bullets; 15205 let firstIndex; 15206 let lastIndex; 15207 let midIndex; 15208 if (params.dynamicBullets) { 15209 bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.f)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); 15210 el.forEach(subEl => { 15211 subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; 15212 }); 15213 if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { 15214 dynamicBulletIndex += current - (previousIndex || 0); 15215 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 15216 dynamicBulletIndex = params.dynamicMainBullets - 1; 15217 } else if (dynamicBulletIndex < 0) { 15218 dynamicBulletIndex = 0; 15219 } 15220 } 15221 firstIndex = Math.max(current - dynamicBulletIndex, 0); 15222 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 15223 midIndex = (lastIndex + firstIndex) / 2; 15224 } 15225 bullets.forEach(bulletEl => { 15226 const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); 15227 bulletEl.classList.remove(...classesToRemove); 15228 }); 15229 if (el.length > 1) { 15230 bullets.forEach(bullet => { 15231 const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullet); 15232 if (bulletIndex === current) { 15233 bullet.classList.add(...params.bulletActiveClass.split(' ')); 15234 } else if (swiper.isElement) { 15235 bullet.setAttribute('part', 'bullet'); 15236 } 15237 if (params.dynamicBullets) { 15238 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 15239 bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 15240 } 15241 if (bulletIndex === firstIndex) { 15242 setSideBullets(bullet, 'prev'); 15243 } 15244 if (bulletIndex === lastIndex) { 15245 setSideBullets(bullet, 'next'); 15246 } 15247 } 15248 }); 15249 } else { 15250 const bullet = bullets[current]; 15251 if (bullet) { 15252 bullet.classList.add(...params.bulletActiveClass.split(' ')); 15253 } 15254 if (swiper.isElement) { 15255 bullets.forEach((bulletEl, bulletIndex) => { 15256 bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); 15257 }); 15258 } 15259 if (params.dynamicBullets) { 15260 const firstDisplayedBullet = bullets[firstIndex]; 15261 const lastDisplayedBullet = bullets[lastIndex]; 15262 for (let i = firstIndex; i <= lastIndex; i += 1) { 15263 if (bullets[i]) { 15264 bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 15265 } 15266 } 15267 setSideBullets(firstDisplayedBullet, 'prev'); 15268 setSideBullets(lastDisplayedBullet, 'next'); 15269 } 15270 } 15271 if (params.dynamicBullets) { 15272 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 15273 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 15274 const offsetProp = rtl ? 'right' : 'left'; 15275 bullets.forEach(bullet => { 15276 bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; 15277 }); 15278 } 15279 } 15280 el.forEach((subEl, subElIndex) => { 15281 if (params.type === 'fraction') { 15282 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => { 15283 fractionEl.textContent = params.formatFractionCurrent(current + 1); 15284 }); 15285 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => { 15286 totalEl.textContent = params.formatFractionTotal(total); 15287 }); 15288 } 15289 if (params.type === 'progressbar') { 15290 let progressbarDirection; 15291 if (params.progressbarOpposite) { 15292 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 15293 } else { 15294 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 15295 } 15296 const scale = (current + 1) / total; 15297 let scaleX = 1; 15298 let scaleY = 1; 15299 if (progressbarDirection === 'horizontal') { 15300 scaleX = scale; 15301 } else { 15302 scaleY = scale; 15303 } 15304 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => { 15305 progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; 15306 progressEl.style.transitionDuration = `${swiper.params.speed}ms`; 15307 }); 15308 } 15309 if (params.type === 'custom' && params.renderCustom) { 15310 subEl.innerHTML = params.renderCustom(swiper, current + 1, total); 15311 if (subElIndex === 0) emit('paginationRender', subEl); 15312 } else { 15313 if (subElIndex === 0) emit('paginationRender', subEl); 15314 emit('paginationUpdate', subEl); 15315 } 15316 if (swiper.params.watchOverflow && swiper.enabled) { 15317 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 15318 } 15319 }); 15320 } 15321 function render() { 15322 // Render Container 15323 const params = swiper.params.pagination; 15324 if (isPaginationDisabled()) return; 15325 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; 15326 let el = swiper.pagination.el; 15327 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15328 let paginationHTML = ''; 15329 if (params.type === 'bullets') { 15330 let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 15331 if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { 15332 numberOfBullets = slidesLength; 15333 } 15334 for (let i = 0; i < numberOfBullets; i += 1) { 15335 if (params.renderBullet) { 15336 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 15337 } else { 15338 // prettier-ignore 15339 paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`; 15340 } 15341 } 15342 } 15343 if (params.type === 'fraction') { 15344 if (params.renderFraction) { 15345 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 15346 } else { 15347 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 15348 } 15349 } 15350 if (params.type === 'progressbar') { 15351 if (params.renderProgressbar) { 15352 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 15353 } else { 15354 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 15355 } 15356 } 15357 swiper.pagination.bullets = []; 15358 el.forEach(subEl => { 15359 if (params.type !== 'custom') { 15360 subEl.innerHTML = paginationHTML || ''; 15361 } 15362 if (params.type === 'bullets') { 15363 swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass))); 15364 } 15365 }); 15366 if (params.type !== 'custom') { 15367 emit('paginationRender', el[0]); 15368 } 15369 } 15370 function init() { 15371 swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 15372 el: 'swiper-pagination' 15373 }); 15374 const params = swiper.params.pagination; 15375 if (!params.el) return; 15376 let el; 15377 if (typeof params.el === 'string' && swiper.isElement) { 15378 el = swiper.el.querySelector(params.el); 15379 } 15380 if (!el && typeof params.el === 'string') { 15381 el = [...document.querySelectorAll(params.el)]; 15382 } 15383 if (!el) { 15384 el = params.el; 15385 } 15386 if (!el || el.length === 0) return; 15387 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { 15388 el = [...swiper.el.querySelectorAll(params.el)]; 15389 // check if it belongs to another nested Swiper 15390 if (el.length > 1) { 15391 el = el.filter(subEl => { 15392 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.a)(subEl, '.swiper')[0] !== swiper.el) return false; 15393 return true; 15394 })[0]; 15395 } 15396 } 15397 if (Array.isArray(el) && el.length === 1) el = el[0]; 15398 Object.assign(swiper.pagination, { 15399 el 15400 }); 15401 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15402 el.forEach(subEl => { 15403 if (params.type === 'bullets' && params.clickable) { 15404 subEl.classList.add(...(params.clickableClass || '').split(' ')); 15405 } 15406 subEl.classList.add(params.modifierClass + params.type); 15407 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 15408 if (params.type === 'bullets' && params.dynamicBullets) { 15409 subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); 15410 dynamicBulletIndex = 0; 15411 if (params.dynamicMainBullets < 1) { 15412 params.dynamicMainBullets = 1; 15413 } 15414 } 15415 if (params.type === 'progressbar' && params.progressbarOpposite) { 15416 subEl.classList.add(params.progressbarOppositeClass); 15417 } 15418 if (params.clickable) { 15419 subEl.addEventListener('click', onBulletClick); 15420 } 15421 if (!swiper.enabled) { 15422 subEl.classList.add(params.lockClass); 15423 } 15424 }); 15425 } 15426 function destroy() { 15427 const params = swiper.params.pagination; 15428 if (isPaginationDisabled()) return; 15429 let el = swiper.pagination.el; 15430 if (el) { 15431 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15432 el.forEach(subEl => { 15433 subEl.classList.remove(params.hiddenClass); 15434 subEl.classList.remove(params.modifierClass + params.type); 15435 subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 15436 if (params.clickable) { 15437 subEl.classList.remove(...(params.clickableClass || '').split(' ')); 15438 subEl.removeEventListener('click', onBulletClick); 15439 } 15440 }); 15441 } 15442 if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); 15443 } 15444 on('changeDirection', () => { 15445 if (!swiper.pagination || !swiper.pagination.el) return; 15446 const params = swiper.params.pagination; 15447 let { 15448 el 15449 } = swiper.pagination; 15450 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15451 el.forEach(subEl => { 15452 subEl.classList.remove(params.horizontalClass, params.verticalClass); 15453 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 15454 }); 15455 }); 15456 on('init', () => { 15457 if (swiper.params.pagination.enabled === false) { 15458 // eslint-disable-next-line 15459 disable(); 15460 } else { 15461 init(); 15462 render(); 15463 update(); 15464 } 15465 }); 15466 on('activeIndexChange', () => { 15467 if (typeof swiper.snapIndex === 'undefined') { 15468 update(); 15469 } 15470 }); 15471 on('snapIndexChange', () => { 15472 update(); 15473 }); 15474 on('snapGridLengthChange', () => { 15475 render(); 15476 update(); 15477 }); 15478 on('destroy', () => { 15479 destroy(); 15480 }); 15481 on('enable disable', () => { 15482 let { 15483 el 15484 } = swiper.pagination; 15485 if (el) { 15486 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15487 el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); 15488 } 15489 }); 15490 on('lock unlock', () => { 15491 update(); 15492 }); 15493 on('click', (_s, e) => { 15494 const targetEl = e.target; 15495 const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 15496 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { 15497 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 15498 const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); 15499 if (isHidden === true) { 15500 emit('paginationShow'); 15501 } else { 15502 emit('paginationHide'); 15503 } 15504 el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); 15505 } 15506 }); 15507 const enable = () => { 15508 swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); 15509 let { 15510 el 15511 } = swiper.pagination; 15512 if (el) { 15513 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15514 el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); 15515 } 15516 init(); 15517 render(); 15518 update(); 15519 }; 15520 const disable = () => { 15521 swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); 15522 let { 15523 el 15524 } = swiper.pagination; 15525 if (el) { 15526 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 15527 el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); 15528 } 15529 destroy(); 15530 }; 15531 Object.assign(swiper.pagination, { 15532 enable, 15533 disable, 15534 render, 15535 update, 15536 init, 15537 destroy 15538 }); 15539} 15540 15541 15542 15543 15544/***/ }), 15545
vendor: 4,704 bytes, lines 15546-15684
15546/***/ "./node_modules/swiper/modules/parallax.mjs": 15547/*!**************************************************!*\ 15548 !*** ./node_modules/swiper/modules/parallax.mjs ***! 15549 \**************************************************/ 15550/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 15551 15552__webpack_require__.r(__webpack_exports__); 15553/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15554/* harmony export */ "default": function() { return /* binding */ Parallax; } 15555/* harmony export */ }); 15556/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 15557 15558 15559function Parallax(_ref) { 15560 let { 15561 swiper, 15562 extendParams, 15563 on 15564 } = _ref; 15565 extendParams({ 15566 parallax: { 15567 enabled: false 15568 } 15569 }); 15570 const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; 15571 const setTransform = (el, progress) => { 15572 const { 15573 rtl 15574 } = swiper; 15575 const rtlFactor = rtl ? -1 : 1; 15576 const p = el.getAttribute('data-swiper-parallax') || '0'; 15577 let x = el.getAttribute('data-swiper-parallax-x'); 15578 let y = el.getAttribute('data-swiper-parallax-y'); 15579 const scale = el.getAttribute('data-swiper-parallax-scale'); 15580 const opacity = el.getAttribute('data-swiper-parallax-opacity'); 15581 const rotate = el.getAttribute('data-swiper-parallax-rotate'); 15582 if (x || y) { 15583 x = x || '0'; 15584 y = y || '0'; 15585 } else if (swiper.isHorizontal()) { 15586 x = p; 15587 y = '0'; 15588 } else { 15589 y = p; 15590 x = '0'; 15591 } 15592 if (x.indexOf('%') >= 0) { 15593 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 15594 } else { 15595 x = `${x * progress * rtlFactor}px`; 15596 } 15597 if (y.indexOf('%') >= 0) { 15598 y = `${parseInt(y, 10) * progress}%`; 15599 } else { 15600 y = `${y * progress}px`; 15601 } 15602 if (typeof opacity !== 'undefined' && opacity !== null) { 15603 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 15604 el.style.opacity = currentOpacity; 15605 } 15606 let transform = `translate3d(${x}, ${y}, 0px)`; 15607 if (typeof scale !== 'undefined' && scale !== null) { 15608 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 15609 transform += ` scale(${currentScale})`; 15610 } 15611 if (rotate && typeof rotate !== 'undefined' && rotate !== null) { 15612 const currentRotate = rotate * progress * -1; 15613 transform += ` rotate(${currentRotate}deg)`; 15614 } 15615 el.style.transform = transform; 15616 }; 15617 const setTranslate = () => { 15618 const { 15619 el, 15620 slides, 15621 progress, 15622 snapGrid, 15623 isElement 15624 } = swiper; 15625 const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector); 15626 if (swiper.isElement) { 15627 elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector)); 15628 } 15629 elements.forEach(subEl => { 15630 setTransform(subEl, progress); 15631 }); 15632 slides.forEach((slideEl, slideIndex) => { 15633 let slideProgress = slideEl.progress; 15634 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 15635 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 15636 } 15637 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 15638 slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { 15639 setTransform(subEl, slideProgress); 15640 }); 15641 }); 15642 }; 15643 const setTransition = function (duration) { 15644 if (duration === void 0) { 15645 duration = swiper.params.speed; 15646 } 15647 const { 15648 el, 15649 hostEl 15650 } = swiper; 15651 const elements = [...el.querySelectorAll(elementsSelector)]; 15652 if (swiper.isElement) { 15653 elements.push(...hostEl.querySelectorAll(elementsSelector)); 15654 } 15655 elements.forEach(parallaxEl => { 15656 let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; 15657 if (duration === 0) parallaxDuration = 0; 15658 parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; 15659 }); 15660 }; 15661 on('beforeInit', () => { 15662 if (!swiper.params.parallax.enabled) return; 15663 swiper.params.watchSlidesProgress = true; 15664 swiper.originalParams.watchSlidesProgress = true; 15665 }); 15666 on('init', () => { 15667 if (!swiper.params.parallax.enabled) return; 15668 setTranslate(); 15669 }); 15670 on('setTranslate', () => { 15671 if (!swiper.params.parallax.enabled) return; 15672 setTranslate(); 15673 }); 15674 on('setTransition', (_swiper, duration) => { 15675 if (!swiper.params.parallax.enabled) return; 15676 setTransition(duration); 15677 }); 15678} 15679 15680 15681 15682 15683/***/ }), 15684
vendor: 12,537 bytes, lines 15685-16068
15685/***/ "./node_modules/swiper/modules/scrollbar.mjs": 15686/*!***************************************************!*\ 15687 !*** ./node_modules/swiper/modules/scrollbar.mjs ***! 15688 \***************************************************/ 15689/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 15690 15691__webpack_require__.r(__webpack_exports__); 15692/* harmony export */ __webpack_require__.d(__webpack_exports__, { 15693/* harmony export */ "default": function() { return /* binding */ Scrollbar; } 15694/* harmony export */ }); 15695/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 15696/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 15697/* harmony import */ var _shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/create-element-if-not-defined.mjs */ "./node_modules/swiper/shared/create-element-if-not-defined.mjs"); 15698/* harmony import */ var _shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/classes-to-selector.mjs */ "./node_modules/swiper/shared/classes-to-selector.mjs"); 15699 15700 15701 15702 15703 15704function Scrollbar(_ref) { 15705 let { 15706 swiper, 15707 extendParams, 15708 on, 15709 emit 15710 } = _ref; 15711 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 15712 let isTouched = false; 15713 let timeout = null; 15714 let dragTimeout = null; 15715 let dragStartPos; 15716 let dragSize; 15717 let trackSize; 15718 let divider; 15719 extendParams({ 15720 scrollbar: { 15721 el: null, 15722 dragSize: 'auto', 15723 hide: false, 15724 draggable: false, 15725 snapOnRelease: true, 15726 lockClass: 'swiper-scrollbar-lock', 15727 dragClass: 'swiper-scrollbar-drag', 15728 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 15729 horizontalClass: `swiper-scrollbar-horizontal`, 15730 verticalClass: `swiper-scrollbar-vertical` 15731 } 15732 }); 15733 swiper.scrollbar = { 15734 el: null, 15735 dragEl: null 15736 }; 15737 function setTranslate() { 15738 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 15739 const { 15740 scrollbar, 15741 rtlTranslate: rtl 15742 } = swiper; 15743 const { 15744 dragEl, 15745 el 15746 } = scrollbar; 15747 const params = swiper.params.scrollbar; 15748 const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; 15749 let newSize = dragSize; 15750 let newPos = (trackSize - dragSize) * progress; 15751 if (rtl) { 15752 newPos = -newPos; 15753 if (newPos > 0) { 15754 newSize = dragSize - newPos; 15755 newPos = 0; 15756 } else if (-newPos + dragSize > trackSize) { 15757 newSize = trackSize + newPos; 15758 } 15759 } else if (newPos < 0) { 15760 newSize = dragSize + newPos; 15761 newPos = 0; 15762 } else if (newPos + dragSize > trackSize) { 15763 newSize = trackSize - newPos; 15764 } 15765 if (swiper.isHorizontal()) { 15766 dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; 15767 dragEl.style.width = `${newSize}px`; 15768 } else { 15769 dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; 15770 dragEl.style.height = `${newSize}px`; 15771 } 15772 if (params.hide) { 15773 clearTimeout(timeout); 15774 el.style.opacity = 1; 15775 timeout = setTimeout(() => { 15776 el.style.opacity = 0; 15777 el.style.transitionDuration = '400ms'; 15778 }, 1000); 15779 } 15780 } 15781 function setTransition(duration) { 15782 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 15783 swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; 15784 } 15785 function updateSize() { 15786 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 15787 const { 15788 scrollbar 15789 } = swiper; 15790 const { 15791 dragEl, 15792 el 15793 } = scrollbar; 15794 dragEl.style.width = ''; 15795 dragEl.style.height = ''; 15796 trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; 15797 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 15798 if (swiper.params.scrollbar.dragSize === 'auto') { 15799 dragSize = trackSize * divider; 15800 } else { 15801 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 15802 } 15803 if (swiper.isHorizontal()) { 15804 dragEl.style.width = `${dragSize}px`; 15805 } else { 15806 dragEl.style.height = `${dragSize}px`; 15807 } 15808 if (divider >= 1) { 15809 el.style.display = 'none'; 15810 } else { 15811 el.style.display = ''; 15812 } 15813 if (swiper.params.scrollbar.hide) { 15814 el.style.opacity = 0; 15815 } 15816 if (swiper.params.watchOverflow && swiper.enabled) { 15817 scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); 15818 } 15819 } 15820 function getPointerPosition(e) { 15821 return swiper.isHorizontal() ? e.clientX : e.clientY; 15822 } 15823 function setDragPosition(e) { 15824 const { 15825 scrollbar, 15826 rtlTranslate: rtl 15827 } = swiper; 15828 const { 15829 el 15830 } = scrollbar; 15831 let positionRatio; 15832 positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 15833 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 15834 if (rtl) { 15835 positionRatio = 1 - positionRatio; 15836 } 15837 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 15838 swiper.updateProgress(position); 15839 swiper.setTranslate(position); 15840 swiper.updateActiveIndex(); 15841 swiper.updateSlidesClasses(); 15842 } 15843 function onDragStart(e) { 15844 const params = swiper.params.scrollbar; 15845 const { 15846 scrollbar, 15847 wrapperEl 15848 } = swiper; 15849 const { 15850 el, 15851 dragEl 15852 } = scrollbar; 15853 isTouched = true; 15854 dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 15855 e.preventDefault(); 15856 e.stopPropagation(); 15857 wrapperEl.style.transitionDuration = '100ms'; 15858 dragEl.style.transitionDuration = '100ms'; 15859 setDragPosition(e); 15860 clearTimeout(dragTimeout); 15861 el.style.transitionDuration = '0ms'; 15862 if (params.hide) { 15863 el.style.opacity = 1; 15864 } 15865 if (swiper.params.cssMode) { 15866 swiper.wrapperEl.style['scroll-snap-type'] = 'none'; 15867 } 15868 emit('scrollbarDragStart', e); 15869 } 15870 function onDragMove(e) { 15871 const { 15872 scrollbar, 15873 wrapperEl 15874 } = swiper; 15875 const { 15876 el, 15877 dragEl 15878 } = scrollbar; 15879 if (!isTouched) return; 15880 if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; 15881 setDragPosition(e); 15882 wrapperEl.style.transitionDuration = '0ms'; 15883 el.style.transitionDuration = '0ms'; 15884 dragEl.style.transitionDuration = '0ms'; 15885 emit('scrollbarDragMove', e); 15886 } 15887 function onDragEnd(e) { 15888 const params = swiper.params.scrollbar; 15889 const { 15890 scrollbar, 15891 wrapperEl 15892 } = swiper; 15893 const { 15894 el 15895 } = scrollbar; 15896 if (!isTouched) return; 15897 isTouched = false; 15898 if (swiper.params.cssMode) { 15899 swiper.wrapperEl.style['scroll-snap-type'] = ''; 15900 wrapperEl.style.transitionDuration = ''; 15901 } 15902 if (params.hide) { 15903 clearTimeout(dragTimeout); 15904 dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 15905 el.style.opacity = 0; 15906 el.style.transitionDuration = '400ms'; 15907 }, 1000); 15908 } 15909 emit('scrollbarDragEnd', e); 15910 if (params.snapOnRelease) { 15911 swiper.slideToClosest(); 15912 } 15913 } 15914 function events(method) { 15915 const { 15916 scrollbar, 15917 params 15918 } = swiper; 15919 const el = scrollbar.el; 15920 if (!el) return; 15921 const target = el; 15922 const activeListener = params.passiveListeners ? { 15923 passive: false, 15924 capture: false 15925 } : false; 15926 const passiveListener = params.passiveListeners ? { 15927 passive: true, 15928 capture: false 15929 } : false; 15930 if (!target) return; 15931 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 15932 target[eventMethod]('pointerdown', onDragStart, activeListener); 15933 document[eventMethod]('pointermove', onDragMove, activeListener); 15934 document[eventMethod]('pointerup', onDragEnd, passiveListener); 15935 } 15936 function enableDraggable() { 15937 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 15938 events('on'); 15939 } 15940 function disableDraggable() { 15941 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 15942 events('off'); 15943 } 15944 function init() { 15945 const { 15946 scrollbar, 15947 el: swiperEl 15948 } = swiper; 15949 swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 15950 el: 'swiper-scrollbar' 15951 }); 15952 const params = swiper.params.scrollbar; 15953 if (!params.el) return; 15954 let el; 15955 if (typeof params.el === 'string' && swiper.isElement) { 15956 el = swiper.el.querySelector(params.el); 15957 } 15958 if (!el && typeof params.el === 'string') { 15959 el = document.querySelectorAll(params.el); 15960 if (!el.length) return; 15961 } else if (!el) { 15962 el = params.el; 15963 } 15964 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { 15965 el = swiperEl.querySelector(params.el); 15966 } 15967 if (el.length > 0) el = el[0]; 15968 el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 15969 let dragEl; 15970 if (el) { 15971 dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass)); 15972 if (!dragEl) { 15973 dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass); 15974 el.append(dragEl); 15975 } 15976 } 15977 Object.assign(scrollbar, { 15978 el, 15979 dragEl 15980 }); 15981 if (params.draggable) { 15982 enableDraggable(); 15983 } 15984 if (el) { 15985 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 15986 } 15987 } 15988 function destroy() { 15989 const params = swiper.params.scrollbar; 15990 const el = swiper.scrollbar.el; 15991 if (el) { 15992 el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); 15993 } 15994 disableDraggable(); 15995 } 15996 on('changeDirection', () => { 15997 if (!swiper.scrollbar || !swiper.scrollbar.el) return; 15998 const params = swiper.params.scrollbar; 15999 let { 16000 el 16001 } = swiper.scrollbar; 16002 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 16003 el.forEach(subEl => { 16004 subEl.classList.remove(params.horizontalClass, params.verticalClass); 16005 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 16006 }); 16007 }); 16008 on('init', () => { 16009 if (swiper.params.scrollbar.enabled === false) { 16010 // eslint-disable-next-line 16011 disable(); 16012 } else { 16013 init(); 16014 updateSize(); 16015 setTranslate(); 16016 } 16017 }); 16018 on('update resize observerUpdate lock unlock changeDirection', () => { 16019 updateSize(); 16020 }); 16021 on('setTranslate', () => { 16022 setTranslate(); 16023 }); 16024 on('setTransition', (_s, duration) => { 16025 setTransition(duration); 16026 }); 16027 on('enable disable', () => { 16028 const { 16029 el 16030 } = swiper.scrollbar; 16031 if (el) { 16032 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 16033 } 16034 }); 16035 on('destroy', () => { 16036 destroy(); 16037 }); 16038 const enable = () => { 16039 swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 16040 if (swiper.scrollbar.el) { 16041 swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 16042 } 16043 init(); 16044 updateSize(); 16045 setTranslate(); 16046 }; 16047 const disable = () => { 16048 swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 16049 if (swiper.scrollbar.el) { 16050 swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 16051 } 16052 destroy(); 16053 }; 16054 Object.assign(swiper.scrollbar, { 16055 enable, 16056 disable, 16057 updateSize, 16058 setTranslate, 16059 init, 16060 destroy 16061 }); 16062} 16063 16064 16065 16066 16067/***/ }), 16068
vendor: 8,102 bytes, lines 16069-16277
16069/***/ "./node_modules/swiper/modules/thumbs.mjs": 16070/*!************************************************!*\ 16071 !*** ./node_modules/swiper/modules/thumbs.mjs ***! 16072 \************************************************/ 16073/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 16074 16075__webpack_require__.r(__webpack_exports__); 16076/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16077/* harmony export */ "default": function() { return /* binding */ Thumb; } 16078/* harmony export */ }); 16079/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 16080/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 16081 16082 16083 16084function Thumb(_ref) { 16085 let { 16086 swiper, 16087 extendParams, 16088 on 16089 } = _ref; 16090 extendParams({ 16091 thumbs: { 16092 swiper: null, 16093 multipleActiveThumbs: true, 16094 autoScrollOffset: 0, 16095 slideThumbActiveClass: 'swiper-slide-thumb-active', 16096 thumbsContainerClass: 'swiper-thumbs' 16097 } 16098 }); 16099 let initialized = false; 16100 let swiperCreated = false; 16101 swiper.thumbs = { 16102 swiper: null 16103 }; 16104 function onThumbClick() { 16105 const thumbsSwiper = swiper.thumbs.swiper; 16106 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 16107 const clickedIndex = thumbsSwiper.clickedIndex; 16108 const clickedSlide = thumbsSwiper.clickedSlide; 16109 if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; 16110 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 16111 let slideToIndex; 16112 if (thumbsSwiper.params.loop) { 16113 slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 16114 } else { 16115 slideToIndex = clickedIndex; 16116 } 16117 if (swiper.params.loop) { 16118 swiper.slideToLoop(slideToIndex); 16119 } else { 16120 swiper.slideTo(slideToIndex); 16121 } 16122 } 16123 function init() { 16124 const { 16125 thumbs: thumbsParams 16126 } = swiper.params; 16127 if (initialized) return false; 16128 initialized = true; 16129 const SwiperClass = swiper.constructor; 16130 if (thumbsParams.swiper instanceof SwiperClass) { 16131 swiper.thumbs.swiper = thumbsParams.swiper; 16132 Object.assign(swiper.thumbs.swiper.originalParams, { 16133 watchSlidesProgress: true, 16134 slideToClickedSlide: false 16135 }); 16136 Object.assign(swiper.thumbs.swiper.params, { 16137 watchSlidesProgress: true, 16138 slideToClickedSlide: false 16139 }); 16140 swiper.thumbs.swiper.update(); 16141 } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.l)(thumbsParams.swiper)) { 16142 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 16143 Object.assign(thumbsSwiperParams, { 16144 watchSlidesProgress: true, 16145 slideToClickedSlide: false 16146 }); 16147 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 16148 swiperCreated = true; 16149 } 16150 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); 16151 swiper.thumbs.swiper.on('tap', onThumbClick); 16152 return true; 16153 } 16154 function update(initial) { 16155 const thumbsSwiper = swiper.thumbs.swiper; 16156 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 16157 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; 16158 16159 // Activate thumbs 16160 let thumbsToActivate = 1; 16161 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 16162 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 16163 thumbsToActivate = swiper.params.slidesPerView; 16164 } 16165 if (!swiper.params.thumbs.multipleActiveThumbs) { 16166 thumbsToActivate = 1; 16167 } 16168 thumbsToActivate = Math.floor(thumbsToActivate); 16169 thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); 16170 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 16171 for (let i = 0; i < thumbsToActivate; i += 1) { 16172 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { 16173 slideEl.classList.add(thumbActiveClass); 16174 }); 16175 } 16176 } else { 16177 for (let i = 0; i < thumbsToActivate; i += 1) { 16178 if (thumbsSwiper.slides[swiper.realIndex + i]) { 16179 thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); 16180 } 16181 } 16182 } 16183 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 16184 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 16185 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 16186 const currentThumbsIndex = thumbsSwiper.activeIndex; 16187 let newThumbsIndex; 16188 let direction; 16189 if (thumbsSwiper.params.loop) { 16190 const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; 16191 newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); 16192 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 16193 } else { 16194 newThumbsIndex = swiper.realIndex; 16195 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 16196 } 16197 if (useOffset) { 16198 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 16199 } 16200 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 16201 if (thumbsSwiper.params.centeredSlides) { 16202 if (newThumbsIndex > currentThumbsIndex) { 16203 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 16204 } else { 16205 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 16206 } 16207 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; 16208 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 16209 } 16210 } 16211 } 16212 on('beforeInit', () => { 16213 const { 16214 thumbs 16215 } = swiper.params; 16216 if (!thumbs || !thumbs.swiper) return; 16217 if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { 16218 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 16219 const getThumbsElementAndInit = () => { 16220 const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; 16221 if (thumbsElement && thumbsElement.swiper) { 16222 thumbs.swiper = thumbsElement.swiper; 16223 init(); 16224 update(true); 16225 } else if (thumbsElement) { 16226 const eventName = `${swiper.params.eventsPrefix}init`; 16227 const onThumbsSwiper = e => { 16228 thumbs.swiper = e.detail[0]; 16229 thumbsElement.removeEventListener(eventName, onThumbsSwiper); 16230 init(); 16231 update(true); 16232 thumbs.swiper.update(); 16233 swiper.update(); 16234 }; 16235 thumbsElement.addEventListener(eventName, onThumbsSwiper); 16236 } 16237 return thumbsElement; 16238 }; 16239 const watchForThumbsToAppear = () => { 16240 if (swiper.destroyed) return; 16241 const thumbsElement = getThumbsElementAndInit(); 16242 if (!thumbsElement) { 16243 requestAnimationFrame(watchForThumbsToAppear); 16244 } 16245 }; 16246 requestAnimationFrame(watchForThumbsToAppear); 16247 } else { 16248 init(); 16249 update(true); 16250 } 16251 }); 16252 on('slideChange update resize observerUpdate', () => { 16253 update(); 16254 }); 16255 on('setTransition', (_s, duration) => { 16256 const thumbsSwiper = swiper.thumbs.swiper; 16257 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 16258 thumbsSwiper.setTransition(duration); 16259 }); 16260 on('beforeDestroy', () => { 16261 const thumbsSwiper = swiper.thumbs.swiper; 16262 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 16263 if (swiperCreated) { 16264 thumbsSwiper.destroy(); 16265 } 16266 }); 16267 Object.assign(swiper.thumbs, { 16268 init, 16269 update 16270 }); 16271} 16272 16273 16274 16275 16276/***/ }), 16277
vendor: 12,409 bytes, lines 16278-16642
16278/***/ "./node_modules/swiper/modules/virtual.mjs": 16279/*!*************************************************!*\ 16280 !*** ./node_modules/swiper/modules/virtual.mjs ***! 16281 \*************************************************/ 16282/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 16283 16284__webpack_require__.r(__webpack_exports__); 16285/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16286/* harmony export */ "default": function() { return /* binding */ Virtual; } 16287/* harmony export */ }); 16288/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 16289/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 16290 16291 16292 16293function Virtual(_ref) { 16294 let { 16295 swiper, 16296 extendParams, 16297 on, 16298 emit 16299 } = _ref; 16300 extendParams({ 16301 virtual: { 16302 enabled: false, 16303 slides: [], 16304 cache: true, 16305 renderSlide: null, 16306 renderExternal: null, 16307 renderExternalUpdate: true, 16308 addSlidesBefore: 0, 16309 addSlidesAfter: 0 16310 } 16311 }); 16312 let cssModeTimeout; 16313 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 16314 swiper.virtual = { 16315 cache: {}, 16316 from: undefined, 16317 to: undefined, 16318 slides: [], 16319 offset: 0, 16320 slidesGrid: [] 16321 }; 16322 const tempDOM = document.createElement('div'); 16323 function renderSlide(slide, index) { 16324 const params = swiper.params.virtual; 16325 if (params.cache && swiper.virtual.cache[index]) { 16326 return swiper.virtual.cache[index]; 16327 } 16328 // eslint-disable-next-line 16329 let slideEl; 16330 if (params.renderSlide) { 16331 slideEl = params.renderSlide.call(swiper, slide, index); 16332 if (typeof slideEl === 'string') { 16333 tempDOM.innerHTML = slideEl; 16334 slideEl = tempDOM.children[0]; 16335 } 16336 } else if (swiper.isElement) { 16337 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide'); 16338 } else { 16339 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass); 16340 } 16341 slideEl.setAttribute('data-swiper-slide-index', index); 16342 if (!params.renderSlide) { 16343 slideEl.innerHTML = slide; 16344 } 16345 if (params.cache) { 16346 swiper.virtual.cache[index] = slideEl; 16347 } 16348 return slideEl; 16349 } 16350 function update(force, beforeInit) { 16351 const { 16352 slidesPerView, 16353 slidesPerGroup, 16354 centeredSlides, 16355 loop: isLoop, 16356 initialSlide 16357 } = swiper.params; 16358 if (beforeInit && !isLoop && initialSlide > 0) { 16359 return; 16360 } 16361 const { 16362 addSlidesBefore, 16363 addSlidesAfter 16364 } = swiper.params.virtual; 16365 const { 16366 from: previousFrom, 16367 to: previousTo, 16368 slides, 16369 slidesGrid: previousSlidesGrid, 16370 offset: previousOffset 16371 } = swiper.virtual; 16372 if (!swiper.params.cssMode) { 16373 swiper.updateActiveIndex(); 16374 } 16375 const activeIndex = swiper.activeIndex || 0; 16376 let offsetProp; 16377 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 16378 let slidesAfter; 16379 let slidesBefore; 16380 if (centeredSlides) { 16381 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 16382 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 16383 } else { 16384 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 16385 slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; 16386 } 16387 let from = activeIndex - slidesBefore; 16388 let to = activeIndex + slidesAfter; 16389 if (!isLoop) { 16390 from = Math.max(from, 0); 16391 to = Math.min(to, slides.length - 1); 16392 } 16393 let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 16394 if (isLoop && activeIndex >= slidesBefore) { 16395 from -= slidesBefore; 16396 if (!centeredSlides) offset += swiper.slidesGrid[0]; 16397 } else if (isLoop && activeIndex < slidesBefore) { 16398 from = -slidesBefore; 16399 if (centeredSlides) offset += swiper.slidesGrid[0]; 16400 } 16401 Object.assign(swiper.virtual, { 16402 from, 16403 to, 16404 offset, 16405 slidesGrid: swiper.slidesGrid, 16406 slidesBefore, 16407 slidesAfter 16408 }); 16409 function onRendered() { 16410 swiper.updateSlides(); 16411 swiper.updateProgress(); 16412 swiper.updateSlidesClasses(); 16413 emit('virtualUpdate'); 16414 } 16415 if (previousFrom === from && previousTo === to && !force) { 16416 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 16417 swiper.slides.forEach(slideEl => { 16418 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 16419 }); 16420 } 16421 swiper.updateProgress(); 16422 emit('virtualUpdate'); 16423 return; 16424 } 16425 if (swiper.params.virtual.renderExternal) { 16426 swiper.params.virtual.renderExternal.call(swiper, { 16427 offset, 16428 from, 16429 to, 16430 slides: function getSlides() { 16431 const slidesToRender = []; 16432 for (let i = from; i <= to; i += 1) { 16433 slidesToRender.push(slides[i]); 16434 } 16435 return slidesToRender; 16436 }() 16437 }); 16438 if (swiper.params.virtual.renderExternalUpdate) { 16439 onRendered(); 16440 } else { 16441 emit('virtualUpdate'); 16442 } 16443 return; 16444 } 16445 const prependIndexes = []; 16446 const appendIndexes = []; 16447 const getSlideIndex = index => { 16448 let slideIndex = index; 16449 if (index < 0) { 16450 slideIndex = slides.length + index; 16451 } else if (slideIndex >= slides.length) { 16452 // eslint-disable-next-line 16453 slideIndex = slideIndex - slides.length; 16454 } 16455 return slideIndex; 16456 }; 16457 if (force) { 16458 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { 16459 slideEl.remove(); 16460 }); 16461 } else { 16462 for (let i = previousFrom; i <= previousTo; i += 1) { 16463 if (i < from || i > to) { 16464 const slideIndex = getSlideIndex(i); 16465 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { 16466 slideEl.remove(); 16467 }); 16468 } 16469 } 16470 } 16471 const loopFrom = isLoop ? -slides.length : 0; 16472 const loopTo = isLoop ? slides.length * 2 : slides.length; 16473 for (let i = loopFrom; i < loopTo; i += 1) { 16474 if (i >= from && i <= to) { 16475 const slideIndex = getSlideIndex(i); 16476 if (typeof previousTo === 'undefined' || force) { 16477 appendIndexes.push(slideIndex); 16478 } else { 16479 if (i > previousTo) appendIndexes.push(slideIndex); 16480 if (i < previousFrom) prependIndexes.push(slideIndex); 16481 } 16482 } 16483 } 16484 appendIndexes.forEach(index => { 16485 swiper.slidesEl.append(renderSlide(slides[index], index)); 16486 }); 16487 if (isLoop) { 16488 for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { 16489 const index = prependIndexes[i]; 16490 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 16491 } 16492 } else { 16493 prependIndexes.sort((a, b) => b - a); 16494 prependIndexes.forEach(index => { 16495 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 16496 }); 16497 } 16498 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { 16499 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 16500 }); 16501 onRendered(); 16502 } 16503 function appendSlide(slides) { 16504 if (typeof slides === 'object' && 'length' in slides) { 16505 for (let i = 0; i < slides.length; i += 1) { 16506 if (slides[i]) swiper.virtual.slides.push(slides[i]); 16507 } 16508 } else { 16509 swiper.virtual.slides.push(slides); 16510 } 16511 update(true); 16512 } 16513 function prependSlide(slides) { 16514 const activeIndex = swiper.activeIndex; 16515 let newActiveIndex = activeIndex + 1; 16516 let numberOfNewSlides = 1; 16517 if (Array.isArray(slides)) { 16518 for (let i = 0; i < slides.length; i += 1) { 16519 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 16520 } 16521 newActiveIndex = activeIndex + slides.length; 16522 numberOfNewSlides = slides.length; 16523 } else { 16524 swiper.virtual.slides.unshift(slides); 16525 } 16526 if (swiper.params.virtual.cache) { 16527 const cache = swiper.virtual.cache; 16528 const newCache = {}; 16529 Object.keys(cache).forEach(cachedIndex => { 16530 const cachedEl = cache[cachedIndex]; 16531 const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); 16532 if (cachedElIndex) { 16533 cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 16534 } 16535 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; 16536 }); 16537 swiper.virtual.cache = newCache; 16538 } 16539 update(true); 16540 swiper.slideTo(newActiveIndex, 0); 16541 } 16542 function removeSlide(slidesIndexes) { 16543 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 16544 let activeIndex = swiper.activeIndex; 16545 if (Array.isArray(slidesIndexes)) { 16546 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 16547 if (swiper.params.virtual.cache) { 16548 delete swiper.virtual.cache[slidesIndexes[i]]; 16549 // shift cache indexes 16550 Object.keys(swiper.virtual.cache).forEach(key => { 16551 if (key > slidesIndexes) { 16552 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 16553 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 16554 delete swiper.virtual.cache[key]; 16555 } 16556 }); 16557 } 16558 swiper.virtual.slides.splice(slidesIndexes[i], 1); 16559 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 16560 activeIndex = Math.max(activeIndex, 0); 16561 } 16562 } else { 16563 if (swiper.params.virtual.cache) { 16564 delete swiper.virtual.cache[slidesIndexes]; 16565 // shift cache indexes 16566 Object.keys(swiper.virtual.cache).forEach(key => { 16567 if (key > slidesIndexes) { 16568 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 16569 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 16570 delete swiper.virtual.cache[key]; 16571 } 16572 }); 16573 } 16574 swiper.virtual.slides.splice(slidesIndexes, 1); 16575 if (slidesIndexes < activeIndex) activeIndex -= 1; 16576 activeIndex = Math.max(activeIndex, 0); 16577 } 16578 update(true); 16579 swiper.slideTo(activeIndex, 0); 16580 } 16581 function removeAllSlides() { 16582 swiper.virtual.slides = []; 16583 if (swiper.params.virtual.cache) { 16584 swiper.virtual.cache = {}; 16585 } 16586 update(true); 16587 swiper.slideTo(0, 0); 16588 } 16589 on('beforeInit', () => { 16590 if (!swiper.params.virtual.enabled) return; 16591 let domSlidesAssigned; 16592 if (typeof swiper.passedParams.virtual.slides === 'undefined') { 16593 const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); 16594 if (slides && slides.length) { 16595 swiper.virtual.slides = [...slides]; 16596 domSlidesAssigned = true; 16597 slides.forEach((slideEl, slideIndex) => { 16598 slideEl.setAttribute('data-swiper-slide-index', slideIndex); 16599 swiper.virtual.cache[slideIndex] = slideEl; 16600 slideEl.remove(); 16601 }); 16602 } 16603 } 16604 if (!domSlidesAssigned) { 16605 swiper.virtual.slides = swiper.params.virtual.slides; 16606 } 16607 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 16608 swiper.params.watchSlidesProgress = true; 16609 swiper.originalParams.watchSlidesProgress = true; 16610 update(false, true); 16611 }); 16612 on('setTranslate', () => { 16613 if (!swiper.params.virtual.enabled) return; 16614 if (swiper.params.cssMode && !swiper._immediateVirtual) { 16615 clearTimeout(cssModeTimeout); 16616 cssModeTimeout = setTimeout(() => { 16617 update(); 16618 }, 100); 16619 } else { 16620 update(); 16621 } 16622 }); 16623 on('init update resize', () => { 16624 if (!swiper.params.virtual.enabled) return; 16625 if (swiper.params.cssMode) { 16626 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 16627 } 16628 }); 16629 Object.assign(swiper.virtual, { 16630 appendSlide, 16631 prependSlide, 16632 removeSlide, 16633 removeAllSlides, 16634 update 16635 }); 16636} 16637 16638 16639 16640 16641/***/ }), 16642
vendor: 23,379 bytes, lines 16643-17279
16643/***/ "./node_modules/swiper/modules/zoom.mjs": 16644/*!**********************************************!*\ 16645 !*** ./node_modules/swiper/modules/zoom.mjs ***! 16646 \**********************************************/ 16647/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 16648 16649__webpack_require__.r(__webpack_exports__); 16650/* harmony export */ __webpack_require__.d(__webpack_exports__, { 16651/* harmony export */ "default": function() { return /* binding */ Zoom; } 16652/* harmony export */ }); 16653/* harmony import */ var _shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 16654/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 16655 16656 16657 16658function Zoom(_ref) { 16659 let { 16660 swiper, 16661 extendParams, 16662 on, 16663 emit 16664 } = _ref; 16665 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 16666 extendParams({ 16667 zoom: { 16668 enabled: false, 16669 limitToOriginalSize: false, 16670 maxRatio: 3, 16671 minRatio: 1, 16672 toggle: true, 16673 containerClass: 'swiper-zoom-container', 16674 zoomedSlideClass: 'swiper-slide-zoomed' 16675 } 16676 }); 16677 swiper.zoom = { 16678 enabled: false 16679 }; 16680 let currentScale = 1; 16681 let isScaling = false; 16682 let fakeGestureTouched; 16683 let fakeGestureMoved; 16684 const evCache = []; 16685 const gesture = { 16686 originX: 0, 16687 originY: 0, 16688 slideEl: undefined, 16689 slideWidth: undefined, 16690 slideHeight: undefined, 16691 imageEl: undefined, 16692 imageWrapEl: undefined, 16693 maxRatio: 3 16694 }; 16695 const image = { 16696 isTouched: undefined, 16697 isMoved: undefined, 16698 currentX: undefined, 16699 currentY: undefined, 16700 minX: undefined, 16701 minY: undefined, 16702 maxX: undefined, 16703 maxY: undefined, 16704 width: undefined, 16705 height: undefined, 16706 startX: undefined, 16707 startY: undefined, 16708 touchesStart: {}, 16709 touchesCurrent: {} 16710 }; 16711 const velocity = { 16712 x: undefined, 16713 y: undefined, 16714 prevPositionX: undefined, 16715 prevPositionY: undefined, 16716 prevTime: undefined 16717 }; 16718 let scale = 1; 16719 Object.defineProperty(swiper.zoom, 'scale', { 16720 get() { 16721 return scale; 16722 }, 16723 set(value) { 16724 if (scale !== value) { 16725 const imageEl = gesture.imageEl; 16726 const slideEl = gesture.slideEl; 16727 emit('zoomChange', value, imageEl, slideEl); 16728 } 16729 scale = value; 16730 } 16731 }); 16732 function getDistanceBetweenTouches() { 16733 if (evCache.length < 2) return 1; 16734 const x1 = evCache[0].pageX; 16735 const y1 = evCache[0].pageY; 16736 const x2 = evCache[1].pageX; 16737 const y2 = evCache[1].pageY; 16738 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 16739 return distance; 16740 } 16741 function getMaxRatio() { 16742 const params = swiper.params.zoom; 16743 const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; 16744 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 16745 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 16746 return Math.min(imageMaxRatio, maxRatio); 16747 } 16748 return maxRatio; 16749 } 16750 function getScaleOrigin() { 16751 if (evCache.length < 2) return { 16752 x: null, 16753 y: null 16754 }; 16755 const box = gesture.imageEl.getBoundingClientRect(); 16756 return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; 16757 } 16758 function getSlideSelector() { 16759 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 16760 } 16761 function eventWithinSlide(e) { 16762 const slideSelector = getSlideSelector(); 16763 if (e.target.matches(slideSelector)) return true; 16764 if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; 16765 return false; 16766 } 16767 function eventWithinZoomContainer(e) { 16768 const selector = `.${swiper.params.zoom.containerClass}`; 16769 if (e.target.matches(selector)) return true; 16770 if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; 16771 return false; 16772 } 16773 16774 // Events 16775 function onGestureStart(e) { 16776 if (e.pointerType === 'mouse') { 16777 evCache.splice(0, evCache.length); 16778 } 16779 if (!eventWithinSlide(e)) return; 16780 const params = swiper.params.zoom; 16781 fakeGestureTouched = false; 16782 fakeGestureMoved = false; 16783 evCache.push(e); 16784 if (evCache.length < 2) { 16785 return; 16786 } 16787 fakeGestureTouched = true; 16788 gesture.scaleStart = getDistanceBetweenTouches(); 16789 if (!gesture.slideEl) { 16790 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 16791 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 16792 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 16793 if (imageEl) { 16794 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 16795 } 16796 gesture.imageEl = imageEl; 16797 if (imageEl) { 16798 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 16799 } else { 16800 gesture.imageWrapEl = undefined; 16801 } 16802 if (!gesture.imageWrapEl) { 16803 gesture.imageEl = undefined; 16804 return; 16805 } 16806 gesture.maxRatio = getMaxRatio(); 16807 } 16808 if (gesture.imageEl) { 16809 const [originX, originY] = getScaleOrigin(); 16810 gesture.originX = originX; 16811 gesture.originY = originY; 16812 gesture.imageEl.style.transitionDuration = '0ms'; 16813 } 16814 isScaling = true; 16815 } 16816 function onGestureChange(e) { 16817 if (!eventWithinSlide(e)) return; 16818 const params = swiper.params.zoom; 16819 const zoom = swiper.zoom; 16820 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 16821 if (pointerIndex >= 0) evCache[pointerIndex] = e; 16822 if (evCache.length < 2) { 16823 return; 16824 } 16825 fakeGestureMoved = true; 16826 gesture.scaleMove = getDistanceBetweenTouches(); 16827 if (!gesture.imageEl) { 16828 return; 16829 } 16830 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 16831 if (zoom.scale > gesture.maxRatio) { 16832 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 16833 } 16834 if (zoom.scale < params.minRatio) { 16835 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 16836 } 16837 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 16838 } 16839 function onGestureEnd(e) { 16840 if (!eventWithinSlide(e)) return; 16841 if (e.pointerType === 'mouse' && e.type === 'pointerout') return; 16842 const params = swiper.params.zoom; 16843 const zoom = swiper.zoom; 16844 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 16845 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 16846 if (!fakeGestureTouched || !fakeGestureMoved) { 16847 return; 16848 } 16849 fakeGestureTouched = false; 16850 fakeGestureMoved = false; 16851 if (!gesture.imageEl) return; 16852 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 16853 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 16854 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 16855 currentScale = zoom.scale; 16856 isScaling = false; 16857 if (zoom.scale > 1 && gesture.slideEl) { 16858 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 16859 } else if (zoom.scale <= 1 && gesture.slideEl) { 16860 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 16861 } 16862 if (zoom.scale === 1) { 16863 gesture.originX = 0; 16864 gesture.originY = 0; 16865 gesture.slideEl = undefined; 16866 } 16867 } 16868 let allowTouchMoveTimeout; 16869 function allowTouchMove() { 16870 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 16871 } 16872 function preventTouchMove() { 16873 clearTimeout(allowTouchMoveTimeout); 16874 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 16875 allowTouchMoveTimeout = setTimeout(() => { 16876 allowTouchMove(); 16877 }); 16878 } 16879 function onTouchStart(e) { 16880 const device = swiper.device; 16881 if (!gesture.imageEl) return; 16882 if (image.isTouched) return; 16883 if (device.android && e.cancelable) e.preventDefault(); 16884 image.isTouched = true; 16885 const event = evCache.length > 0 ? evCache[0] : e; 16886 image.touchesStart.x = event.pageX; 16887 image.touchesStart.y = event.pageY; 16888 } 16889 function onTouchMove(e) { 16890 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 16891 return; 16892 } 16893 const zoom = swiper.zoom; 16894 if (!gesture.imageEl) { 16895 return; 16896 } 16897 if (!image.isTouched || !gesture.slideEl) { 16898 return; 16899 } 16900 if (!image.isMoved) { 16901 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 16902 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 16903 image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'x') || 0; 16904 image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'y') || 0; 16905 gesture.slideWidth = gesture.slideEl.offsetWidth; 16906 gesture.slideHeight = gesture.slideEl.offsetHeight; 16907 gesture.imageWrapEl.style.transitionDuration = '0ms'; 16908 } 16909 // Define if we need image drag 16910 const scaledWidth = image.width * zoom.scale; 16911 const scaledHeight = image.height * zoom.scale; 16912 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 16913 image.maxX = -image.minX; 16914 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 16915 image.maxY = -image.minY; 16916 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 16917 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 16918 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 16919 if (touchesDiff > 5) { 16920 swiper.allowClick = false; 16921 } 16922 if (!image.isMoved && !isScaling) { 16923 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)) { 16924 image.isTouched = false; 16925 allowTouchMove(); 16926 return; 16927 } 16928 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)) { 16929 image.isTouched = false; 16930 allowTouchMove(); 16931 return; 16932 } 16933 } 16934 if (e.cancelable) { 16935 e.preventDefault(); 16936 } 16937 e.stopPropagation(); 16938 preventTouchMove(); 16939 image.isMoved = true; 16940 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 16941 const { 16942 originX, 16943 originY 16944 } = gesture; 16945 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 16946 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 16947 if (image.currentX < image.minX) { 16948 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 16949 } 16950 if (image.currentX > image.maxX) { 16951 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 16952 } 16953 if (image.currentY < image.minY) { 16954 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 16955 } 16956 if (image.currentY > image.maxY) { 16957 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 16958 } 16959 16960 // Velocity 16961 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 16962 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 16963 if (!velocity.prevTime) velocity.prevTime = Date.now(); 16964 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 16965 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 16966 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 16967 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 16968 velocity.prevPositionX = image.touchesCurrent.x; 16969 velocity.prevPositionY = image.touchesCurrent.y; 16970 velocity.prevTime = Date.now(); 16971 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 16972 } 16973 function onTouchEnd() { 16974 const zoom = swiper.zoom; 16975 if (!gesture.imageEl) return; 16976 if (!image.isTouched || !image.isMoved) { 16977 image.isTouched = false; 16978 image.isMoved = false; 16979 return; 16980 } 16981 image.isTouched = false; 16982 image.isMoved = false; 16983 let momentumDurationX = 300; 16984 let momentumDurationY = 300; 16985 const momentumDistanceX = velocity.x * momentumDurationX; 16986 const newPositionX = image.currentX + momentumDistanceX; 16987 const momentumDistanceY = velocity.y * momentumDurationY; 16988 const newPositionY = image.currentY + momentumDistanceY; 16989 16990 // Fix duration 16991 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 16992 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 16993 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 16994 image.currentX = newPositionX; 16995 image.currentY = newPositionY; 16996 // Define if we need image drag 16997 const scaledWidth = image.width * zoom.scale; 16998 const scaledHeight = image.height * zoom.scale; 16999 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 17000 image.maxX = -image.minX; 17001 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 17002 image.maxY = -image.minY; 17003 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 17004 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 17005 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 17006 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 17007 } 17008 function onTransitionEnd() { 17009 const zoom = swiper.zoom; 17010 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 17011 if (gesture.imageEl) { 17012 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 17013 } 17014 if (gesture.imageWrapEl) { 17015 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 17016 } 17017 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 17018 zoom.scale = 1; 17019 currentScale = 1; 17020 gesture.slideEl = undefined; 17021 gesture.imageEl = undefined; 17022 gesture.imageWrapEl = undefined; 17023 gesture.originX = 0; 17024 gesture.originY = 0; 17025 } 17026 } 17027 function zoomIn(e) { 17028 const zoom = swiper.zoom; 17029 const params = swiper.params.zoom; 17030 if (!gesture.slideEl) { 17031 if (e && e.target) { 17032 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 17033 } 17034 if (!gesture.slideEl) { 17035 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 17036 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 17037 } else { 17038 gesture.slideEl = swiper.slides[swiper.activeIndex]; 17039 } 17040 } 17041 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 17042 if (imageEl) { 17043 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 17044 } 17045 gesture.imageEl = imageEl; 17046 if (imageEl) { 17047 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 17048 } else { 17049 gesture.imageWrapEl = undefined; 17050 } 17051 } 17052 if (!gesture.imageEl || !gesture.imageWrapEl) return; 17053 if (swiper.params.cssMode) { 17054 swiper.wrapperEl.style.overflow = 'hidden'; 17055 swiper.wrapperEl.style.touchAction = 'none'; 17056 } 17057 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 17058 let touchX; 17059 let touchY; 17060 let offsetX; 17061 let offsetY; 17062 let diffX; 17063 let diffY; 17064 let translateX; 17065 let translateY; 17066 let imageWidth; 17067 let imageHeight; 17068 let scaledWidth; 17069 let scaledHeight; 17070 let translateMinX; 17071 let translateMinY; 17072 let translateMaxX; 17073 let translateMaxY; 17074 let slideWidth; 17075 let slideHeight; 17076 if (typeof image.touchesStart.x === 'undefined' && e) { 17077 touchX = e.pageX; 17078 touchY = e.pageY; 17079 } else { 17080 touchX = image.touchesStart.x; 17081 touchY = image.touchesStart.y; 17082 } 17083 const forceZoomRatio = typeof e === 'number' ? e : null; 17084 if (currentScale === 1 && forceZoomRatio) { 17085 touchX = undefined; 17086 touchY = undefined; 17087 } 17088 const maxRatio = getMaxRatio(); 17089 zoom.scale = forceZoomRatio || maxRatio; 17090 currentScale = forceZoomRatio || maxRatio; 17091 if (e && !(currentScale === 1 && forceZoomRatio)) { 17092 slideWidth = gesture.slideEl.offsetWidth; 17093 slideHeight = gesture.slideEl.offsetHeight; 17094 offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).left + window.scrollX; 17095 offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).top + window.scrollY; 17096 diffX = offsetX + slideWidth / 2 - touchX; 17097 diffY = offsetY + slideHeight / 2 - touchY; 17098 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 17099 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 17100 scaledWidth = imageWidth * zoom.scale; 17101 scaledHeight = imageHeight * zoom.scale; 17102 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 17103 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 17104 translateMaxX = -translateMinX; 17105 translateMaxY = -translateMinY; 17106 translateX = diffX * zoom.scale; 17107 translateY = diffY * zoom.scale; 17108 if (translateX < translateMinX) { 17109 translateX = translateMinX; 17110 } 17111 if (translateX > translateMaxX) { 17112 translateX = translateMaxX; 17113 } 17114 if (translateY < translateMinY) { 17115 translateY = translateMinY; 17116 } 17117 if (translateY > translateMaxY) { 17118 translateY = translateMaxY; 17119 } 17120 } else { 17121 translateX = 0; 17122 translateY = 0; 17123 } 17124 if (forceZoomRatio && zoom.scale === 1) { 17125 gesture.originX = 0; 17126 gesture.originY = 0; 17127 } 17128 gesture.imageWrapEl.style.transitionDuration = '300ms'; 17129 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 17130 gesture.imageEl.style.transitionDuration = '300ms'; 17131 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 17132 } 17133 function zoomOut() { 17134 const zoom = swiper.zoom; 17135 const params = swiper.params.zoom; 17136 if (!gesture.slideEl) { 17137 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 17138 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 17139 } else { 17140 gesture.slideEl = swiper.slides[swiper.activeIndex]; 17141 } 17142 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 17143 if (imageEl) { 17144 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 17145 } 17146 gesture.imageEl = imageEl; 17147 if (imageEl) { 17148 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 17149 } else { 17150 gesture.imageWrapEl = undefined; 17151 } 17152 } 17153 if (!gesture.imageEl || !gesture.imageWrapEl) return; 17154 if (swiper.params.cssMode) { 17155 swiper.wrapperEl.style.overflow = ''; 17156 swiper.wrapperEl.style.touchAction = ''; 17157 } 17158 zoom.scale = 1; 17159 currentScale = 1; 17160 gesture.imageWrapEl.style.transitionDuration = '300ms'; 17161 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 17162 gesture.imageEl.style.transitionDuration = '300ms'; 17163 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 17164 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 17165 gesture.slideEl = undefined; 17166 gesture.originX = 0; 17167 gesture.originY = 0; 17168 } 17169 17170 // Toggle Zoom 17171 function zoomToggle(e) { 17172 const zoom = swiper.zoom; 17173 if (zoom.scale && zoom.scale !== 1) { 17174 // Zoom Out 17175 zoomOut(); 17176 } else { 17177 // Zoom In 17178 zoomIn(e); 17179 } 17180 } 17181 function getListeners() { 17182 const passiveListener = swiper.params.passiveListeners ? { 17183 passive: true, 17184 capture: false 17185 } : false; 17186 const activeListenerWithCapture = swiper.params.passiveListeners ? { 17187 passive: false, 17188 capture: true 17189 } : true; 17190 return { 17191 passiveListener, 17192 activeListenerWithCapture 17193 }; 17194 } 17195 17196 // Attach/Detach Events 17197 function enable() { 17198 const zoom = swiper.zoom; 17199 if (zoom.enabled) return; 17200 zoom.enabled = true; 17201 const { 17202 passiveListener, 17203 activeListenerWithCapture 17204 } = getListeners(); 17205 17206 // Scale image 17207 swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); 17208 swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); 17209 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 17210 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 17211 }); 17212 17213 // Move image 17214 swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); 17215 } 17216 function disable() { 17217 const zoom = swiper.zoom; 17218 if (!zoom.enabled) return; 17219 zoom.enabled = false; 17220 const { 17221 passiveListener, 17222 activeListenerWithCapture 17223 } = getListeners(); 17224 17225 // Scale image 17226 swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); 17227 swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); 17228 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 17229 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 17230 }); 17231 17232 // Move image 17233 swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); 17234 } 17235 on('init', () => { 17236 if (swiper.params.zoom.enabled) { 17237 enable(); 17238 } 17239 }); 17240 on('destroy', () => { 17241 disable(); 17242 }); 17243 on('touchStart', (_s, e) => { 17244 if (!swiper.zoom.enabled) return; 17245 onTouchStart(e); 17246 }); 17247 on('touchEnd', (_s, e) => { 17248 if (!swiper.zoom.enabled) return; 17249 onTouchEnd(); 17250 }); 17251 on('doubleTap', (_s, e) => { 17252 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 17253 zoomToggle(e); 17254 } 17255 }); 17256 on('transitionEnd', () => { 17257 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 17258 onTransitionEnd(); 17259 } 17260 }); 17261 on('slideChange', () => { 17262 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 17263 onTransitionEnd(); 17264 } 17265 }); 17266 Object.assign(swiper.zoom, { 17267 enable, 17268 disable, 17269 in: zoomIn, 17270 out: zoomOut, 17271 toggle: zoomToggle 17272 }); 17273} 17274 17275 17276 17277 17278/***/ }), 17279
vendor: 786 bytes, lines 17280-17302
17280/***/ "./node_modules/swiper/shared/classes-to-selector.mjs": 17281/*!************************************************************!*\ 17282 !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***! 17283 \************************************************************/ 17284/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17285 17286__webpack_require__.r(__webpack_exports__); 17287/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17288/* harmony export */ c: function() { return /* binding */ classesToSelector; } 17289/* harmony export */ }); 17290function classesToSelector(classes) { 17291 if (classes === void 0) { 17292 classes = ''; 17293 } 17294 return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line 17295 .replace(/ /g, '.')}`; 17296} 17297 17298 17299 17300 17301/***/ }), 17302
vendor: 1,425 bytes, lines 17303-17338
17303/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs": 17304/*!**********************************************************************!*\ 17305 !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***! 17306 \**********************************************************************/ 17307/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17308 17309__webpack_require__.r(__webpack_exports__); 17310/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17311/* harmony export */ c: function() { return /* binding */ createElementIfNotDefined; } 17312/* harmony export */ }); 17313/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 17314 17315 17316function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 17317 if (swiper.params.createElements) { 17318 Object.keys(checkProps).forEach(key => { 17319 if (!params[key] && params.auto === true) { 17320 let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0]; 17321 if (!element) { 17322 element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]); 17323 element.className = checkProps[key]; 17324 swiper.el.append(element); 17325 } 17326 params[key] = element; 17327 originalParams[key] = element; 17328 } 17329 }); 17330 } 17331 return params; 17332} 17333 17334 17335 17336 17337/***/ }), 17338
vendor: 1,221 bytes, lines 17339-17367
17339/***/ "./node_modules/swiper/shared/create-shadow.mjs": 17340/*!******************************************************!*\ 17341 !*** ./node_modules/swiper/shared/create-shadow.mjs ***! 17342 \******************************************************/ 17343/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17344 17345__webpack_require__.r(__webpack_exports__); 17346/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17347/* harmony export */ c: function() { return /* binding */ createShadow; } 17348/* harmony export */ }); 17349/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 17350 17351 17352function createShadow(suffix, slideEl, side) { 17353 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; 17354 const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 17355 let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); 17356 if (!shadowEl) { 17357 shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' ')); 17358 shadowContainer.append(shadowEl); 17359 } 17360 return shadowEl; 17361} 17362 17363 17364 17365 17366/***/ }), 17367
vendor: 2,344 bytes, lines 17368-17439
17368/***/ "./node_modules/swiper/shared/effect-init.mjs": 17369/*!****************************************************!*\ 17370 !*** ./node_modules/swiper/shared/effect-init.mjs ***! 17371 \****************************************************/ 17372/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17373 17374__webpack_require__.r(__webpack_exports__); 17375/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17376/* harmony export */ e: function() { return /* binding */ effectInit; } 17377/* harmony export */ }); 17378function effectInit(params) { 17379 const { 17380 effect, 17381 swiper, 17382 on, 17383 setTranslate, 17384 setTransition, 17385 overwriteParams, 17386 perspective, 17387 recreateShadows, 17388 getEffectParams 17389 } = params; 17390 on('beforeInit', () => { 17391 if (swiper.params.effect !== effect) return; 17392 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 17393 if (perspective && perspective()) { 17394 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 17395 } 17396 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 17397 Object.assign(swiper.params, overwriteParamsResult); 17398 Object.assign(swiper.originalParams, overwriteParamsResult); 17399 }); 17400 on('setTranslate', () => { 17401 if (swiper.params.effect !== effect) return; 17402 setTranslate(); 17403 }); 17404 on('setTransition', (_s, duration) => { 17405 if (swiper.params.effect !== effect) return; 17406 setTransition(duration); 17407 }); 17408 on('transitionEnd', () => { 17409 if (swiper.params.effect !== effect) return; 17410 if (recreateShadows) { 17411 if (!getEffectParams || !getEffectParams().slideShadows) return; 17412 // remove shadows 17413 swiper.slides.forEach(slideEl => { 17414 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); 17415 }); 17416 // create new one 17417 recreateShadows(); 17418 } 17419 }); 17420 let requireUpdateOnVirtual; 17421 on('virtualUpdate', () => { 17422 if (swiper.params.effect !== effect) return; 17423 if (!swiper.slides.length) { 17424 requireUpdateOnVirtual = true; 17425 } 17426 requestAnimationFrame(() => { 17427 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 17428 setTranslate(); 17429 requireUpdateOnVirtual = false; 17430 } 17431 }); 17432 }); 17433} 17434 17435 17436 17437 17438/***/ }), 17439
vendor: 1,014 bytes, lines 17440-17466
17440/***/ "./node_modules/swiper/shared/effect-target.mjs": 17441/*!******************************************************!*\ 17442 !*** ./node_modules/swiper/shared/effect-target.mjs ***! 17443 \******************************************************/ 17444/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17445 17446__webpack_require__.r(__webpack_exports__); 17447/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17448/* harmony export */ e: function() { return /* binding */ effectTarget; } 17449/* harmony export */ }); 17450/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 17451 17452 17453function effectTarget(effectParams, slideEl) { 17454 const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 17455 if (transformEl !== slideEl) { 17456 transformEl.style.backfaceVisibility = 'hidden'; 17457 transformEl.style['-webkit-backface-visibility'] = 'hidden'; 17458 } 17459 return transformEl; 17460} 17461 17462 17463 17464 17465/***/ }), 17466
vendor: 2,122 bytes, lines 17467-17529
17467/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs": 17468/*!**********************************************************************!*\ 17469 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***! 17470 \**********************************************************************/ 17471/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17472 17473__webpack_require__.r(__webpack_exports__); 17474/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17475/* harmony export */ e: function() { return /* binding */ effectVirtualTransitionEnd; } 17476/* harmony export */ }); 17477/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 17478 17479 17480function effectVirtualTransitionEnd(_ref) { 17481 let { 17482 swiper, 17483 duration, 17484 transformElements, 17485 allSlides 17486 } = _ref; 17487 const { 17488 activeIndex 17489 } = swiper; 17490 const getSlide = el => { 17491 if (!el.parentElement) { 17492 // assume shadow root 17493 const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; 17494 return slide; 17495 } 17496 return el.parentElement; 17497 }; 17498 if (swiper.params.virtualTranslate && duration !== 0) { 17499 let eventTriggered = false; 17500 let transitionEndTarget; 17501 if (allSlides) { 17502 transitionEndTarget = transformElements; 17503 } else { 17504 transitionEndTarget = transformElements.filter(transformEl => { 17505 const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; 17506 return swiper.getSlideIndex(el) === activeIndex; 17507 }); 17508 } 17509 transitionEndTarget.forEach(el => { 17510 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(el, () => { 17511 if (eventTriggered) return; 17512 if (!swiper || swiper.destroyed) return; 17513 eventTriggered = true; 17514 swiper.animating = false; 17515 const evt = new window.CustomEvent('transitionend', { 17516 bubbles: true, 17517 cancelable: true 17518 }); 17519 swiper.wrapperEl.dispatchEvent(evt); 17520 }); 17521 }); 17522 } 17523} 17524 17525 17526 17527 17528/***/ }), 17529
vendor: 3,355 bytes, lines 17530-17689
17530/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs": 17531/*!*******************************************************!*\ 17532 !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***! 17533 \*******************************************************/ 17534/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17535 17536__webpack_require__.r(__webpack_exports__); 17537/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17538/* harmony export */ a: function() { return /* binding */ getWindow; }, 17539/* harmony export */ g: function() { return /* binding */ getDocument; } 17540/* harmony export */ }); 17541/** 17542 * SSR Window 4.0.2 17543 * Better handling for window object in SSR environment 17544 * https://github.com/nolimits4web/ssr-window 17545 * 17546 * Copyright 2021, Vladimir Kharlampidi 17547 * 17548 * Licensed under MIT 17549 * 17550 * Released on: December 13, 2021 17551 */ 17552/* eslint-disable no-param-reassign */ 17553function isObject(obj) { 17554 return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; 17555} 17556function extend(target, src) { 17557 if (target === void 0) { 17558 target = {}; 17559 } 17560 if (src === void 0) { 17561 src = {}; 17562 } 17563 Object.keys(src).forEach(key => { 17564 if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 17565 extend(target[key], src[key]); 17566 } 17567 }); 17568} 17569const ssrDocument = { 17570 body: {}, 17571 addEventListener() {}, 17572 removeEventListener() {}, 17573 activeElement: { 17574 blur() {}, 17575 nodeName: '' 17576 }, 17577 querySelector() { 17578 return null; 17579 }, 17580 querySelectorAll() { 17581 return []; 17582 }, 17583 getElementById() { 17584 return null; 17585 }, 17586 createEvent() { 17587 return { 17588 initEvent() {} 17589 }; 17590 }, 17591 createElement() { 17592 return { 17593 children: [], 17594 childNodes: [], 17595 style: {}, 17596 setAttribute() {}, 17597 getElementsByTagName() { 17598 return []; 17599 } 17600 }; 17601 }, 17602 createElementNS() { 17603 return {}; 17604 }, 17605 importNode() { 17606 return null; 17607 }, 17608 location: { 17609 hash: '', 17610 host: '', 17611 hostname: '', 17612 href: '', 17613 origin: '', 17614 pathname: '', 17615 protocol: '', 17616 search: '' 17617 } 17618}; 17619function getDocument() { 17620 const doc = typeof document !== 'undefined' ? document : {}; 17621 extend(doc, ssrDocument); 17622 return doc; 17623} 17624const ssrWindow = { 17625 document: ssrDocument, 17626 navigator: { 17627 userAgent: '' 17628 }, 17629 location: { 17630 hash: '', 17631 host: '', 17632 hostname: '', 17633 href: '', 17634 origin: '', 17635 pathname: '', 17636 protocol: '', 17637 search: '' 17638 }, 17639 history: { 17640 replaceState() {}, 17641 pushState() {}, 17642 go() {}, 17643 back() {} 17644 }, 17645 CustomEvent: function CustomEvent() { 17646 return this; 17647 }, 17648 addEventListener() {}, 17649 removeEventListener() {}, 17650 getComputedStyle() { 17651 return { 17652 getPropertyValue() { 17653 return ''; 17654 } 17655 }; 17656 }, 17657 Image() {}, 17658 Date() {}, 17659 screen: {}, 17660 setTimeout() {}, 17661 clearTimeout() {}, 17662 matchMedia() { 17663 return {}; 17664 }, 17665 requestAnimationFrame(callback) { 17666 if (typeof setTimeout === 'undefined') { 17667 callback(); 17668 return null; 17669 } 17670 return setTimeout(callback, 0); 17671 }, 17672 cancelAnimationFrame(id) { 17673 if (typeof setTimeout === 'undefined') { 17674 return; 17675 } 17676 clearTimeout(id); 17677 } 17678}; 17679function getWindow() { 17680 const win = typeof window !== 'undefined' ? window : {}; 17681 extend(win, ssrWindow); 17682 return win; 17683} 17684 17685 17686 17687 17688/***/ }), 17689
vendor: 131,971 bytes, lines 17690-21613
17690/***/ "./node_modules/swiper/shared/swiper-core.mjs": 17691/*!****************************************************!*\ 17692 !*** ./node_modules/swiper/shared/swiper-core.mjs ***! 17693 \****************************************************/ 17694/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 17695 17696__webpack_require__.r(__webpack_exports__); 17697/* harmony export */ __webpack_require__.d(__webpack_exports__, { 17698/* harmony export */ S: function() { return /* binding */ Swiper; }, 17699/* harmony export */ d: function() { return /* binding */ defaults; } 17700/* harmony export */ }); 17701/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 17702/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 17703 17704 17705 17706let support; 17707function calcSupport() { 17708 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 17709 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 17710 return { 17711 smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, 17712 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) 17713 }; 17714} 17715function getSupport() { 17716 if (!support) { 17717 support = calcSupport(); 17718 } 17719 return support; 17720} 17721 17722let deviceCached; 17723function calcDevice(_temp) { 17724 let { 17725 userAgent 17726 } = _temp === void 0 ? {} : _temp; 17727 const support = getSupport(); 17728 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 17729 const platform = window.navigator.platform; 17730 const ua = userAgent || window.navigator.userAgent; 17731 const device = { 17732 ios: false, 17733 android: false 17734 }; 17735 const screenWidth = window.screen.width; 17736 const screenHeight = window.screen.height; 17737 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 17738 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 17739 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 17740 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 17741 const windows = platform === 'Win32'; 17742 let macos = platform === 'MacIntel'; 17743 17744 // iPadOs 13 fix 17745 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 17746 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 17747 ipad = ua.match(/(Version)\/([\d.]+)/); 17748 if (!ipad) ipad = [0, 1, '13_0_0']; 17749 macos = false; 17750 } 17751 17752 // Android 17753 if (android && !windows) { 17754 device.os = 'android'; 17755 device.android = true; 17756 } 17757 if (ipad || iphone || ipod) { 17758 device.os = 'ios'; 17759 device.ios = true; 17760 } 17761 17762 // Export object 17763 return device; 17764} 17765function getDevice(overrides) { 17766 if (overrides === void 0) { 17767 overrides = {}; 17768 } 17769 if (!deviceCached) { 17770 deviceCached = calcDevice(overrides); 17771 } 17772 return deviceCached; 17773} 17774 17775let browser; 17776function calcBrowser() { 17777 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 17778 const device = getDevice(); 17779 let needPerspectiveFix = false; 17780 function isSafari() { 17781 const ua = window.navigator.userAgent.toLowerCase(); 17782 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 17783 } 17784 if (isSafari()) { 17785 const ua = String(window.navigator.userAgent); 17786 if (ua.includes('Version/')) { 17787 const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); 17788 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 17789 } 17790 } 17791 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); 17792 const isSafariBrowser = isSafari(); 17793 const need3dFix = isSafariBrowser || isWebView && device.ios; 17794 return { 17795 isSafari: needPerspectiveFix || isSafariBrowser, 17796 needPerspectiveFix, 17797 need3dFix, 17798 isWebView 17799 }; 17800} 17801function getBrowser() { 17802 if (!browser) { 17803 browser = calcBrowser(); 17804 } 17805 return browser; 17806} 17807 17808function Resize(_ref) { 17809 let { 17810 swiper, 17811 on, 17812 emit 17813 } = _ref; 17814 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 17815 let observer = null; 17816 let animationFrame = null; 17817 const resizeHandler = () => { 17818 if (!swiper || swiper.destroyed || !swiper.initialized) return; 17819 emit('beforeResize'); 17820 emit('resize'); 17821 }; 17822 const createObserver = () => { 17823 if (!swiper || swiper.destroyed || !swiper.initialized) return; 17824 observer = new ResizeObserver(entries => { 17825 animationFrame = window.requestAnimationFrame(() => { 17826 const { 17827 width, 17828 height 17829 } = swiper; 17830 let newWidth = width; 17831 let newHeight = height; 17832 entries.forEach(_ref2 => { 17833 let { 17834 contentBoxSize, 17835 contentRect, 17836 target 17837 } = _ref2; 17838 if (target && target !== swiper.el) return; 17839 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 17840 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 17841 }); 17842 if (newWidth !== width || newHeight !== height) { 17843 resizeHandler(); 17844 } 17845 }); 17846 }); 17847 observer.observe(swiper.el); 17848 }; 17849 const removeObserver = () => { 17850 if (animationFrame) { 17851 window.cancelAnimationFrame(animationFrame); 17852 } 17853 if (observer && observer.unobserve && swiper.el) { 17854 observer.unobserve(swiper.el); 17855 observer = null; 17856 } 17857 }; 17858 const orientationChangeHandler = () => { 17859 if (!swiper || swiper.destroyed || !swiper.initialized) return; 17860 emit('orientationchange'); 17861 }; 17862 on('init', () => { 17863 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 17864 createObserver(); 17865 return; 17866 } 17867 window.addEventListener('resize', resizeHandler); 17868 window.addEventListener('orientationchange', orientationChangeHandler); 17869 }); 17870 on('destroy', () => { 17871 removeObserver(); 17872 window.removeEventListener('resize', resizeHandler); 17873 window.removeEventListener('orientationchange', orientationChangeHandler); 17874 }); 17875} 17876 17877function Observer(_ref) { 17878 let { 17879 swiper, 17880 extendParams, 17881 on, 17882 emit 17883 } = _ref; 17884 const observers = []; 17885 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 17886 const attach = function (target, options) { 17887 if (options === void 0) { 17888 options = {}; 17889 } 17890 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 17891 const observer = new ObserverFunc(mutations => { 17892 // The observerUpdate event should only be triggered 17893 // once despite the number of mutations. Additional 17894 // triggers are redundant and are very costly 17895 if (swiper.__preventObserver__) return; 17896 if (mutations.length === 1) { 17897 emit('observerUpdate', mutations[0]); 17898 return; 17899 } 17900 const observerUpdate = function observerUpdate() { 17901 emit('observerUpdate', mutations[0]); 17902 }; 17903 if (window.requestAnimationFrame) { 17904 window.requestAnimationFrame(observerUpdate); 17905 } else { 17906 window.setTimeout(observerUpdate, 0); 17907 } 17908 }); 17909 observer.observe(target, { 17910 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 17911 childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, 17912 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 17913 }); 17914 observers.push(observer); 17915 }; 17916 const init = () => { 17917 if (!swiper.params.observer) return; 17918 if (swiper.params.observeParents) { 17919 const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.hostEl); 17920 for (let i = 0; i < containerParents.length; i += 1) { 17921 attach(containerParents[i]); 17922 } 17923 } 17924 // Observe container 17925 attach(swiper.hostEl, { 17926 childList: swiper.params.observeSlideChildren 17927 }); 17928 17929 // Observe wrapper 17930 attach(swiper.wrapperEl, { 17931 attributes: false 17932 }); 17933 }; 17934 const destroy = () => { 17935 observers.forEach(observer => { 17936 observer.disconnect(); 17937 }); 17938 observers.splice(0, observers.length); 17939 }; 17940 extendParams({ 17941 observer: false, 17942 observeParents: false, 17943 observeSlideChildren: false 17944 }); 17945 on('init', init); 17946 on('destroy', destroy); 17947} 17948 17949/* eslint-disable no-underscore-dangle */ 17950 17951var eventsEmitter = { 17952 on(events, handler, priority) { 17953 const self = this; 17954 if (!self.eventsListeners || self.destroyed) return self; 17955 if (typeof handler !== 'function') return self; 17956 const method = priority ? 'unshift' : 'push'; 17957 events.split(' ').forEach(event => { 17958 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 17959 self.eventsListeners[event][method](handler); 17960 }); 17961 return self; 17962 }, 17963 once(events, handler, priority) { 17964 const self = this; 17965 if (!self.eventsListeners || self.destroyed) return self; 17966 if (typeof handler !== 'function') return self; 17967 function onceHandler() { 17968 self.off(events, onceHandler); 17969 if (onceHandler.__emitterProxy) { 17970 delete onceHandler.__emitterProxy; 17971 } 17972 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 17973 args[_key] = arguments[_key]; 17974 } 17975 handler.apply(self, args); 17976 } 17977 onceHandler.__emitterProxy = handler; 17978 return self.on(events, onceHandler, priority); 17979 }, 17980 onAny(handler, priority) { 17981 const self = this; 17982 if (!self.eventsListeners || self.destroyed) return self; 17983 if (typeof handler !== 'function') return self; 17984 const method = priority ? 'unshift' : 'push'; 17985 if (self.eventsAnyListeners.indexOf(handler) < 0) { 17986 self.eventsAnyListeners[method](handler); 17987 } 17988 return self; 17989 }, 17990 offAny(handler) { 17991 const self = this; 17992 if (!self.eventsListeners || self.destroyed) return self; 17993 if (!self.eventsAnyListeners) return self; 17994 const index = self.eventsAnyListeners.indexOf(handler); 17995 if (index >= 0) { 17996 self.eventsAnyListeners.splice(index, 1); 17997 } 17998 return self; 17999 }, 18000 off(events, handler) { 18001 const self = this; 18002 if (!self.eventsListeners || self.destroyed) return self; 18003 if (!self.eventsListeners) return self; 18004 events.split(' ').forEach(event => { 18005 if (typeof handler === 'undefined') { 18006 self.eventsListeners[event] = []; 18007 } else if (self.eventsListeners[event]) { 18008 self.eventsListeners[event].forEach((eventHandler, index) => { 18009 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 18010 self.eventsListeners[event].splice(index, 1); 18011 } 18012 }); 18013 } 18014 }); 18015 return self; 18016 }, 18017 emit() { 18018 const self = this; 18019 if (!self.eventsListeners || self.destroyed) return self; 18020 if (!self.eventsListeners) return self; 18021 let events; 18022 let data; 18023 let context; 18024 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 18025 args[_key2] = arguments[_key2]; 18026 } 18027 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 18028 events = args[0]; 18029 data = args.slice(1, args.length); 18030 context = self; 18031 } else { 18032 events = args[0].events; 18033 data = args[0].data; 18034 context = args[0].context || self; 18035 } 18036 data.unshift(context); 18037 const eventsArray = Array.isArray(events) ? events : events.split(' '); 18038 eventsArray.forEach(event => { 18039 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 18040 self.eventsAnyListeners.forEach(eventHandler => { 18041 eventHandler.apply(context, [event, ...data]); 18042 }); 18043 } 18044 if (self.eventsListeners && self.eventsListeners[event]) { 18045 self.eventsListeners[event].forEach(eventHandler => { 18046 eventHandler.apply(context, data); 18047 }); 18048 } 18049 }); 18050 return self; 18051 } 18052}; 18053 18054function updateSize() { 18055 const swiper = this; 18056 let width; 18057 let height; 18058 const el = swiper.el; 18059 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 18060 width = swiper.params.width; 18061 } else { 18062 width = el.clientWidth; 18063 } 18064 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 18065 height = swiper.params.height; 18066 } else { 18067 height = el.clientHeight; 18068 } 18069 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 18070 return; 18071 } 18072 18073 // Subtract paddings 18074 width = width - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-left') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-right') || 0, 10); 18075 height = height - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-top') || 0, 10) - parseInt((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'padding-bottom') || 0, 10); 18076 if (Number.isNaN(width)) width = 0; 18077 if (Number.isNaN(height)) height = 0; 18078 Object.assign(swiper, { 18079 width, 18080 height, 18081 size: swiper.isHorizontal() ? width : height 18082 }); 18083} 18084 18085function updateSlides() { 18086 const swiper = this; 18087 function getDirectionPropertyValue(node, label) { 18088 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 18089 } 18090 const params = swiper.params; 18091 const { 18092 wrapperEl, 18093 slidesEl, 18094 size: swiperSize, 18095 rtlTranslate: rtl, 18096 wrongRTL 18097 } = swiper; 18098 const isVirtual = swiper.virtual && params.virtual.enabled; 18099 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 18100 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 18101 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 18102 let snapGrid = []; 18103 const slidesGrid = []; 18104 const slidesSizesGrid = []; 18105 let offsetBefore = params.slidesOffsetBefore; 18106 if (typeof offsetBefore === 'function') { 18107 offsetBefore = params.slidesOffsetBefore.call(swiper); 18108 } 18109 let offsetAfter = params.slidesOffsetAfter; 18110 if (typeof offsetAfter === 'function') { 18111 offsetAfter = params.slidesOffsetAfter.call(swiper); 18112 } 18113 const previousSnapGridLength = swiper.snapGrid.length; 18114 const previousSlidesGridLength = swiper.slidesGrid.length; 18115 let spaceBetween = params.spaceBetween; 18116 let slidePosition = -offsetBefore; 18117 let prevSlideSize = 0; 18118 let index = 0; 18119 if (typeof swiperSize === 'undefined') { 18120 return; 18121 } 18122 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 18123 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 18124 } else if (typeof spaceBetween === 'string') { 18125 spaceBetween = parseFloat(spaceBetween); 18126 } 18127 swiper.virtualSize = -spaceBetween; 18128 18129 // reset margins 18130 slides.forEach(slideEl => { 18131 if (rtl) { 18132 slideEl.style.marginLeft = ''; 18133 } else { 18134 slideEl.style.marginRight = ''; 18135 } 18136 slideEl.style.marginBottom = ''; 18137 slideEl.style.marginTop = ''; 18138 }); 18139 18140 // reset cssMode offsets 18141 if (params.centeredSlides && params.cssMode) { 18142 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', ''); 18143 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', ''); 18144 } 18145 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 18146 if (gridEnabled) { 18147 swiper.grid.initSlides(slides); 18148 } else if (swiper.grid) { 18149 swiper.grid.unsetSlides(); 18150 } 18151 18152 // Calc slides 18153 let slideSize; 18154 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 18155 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 18156 }).length > 0; 18157 for (let i = 0; i < slidesLength; i += 1) { 18158 slideSize = 0; 18159 let slide; 18160 if (slides[i]) slide = slides[i]; 18161 if (gridEnabled) { 18162 swiper.grid.updateSlide(i, slide, slides); 18163 } 18164 if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(slide, 'display') === 'none') continue; // eslint-disable-line 18165 18166 if (params.slidesPerView === 'auto') { 18167 if (shouldResetSlideSize) { 18168 slides[i].style[swiper.getDirectionLabel('width')] = ``; 18169 } 18170 const slideStyles = getComputedStyle(slide); 18171 const currentTransform = slide.style.transform; 18172 const currentWebKitTransform = slide.style.webkitTransform; 18173 if (currentTransform) { 18174 slide.style.transform = 'none'; 18175 } 18176 if (currentWebKitTransform) { 18177 slide.style.webkitTransform = 'none'; 18178 } 18179 if (params.roundLengths) { 18180 slideSize = swiper.isHorizontal() ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'width', true) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.f)(slide, 'height', true); 18181 } else { 18182 // eslint-disable-next-line 18183 const width = getDirectionPropertyValue(slideStyles, 'width'); 18184 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 18185 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 18186 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 18187 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 18188 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 18189 if (boxSizing && boxSizing === 'border-box') { 18190 slideSize = width + marginLeft + marginRight; 18191 } else { 18192 const { 18193 clientWidth, 18194 offsetWidth 18195 } = slide; 18196 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 18197 } 18198 } 18199 if (currentTransform) { 18200 slide.style.transform = currentTransform; 18201 } 18202 if (currentWebKitTransform) { 18203 slide.style.webkitTransform = currentWebKitTransform; 18204 } 18205 if (params.roundLengths) slideSize = Math.floor(slideSize); 18206 } else { 18207 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 18208 if (params.roundLengths) slideSize = Math.floor(slideSize); 18209 if (slides[i]) { 18210 slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; 18211 } 18212 } 18213 if (slides[i]) { 18214 slides[i].swiperSlideSize = slideSize; 18215 } 18216 slidesSizesGrid.push(slideSize); 18217 if (params.centeredSlides) { 18218 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 18219 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 18220 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 18221 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 18222 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 18223 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 18224 slidesGrid.push(slidePosition); 18225 } else { 18226 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 18227 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 18228 slidesGrid.push(slidePosition); 18229 slidePosition = slidePosition + slideSize + spaceBetween; 18230 } 18231 swiper.virtualSize += slideSize + spaceBetween; 18232 prevSlideSize = slideSize; 18233 index += 1; 18234 } 18235 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 18236 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 18237 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 18238 } 18239 if (params.setWrapperSize) { 18240 wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 18241 } 18242 if (gridEnabled) { 18243 swiper.grid.updateWrapperSize(slideSize, snapGrid); 18244 } 18245 18246 // Remove last grid elements depending on width 18247 if (!params.centeredSlides) { 18248 const newSlidesGrid = []; 18249 for (let i = 0; i < snapGrid.length; i += 1) { 18250 let slidesGridItem = snapGrid[i]; 18251 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 18252 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 18253 newSlidesGrid.push(slidesGridItem); 18254 } 18255 } 18256 snapGrid = newSlidesGrid; 18257 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 18258 snapGrid.push(swiper.virtualSize - swiperSize); 18259 } 18260 } 18261 if (isVirtual && params.loop) { 18262 const size = slidesSizesGrid[0] + spaceBetween; 18263 if (params.slidesPerGroup > 1) { 18264 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 18265 const groupSize = size * params.slidesPerGroup; 18266 for (let i = 0; i < groups; i += 1) { 18267 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 18268 } 18269 } 18270 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 18271 if (params.slidesPerGroup === 1) { 18272 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 18273 } 18274 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 18275 swiper.virtualSize += size; 18276 } 18277 } 18278 if (snapGrid.length === 0) snapGrid = [0]; 18279 if (spaceBetween !== 0) { 18280 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); 18281 slides.filter((_, slideIndex) => { 18282 if (!params.cssMode || params.loop) return true; 18283 if (slideIndex === slides.length - 1) { 18284 return false; 18285 } 18286 return true; 18287 }).forEach(slideEl => { 18288 slideEl.style[key] = `${spaceBetween}px`; 18289 }); 18290 } 18291 if (params.centeredSlides && params.centeredSlidesBounds) { 18292 let allSlidesSize = 0; 18293 slidesSizesGrid.forEach(slideSizeValue => { 18294 allSlidesSize += slideSizeValue + (spaceBetween || 0); 18295 }); 18296 allSlidesSize -= spaceBetween; 18297 const maxSnap = allSlidesSize - swiperSize; 18298 snapGrid = snapGrid.map(snap => { 18299 if (snap <= 0) return -offsetBefore; 18300 if (snap > maxSnap) return maxSnap + offsetAfter; 18301 return snap; 18302 }); 18303 } 18304 if (params.centerInsufficientSlides) { 18305 let allSlidesSize = 0; 18306 slidesSizesGrid.forEach(slideSizeValue => { 18307 allSlidesSize += slideSizeValue + (spaceBetween || 0); 18308 }); 18309 allSlidesSize -= spaceBetween; 18310 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 18311 if (allSlidesSize + offsetSize < swiperSize) { 18312 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 18313 snapGrid.forEach((snap, snapIndex) => { 18314 snapGrid[snapIndex] = snap - allSlidesOffset; 18315 }); 18316 slidesGrid.forEach((snap, snapIndex) => { 18317 slidesGrid[snapIndex] = snap + allSlidesOffset; 18318 }); 18319 } 18320 } 18321 Object.assign(swiper, { 18322 slides, 18323 snapGrid, 18324 slidesGrid, 18325 slidesSizesGrid 18326 }); 18327 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 18328 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 18329 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 18330 const addToSnapGrid = -swiper.snapGrid[0]; 18331 const addToSlidesGrid = -swiper.slidesGrid[0]; 18332 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 18333 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 18334 } 18335 if (slidesLength !== previousSlidesLength) { 18336 swiper.emit('slidesLengthChange'); 18337 } 18338 if (snapGrid.length !== previousSnapGridLength) { 18339 if (swiper.params.watchOverflow) swiper.checkOverflow(); 18340 swiper.emit('snapGridLengthChange'); 18341 } 18342 if (slidesGrid.length !== previousSlidesGridLength) { 18343 swiper.emit('slidesGridLengthChange'); 18344 } 18345 if (params.watchSlidesProgress) { 18346 swiper.updateSlidesOffset(); 18347 } 18348 swiper.emit('slidesUpdated'); 18349 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 18350 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 18351 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 18352 if (slidesLength <= params.maxBackfaceHiddenSlides) { 18353 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 18354 } else if (hasClassBackfaceClassAdded) { 18355 swiper.el.classList.remove(backFaceHiddenClass); 18356 } 18357 } 18358} 18359 18360function updateAutoHeight(speed) { 18361 const swiper = this; 18362 const activeSlides = []; 18363 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 18364 let newHeight = 0; 18365 let i; 18366 if (typeof speed === 'number') { 18367 swiper.setTransition(speed); 18368 } else if (speed === true) { 18369 swiper.setTransition(swiper.params.speed); 18370 } 18371 const getSlideByIndex = index => { 18372 if (isVirtual) { 18373 return swiper.slides[swiper.getSlideIndexByData(index)]; 18374 } 18375 return swiper.slides[index]; 18376 }; 18377 // Find slides currently in view 18378 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 18379 if (swiper.params.centeredSlides) { 18380 (swiper.visibleSlides || []).forEach(slide => { 18381 activeSlides.push(slide); 18382 }); 18383 } else { 18384 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 18385 const index = swiper.activeIndex + i; 18386 if (index > swiper.slides.length && !isVirtual) break; 18387 activeSlides.push(getSlideByIndex(index)); 18388 } 18389 } 18390 } else { 18391 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 18392 } 18393 18394 // Find new height from highest slide in view 18395 for (i = 0; i < activeSlides.length; i += 1) { 18396 if (typeof activeSlides[i] !== 'undefined') { 18397 const height = activeSlides[i].offsetHeight; 18398 newHeight = height > newHeight ? height : newHeight; 18399 } 18400 } 18401 18402 // Update Height 18403 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 18404} 18405 18406function updateSlidesOffset() { 18407 const swiper = this; 18408 const slides = swiper.slides; 18409 // eslint-disable-next-line 18410 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 18411 for (let i = 0; i < slides.length; i += 1) { 18412 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); 18413 } 18414} 18415 18416const toggleSlideClasses$1 = (slideEl, condition, className) => { 18417 if (condition && !slideEl.classList.contains(className)) { 18418 slideEl.classList.add(className); 18419 } else if (!condition && slideEl.classList.contains(className)) { 18420 slideEl.classList.remove(className); 18421 } 18422}; 18423function updateSlidesProgress(translate) { 18424 if (translate === void 0) { 18425 translate = this && this.translate || 0; 18426 } 18427 const swiper = this; 18428 const params = swiper.params; 18429 const { 18430 slides, 18431 rtlTranslate: rtl, 18432 snapGrid 18433 } = swiper; 18434 if (slides.length === 0) return; 18435 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 18436 let offsetCenter = -translate; 18437 if (rtl) offsetCenter = translate; 18438 swiper.visibleSlidesIndexes = []; 18439 swiper.visibleSlides = []; 18440 let spaceBetween = params.spaceBetween; 18441 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 18442 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 18443 } else if (typeof spaceBetween === 'string') { 18444 spaceBetween = parseFloat(spaceBetween); 18445 } 18446 for (let i = 0; i < slides.length; i += 1) { 18447 const slide = slides[i]; 18448 let slideOffset = slide.swiperSlideOffset; 18449 if (params.cssMode && params.centeredSlides) { 18450 slideOffset -= slides[0].swiperSlideOffset; 18451 } 18452 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 18453 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 18454 const slideBefore = -(offsetCenter - slideOffset); 18455 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 18456 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 18457 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 18458 if (isVisible) { 18459 swiper.visibleSlides.push(slide); 18460 swiper.visibleSlidesIndexes.push(i); 18461 } 18462 toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); 18463 toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); 18464 slide.progress = rtl ? -slideProgress : slideProgress; 18465 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 18466 } 18467} 18468 18469function updateProgress(translate) { 18470 const swiper = this; 18471 if (typeof translate === 'undefined') { 18472 const multiplier = swiper.rtlTranslate ? -1 : 1; 18473 // eslint-disable-next-line 18474 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 18475 } 18476 const params = swiper.params; 18477 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 18478 let { 18479 progress, 18480 isBeginning, 18481 isEnd, 18482 progressLoop 18483 } = swiper; 18484 const wasBeginning = isBeginning; 18485 const wasEnd = isEnd; 18486 if (translatesDiff === 0) { 18487 progress = 0; 18488 isBeginning = true; 18489 isEnd = true; 18490 } else { 18491 progress = (translate - swiper.minTranslate()) / translatesDiff; 18492 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; 18493 const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; 18494 isBeginning = isBeginningRounded || progress <= 0; 18495 isEnd = isEndRounded || progress >= 1; 18496 if (isBeginningRounded) progress = 0; 18497 if (isEndRounded) progress = 1; 18498 } 18499 if (params.loop) { 18500 const firstSlideIndex = swiper.getSlideIndexByData(0); 18501 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 18502 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 18503 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 18504 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 18505 const translateAbs = Math.abs(translate); 18506 if (translateAbs >= firstSlideTranslate) { 18507 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 18508 } else { 18509 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 18510 } 18511 if (progressLoop > 1) progressLoop -= 1; 18512 } 18513 Object.assign(swiper, { 18514 progress, 18515 progressLoop, 18516 isBeginning, 18517 isEnd 18518 }); 18519 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 18520 if (isBeginning && !wasBeginning) { 18521 swiper.emit('reachBeginning toEdge'); 18522 } 18523 if (isEnd && !wasEnd) { 18524 swiper.emit('reachEnd toEdge'); 18525 } 18526 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 18527 swiper.emit('fromEdge'); 18528 } 18529 swiper.emit('progress', progress); 18530} 18531 18532const toggleSlideClasses = (slideEl, condition, className) => { 18533 if (condition && !slideEl.classList.contains(className)) { 18534 slideEl.classList.add(className); 18535 } else if (!condition && slideEl.classList.contains(className)) { 18536 slideEl.classList.remove(className); 18537 } 18538}; 18539function updateSlidesClasses() { 18540 const swiper = this; 18541 const { 18542 slides, 18543 params, 18544 slidesEl, 18545 activeIndex 18546 } = swiper; 18547 const isVirtual = swiper.virtual && params.virtual.enabled; 18548 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 18549 const getFilteredSlide = selector => { 18550 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 18551 }; 18552 let activeSlide; 18553 let prevSlide; 18554 let nextSlide; 18555 if (isVirtual) { 18556 if (params.loop) { 18557 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 18558 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 18559 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 18560 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 18561 } else { 18562 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 18563 } 18564 } else { 18565 if (gridEnabled) { 18566 activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; 18567 nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; 18568 prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; 18569 } else { 18570 activeSlide = slides[activeIndex]; 18571 } 18572 } 18573 if (activeSlide) { 18574 if (!gridEnabled) { 18575 // Next Slide 18576 nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 18577 if (params.loop && !nextSlide) { 18578 nextSlide = slides[0]; 18579 } 18580 18581 // Prev Slide 18582 prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 18583 if (params.loop && !prevSlide === 0) { 18584 prevSlide = slides[slides.length - 1]; 18585 } 18586 } 18587 } 18588 slides.forEach(slideEl => { 18589 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 18590 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 18591 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 18592 }); 18593 swiper.emitSlidesClasses(); 18594} 18595 18596const processLazyPreloader = (swiper, imageEl) => { 18597 if (!swiper || swiper.destroyed || !swiper.params) return; 18598 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 18599 const slideEl = imageEl.closest(slideSelector()); 18600 if (slideEl) { 18601 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 18602 if (!lazyEl && swiper.isElement) { 18603 if (slideEl.shadowRoot) { 18604 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 18605 } else { 18606 // init later 18607 requestAnimationFrame(() => { 18608 if (slideEl.shadowRoot) { 18609 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 18610 if (lazyEl) lazyEl.remove(); 18611 } 18612 }); 18613 } 18614 } 18615 if (lazyEl) lazyEl.remove(); 18616 } 18617}; 18618const unlazy = (swiper, index) => { 18619 if (!swiper.slides[index]) return; 18620 const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); 18621 if (imageEl) imageEl.removeAttribute('loading'); 18622}; 18623const preload = swiper => { 18624 if (!swiper || swiper.destroyed || !swiper.params) return; 18625 let amount = swiper.params.lazyPreloadPrevNext; 18626 const len = swiper.slides.length; 18627 if (!len || !amount || amount < 0) return; 18628 amount = Math.min(amount, len); 18629 const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 18630 const activeIndex = swiper.activeIndex; 18631 if (swiper.params.grid && swiper.params.grid.rows > 1) { 18632 const activeColumn = activeIndex; 18633 const preloadColumns = [activeColumn - amount]; 18634 preloadColumns.push(...Array.from({ 18635 length: amount 18636 }).map((_, i) => { 18637 return activeColumn + slidesPerView + i; 18638 })); 18639 swiper.slides.forEach((slideEl, i) => { 18640 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 18641 }); 18642 return; 18643 } 18644 const slideIndexLastInView = activeIndex + slidesPerView - 1; 18645 if (swiper.params.rewind || swiper.params.loop) { 18646 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 18647 const realIndex = (i % len + len) % len; 18648 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 18649 } 18650 } else { 18651 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 18652 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 18653 unlazy(swiper, i); 18654 } 18655 } 18656 } 18657}; 18658 18659function getActiveIndexByTranslate(swiper) { 18660 const { 18661 slidesGrid, 18662 params 18663 } = swiper; 18664 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 18665 let activeIndex; 18666 for (let i = 0; i < slidesGrid.length; i += 1) { 18667 if (typeof slidesGrid[i + 1] !== 'undefined') { 18668 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 18669 activeIndex = i; 18670 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 18671 activeIndex = i + 1; 18672 } 18673 } else if (translate >= slidesGrid[i]) { 18674 activeIndex = i; 18675 } 18676 } 18677 // Normalize slideIndex 18678 if (params.normalizeSlideIndex) { 18679 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 18680 } 18681 return activeIndex; 18682} 18683function updateActiveIndex(newActiveIndex) { 18684 const swiper = this; 18685 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 18686 const { 18687 snapGrid, 18688 params, 18689 activeIndex: previousIndex, 18690 realIndex: previousRealIndex, 18691 snapIndex: previousSnapIndex 18692 } = swiper; 18693 let activeIndex = newActiveIndex; 18694 let snapIndex; 18695 const getVirtualRealIndex = aIndex => { 18696 let realIndex = aIndex - swiper.virtual.slidesBefore; 18697 if (realIndex < 0) { 18698 realIndex = swiper.virtual.slides.length + realIndex; 18699 } 18700 if (realIndex >= swiper.virtual.slides.length) { 18701 realIndex -= swiper.virtual.slides.length; 18702 } 18703 return realIndex; 18704 }; 18705 if (typeof activeIndex === 'undefined') { 18706 activeIndex = getActiveIndexByTranslate(swiper); 18707 } 18708 if (snapGrid.indexOf(translate) >= 0) { 18709 snapIndex = snapGrid.indexOf(translate); 18710 } else { 18711 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 18712 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 18713 } 18714 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 18715 if (activeIndex === previousIndex && !swiper.params.loop) { 18716 if (snapIndex !== previousSnapIndex) { 18717 swiper.snapIndex = snapIndex; 18718 swiper.emit('snapIndexChange'); 18719 } 18720 return; 18721 } 18722 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 18723 swiper.realIndex = getVirtualRealIndex(activeIndex); 18724 return; 18725 } 18726 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 18727 18728 // Get real index 18729 let realIndex; 18730 if (swiper.virtual && params.virtual.enabled && params.loop) { 18731 realIndex = getVirtualRealIndex(activeIndex); 18732 } else if (gridEnabled) { 18733 const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; 18734 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); 18735 if (Number.isNaN(activeSlideIndex)) { 18736 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 18737 } 18738 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 18739 } else if (swiper.slides[activeIndex]) { 18740 const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); 18741 if (slideIndex) { 18742 realIndex = parseInt(slideIndex, 10); 18743 } else { 18744 realIndex = activeIndex; 18745 } 18746 } else { 18747 realIndex = activeIndex; 18748 } 18749 Object.assign(swiper, { 18750 previousSnapIndex, 18751 snapIndex, 18752 previousRealIndex, 18753 realIndex, 18754 previousIndex, 18755 activeIndex 18756 }); 18757 if (swiper.initialized) { 18758 preload(swiper); 18759 } 18760 swiper.emit('activeIndexChange'); 18761 swiper.emit('snapIndexChange'); 18762 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 18763 if (previousRealIndex !== realIndex) { 18764 swiper.emit('realIndexChange'); 18765 } 18766 swiper.emit('slideChange'); 18767 } 18768} 18769 18770function updateClickedSlide(el, path) { 18771 const swiper = this; 18772 const params = swiper.params; 18773 let slide = el.closest(`.${params.slideClass}, swiper-slide`); 18774 if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { 18775 [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { 18776 if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 18777 slide = pathEl; 18778 } 18779 }); 18780 } 18781 let slideFound = false; 18782 let slideIndex; 18783 if (slide) { 18784 for (let i = 0; i < swiper.slides.length; i += 1) { 18785 if (swiper.slides[i] === slide) { 18786 slideFound = true; 18787 slideIndex = i; 18788 break; 18789 } 18790 } 18791 } 18792 if (slide && slideFound) { 18793 swiper.clickedSlide = slide; 18794 if (swiper.virtual && swiper.params.virtual.enabled) { 18795 swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); 18796 } else { 18797 swiper.clickedIndex = slideIndex; 18798 } 18799 } else { 18800 swiper.clickedSlide = undefined; 18801 swiper.clickedIndex = undefined; 18802 return; 18803 } 18804 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 18805 swiper.slideToClickedSlide(); 18806 } 18807} 18808 18809var update = { 18810 updateSize, 18811 updateSlides, 18812 updateAutoHeight, 18813 updateSlidesOffset, 18814 updateSlidesProgress, 18815 updateProgress, 18816 updateSlidesClasses, 18817 updateActiveIndex, 18818 updateClickedSlide 18819}; 18820 18821function getSwiperTranslate(axis) { 18822 if (axis === void 0) { 18823 axis = this.isHorizontal() ? 'x' : 'y'; 18824 } 18825 const swiper = this; 18826 const { 18827 params, 18828 rtlTranslate: rtl, 18829 translate, 18830 wrapperEl 18831 } = swiper; 18832 if (params.virtualTranslate) { 18833 return rtl ? -translate : translate; 18834 } 18835 if (params.cssMode) { 18836 return translate; 18837 } 18838 let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(wrapperEl, axis); 18839 currentTranslate += swiper.cssOverflowAdjustment(); 18840 if (rtl) currentTranslate = -currentTranslate; 18841 return currentTranslate || 0; 18842} 18843 18844function setTranslate(translate, byController) { 18845 const swiper = this; 18846 const { 18847 rtlTranslate: rtl, 18848 params, 18849 wrapperEl, 18850 progress 18851 } = swiper; 18852 let x = 0; 18853 let y = 0; 18854 const z = 0; 18855 if (swiper.isHorizontal()) { 18856 x = rtl ? -translate : translate; 18857 } else { 18858 y = translate; 18859 } 18860 if (params.roundLengths) { 18861 x = Math.floor(x); 18862 y = Math.floor(y); 18863 } 18864 swiper.previousTranslate = swiper.translate; 18865 swiper.translate = swiper.isHorizontal() ? x : y; 18866 if (params.cssMode) { 18867 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 18868 } else if (!params.virtualTranslate) { 18869 if (swiper.isHorizontal()) { 18870 x -= swiper.cssOverflowAdjustment(); 18871 } else { 18872 y -= swiper.cssOverflowAdjustment(); 18873 } 18874 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 18875 } 18876 18877 // Check if we need to update progress 18878 let newProgress; 18879 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 18880 if (translatesDiff === 0) { 18881 newProgress = 0; 18882 } else { 18883 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 18884 } 18885 if (newProgress !== progress) { 18886 swiper.updateProgress(translate); 18887 } 18888 swiper.emit('setTranslate', swiper.translate, byController); 18889} 18890 18891function minTranslate() { 18892 return -this.snapGrid[0]; 18893} 18894 18895function maxTranslate() { 18896 return -this.snapGrid[this.snapGrid.length - 1]; 18897} 18898 18899function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 18900 if (translate === void 0) { 18901 translate = 0; 18902 } 18903 if (speed === void 0) { 18904 speed = this.params.speed; 18905 } 18906 if (runCallbacks === void 0) { 18907 runCallbacks = true; 18908 } 18909 if (translateBounds === void 0) { 18910 translateBounds = true; 18911 } 18912 const swiper = this; 18913 const { 18914 params, 18915 wrapperEl 18916 } = swiper; 18917 if (swiper.animating && params.preventInteractionOnTransition) { 18918 return false; 18919 } 18920 const minTranslate = swiper.minTranslate(); 18921 const maxTranslate = swiper.maxTranslate(); 18922 let newTranslate; 18923 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; 18924 18925 // Update progress 18926 swiper.updateProgress(newTranslate); 18927 if (params.cssMode) { 18928 const isH = swiper.isHorizontal(); 18929 if (speed === 0) { 18930 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 18931 } else { 18932 if (!swiper.support.smoothScroll) { 18933 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 18934 swiper, 18935 targetPosition: -newTranslate, 18936 side: isH ? 'left' : 'top' 18937 }); 18938 return true; 18939 } 18940 wrapperEl.scrollTo({ 18941 [isH ? 'left' : 'top']: -newTranslate, 18942 behavior: 'smooth' 18943 }); 18944 } 18945 return true; 18946 } 18947 if (speed === 0) { 18948 swiper.setTransition(0); 18949 swiper.setTranslate(newTranslate); 18950 if (runCallbacks) { 18951 swiper.emit('beforeTransitionStart', speed, internal); 18952 swiper.emit('transitionEnd'); 18953 } 18954 } else { 18955 swiper.setTransition(speed); 18956 swiper.setTranslate(newTranslate); 18957 if (runCallbacks) { 18958 swiper.emit('beforeTransitionStart', speed, internal); 18959 swiper.emit('transitionStart'); 18960 } 18961 if (!swiper.animating) { 18962 swiper.animating = true; 18963 if (!swiper.onTranslateToWrapperTransitionEnd) { 18964 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 18965 if (!swiper || swiper.destroyed) return; 18966 if (e.target !== this) return; 18967 swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 18968 swiper.onTranslateToWrapperTransitionEnd = null; 18969 delete swiper.onTranslateToWrapperTransitionEnd; 18970 swiper.animating = false; 18971 if (runCallbacks) { 18972 swiper.emit('transitionEnd'); 18973 } 18974 }; 18975 } 18976 swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 18977 } 18978 } 18979 return true; 18980} 18981 18982var translate = { 18983 getTranslate: getSwiperTranslate, 18984 setTranslate, 18985 minTranslate, 18986 maxTranslate, 18987 translateTo 18988}; 18989 18990function setTransition(duration, byController) { 18991 const swiper = this; 18992 if (!swiper.params.cssMode) { 18993 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 18994 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; 18995 } 18996 swiper.emit('setTransition', duration, byController); 18997} 18998 18999function transitionEmit(_ref) { 19000 let { 19001 swiper, 19002 runCallbacks, 19003 direction, 19004 step 19005 } = _ref; 19006 const { 19007 activeIndex, 19008 previousIndex 19009 } = swiper; 19010 let dir = direction; 19011 if (!dir) { 19012 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 19013 } 19014 swiper.emit(`transition${step}`); 19015 if (runCallbacks && activeIndex !== previousIndex) { 19016 if (dir === 'reset') { 19017 swiper.emit(`slideResetTransition${step}`); 19018 return; 19019 } 19020 swiper.emit(`slideChangeTransition${step}`); 19021 if (dir === 'next') { 19022 swiper.emit(`slideNextTransition${step}`); 19023 } else { 19024 swiper.emit(`slidePrevTransition${step}`); 19025 } 19026 } 19027} 19028 19029function transitionStart(runCallbacks, direction) { 19030 if (runCallbacks === void 0) { 19031 runCallbacks = true; 19032 } 19033 const swiper = this; 19034 const { 19035 params 19036 } = swiper; 19037 if (params.cssMode) return; 19038 if (params.autoHeight) { 19039 swiper.updateAutoHeight(); 19040 } 19041 transitionEmit({ 19042 swiper, 19043 runCallbacks, 19044 direction, 19045 step: 'Start' 19046 }); 19047} 19048 19049function transitionEnd(runCallbacks, direction) { 19050 if (runCallbacks === void 0) { 19051 runCallbacks = true; 19052 } 19053 const swiper = this; 19054 const { 19055 params 19056 } = swiper; 19057 swiper.animating = false; 19058 if (params.cssMode) return; 19059 swiper.setTransition(0); 19060 transitionEmit({ 19061 swiper, 19062 runCallbacks, 19063 direction, 19064 step: 'End' 19065 }); 19066} 19067 19068var transition = { 19069 setTransition, 19070 transitionStart, 19071 transitionEnd 19072}; 19073 19074function slideTo(index, speed, runCallbacks, internal, initial) { 19075 if (index === void 0) { 19076 index = 0; 19077 } 19078 if (runCallbacks === void 0) { 19079 runCallbacks = true; 19080 } 19081 if (typeof index === 'string') { 19082 index = parseInt(index, 10); 19083 } 19084 const swiper = this; 19085 let slideIndex = index; 19086 if (slideIndex < 0) slideIndex = 0; 19087 const { 19088 params, 19089 snapGrid, 19090 slidesGrid, 19091 previousIndex, 19092 activeIndex, 19093 rtlTranslate: rtl, 19094 wrapperEl, 19095 enabled 19096 } = swiper; 19097 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 19098 return false; 19099 } 19100 if (typeof speed === 'undefined') { 19101 speed = swiper.params.speed; 19102 } 19103 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 19104 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 19105 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 19106 const translate = -snapGrid[snapIndex]; 19107 // Normalize slideIndex 19108 if (params.normalizeSlideIndex) { 19109 for (let i = 0; i < slidesGrid.length; i += 1) { 19110 const normalizedTranslate = -Math.floor(translate * 100); 19111 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 19112 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 19113 if (typeof slidesGrid[i + 1] !== 'undefined') { 19114 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 19115 slideIndex = i; 19116 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 19117 slideIndex = i + 1; 19118 } 19119 } else if (normalizedTranslate >= normalizedGrid) { 19120 slideIndex = i; 19121 } 19122 } 19123 } 19124 // Directions locks 19125 if (swiper.initialized && slideIndex !== activeIndex) { 19126 if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { 19127 return false; 19128 } 19129 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 19130 if ((activeIndex || 0) !== slideIndex) { 19131 return false; 19132 } 19133 } 19134 } 19135 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 19136 swiper.emit('beforeSlideChangeStart'); 19137 } 19138 19139 // Update progress 19140 swiper.updateProgress(translate); 19141 let direction; 19142 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; 19143 19144 // Update Index 19145 if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { 19146 swiper.updateActiveIndex(slideIndex); 19147 // Update Height 19148 if (params.autoHeight) { 19149 swiper.updateAutoHeight(); 19150 } 19151 swiper.updateSlidesClasses(); 19152 if (params.effect !== 'slide') { 19153 swiper.setTranslate(translate); 19154 } 19155 if (direction !== 'reset') { 19156 swiper.transitionStart(runCallbacks, direction); 19157 swiper.transitionEnd(runCallbacks, direction); 19158 } 19159 return false; 19160 } 19161 if (params.cssMode) { 19162 const isH = swiper.isHorizontal(); 19163 const t = rtl ? translate : -translate; 19164 if (speed === 0) { 19165 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 19166 if (isVirtual) { 19167 swiper.wrapperEl.style.scrollSnapType = 'none'; 19168 swiper._immediateVirtual = true; 19169 } 19170 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 19171 swiper._cssModeVirtualInitialSet = true; 19172 requestAnimationFrame(() => { 19173 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 19174 }); 19175 } else { 19176 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 19177 } 19178 if (isVirtual) { 19179 requestAnimationFrame(() => { 19180 swiper.wrapperEl.style.scrollSnapType = ''; 19181 swiper._immediateVirtual = false; 19182 }); 19183 } 19184 } else { 19185 if (!swiper.support.smoothScroll) { 19186 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 19187 swiper, 19188 targetPosition: t, 19189 side: isH ? 'left' : 'top' 19190 }); 19191 return true; 19192 } 19193 wrapperEl.scrollTo({ 19194 [isH ? 'left' : 'top']: t, 19195 behavior: 'smooth' 19196 }); 19197 } 19198 return true; 19199 } 19200 swiper.setTransition(speed); 19201 swiper.setTranslate(translate); 19202 swiper.updateActiveIndex(slideIndex); 19203 swiper.updateSlidesClasses(); 19204 swiper.emit('beforeTransitionStart', speed, internal); 19205 swiper.transitionStart(runCallbacks, direction); 19206 if (speed === 0) { 19207 swiper.transitionEnd(runCallbacks, direction); 19208 } else if (!swiper.animating) { 19209 swiper.animating = true; 19210 if (!swiper.onSlideToWrapperTransitionEnd) { 19211 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 19212 if (!swiper || swiper.destroyed) return; 19213 if (e.target !== this) return; 19214 swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 19215 swiper.onSlideToWrapperTransitionEnd = null; 19216 delete swiper.onSlideToWrapperTransitionEnd; 19217 swiper.transitionEnd(runCallbacks, direction); 19218 }; 19219 } 19220 swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 19221 } 19222 return true; 19223} 19224 19225function slideToLoop(index, speed, runCallbacks, internal) { 19226 if (index === void 0) { 19227 index = 0; 19228 } 19229 if (runCallbacks === void 0) { 19230 runCallbacks = true; 19231 } 19232 if (typeof index === 'string') { 19233 const indexAsNumber = parseInt(index, 10); 19234 index = indexAsNumber; 19235 } 19236 const swiper = this; 19237 if (swiper.destroyed) return; 19238 if (typeof speed === 'undefined') { 19239 speed = swiper.params.speed; 19240 } 19241 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 19242 let newIndex = index; 19243 if (swiper.params.loop) { 19244 if (swiper.virtual && swiper.params.virtual.enabled) { 19245 // eslint-disable-next-line 19246 newIndex = newIndex + swiper.virtual.slidesBefore; 19247 } else { 19248 let targetSlideIndex; 19249 if (gridEnabled) { 19250 const slideIndex = newIndex * swiper.params.grid.rows; 19251 targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; 19252 } else { 19253 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 19254 } 19255 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 19256 const { 19257 centeredSlides 19258 } = swiper.params; 19259 let slidesPerView = swiper.params.slidesPerView; 19260 if (slidesPerView === 'auto') { 19261 slidesPerView = swiper.slidesPerViewDynamic(); 19262 } else { 19263 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 19264 if (centeredSlides && slidesPerView % 2 === 0) { 19265 slidesPerView = slidesPerView + 1; 19266 } 19267 } 19268 let needLoopFix = cols - targetSlideIndex < slidesPerView; 19269 if (centeredSlides) { 19270 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 19271 } 19272 if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { 19273 needLoopFix = false; 19274 } 19275 if (needLoopFix) { 19276 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; 19277 swiper.loopFix({ 19278 direction, 19279 slideTo: true, 19280 activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 19281 slideRealIndex: direction === 'next' ? swiper.realIndex : undefined 19282 }); 19283 } 19284 if (gridEnabled) { 19285 const slideIndex = newIndex * swiper.params.grid.rows; 19286 newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; 19287 } else { 19288 newIndex = swiper.getSlideIndexByData(newIndex); 19289 } 19290 } 19291 } 19292 requestAnimationFrame(() => { 19293 swiper.slideTo(newIndex, speed, runCallbacks, internal); 19294 }); 19295 return swiper; 19296} 19297 19298/* eslint no-unused-vars: "off" */ 19299function slideNext(speed, runCallbacks, internal) { 19300 if (runCallbacks === void 0) { 19301 runCallbacks = true; 19302 } 19303 const swiper = this; 19304 const { 19305 enabled, 19306 params, 19307 animating 19308 } = swiper; 19309 if (!enabled || swiper.destroyed) return swiper; 19310 if (typeof speed === 'undefined') { 19311 speed = swiper.params.speed; 19312 } 19313 let perGroup = params.slidesPerGroup; 19314 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 19315 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 19316 } 19317 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 19318 const isVirtual = swiper.virtual && params.virtual.enabled; 19319 if (params.loop) { 19320 if (animating && !isVirtual && params.loopPreventsSliding) return false; 19321 swiper.loopFix({ 19322 direction: 'next' 19323 }); 19324 // eslint-disable-next-line 19325 swiper._clientLeft = swiper.wrapperEl.clientLeft; 19326 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 19327 requestAnimationFrame(() => { 19328 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 19329 }); 19330 return true; 19331 } 19332 } 19333 if (params.rewind && swiper.isEnd) { 19334 return swiper.slideTo(0, speed, runCallbacks, internal); 19335 } 19336 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 19337} 19338 19339/* eslint no-unused-vars: "off" */ 19340function slidePrev(speed, runCallbacks, internal) { 19341 if (runCallbacks === void 0) { 19342 runCallbacks = true; 19343 } 19344 const swiper = this; 19345 const { 19346 params, 19347 snapGrid, 19348 slidesGrid, 19349 rtlTranslate, 19350 enabled, 19351 animating 19352 } = swiper; 19353 if (!enabled || swiper.destroyed) return swiper; 19354 if (typeof speed === 'undefined') { 19355 speed = swiper.params.speed; 19356 } 19357 const isVirtual = swiper.virtual && params.virtual.enabled; 19358 if (params.loop) { 19359 if (animating && !isVirtual && params.loopPreventsSliding) return false; 19360 swiper.loopFix({ 19361 direction: 'prev' 19362 }); 19363 // eslint-disable-next-line 19364 swiper._clientLeft = swiper.wrapperEl.clientLeft; 19365 } 19366 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 19367 function normalize(val) { 19368 if (val < 0) return -Math.floor(Math.abs(val)); 19369 return Math.floor(val); 19370 } 19371 const normalizedTranslate = normalize(translate); 19372 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 19373 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 19374 if (typeof prevSnap === 'undefined' && params.cssMode) { 19375 let prevSnapIndex; 19376 snapGrid.forEach((snap, snapIndex) => { 19377 if (normalizedTranslate >= snap) { 19378 // prevSnap = snap; 19379 prevSnapIndex = snapIndex; 19380 } 19381 }); 19382 if (typeof prevSnapIndex !== 'undefined') { 19383 prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 19384 } 19385 } 19386 let prevIndex = 0; 19387 if (typeof prevSnap !== 'undefined') { 19388 prevIndex = slidesGrid.indexOf(prevSnap); 19389 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 19390 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 19391 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 19392 prevIndex = Math.max(prevIndex, 0); 19393 } 19394 } 19395 if (params.rewind && swiper.isBeginning) { 19396 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 19397 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 19398 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 19399 requestAnimationFrame(() => { 19400 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 19401 }); 19402 return true; 19403 } 19404 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 19405} 19406 19407/* eslint no-unused-vars: "off" */ 19408function slideReset(speed, runCallbacks, internal) { 19409 if (runCallbacks === void 0) { 19410 runCallbacks = true; 19411 } 19412 const swiper = this; 19413 if (swiper.destroyed) return; 19414 if (typeof speed === 'undefined') { 19415 speed = swiper.params.speed; 19416 } 19417 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 19418} 19419 19420/* eslint no-unused-vars: "off" */ 19421function slideToClosest(speed, runCallbacks, internal, threshold) { 19422 if (runCallbacks === void 0) { 19423 runCallbacks = true; 19424 } 19425 if (threshold === void 0) { 19426 threshold = 0.5; 19427 } 19428 const swiper = this; 19429 if (swiper.destroyed) return; 19430 if (typeof speed === 'undefined') { 19431 speed = swiper.params.speed; 19432 } 19433 let index = swiper.activeIndex; 19434 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 19435 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 19436 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 19437 if (translate >= swiper.snapGrid[snapIndex]) { 19438 // The current translate is on or after the current snap index, so the choice 19439 // is between the current index and the one after it. 19440 const currentSnap = swiper.snapGrid[snapIndex]; 19441 const nextSnap = swiper.snapGrid[snapIndex + 1]; 19442 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 19443 index += swiper.params.slidesPerGroup; 19444 } 19445 } else { 19446 // The current translate is before the current snap index, so the choice 19447 // is between the current index and the one before it. 19448 const prevSnap = swiper.snapGrid[snapIndex - 1]; 19449 const currentSnap = swiper.snapGrid[snapIndex]; 19450 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 19451 index -= swiper.params.slidesPerGroup; 19452 } 19453 } 19454 index = Math.max(index, 0); 19455 index = Math.min(index, swiper.slidesGrid.length - 1); 19456 return swiper.slideTo(index, speed, runCallbacks, internal); 19457} 19458 19459function slideToClickedSlide() { 19460 const swiper = this; 19461 if (swiper.destroyed) return; 19462 const { 19463 params, 19464 slidesEl 19465 } = swiper; 19466 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 19467 let slideToIndex = swiper.clickedIndex; 19468 let realIndex; 19469 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 19470 if (params.loop) { 19471 if (swiper.animating) return; 19472 realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 19473 if (params.centeredSlides) { 19474 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 19475 swiper.loopFix(); 19476 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 19477 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 19478 swiper.slideTo(slideToIndex); 19479 }); 19480 } else { 19481 swiper.slideTo(slideToIndex); 19482 } 19483 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 19484 swiper.loopFix(); 19485 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 19486 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 19487 swiper.slideTo(slideToIndex); 19488 }); 19489 } else { 19490 swiper.slideTo(slideToIndex); 19491 } 19492 } else { 19493 swiper.slideTo(slideToIndex); 19494 } 19495} 19496 19497var slide = { 19498 slideTo, 19499 slideToLoop, 19500 slideNext, 19501 slidePrev, 19502 slideReset, 19503 slideToClosest, 19504 slideToClickedSlide 19505}; 19506 19507function loopCreate(slideRealIndex) { 19508 const swiper = this; 19509 const { 19510 params, 19511 slidesEl 19512 } = swiper; 19513 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 19514 const initSlides = () => { 19515 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 19516 slides.forEach((el, index) => { 19517 el.setAttribute('data-swiper-slide-index', index); 19518 }); 19519 }; 19520 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 19521 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 19522 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 19523 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 19524 const addBlankSlides = amountOfSlides => { 19525 for (let i = 0; i < amountOfSlides; i += 1) { 19526 const slideEl = swiper.isElement ? (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide', [params.slideBlankClass]) : (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', [params.slideClass, params.slideBlankClass]); 19527 swiper.slidesEl.append(slideEl); 19528 } 19529 }; 19530 if (shouldFillGroup) { 19531 if (params.loopAddBlankSlides) { 19532 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 19533 addBlankSlides(slidesToAdd); 19534 swiper.recalcSlides(); 19535 swiper.updateSlides(); 19536 } else { 19537 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); 19538 } 19539 initSlides(); 19540 } else if (shouldFillGrid) { 19541 if (params.loopAddBlankSlides) { 19542 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 19543 addBlankSlides(slidesToAdd); 19544 swiper.recalcSlides(); 19545 swiper.updateSlides(); 19546 } else { 19547 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); 19548 } 19549 initSlides(); 19550 } else { 19551 initSlides(); 19552 } 19553 swiper.loopFix({ 19554 slideRealIndex, 19555 direction: params.centeredSlides ? undefined : 'next' 19556 }); 19557} 19558 19559function loopFix(_temp) { 19560 let { 19561 slideRealIndex, 19562 slideTo = true, 19563 direction, 19564 setTranslate, 19565 activeSlideIndex, 19566 byController, 19567 byMousewheel 19568 } = _temp === void 0 ? {} : _temp; 19569 const swiper = this; 19570 if (!swiper.params.loop) return; 19571 swiper.emit('beforeLoopFix'); 19572 const { 19573 slides, 19574 allowSlidePrev, 19575 allowSlideNext, 19576 slidesEl, 19577 params 19578 } = swiper; 19579 const { 19580 centeredSlides 19581 } = params; 19582 swiper.allowSlidePrev = true; 19583 swiper.allowSlideNext = true; 19584 if (swiper.virtual && params.virtual.enabled) { 19585 if (slideTo) { 19586 if (!params.centeredSlides && swiper.snapIndex === 0) { 19587 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 19588 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 19589 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 19590 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 19591 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 19592 } 19593 } 19594 swiper.allowSlidePrev = allowSlidePrev; 19595 swiper.allowSlideNext = allowSlideNext; 19596 swiper.emit('loopFix'); 19597 return; 19598 } 19599 let slidesPerView = params.slidesPerView; 19600 if (slidesPerView === 'auto') { 19601 slidesPerView = swiper.slidesPerViewDynamic(); 19602 } else { 19603 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 19604 if (centeredSlides && slidesPerView % 2 === 0) { 19605 slidesPerView = slidesPerView + 1; 19606 } 19607 } 19608 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 19609 let loopedSlides = slidesPerGroup; 19610 if (loopedSlides % slidesPerGroup !== 0) { 19611 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 19612 } 19613 loopedSlides += params.loopAdditionalSlides; 19614 swiper.loopedSlides = loopedSlides; 19615 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 19616 if (slides.length < slidesPerView + loopedSlides) { 19617 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); 19618 } else if (gridEnabled && params.grid.fill === 'row') { 19619 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 19620 } 19621 const prependSlidesIndexes = []; 19622 const appendSlidesIndexes = []; 19623 let activeIndex = swiper.activeIndex; 19624 if (typeof activeSlideIndex === 'undefined') { 19625 activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); 19626 } else { 19627 activeIndex = activeSlideIndex; 19628 } 19629 const isNext = direction === 'next' || !direction; 19630 const isPrev = direction === 'prev' || !direction; 19631 let slidesPrepended = 0; 19632 let slidesAppended = 0; 19633 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 19634 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 19635 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); 19636 // prepend last slides before start 19637 if (activeColIndexWithShift < loopedSlides) { 19638 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 19639 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 19640 const index = i - Math.floor(i / cols) * cols; 19641 if (gridEnabled) { 19642 const colIndexToPrepend = cols - index - 1; 19643 for (let i = slides.length - 1; i >= 0; i -= 1) { 19644 if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); 19645 } 19646 // slides.forEach((slide, slideIndex) => { 19647 // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); 19648 // }); 19649 } else { 19650 prependSlidesIndexes.push(cols - index - 1); 19651 } 19652 } 19653 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 19654 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 19655 for (let i = 0; i < slidesAppended; i += 1) { 19656 const index = i - Math.floor(i / cols) * cols; 19657 if (gridEnabled) { 19658 slides.forEach((slide, slideIndex) => { 19659 if (slide.column === index) appendSlidesIndexes.push(slideIndex); 19660 }); 19661 } else { 19662 appendSlidesIndexes.push(index); 19663 } 19664 } 19665 } 19666 swiper.__preventObserver__ = true; 19667 requestAnimationFrame(() => { 19668 swiper.__preventObserver__ = false; 19669 }); 19670 if (isPrev) { 19671 prependSlidesIndexes.forEach(index => { 19672 slides[index].swiperLoopMoveDOM = true; 19673 slidesEl.prepend(slides[index]); 19674 slides[index].swiperLoopMoveDOM = false; 19675 }); 19676 } 19677 if (isNext) { 19678 appendSlidesIndexes.forEach(index => { 19679 slides[index].swiperLoopMoveDOM = true; 19680 slidesEl.append(slides[index]); 19681 slides[index].swiperLoopMoveDOM = false; 19682 }); 19683 } 19684 swiper.recalcSlides(); 19685 if (params.slidesPerView === 'auto') { 19686 swiper.updateSlides(); 19687 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 19688 swiper.slides.forEach((slide, slideIndex) => { 19689 swiper.grid.updateSlide(slideIndex, slide, swiper.slides); 19690 }); 19691 } 19692 if (params.watchSlidesProgress) { 19693 swiper.updateSlidesOffset(); 19694 } 19695 if (slideTo) { 19696 if (prependSlidesIndexes.length > 0 && isPrev) { 19697 if (typeof slideRealIndex === 'undefined') { 19698 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 19699 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 19700 const diff = newSlideTranslate - currentSlideTranslate; 19701 if (byMousewheel) { 19702 swiper.setTranslate(swiper.translate - diff); 19703 } else { 19704 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 19705 if (setTranslate) { 19706 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 19707 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 19708 } 19709 } 19710 } else { 19711 if (setTranslate) { 19712 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 19713 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 19714 swiper.touchEventsData.currentTranslate = swiper.translate; 19715 } 19716 } 19717 } else if (appendSlidesIndexes.length > 0 && isNext) { 19718 if (typeof slideRealIndex === 'undefined') { 19719 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 19720 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 19721 const diff = newSlideTranslate - currentSlideTranslate; 19722 if (byMousewheel) { 19723 swiper.setTranslate(swiper.translate - diff); 19724 } else { 19725 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 19726 if (setTranslate) { 19727 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 19728 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 19729 } 19730 } 19731 } else { 19732 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 19733 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 19734 } 19735 } 19736 } 19737 swiper.allowSlidePrev = allowSlidePrev; 19738 swiper.allowSlideNext = allowSlideNext; 19739 if (swiper.controller && swiper.controller.control && !byController) { 19740 const loopParams = { 19741 slideRealIndex, 19742 direction, 19743 setTranslate, 19744 activeSlideIndex, 19745 byController: true 19746 }; 19747 if (Array.isArray(swiper.controller.control)) { 19748 swiper.controller.control.forEach(c => { 19749 if (!c.destroyed && c.params.loop) c.loopFix({ 19750 ...loopParams, 19751 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false 19752 }); 19753 }); 19754 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 19755 swiper.controller.control.loopFix({ 19756 ...loopParams, 19757 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false 19758 }); 19759 } 19760 } 19761 swiper.emit('loopFix'); 19762} 19763 19764function loopDestroy() { 19765 const swiper = this; 19766 const { 19767 params, 19768 slidesEl 19769 } = swiper; 19770 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 19771 swiper.recalcSlides(); 19772 const newSlidesOrder = []; 19773 swiper.slides.forEach(slideEl => { 19774 const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; 19775 newSlidesOrder[index] = slideEl; 19776 }); 19777 swiper.slides.forEach(slideEl => { 19778 slideEl.removeAttribute('data-swiper-slide-index'); 19779 }); 19780 newSlidesOrder.forEach(slideEl => { 19781 slidesEl.append(slideEl); 19782 }); 19783 swiper.recalcSlides(); 19784 swiper.slideTo(swiper.realIndex, 0); 19785} 19786 19787var loop = { 19788 loopCreate, 19789 loopFix, 19790 loopDestroy 19791}; 19792 19793function setGrabCursor(moving) { 19794 const swiper = this; 19795 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 19796 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 19797 if (swiper.isElement) { 19798 swiper.__preventObserver__ = true; 19799 } 19800 el.style.cursor = 'move'; 19801 el.style.cursor = moving ? 'grabbing' : 'grab'; 19802 if (swiper.isElement) { 19803 requestAnimationFrame(() => { 19804 swiper.__preventObserver__ = false; 19805 }); 19806 } 19807} 19808 19809function unsetGrabCursor() { 19810 const swiper = this; 19811 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 19812 return; 19813 } 19814 if (swiper.isElement) { 19815 swiper.__preventObserver__ = true; 19816 } 19817 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 19818 if (swiper.isElement) { 19819 requestAnimationFrame(() => { 19820 swiper.__preventObserver__ = false; 19821 }); 19822 } 19823} 19824 19825var grabCursor = { 19826 setGrabCursor, 19827 unsetGrabCursor 19828}; 19829 19830// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 19831function closestElement(selector, base) { 19832 if (base === void 0) { 19833 base = this; 19834 } 19835 function __closestFrom(el) { 19836 if (!el || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)() || el === (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)()) return null; 19837 if (el.assignedSlot) el = el.assignedSlot; 19838 const found = el.closest(selector); 19839 if (!found && !el.getRootNode) { 19840 return null; 19841 } 19842 return found || __closestFrom(el.getRootNode().host); 19843 } 19844 return __closestFrom(base); 19845} 19846function preventEdgeSwipe(swiper, event, startX) { 19847 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 19848 const { 19849 params 19850 } = swiper; 19851 const edgeSwipeDetection = params.edgeSwipeDetection; 19852 const edgeSwipeThreshold = params.edgeSwipeThreshold; 19853 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 19854 if (edgeSwipeDetection === 'prevent') { 19855 event.preventDefault(); 19856 return true; 19857 } 19858 return false; 19859 } 19860 return true; 19861} 19862function onTouchStart(event) { 19863 const swiper = this; 19864 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 19865 let e = event; 19866 if (e.originalEvent) e = e.originalEvent; 19867 const data = swiper.touchEventsData; 19868 if (e.type === 'pointerdown') { 19869 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 19870 return; 19871 } 19872 data.pointerId = e.pointerId; 19873 } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { 19874 data.touchId = e.targetTouches[0].identifier; 19875 } 19876 if (e.type === 'touchstart') { 19877 // don't proceed touch event 19878 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 19879 return; 19880 } 19881 const { 19882 params, 19883 touches, 19884 enabled 19885 } = swiper; 19886 if (!enabled) return; 19887 if (!params.simulateTouch && e.pointerType === 'mouse') return; 19888 if (swiper.animating && params.preventInteractionOnTransition) { 19889 return; 19890 } 19891 if (!swiper.animating && params.cssMode && params.loop) { 19892 swiper.loopFix(); 19893 } 19894 let targetEl = e.target; 19895 if (params.touchEventsTarget === 'wrapper') { 19896 if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)(targetEl, swiper.wrapperEl)) return; 19897 } 19898 if ('which' in e && e.which === 3) return; 19899 if ('button' in e && e.button > 0) return; 19900 if (data.isTouched && data.isMoved) return; 19901 19902 // change target el for shadow root component 19903 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; 19904 // eslint-disable-next-line 19905 const eventPath = e.composedPath ? e.composedPath() : e.path; 19906 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 19907 targetEl = eventPath[0]; 19908 } 19909 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 19910 const isTargetShadow = !!(e.target && e.target.shadowRoot); 19911 19912 // use closestElement for shadow root element to get the actual closest for nested shadow root element 19913 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 19914 swiper.allowClick = true; 19915 return; 19916 } 19917 if (params.swipeHandler) { 19918 if (!targetEl.closest(params.swipeHandler)) return; 19919 } 19920 touches.currentX = e.pageX; 19921 touches.currentY = e.pageY; 19922 const startX = touches.currentX; 19923 const startY = touches.currentY; 19924 19925 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 19926 19927 if (!preventEdgeSwipe(swiper, e, startX)) { 19928 return; 19929 } 19930 Object.assign(data, { 19931 isTouched: true, 19932 isMoved: false, 19933 allowTouchCallbacks: true, 19934 isScrolling: undefined, 19935 startMoving: undefined 19936 }); 19937 touches.startX = startX; 19938 touches.startY = startY; 19939 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 19940 swiper.allowClick = true; 19941 swiper.updateSize(); 19942 swiper.swipeDirection = undefined; 19943 if (params.threshold > 0) data.allowThresholdMove = false; 19944 let preventDefault = true; 19945 if (targetEl.matches(data.focusableElements)) { 19946 preventDefault = false; 19947 if (targetEl.nodeName === 'SELECT') { 19948 data.isTouched = false; 19949 } 19950 } 19951 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { 19952 document.activeElement.blur(); 19953 } 19954 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 19955 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 19956 e.preventDefault(); 19957 } 19958 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 19959 swiper.freeMode.onTouchStart(); 19960 } 19961 swiper.emit('touchStart', e); 19962} 19963 19964function onTouchMove(event) { 19965 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 19966 const swiper = this; 19967 const data = swiper.touchEventsData; 19968 const { 19969 params, 19970 touches, 19971 rtlTranslate: rtl, 19972 enabled 19973 } = swiper; 19974 if (!enabled) return; 19975 if (!params.simulateTouch && event.pointerType === 'mouse') return; 19976 let e = event; 19977 if (e.originalEvent) e = e.originalEvent; 19978 if (e.type === 'pointermove') { 19979 if (data.touchId !== null) return; // return from pointer if we use touch 19980 const id = e.pointerId; 19981 if (id !== data.pointerId) return; 19982 } 19983 let targetTouch; 19984 if (e.type === 'touchmove') { 19985 targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; 19986 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 19987 } else { 19988 targetTouch = e; 19989 } 19990 if (!data.isTouched) { 19991 if (data.startMoving && data.isScrolling) { 19992 swiper.emit('touchMoveOpposite', e); 19993 } 19994 return; 19995 } 19996 const pageX = targetTouch.pageX; 19997 const pageY = targetTouch.pageY; 19998 if (e.preventedByNestedSwiper) { 19999 touches.startX = pageX; 20000 touches.startY = pageY; 20001 return; 20002 } 20003 if (!swiper.allowTouchMove) { 20004 if (!e.target.matches(data.focusableElements)) { 20005 swiper.allowClick = false; 20006 } 20007 if (data.isTouched) { 20008 Object.assign(touches, { 20009 startX: pageX, 20010 startY: pageY, 20011 currentX: pageX, 20012 currentY: pageY 20013 }); 20014 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 20015 } 20016 return; 20017 } 20018 if (params.touchReleaseOnEdges && !params.loop) { 20019 if (swiper.isVertical()) { 20020 // Vertical 20021 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 20022 data.isTouched = false; 20023 data.isMoved = false; 20024 return; 20025 } 20026 } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { 20027 return; 20028 } 20029 } 20030 if (document.activeElement) { 20031 if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { 20032 data.isMoved = true; 20033 swiper.allowClick = false; 20034 return; 20035 } 20036 } 20037 if (data.allowTouchCallbacks) { 20038 swiper.emit('touchMove', e); 20039 } 20040 touches.previousX = touches.currentX; 20041 touches.previousY = touches.currentY; 20042 touches.currentX = pageX; 20043 touches.currentY = pageY; 20044 const diffX = touches.currentX - touches.startX; 20045 const diffY = touches.currentY - touches.startY; 20046 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 20047 if (typeof data.isScrolling === 'undefined') { 20048 let touchAngle; 20049 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 20050 data.isScrolling = false; 20051 } else { 20052 // eslint-disable-next-line 20053 if (diffX * diffX + diffY * diffY >= 25) { 20054 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 20055 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 20056 } 20057 } 20058 } 20059 if (data.isScrolling) { 20060 swiper.emit('touchMoveOpposite', e); 20061 } 20062 if (typeof data.startMoving === 'undefined') { 20063 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 20064 data.startMoving = true; 20065 } 20066 } 20067 if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { 20068 data.isTouched = false; 20069 return; 20070 } 20071 if (!data.startMoving) { 20072 return; 20073 } 20074 swiper.allowClick = false; 20075 if (!params.cssMode && e.cancelable) { 20076 e.preventDefault(); 20077 } 20078 if (params.touchMoveStopPropagation && !params.nested) { 20079 e.stopPropagation(); 20080 } 20081 let diff = swiper.isHorizontal() ? diffX : diffY; 20082 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 20083 if (params.oneWayMovement) { 20084 diff = Math.abs(diff) * (rtl ? 1 : -1); 20085 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 20086 } 20087 touches.diff = diff; 20088 diff *= params.touchRatio; 20089 if (rtl) { 20090 diff = -diff; 20091 touchesDiff = -touchesDiff; 20092 } 20093 const prevTouchesDirection = swiper.touchesDirection; 20094 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 20095 swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; 20096 const isLoop = swiper.params.loop && !params.cssMode; 20097 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; 20098 if (!data.isMoved) { 20099 if (isLoop && allowLoopFix) { 20100 swiper.loopFix({ 20101 direction: swiper.swipeDirection 20102 }); 20103 } 20104 data.startTranslate = swiper.getTranslate(); 20105 swiper.setTransition(0); 20106 if (swiper.animating) { 20107 const evt = new window.CustomEvent('transitionend', { 20108 bubbles: true, 20109 cancelable: true, 20110 detail: { 20111 bySwiperTouchMove: true 20112 } 20113 }); 20114 swiper.wrapperEl.dispatchEvent(evt); 20115 } 20116 data.allowMomentumBounce = false; 20117 // Grab Cursor 20118 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 20119 swiper.setGrabCursor(true); 20120 } 20121 swiper.emit('sliderFirstMove', e); 20122 } 20123 let loopFixed; 20124 new Date().getTime(); 20125 if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 20126 Object.assign(touches, { 20127 startX: pageX, 20128 startY: pageY, 20129 currentX: pageX, 20130 currentY: pageY, 20131 startTranslate: data.currentTranslate 20132 }); 20133 data.loopSwapReset = true; 20134 data.startTranslate = data.currentTranslate; 20135 return; 20136 } 20137 swiper.emit('sliderMove', e); 20138 data.isMoved = true; 20139 data.currentTranslate = diff + data.startTranslate; 20140 let disableParentSwiper = true; 20141 let resistanceRatio = params.resistanceRatio; 20142 if (params.touchReleaseOnEdges) { 20143 resistanceRatio = 0; 20144 } 20145 if (diff > 0) { 20146 if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { 20147 swiper.loopFix({ 20148 direction: 'prev', 20149 setTranslate: true, 20150 activeSlideIndex: 0 20151 }); 20152 } 20153 if (data.currentTranslate > swiper.minTranslate()) { 20154 disableParentSwiper = false; 20155 if (params.resistance) { 20156 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 20157 } 20158 } 20159 } else if (diff < 0) { 20160 if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { 20161 swiper.loopFix({ 20162 direction: 'next', 20163 setTranslate: true, 20164 activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 20165 }); 20166 } 20167 if (data.currentTranslate < swiper.maxTranslate()) { 20168 disableParentSwiper = false; 20169 if (params.resistance) { 20170 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 20171 } 20172 } 20173 } 20174 if (disableParentSwiper) { 20175 e.preventedByNestedSwiper = true; 20176 } 20177 20178 // Directions locks 20179 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 20180 data.currentTranslate = data.startTranslate; 20181 } 20182 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 20183 data.currentTranslate = data.startTranslate; 20184 } 20185 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 20186 data.currentTranslate = data.startTranslate; 20187 } 20188 20189 // Threshold 20190 if (params.threshold > 0) { 20191 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 20192 if (!data.allowThresholdMove) { 20193 data.allowThresholdMove = true; 20194 touches.startX = touches.currentX; 20195 touches.startY = touches.currentY; 20196 data.currentTranslate = data.startTranslate; 20197 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 20198 return; 20199 } 20200 } else { 20201 data.currentTranslate = data.startTranslate; 20202 return; 20203 } 20204 } 20205 if (!params.followFinger || params.cssMode) return; 20206 20207 // Update active index in free mode 20208 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 20209 swiper.updateActiveIndex(); 20210 swiper.updateSlidesClasses(); 20211 } 20212 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 20213 swiper.freeMode.onTouchMove(); 20214 } 20215 // Update progress 20216 swiper.updateProgress(data.currentTranslate); 20217 // Update translate 20218 swiper.setTranslate(data.currentTranslate); 20219} 20220 20221function onTouchEnd(event) { 20222 const swiper = this; 20223 const data = swiper.touchEventsData; 20224 let e = event; 20225 if (e.originalEvent) e = e.originalEvent; 20226 let targetTouch; 20227 const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; 20228 if (!isTouchEvent) { 20229 if (data.touchId !== null) return; // return from pointer if we use touch 20230 if (e.pointerId !== data.pointerId) return; 20231 targetTouch = e; 20232 } else { 20233 targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; 20234 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 20235 } 20236 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { 20237 const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 20238 if (!proceed) { 20239 return; 20240 } 20241 } 20242 data.pointerId = null; 20243 data.touchId = null; 20244 const { 20245 params, 20246 touches, 20247 rtlTranslate: rtl, 20248 slidesGrid, 20249 enabled 20250 } = swiper; 20251 if (!enabled) return; 20252 if (!params.simulateTouch && e.pointerType === 'mouse') return; 20253 if (data.allowTouchCallbacks) { 20254 swiper.emit('touchEnd', e); 20255 } 20256 data.allowTouchCallbacks = false; 20257 if (!data.isTouched) { 20258 if (data.isMoved && params.grabCursor) { 20259 swiper.setGrabCursor(false); 20260 } 20261 data.isMoved = false; 20262 data.startMoving = false; 20263 return; 20264 } 20265 20266 // Return Grab Cursor 20267 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 20268 swiper.setGrabCursor(false); 20269 } 20270 20271 // Time diff 20272 const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 20273 const timeDiff = touchEndTime - data.touchStartTime; 20274 20275 // Tap, doubleTap, Click 20276 if (swiper.allowClick) { 20277 const pathTree = e.path || e.composedPath && e.composedPath(); 20278 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 20279 swiper.emit('tap click', e); 20280 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 20281 swiper.emit('doubleTap doubleClick', e); 20282 } 20283 } 20284 data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 20285 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 20286 if (!swiper.destroyed) swiper.allowClick = true; 20287 }); 20288 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 20289 data.isTouched = false; 20290 data.isMoved = false; 20291 data.startMoving = false; 20292 return; 20293 } 20294 data.isTouched = false; 20295 data.isMoved = false; 20296 data.startMoving = false; 20297 let currentPos; 20298 if (params.followFinger) { 20299 currentPos = rtl ? swiper.translate : -swiper.translate; 20300 } else { 20301 currentPos = -data.currentTranslate; 20302 } 20303 if (params.cssMode) { 20304 return; 20305 } 20306 if (params.freeMode && params.freeMode.enabled) { 20307 swiper.freeMode.onTouchEnd({ 20308 currentPos 20309 }); 20310 return; 20311 } 20312 20313 // Find current slide 20314 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 20315 let stopIndex = 0; 20316 let groupSize = swiper.slidesSizesGrid[0]; 20317 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 20318 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 20319 if (typeof slidesGrid[i + increment] !== 'undefined') { 20320 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 20321 stopIndex = i; 20322 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 20323 } 20324 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 20325 stopIndex = i; 20326 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 20327 } 20328 } 20329 let rewindFirstIndex = null; 20330 let rewindLastIndex = null; 20331 if (params.rewind) { 20332 if (swiper.isBeginning) { 20333 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 20334 } else if (swiper.isEnd) { 20335 rewindFirstIndex = 0; 20336 } 20337 } 20338 // Find current slide size 20339 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 20340 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 20341 if (timeDiff > params.longSwipesMs) { 20342 // Long touches 20343 if (!params.longSwipes) { 20344 swiper.slideTo(swiper.activeIndex); 20345 return; 20346 } 20347 if (swiper.swipeDirection === 'next') { 20348 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 20349 } 20350 if (swiper.swipeDirection === 'prev') { 20351 if (ratio > 1 - params.longSwipesRatio) { 20352 swiper.slideTo(stopIndex + increment); 20353 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 20354 swiper.slideTo(rewindLastIndex); 20355 } else { 20356 swiper.slideTo(stopIndex); 20357 } 20358 } 20359 } else { 20360 // Short swipes 20361 if (!params.shortSwipes) { 20362 swiper.slideTo(swiper.activeIndex); 20363 return; 20364 } 20365 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 20366 if (!isNavButtonTarget) { 20367 if (swiper.swipeDirection === 'next') { 20368 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 20369 } 20370 if (swiper.swipeDirection === 'prev') { 20371 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 20372 } 20373 } else if (e.target === swiper.navigation.nextEl) { 20374 swiper.slideTo(stopIndex + increment); 20375 } else { 20376 swiper.slideTo(stopIndex); 20377 } 20378 } 20379} 20380 20381function onResize() { 20382 const swiper = this; 20383 const { 20384 params, 20385 el 20386 } = swiper; 20387 if (el && el.offsetWidth === 0) return; 20388 20389 // Breakpoints 20390 if (params.breakpoints) { 20391 swiper.setBreakpoint(); 20392 } 20393 20394 // Save locks 20395 const { 20396 allowSlideNext, 20397 allowSlidePrev, 20398 snapGrid 20399 } = swiper; 20400 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 20401 20402 // Disable locks on resize 20403 swiper.allowSlideNext = true; 20404 swiper.allowSlidePrev = true; 20405 swiper.updateSize(); 20406 swiper.updateSlides(); 20407 swiper.updateSlidesClasses(); 20408 const isVirtualLoop = isVirtual && params.loop; 20409 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 20410 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 20411 } else { 20412 if (swiper.params.loop && !isVirtual) { 20413 swiper.slideToLoop(swiper.realIndex, 0, false, true); 20414 } else { 20415 swiper.slideTo(swiper.activeIndex, 0, false, true); 20416 } 20417 } 20418 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 20419 clearTimeout(swiper.autoplay.resizeTimeout); 20420 swiper.autoplay.resizeTimeout = setTimeout(() => { 20421 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 20422 swiper.autoplay.resume(); 20423 } 20424 }, 500); 20425 } 20426 // Return locks after resize 20427 swiper.allowSlidePrev = allowSlidePrev; 20428 swiper.allowSlideNext = allowSlideNext; 20429 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 20430 swiper.checkOverflow(); 20431 } 20432} 20433 20434function onClick(e) { 20435 const swiper = this; 20436 if (!swiper.enabled) return; 20437 if (!swiper.allowClick) { 20438 if (swiper.params.preventClicks) e.preventDefault(); 20439 if (swiper.params.preventClicksPropagation && swiper.animating) { 20440 e.stopPropagation(); 20441 e.stopImmediatePropagation(); 20442 } 20443 } 20444} 20445 20446function onScroll() { 20447 const swiper = this; 20448 const { 20449 wrapperEl, 20450 rtlTranslate, 20451 enabled 20452 } = swiper; 20453 if (!enabled) return; 20454 swiper.previousTranslate = swiper.translate; 20455 if (swiper.isHorizontal()) { 20456 swiper.translate = -wrapperEl.scrollLeft; 20457 } else { 20458 swiper.translate = -wrapperEl.scrollTop; 20459 } 20460 // eslint-disable-next-line 20461 if (swiper.translate === 0) swiper.translate = 0; 20462 swiper.updateActiveIndex(); 20463 swiper.updateSlidesClasses(); 20464 let newProgress; 20465 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 20466 if (translatesDiff === 0) { 20467 newProgress = 0; 20468 } else { 20469 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 20470 } 20471 if (newProgress !== swiper.progress) { 20472 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 20473 } 20474 swiper.emit('setTranslate', swiper.translate, false); 20475} 20476 20477function onLoad(e) { 20478 const swiper = this; 20479 processLazyPreloader(swiper, e.target); 20480 if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { 20481 return; 20482 } 20483 swiper.update(); 20484} 20485 20486function onDocumentTouchStart() { 20487 const swiper = this; 20488 if (swiper.documentTouchHandlerProceeded) return; 20489 swiper.documentTouchHandlerProceeded = true; 20490 if (swiper.params.touchReleaseOnEdges) { 20491 swiper.el.style.touchAction = 'auto'; 20492 } 20493} 20494 20495const events = (swiper, method) => { 20496 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 20497 const { 20498 params, 20499 el, 20500 wrapperEl, 20501 device 20502 } = swiper; 20503 const capture = !!params.nested; 20504 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 20505 const swiperMethod = method; 20506 if (!el || typeof el === 'string') return; 20507 20508 // Touch Events 20509 document[domMethod]('touchstart', swiper.onDocumentTouchStart, { 20510 passive: false, 20511 capture 20512 }); 20513 el[domMethod]('touchstart', swiper.onTouchStart, { 20514 passive: false 20515 }); 20516 el[domMethod]('pointerdown', swiper.onTouchStart, { 20517 passive: false 20518 }); 20519 document[domMethod]('touchmove', swiper.onTouchMove, { 20520 passive: false, 20521 capture 20522 }); 20523 document[domMethod]('pointermove', swiper.onTouchMove, { 20524 passive: false, 20525 capture 20526 }); 20527 document[domMethod]('touchend', swiper.onTouchEnd, { 20528 passive: true 20529 }); 20530 document[domMethod]('pointerup', swiper.onTouchEnd, { 20531 passive: true 20532 }); 20533 document[domMethod]('pointercancel', swiper.onTouchEnd, { 20534 passive: true 20535 }); 20536 document[domMethod]('touchcancel', swiper.onTouchEnd, { 20537 passive: true 20538 }); 20539 document[domMethod]('pointerout', swiper.onTouchEnd, { 20540 passive: true 20541 }); 20542 document[domMethod]('pointerleave', swiper.onTouchEnd, { 20543 passive: true 20544 }); 20545 document[domMethod]('contextmenu', swiper.onTouchEnd, { 20546 passive: true 20547 }); 20548 20549 // Prevent Links Clicks 20550 if (params.preventClicks || params.preventClicksPropagation) { 20551 el[domMethod]('click', swiper.onClick, true); 20552 } 20553 if (params.cssMode) { 20554 wrapperEl[domMethod]('scroll', swiper.onScroll); 20555 } 20556 20557 // Resize handler 20558 if (params.updateOnWindowResize) { 20559 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); 20560 } else { 20561 swiper[swiperMethod]('observerUpdate', onResize, true); 20562 } 20563 20564 // Images loader 20565 el[domMethod]('load', swiper.onLoad, { 20566 capture: true 20567 }); 20568}; 20569function attachEvents() { 20570 const swiper = this; 20571 const { 20572 params 20573 } = swiper; 20574 swiper.onTouchStart = onTouchStart.bind(swiper); 20575 swiper.onTouchMove = onTouchMove.bind(swiper); 20576 swiper.onTouchEnd = onTouchEnd.bind(swiper); 20577 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 20578 if (params.cssMode) { 20579 swiper.onScroll = onScroll.bind(swiper); 20580 } 20581 swiper.onClick = onClick.bind(swiper); 20582 swiper.onLoad = onLoad.bind(swiper); 20583 events(swiper, 'on'); 20584} 20585function detachEvents() { 20586 const swiper = this; 20587 events(swiper, 'off'); 20588} 20589var events$1 = { 20590 attachEvents, 20591 detachEvents 20592}; 20593 20594const isGridEnabled = (swiper, params) => { 20595 return swiper.grid && params.grid && params.grid.rows > 1; 20596}; 20597function setBreakpoint() { 20598 const swiper = this; 20599 const { 20600 realIndex, 20601 initialized, 20602 params, 20603 el 20604 } = swiper; 20605 const breakpoints = params.breakpoints; 20606 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; 20607 20608 // Get breakpoint for window width and update parameters 20609 const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); 20610 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 20611 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 20612 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 20613 const wasMultiRow = isGridEnabled(swiper, params); 20614 const isMultiRow = isGridEnabled(swiper, breakpointParams); 20615 const wasGrabCursor = swiper.params.grabCursor; 20616 const isGrabCursor = breakpointParams.grabCursor; 20617 const wasEnabled = params.enabled; 20618 if (wasMultiRow && !isMultiRow) { 20619 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 20620 swiper.emitContainerClasses(); 20621 } else if (!wasMultiRow && isMultiRow) { 20622 el.classList.add(`${params.containerModifierClass}grid`); 20623 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 20624 el.classList.add(`${params.containerModifierClass}grid-column`); 20625 } 20626 swiper.emitContainerClasses(); 20627 } 20628 if (wasGrabCursor && !isGrabCursor) { 20629 swiper.unsetGrabCursor(); 20630 } else if (!wasGrabCursor && isGrabCursor) { 20631 swiper.setGrabCursor(); 20632 } 20633 20634 // Toggle navigation, pagination, scrollbar 20635 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 20636 if (typeof breakpointParams[prop] === 'undefined') return; 20637 const wasModuleEnabled = params[prop] && params[prop].enabled; 20638 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 20639 if (wasModuleEnabled && !isModuleEnabled) { 20640 swiper[prop].disable(); 20641 } 20642 if (!wasModuleEnabled && isModuleEnabled) { 20643 swiper[prop].enable(); 20644 } 20645 }); 20646 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 20647 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 20648 const wasLoop = params.loop; 20649 if (directionChanged && initialized) { 20650 swiper.changeDirection(); 20651 } 20652 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(swiper.params, breakpointParams); 20653 const isEnabled = swiper.params.enabled; 20654 const hasLoop = swiper.params.loop; 20655 Object.assign(swiper, { 20656 allowTouchMove: swiper.params.allowTouchMove, 20657 allowSlideNext: swiper.params.allowSlideNext, 20658 allowSlidePrev: swiper.params.allowSlidePrev 20659 }); 20660 if (wasEnabled && !isEnabled) { 20661 swiper.disable(); 20662 } else if (!wasEnabled && isEnabled) { 20663 swiper.enable(); 20664 } 20665 swiper.currentBreakpoint = breakpoint; 20666 swiper.emit('_beforeBreakpoint', breakpointParams); 20667 if (initialized) { 20668 if (needsReLoop) { 20669 swiper.loopDestroy(); 20670 swiper.loopCreate(realIndex); 20671 swiper.updateSlides(); 20672 } else if (!wasLoop && hasLoop) { 20673 swiper.loopCreate(realIndex); 20674 swiper.updateSlides(); 20675 } else if (wasLoop && !hasLoop) { 20676 swiper.loopDestroy(); 20677 } 20678 } 20679 swiper.emit('breakpoint', breakpointParams); 20680} 20681 20682function getBreakpoint(breakpoints, base, containerEl) { 20683 if (base === void 0) { 20684 base = 'window'; 20685 } 20686 if (!breakpoints || base === 'container' && !containerEl) return undefined; 20687 let breakpoint = false; 20688 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 20689 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 20690 const points = Object.keys(breakpoints).map(point => { 20691 if (typeof point === 'string' && point.indexOf('@') === 0) { 20692 const minRatio = parseFloat(point.substr(1)); 20693 const value = currentHeight * minRatio; 20694 return { 20695 value, 20696 point 20697 }; 20698 } 20699 return { 20700 value: point, 20701 point 20702 }; 20703 }); 20704 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 20705 for (let i = 0; i < points.length; i += 1) { 20706 const { 20707 point, 20708 value 20709 } = points[i]; 20710 if (base === 'window') { 20711 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 20712 breakpoint = point; 20713 } 20714 } else if (value <= containerEl.clientWidth) { 20715 breakpoint = point; 20716 } 20717 } 20718 return breakpoint || 'max'; 20719} 20720 20721var breakpoints = { 20722 setBreakpoint, 20723 getBreakpoint 20724}; 20725 20726function prepareClasses(entries, prefix) { 20727 const resultClasses = []; 20728 entries.forEach(item => { 20729 if (typeof item === 'object') { 20730 Object.keys(item).forEach(classNames => { 20731 if (item[classNames]) { 20732 resultClasses.push(prefix + classNames); 20733 } 20734 }); 20735 } else if (typeof item === 'string') { 20736 resultClasses.push(prefix + item); 20737 } 20738 }); 20739 return resultClasses; 20740} 20741function addClasses() { 20742 const swiper = this; 20743 const { 20744 classNames, 20745 params, 20746 rtl, 20747 el, 20748 device 20749 } = swiper; 20750 // prettier-ignore 20751 const suffixes = prepareClasses(['initialized', params.direction, { 20752 'free-mode': swiper.params.freeMode && params.freeMode.enabled 20753 }, { 20754 'autoheight': params.autoHeight 20755 }, { 20756 'rtl': rtl 20757 }, { 20758 'grid': params.grid && params.grid.rows > 1 20759 }, { 20760 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 20761 }, { 20762 'android': device.android 20763 }, { 20764 'ios': device.ios 20765 }, { 20766 'css-mode': params.cssMode 20767 }, { 20768 'centered': params.cssMode && params.centeredSlides 20769 }, { 20770 'watch-progress': params.watchSlidesProgress 20771 }], params.containerModifierClass); 20772 classNames.push(...suffixes); 20773 el.classList.add(...classNames); 20774 swiper.emitContainerClasses(); 20775} 20776 20777function removeClasses() { 20778 const swiper = this; 20779 const { 20780 el, 20781 classNames 20782 } = swiper; 20783 if (!el || typeof el === 'string') return; 20784 el.classList.remove(...classNames); 20785 swiper.emitContainerClasses(); 20786} 20787 20788var classes = { 20789 addClasses, 20790 removeClasses 20791}; 20792 20793function checkOverflow() { 20794 const swiper = this; 20795 const { 20796 isLocked: wasLocked, 20797 params 20798 } = swiper; 20799 const { 20800 slidesOffsetBefore 20801 } = params; 20802 if (slidesOffsetBefore) { 20803 const lastSlideIndex = swiper.slides.length - 1; 20804 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 20805 swiper.isLocked = swiper.size > lastSlideRightEdge; 20806 } else { 20807 swiper.isLocked = swiper.snapGrid.length === 1; 20808 } 20809 if (params.allowSlideNext === true) { 20810 swiper.allowSlideNext = !swiper.isLocked; 20811 } 20812 if (params.allowSlidePrev === true) { 20813 swiper.allowSlidePrev = !swiper.isLocked; 20814 } 20815 if (wasLocked && wasLocked !== swiper.isLocked) { 20816 swiper.isEnd = false; 20817 } 20818 if (wasLocked !== swiper.isLocked) { 20819 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 20820 } 20821} 20822var checkOverflow$1 = { 20823 checkOverflow 20824}; 20825 20826var defaults = { 20827 init: true, 20828 direction: 'horizontal', 20829 oneWayMovement: false, 20830 swiperElementNodeName: 'SWIPER-CONTAINER', 20831 touchEventsTarget: 'wrapper', 20832 initialSlide: 0, 20833 speed: 300, 20834 cssMode: false, 20835 updateOnWindowResize: true, 20836 resizeObserver: true, 20837 nested: false, 20838 createElements: false, 20839 eventsPrefix: 'swiper', 20840 enabled: true, 20841 focusableElements: 'input, select, option, textarea, button, video, label', 20842 // Overrides 20843 width: null, 20844 height: null, 20845 // 20846 preventInteractionOnTransition: false, 20847 // ssr 20848 userAgent: null, 20849 url: null, 20850 // To support iOS's swipe-to-go-back gesture (when being used in-app). 20851 edgeSwipeDetection: false, 20852 edgeSwipeThreshold: 20, 20853 // Autoheight 20854 autoHeight: false, 20855 // Set wrapper width 20856 setWrapperSize: false, 20857 // Virtual Translate 20858 virtualTranslate: false, 20859 // Effects 20860 effect: 'slide', 20861 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 20862 20863 // Breakpoints 20864 breakpoints: undefined, 20865 breakpointsBase: 'window', 20866 // Slides grid 20867 spaceBetween: 0, 20868 slidesPerView: 1, 20869 slidesPerGroup: 1, 20870 slidesPerGroupSkip: 0, 20871 slidesPerGroupAuto: false, 20872 centeredSlides: false, 20873 centeredSlidesBounds: false, 20874 slidesOffsetBefore: 0, 20875 // in px 20876 slidesOffsetAfter: 0, 20877 // in px 20878 normalizeSlideIndex: true, 20879 centerInsufficientSlides: false, 20880 // Disable swiper and hide navigation when container not overflow 20881 watchOverflow: true, 20882 // Round length 20883 roundLengths: false, 20884 // Touches 20885 touchRatio: 1, 20886 touchAngle: 45, 20887 simulateTouch: true, 20888 shortSwipes: true, 20889 longSwipes: true, 20890 longSwipesRatio: 0.5, 20891 longSwipesMs: 300, 20892 followFinger: true, 20893 allowTouchMove: true, 20894 threshold: 5, 20895 touchMoveStopPropagation: false, 20896 touchStartPreventDefault: true, 20897 touchStartForcePreventDefault: false, 20898 touchReleaseOnEdges: false, 20899 // Unique Navigation Elements 20900 uniqueNavElements: true, 20901 // Resistance 20902 resistance: true, 20903 resistanceRatio: 0.85, 20904 // Progress 20905 watchSlidesProgress: false, 20906 // Cursor 20907 grabCursor: false, 20908 // Clicks 20909 preventClicks: true, 20910 preventClicksPropagation: true, 20911 slideToClickedSlide: false, 20912 // loop 20913 loop: false, 20914 loopAddBlankSlides: true, 20915 loopAdditionalSlides: 0, 20916 loopPreventsSliding: true, 20917 // rewind 20918 rewind: false, 20919 // Swiping/no swiping 20920 allowSlidePrev: true, 20921 allowSlideNext: true, 20922 swipeHandler: null, 20923 // '.swipe-handler', 20924 noSwiping: true, 20925 noSwipingClass: 'swiper-no-swiping', 20926 noSwipingSelector: null, 20927 // Passive Listeners 20928 passiveListeners: true, 20929 maxBackfaceHiddenSlides: 10, 20930 // NS 20931 containerModifierClass: 'swiper-', 20932 // NEW 20933 slideClass: 'swiper-slide', 20934 slideBlankClass: 'swiper-slide-blank', 20935 slideActiveClass: 'swiper-slide-active', 20936 slideVisibleClass: 'swiper-slide-visible', 20937 slideFullyVisibleClass: 'swiper-slide-fully-visible', 20938 slideNextClass: 'swiper-slide-next', 20939 slidePrevClass: 'swiper-slide-prev', 20940 wrapperClass: 'swiper-wrapper', 20941 lazyPreloaderClass: 'swiper-lazy-preloader', 20942 lazyPreloadPrevNext: 0, 20943 // Callbacks 20944 runCallbacksOnInit: true, 20945 // Internals 20946 _emitClasses: false 20947}; 20948 20949function moduleExtendParams(params, allModulesParams) { 20950 return function extendParams(obj) { 20951 if (obj === void 0) { 20952 obj = {}; 20953 } 20954 const moduleParamName = Object.keys(obj)[0]; 20955 const moduleParams = obj[moduleParamName]; 20956 if (typeof moduleParams !== 'object' || moduleParams === null) { 20957 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 20958 return; 20959 } 20960 if (params[moduleParamName] === true) { 20961 params[moduleParamName] = { 20962 enabled: true 20963 }; 20964 } 20965 if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 20966 params[moduleParamName].auto = true; 20967 } 20968 if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 20969 params[moduleParamName].auto = true; 20970 } 20971 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 20972 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 20973 return; 20974 } 20975 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 20976 params[moduleParamName].enabled = true; 20977 } 20978 if (!params[moduleParamName]) params[moduleParamName] = { 20979 enabled: false 20980 }; 20981 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 20982 }; 20983} 20984 20985/* eslint no-param-reassign: "off" */ 20986const prototypes = { 20987 eventsEmitter, 20988 update, 20989 translate, 20990 transition, 20991 slide, 20992 loop, 20993 grabCursor, 20994 events: events$1, 20995 breakpoints, 20996 checkOverflow: checkOverflow$1, 20997 classes 20998}; 20999const extendedDefaults = {}; 21000class Swiper { 21001 constructor() { 21002 let el; 21003 let params; 21004 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 21005 args[_key] = arguments[_key]; 21006 } 21007 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 21008 params = args[0]; 21009 } else { 21010 [el, params] = args; 21011 } 21012 if (!params) params = {}; 21013 params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 21014 if (el && !params.el) params.el = el; 21015 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 21016 if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { 21017 const swipers = []; 21018 document.querySelectorAll(params.el).forEach(containerEl => { 21019 const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params, { 21020 el: containerEl 21021 }); 21022 swipers.push(new Swiper(newParams)); 21023 }); 21024 // eslint-disable-next-line no-constructor-return 21025 return swipers; 21026 } 21027 21028 // Swiper Instance 21029 const swiper = this; 21030 swiper.__swiper__ = true; 21031 swiper.support = getSupport(); 21032 swiper.device = getDevice({ 21033 userAgent: params.userAgent 21034 }); 21035 swiper.browser = getBrowser(); 21036 swiper.eventsListeners = {}; 21037 swiper.eventsAnyListeners = []; 21038 swiper.modules = [...swiper.__modules__]; 21039 if (params.modules && Array.isArray(params.modules)) { 21040 swiper.modules.push(...params.modules); 21041 } 21042 const allModulesParams = {}; 21043 swiper.modules.forEach(mod => { 21044 mod({ 21045 params, 21046 swiper, 21047 extendParams: moduleExtendParams(params, allModulesParams), 21048 on: swiper.on.bind(swiper), 21049 once: swiper.once.bind(swiper), 21050 off: swiper.off.bind(swiper), 21051 emit: swiper.emit.bind(swiper) 21052 }); 21053 }); 21054 21055 // Extend defaults with modules params 21056 const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, defaults, allModulesParams); 21057 21058 // Extend defaults with passed params 21059 swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiperParams, extendedDefaults, params); 21060 swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiper.params); 21061 swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 21062 21063 // add event listeners 21064 if (swiper.params && swiper.params.on) { 21065 Object.keys(swiper.params.on).forEach(eventName => { 21066 swiper.on(eventName, swiper.params.on[eventName]); 21067 }); 21068 } 21069 if (swiper.params && swiper.params.onAny) { 21070 swiper.onAny(swiper.params.onAny); 21071 } 21072 21073 // Extend Swiper 21074 Object.assign(swiper, { 21075 enabled: swiper.params.enabled, 21076 el, 21077 // Classes 21078 classNames: [], 21079 // Slides 21080 slides: [], 21081 slidesGrid: [], 21082 snapGrid: [], 21083 slidesSizesGrid: [], 21084 // isDirection 21085 isHorizontal() { 21086 return swiper.params.direction === 'horizontal'; 21087 }, 21088 isVertical() { 21089 return swiper.params.direction === 'vertical'; 21090 }, 21091 // Indexes 21092 activeIndex: 0, 21093 realIndex: 0, 21094 // 21095 isBeginning: true, 21096 isEnd: false, 21097 // Props 21098 translate: 0, 21099 previousTranslate: 0, 21100 progress: 0, 21101 velocity: 0, 21102 animating: false, 21103 cssOverflowAdjustment() { 21104 // Returns 0 unless `translate` is > 2**23 21105 // Should be subtracted from css values to prevent overflow 21106 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 21107 }, 21108 // Locks 21109 allowSlideNext: swiper.params.allowSlideNext, 21110 allowSlidePrev: swiper.params.allowSlidePrev, 21111 // Touch Events 21112 touchEventsData: { 21113 isTouched: undefined, 21114 isMoved: undefined, 21115 allowTouchCallbacks: undefined, 21116 touchStartTime: undefined, 21117 isScrolling: undefined, 21118 currentTranslate: undefined, 21119 startTranslate: undefined, 21120 allowThresholdMove: undefined, 21121 // Form elements to match 21122 focusableElements: swiper.params.focusableElements, 21123 // Last click time 21124 lastClickTime: 0, 21125 clickTimeout: undefined, 21126 // Velocities 21127 velocities: [], 21128 allowMomentumBounce: undefined, 21129 startMoving: undefined, 21130 pointerId: null, 21131 touchId: null 21132 }, 21133 // Clicks 21134 allowClick: true, 21135 // Touches 21136 allowTouchMove: swiper.params.allowTouchMove, 21137 touches: { 21138 startX: 0, 21139 startY: 0, 21140 currentX: 0, 21141 currentY: 0, 21142 diff: 0 21143 }, 21144 // Images 21145 imagesToLoad: [], 21146 imagesLoaded: 0 21147 }); 21148 swiper.emit('_swiper'); 21149 21150 // Init 21151 if (swiper.params.init) { 21152 swiper.init(); 21153 } 21154 21155 // Return app instance 21156 // eslint-disable-next-line no-constructor-return 21157 return swiper; 21158 } 21159 getDirectionLabel(property) { 21160 if (this.isHorizontal()) { 21161 return property; 21162 } 21163 // prettier-ignore 21164 return { 21165 'width': 'height', 21166 'margin-top': 'margin-left', 21167 'margin-bottom ': 'margin-right', 21168 'margin-left': 'margin-top', 21169 'margin-right': 'margin-bottom', 21170 'padding-left': 'padding-top', 21171 'padding-right': 'padding-bottom', 21172 'marginRight': 'marginBottom' 21173 }[property]; 21174 } 21175 getSlideIndex(slideEl) { 21176 const { 21177 slidesEl, 21178 params 21179 } = this; 21180 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 21181 const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slides[0]); 21182 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slideEl) - firstSlideIndex; 21183 } 21184 getSlideIndexByData(index) { 21185 return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); 21186 } 21187 recalcSlides() { 21188 const swiper = this; 21189 const { 21190 slidesEl, 21191 params 21192 } = swiper; 21193 swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 21194 } 21195 enable() { 21196 const swiper = this; 21197 if (swiper.enabled) return; 21198 swiper.enabled = true; 21199 if (swiper.params.grabCursor) { 21200 swiper.setGrabCursor(); 21201 } 21202 swiper.emit('enable'); 21203 } 21204 disable() { 21205 const swiper = this; 21206 if (!swiper.enabled) return; 21207 swiper.enabled = false; 21208 if (swiper.params.grabCursor) { 21209 swiper.unsetGrabCursor(); 21210 } 21211 swiper.emit('disable'); 21212 } 21213 setProgress(progress, speed) { 21214 const swiper = this; 21215 progress = Math.min(Math.max(progress, 0), 1); 21216 const min = swiper.minTranslate(); 21217 const max = swiper.maxTranslate(); 21218 const current = (max - min) * progress + min; 21219 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 21220 swiper.updateActiveIndex(); 21221 swiper.updateSlidesClasses(); 21222 } 21223 emitContainerClasses() { 21224 const swiper = this; 21225 if (!swiper.params._emitClasses || !swiper.el) return; 21226 const cls = swiper.el.className.split(' ').filter(className => { 21227 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 21228 }); 21229 swiper.emit('_containerClasses', cls.join(' ')); 21230 } 21231 getSlideClasses(slideEl) { 21232 const swiper = this; 21233 if (swiper.destroyed) return ''; 21234 return slideEl.className.split(' ').filter(className => { 21235 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 21236 }).join(' '); 21237 } 21238 emitSlidesClasses() { 21239 const swiper = this; 21240 if (!swiper.params._emitClasses || !swiper.el) return; 21241 const updates = []; 21242 swiper.slides.forEach(slideEl => { 21243 const classNames = swiper.getSlideClasses(slideEl); 21244 updates.push({ 21245 slideEl, 21246 classNames 21247 }); 21248 swiper.emit('_slideClass', slideEl, classNames); 21249 }); 21250 swiper.emit('_slideClasses', updates); 21251 } 21252 slidesPerViewDynamic(view, exact) { 21253 if (view === void 0) { 21254 view = 'current'; 21255 } 21256 if (exact === void 0) { 21257 exact = false; 21258 } 21259 const swiper = this; 21260 const { 21261 params, 21262 slides, 21263 slidesGrid, 21264 slidesSizesGrid, 21265 size: swiperSize, 21266 activeIndex 21267 } = swiper; 21268 let spv = 1; 21269 if (typeof params.slidesPerView === 'number') return params.slidesPerView; 21270 if (params.centeredSlides) { 21271 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 21272 let breakLoop; 21273 for (let i = activeIndex + 1; i < slides.length; i += 1) { 21274 if (slides[i] && !breakLoop) { 21275 slideSize += Math.ceil(slides[i].swiperSlideSize); 21276 spv += 1; 21277 if (slideSize > swiperSize) breakLoop = true; 21278 } 21279 } 21280 for (let i = activeIndex - 1; i >= 0; i -= 1) { 21281 if (slides[i] && !breakLoop) { 21282 slideSize += slides[i].swiperSlideSize; 21283 spv += 1; 21284 if (slideSize > swiperSize) breakLoop = true; 21285 } 21286 } 21287 } else { 21288 // eslint-disable-next-line 21289 if (view === 'current') { 21290 for (let i = activeIndex + 1; i < slides.length; i += 1) { 21291 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 21292 if (slideInView) { 21293 spv += 1; 21294 } 21295 } 21296 } else { 21297 // previous 21298 for (let i = activeIndex - 1; i >= 0; i -= 1) { 21299 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 21300 if (slideInView) { 21301 spv += 1; 21302 } 21303 } 21304 } 21305 } 21306 return spv; 21307 } 21308 update() { 21309 const swiper = this; 21310 if (!swiper || swiper.destroyed) return; 21311 const { 21312 snapGrid, 21313 params 21314 } = swiper; 21315 // Breakpoints 21316 if (params.breakpoints) { 21317 swiper.setBreakpoint(); 21318 } 21319 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { 21320 if (imageEl.complete) { 21321 processLazyPreloader(swiper, imageEl); 21322 } 21323 }); 21324 swiper.updateSize(); 21325 swiper.updateSlides(); 21326 swiper.updateProgress(); 21327 swiper.updateSlidesClasses(); 21328 function setTranslate() { 21329 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 21330 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 21331 swiper.setTranslate(newTranslate); 21332 swiper.updateActiveIndex(); 21333 swiper.updateSlidesClasses(); 21334 } 21335 let translated; 21336 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 21337 setTranslate(); 21338 if (params.autoHeight) { 21339 swiper.updateAutoHeight(); 21340 } 21341 } else { 21342 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 21343 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 21344 translated = swiper.slideTo(slides.length - 1, 0, false, true); 21345 } else { 21346 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 21347 } 21348 if (!translated) { 21349 setTranslate(); 21350 } 21351 } 21352 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 21353 swiper.checkOverflow(); 21354 } 21355 swiper.emit('update'); 21356 } 21357 changeDirection(newDirection, needUpdate) { 21358 if (needUpdate === void 0) { 21359 needUpdate = true; 21360 } 21361 const swiper = this; 21362 const currentDirection = swiper.params.direction; 21363 if (!newDirection) { 21364 // eslint-disable-next-line 21365 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 21366 } 21367 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 21368 return swiper; 21369 } 21370 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 21371 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 21372 swiper.emitContainerClasses(); 21373 swiper.params.direction = newDirection; 21374 swiper.slides.forEach(slideEl => { 21375 if (newDirection === 'vertical') { 21376 slideEl.style.width = ''; 21377 } else { 21378 slideEl.style.height = ''; 21379 } 21380 }); 21381 swiper.emit('changeDirection'); 21382 if (needUpdate) swiper.update(); 21383 return swiper; 21384 } 21385 changeLanguageDirection(direction) { 21386 const swiper = this; 21387 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 21388 swiper.rtl = direction === 'rtl'; 21389 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 21390 if (swiper.rtl) { 21391 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 21392 swiper.el.dir = 'rtl'; 21393 } else { 21394 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 21395 swiper.el.dir = 'ltr'; 21396 } 21397 swiper.update(); 21398 } 21399 mount(element) { 21400 const swiper = this; 21401 if (swiper.mounted) return true; 21402 21403 // Find el 21404 let el = element || swiper.params.el; 21405 if (typeof el === 'string') { 21406 el = document.querySelector(el); 21407 } 21408 if (!el) { 21409 return false; 21410 } 21411 el.swiper = swiper; 21412 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 21413 swiper.isElement = true; 21414 } 21415 const getWrapperSelector = () => { 21416 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 21417 }; 21418 const getWrapper = () => { 21419 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 21420 const res = el.shadowRoot.querySelector(getWrapperSelector()); 21421 // Children needs to return slot items 21422 return res; 21423 } 21424 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0]; 21425 }; 21426 // Find Wrapper 21427 let wrapperEl = getWrapper(); 21428 if (!wrapperEl && swiper.params.createElements) { 21429 wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass); 21430 el.append(wrapperEl); 21431 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => { 21432 wrapperEl.append(slideEl); 21433 }); 21434 } 21435 Object.assign(swiper, { 21436 el, 21437 wrapperEl, 21438 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 21439 hostEl: swiper.isElement ? el.parentNode.host : el, 21440 mounted: true, 21441 // RTL 21442 rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl', 21443 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl'), 21444 wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(wrapperEl, 'display') === '-webkit-box' 21445 }); 21446 return true; 21447 } 21448 init(el) { 21449 const swiper = this; 21450 if (swiper.initialized) return swiper; 21451 const mounted = swiper.mount(el); 21452 if (mounted === false) return swiper; 21453 swiper.emit('beforeInit'); 21454 21455 // Set breakpoint 21456 if (swiper.params.breakpoints) { 21457 swiper.setBreakpoint(); 21458 } 21459 21460 // Add Classes 21461 swiper.addClasses(); 21462 21463 // Update size 21464 swiper.updateSize(); 21465 21466 // Update slides 21467 swiper.updateSlides(); 21468 if (swiper.params.watchOverflow) { 21469 swiper.checkOverflow(); 21470 } 21471 21472 // Set Grab Cursor 21473 if (swiper.params.grabCursor && swiper.enabled) { 21474 swiper.setGrabCursor(); 21475 } 21476 21477 // Slide To Initial Slide 21478 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 21479 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 21480 } else { 21481 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 21482 } 21483 21484 // Create loop 21485 if (swiper.params.loop) { 21486 swiper.loopCreate(); 21487 } 21488 21489 // Attach events 21490 swiper.attachEvents(); 21491 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 21492 if (swiper.isElement) { 21493 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 21494 } 21495 lazyElements.forEach(imageEl => { 21496 if (imageEl.complete) { 21497 processLazyPreloader(swiper, imageEl); 21498 } else { 21499 imageEl.addEventListener('load', e => { 21500 processLazyPreloader(swiper, e.target); 21501 }); 21502 } 21503 }); 21504 preload(swiper); 21505 21506 // Init Flag 21507 swiper.initialized = true; 21508 preload(swiper); 21509 21510 // Emit 21511 swiper.emit('init'); 21512 swiper.emit('afterInit'); 21513 return swiper; 21514 } 21515 destroy(deleteInstance, cleanStyles) { 21516 if (deleteInstance === void 0) { 21517 deleteInstance = true; 21518 } 21519 if (cleanStyles === void 0) { 21520 cleanStyles = true; 21521 } 21522 const swiper = this; 21523 const { 21524 params, 21525 el, 21526 wrapperEl, 21527 slides 21528 } = swiper; 21529 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 21530 return null; 21531 } 21532 swiper.emit('beforeDestroy'); 21533 21534 // Init Flag 21535 swiper.initialized = false; 21536 21537 // Detach events 21538 swiper.detachEvents(); 21539 21540 // Destroy loop 21541 if (params.loop) { 21542 swiper.loopDestroy(); 21543 } 21544 21545 // Cleanup styles 21546 if (cleanStyles) { 21547 swiper.removeClasses(); 21548 if (el && typeof el !== 'string') { 21549 el.removeAttribute('style'); 21550 } 21551 if (wrapperEl) { 21552 wrapperEl.removeAttribute('style'); 21553 } 21554 if (slides && slides.length) { 21555 slides.forEach(slideEl => { 21556 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 21557 slideEl.removeAttribute('style'); 21558 slideEl.removeAttribute('data-swiper-slide-index'); 21559 }); 21560 } 21561 } 21562 swiper.emit('destroy'); 21563 21564 // Detach emitter events 21565 Object.keys(swiper.eventsListeners).forEach(eventName => { 21566 swiper.off(eventName); 21567 }); 21568 if (deleteInstance !== false) { 21569 if (swiper.el && typeof swiper.el !== 'string') { 21570 swiper.el.swiper = null; 21571 } 21572 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper); 21573 } 21574 swiper.destroyed = true; 21575 return null; 21576 } 21577 static extendDefaults(newDefaults) { 21578 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(extendedDefaults, newDefaults); 21579 } 21580 static get extendedDefaults() { 21581 return extendedDefaults; 21582 } 21583 static get defaults() { 21584 return defaults; 21585 } 21586 static installModule(mod) { 21587 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 21588 const modules = Swiper.prototype.__modules__; 21589 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 21590 modules.push(mod); 21591 } 21592 } 21593 static use(module) { 21594 if (Array.isArray(module)) { 21595 module.forEach(m => Swiper.installModule(m)); 21596 return Swiper; 21597 } 21598 Swiper.installModule(module); 21599 return Swiper; 21600 } 21601} 21602Object.keys(prototypes).forEach(prototypeGroup => { 21603 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 21604 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 21605 }); 21606}); 21607Swiper.use([Resize, Observer]); 21608 21609 21610 21611 21612/***/ }), 21613
vendor: 12,726 bytes, lines 21614-21966
21614/***/ "./node_modules/swiper/shared/utils.mjs": 21615/*!**********************************************!*\ 21616 !*** ./node_modules/swiper/shared/utils.mjs ***! 21617 \**********************************************/ 21618/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 21619 21620__webpack_require__.r(__webpack_exports__); 21621/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21622/* harmony export */ a: function() { return /* binding */ elementParents; }, 21623/* harmony export */ b: function() { return /* binding */ elementOffset; }, 21624/* harmony export */ c: function() { return /* binding */ createElement; }, 21625/* harmony export */ d: function() { return /* binding */ now; }, 21626/* harmony export */ e: function() { return /* binding */ elementChildren; }, 21627/* harmony export */ f: function() { return /* binding */ elementOuterSize; }, 21628/* harmony export */ g: function() { return /* binding */ getSlideTransformEl; }, 21629/* harmony export */ h: function() { return /* binding */ elementIndex; }, 21630/* harmony export */ i: function() { return /* binding */ classesToTokens; }, 21631/* harmony export */ j: function() { return /* binding */ getTranslate; }, 21632/* harmony export */ k: function() { return /* binding */ elementTransitionEnd; }, 21633/* harmony export */ l: function() { return /* binding */ isObject; }, 21634/* harmony export */ m: function() { return /* binding */ makeElementsArray; }, 21635/* harmony export */ n: function() { return /* binding */ nextTick; }, 21636/* harmony export */ o: function() { return /* binding */ getRotateFix; }, 21637/* harmony export */ p: function() { return /* binding */ elementStyle; }, 21638/* harmony export */ q: function() { return /* binding */ elementNextAll; }, 21639/* harmony export */ r: function() { return /* binding */ elementPrevAll; }, 21640/* harmony export */ s: function() { return /* binding */ setCSSProperty; }, 21641/* harmony export */ t: function() { return /* binding */ animateCSSModeScroll; }, 21642/* harmony export */ u: function() { return /* binding */ showWarning; }, 21643/* harmony export */ v: function() { return /* binding */ elementIsChildOf; }, 21644/* harmony export */ w: function() { return /* binding */ extend; }, 21645/* harmony export */ x: function() { return /* binding */ deleteProps; } 21646/* harmony export */ }); 21647/* harmony import */ var _ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ssr-window.esm.mjs */ "./node_modules/swiper/shared/ssr-window.esm.mjs"); 21648 21649 21650function classesToTokens(classes) { 21651 if (classes === void 0) { 21652 classes = ''; 21653 } 21654 return classes.trim().split(' ').filter(c => !!c.trim()); 21655} 21656 21657function deleteProps(obj) { 21658 const object = obj; 21659 Object.keys(object).forEach(key => { 21660 try { 21661 object[key] = null; 21662 } catch (e) { 21663 // no getter for object 21664 } 21665 try { 21666 delete object[key]; 21667 } catch (e) { 21668 // something got wrong 21669 } 21670 }); 21671} 21672function nextTick(callback, delay) { 21673 if (delay === void 0) { 21674 delay = 0; 21675 } 21676 return setTimeout(callback, delay); 21677} 21678function now() { 21679 return Date.now(); 21680} 21681function getComputedStyle(el) { 21682 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 21683 let style; 21684 if (window.getComputedStyle) { 21685 style = window.getComputedStyle(el, null); 21686 } 21687 if (!style && el.currentStyle) { 21688 style = el.currentStyle; 21689 } 21690 if (!style) { 21691 style = el.style; 21692 } 21693 return style; 21694} 21695function getTranslate(el, axis) { 21696 if (axis === void 0) { 21697 axis = 'x'; 21698 } 21699 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 21700 let matrix; 21701 let curTransform; 21702 let transformMatrix; 21703 const curStyle = getComputedStyle(el); 21704 if (window.WebKitCSSMatrix) { 21705 curTransform = curStyle.transform || curStyle.webkitTransform; 21706 if (curTransform.split(',').length > 6) { 21707 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 21708 } 21709 // Some old versions of Webkit choke when 'none' is passed; pass 21710 // empty string instead in this case 21711 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 21712 } else { 21713 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 21714 matrix = transformMatrix.toString().split(','); 21715 } 21716 if (axis === 'x') { 21717 // Latest Chrome and webkits Fix 21718 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; 21719 // Crazy IE10 Matrix 21720 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 21721 // Normal Browsers 21722 else curTransform = parseFloat(matrix[4]); 21723 } 21724 if (axis === 'y') { 21725 // Latest Chrome and webkits Fix 21726 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; 21727 // Crazy IE10 Matrix 21728 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 21729 // Normal Browsers 21730 else curTransform = parseFloat(matrix[5]); 21731 } 21732 return curTransform || 0; 21733} 21734function isObject(o) { 21735 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 21736} 21737function isNode(node) { 21738 // eslint-disable-next-line 21739 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 21740 return node instanceof HTMLElement; 21741 } 21742 return node && (node.nodeType === 1 || node.nodeType === 11); 21743} 21744function extend() { 21745 const to = Object(arguments.length <= 0 ? undefined : arguments[0]); 21746 const noExtend = ['__proto__', 'constructor', 'prototype']; 21747 for (let i = 1; i < arguments.length; i += 1) { 21748 const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 21749 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 21750 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 21751 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 21752 const nextKey = keysArray[nextIndex]; 21753 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 21754 if (desc !== undefined && desc.enumerable) { 21755 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 21756 if (nextSource[nextKey].__swiper__) { 21757 to[nextKey] = nextSource[nextKey]; 21758 } else { 21759 extend(to[nextKey], nextSource[nextKey]); 21760 } 21761 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 21762 to[nextKey] = {}; 21763 if (nextSource[nextKey].__swiper__) { 21764 to[nextKey] = nextSource[nextKey]; 21765 } else { 21766 extend(to[nextKey], nextSource[nextKey]); 21767 } 21768 } else { 21769 to[nextKey] = nextSource[nextKey]; 21770 } 21771 } 21772 } 21773 } 21774 } 21775 return to; 21776} 21777function setCSSProperty(el, varName, varValue) { 21778 el.style.setProperty(varName, varValue); 21779} 21780function animateCSSModeScroll(_ref) { 21781 let { 21782 swiper, 21783 targetPosition, 21784 side 21785 } = _ref; 21786 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 21787 const startPosition = -swiper.translate; 21788 let startTime = null; 21789 let time; 21790 const duration = swiper.params.speed; 21791 swiper.wrapperEl.style.scrollSnapType = 'none'; 21792 window.cancelAnimationFrame(swiper.cssModeFrameID); 21793 const dir = targetPosition > startPosition ? 'next' : 'prev'; 21794 const isOutOfBound = (current, target) => { 21795 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 21796 }; 21797 const animate = () => { 21798 time = new Date().getTime(); 21799 if (startTime === null) { 21800 startTime = time; 21801 } 21802 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 21803 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 21804 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 21805 if (isOutOfBound(currentPosition, targetPosition)) { 21806 currentPosition = targetPosition; 21807 } 21808 swiper.wrapperEl.scrollTo({ 21809 [side]: currentPosition 21810 }); 21811 if (isOutOfBound(currentPosition, targetPosition)) { 21812 swiper.wrapperEl.style.overflow = 'hidden'; 21813 swiper.wrapperEl.style.scrollSnapType = ''; 21814 setTimeout(() => { 21815 swiper.wrapperEl.style.overflow = ''; 21816 swiper.wrapperEl.scrollTo({ 21817 [side]: currentPosition 21818 }); 21819 }); 21820 window.cancelAnimationFrame(swiper.cssModeFrameID); 21821 return; 21822 } 21823 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 21824 }; 21825 animate(); 21826} 21827function getSlideTransformEl(slideEl) { 21828 return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; 21829} 21830function elementChildren(element, selector) { 21831 if (selector === void 0) { 21832 selector = ''; 21833 } 21834 const children = [...element.children]; 21835 if (element instanceof HTMLSlotElement) { 21836 children.push(...element.assignedElements()); 21837 } 21838 if (!selector) { 21839 return children; 21840 } 21841 return children.filter(el => el.matches(selector)); 21842} 21843function elementIsChildOf(el, parent) { 21844 const isChild = parent.contains(el); 21845 if (!isChild && parent instanceof HTMLSlotElement) { 21846 const children = [...element.assignedElements()]; 21847 return children.includes(el); 21848 } 21849 return isChild; 21850} 21851function showWarning(text) { 21852 try { 21853 console.warn(text); 21854 return; 21855 } catch (err) { 21856 // err 21857 } 21858} 21859function createElement(tag, classes) { 21860 if (classes === void 0) { 21861 classes = []; 21862 } 21863 const el = document.createElement(tag); 21864 el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); 21865 return el; 21866} 21867function elementOffset(el) { 21868 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 21869 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 21870 const box = el.getBoundingClientRect(); 21871 const body = document.body; 21872 const clientTop = el.clientTop || body.clientTop || 0; 21873 const clientLeft = el.clientLeft || body.clientLeft || 0; 21874 const scrollTop = el === window ? window.scrollY : el.scrollTop; 21875 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 21876 return { 21877 top: box.top + scrollTop - clientTop, 21878 left: box.left + scrollLeft - clientLeft 21879 }; 21880} 21881function elementPrevAll(el, selector) { 21882 const prevEls = []; 21883 while (el.previousElementSibling) { 21884 const prev = el.previousElementSibling; // eslint-disable-line 21885 if (selector) { 21886 if (prev.matches(selector)) prevEls.push(prev); 21887 } else prevEls.push(prev); 21888 el = prev; 21889 } 21890 return prevEls; 21891} 21892function elementNextAll(el, selector) { 21893 const nextEls = []; 21894 while (el.nextElementSibling) { 21895 const next = el.nextElementSibling; // eslint-disable-line 21896 if (selector) { 21897 if (next.matches(selector)) nextEls.push(next); 21898 } else nextEls.push(next); 21899 el = next; 21900 } 21901 return nextEls; 21902} 21903function elementStyle(el, prop) { 21904 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 21905 return window.getComputedStyle(el, null).getPropertyValue(prop); 21906} 21907function elementIndex(el) { 21908 let child = el; 21909 let i; 21910 if (child) { 21911 i = 0; 21912 // eslint-disable-next-line 21913 while ((child = child.previousSibling) !== null) { 21914 if (child.nodeType === 1) i += 1; 21915 } 21916 return i; 21917 } 21918 return undefined; 21919} 21920function elementParents(el, selector) { 21921 const parents = []; // eslint-disable-line 21922 let parent = el.parentElement; // eslint-disable-line 21923 while (parent) { 21924 if (selector) { 21925 if (parent.matches(selector)) parents.push(parent); 21926 } else { 21927 parents.push(parent); 21928 } 21929 parent = parent.parentElement; 21930 } 21931 return parents; 21932} 21933function elementTransitionEnd(el, callback) { 21934 function fireCallBack(e) { 21935 if (e.target !== el) return; 21936 callback.call(el, e); 21937 el.removeEventListener('transitionend', fireCallBack); 21938 } 21939 if (callback) { 21940 el.addEventListener('transitionend', fireCallBack); 21941 } 21942} 21943function elementOuterSize(el, size, includeMargins) { 21944 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 21945 if (includeMargins) { 21946 return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); 21947 } 21948 return el.offsetWidth; 21949} 21950function makeElementsArray(el) { 21951 return (Array.isArray(el) ? el : [el]).filter(e => !!e); 21952} 21953function getRotateFix(swiper) { 21954 return v => { 21955 if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { 21956 return v + 0.001; 21957 } 21958 return v; 21959 }; 21960} 21961 21962 21963 21964 21965/***/ }), 21966
vendor: 1,120 bytes, lines 21967-21994
21967/***/ "./node_modules/swiper/swiper.mjs": 21968/*!****************************************!*\ 21969 !*** ./node_modules/swiper/swiper.mjs ***! 21970 \****************************************/ 21971/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 21972 21973__webpack_require__.r(__webpack_exports__); 21974/* harmony export */ __webpack_require__.d(__webpack_exports__, { 21975/* harmony export */ Swiper: function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; }, 21976/* harmony export */ "default": function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; } 21977/* harmony export */ }); 21978/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs"); 21979/** 21980 * Swiper 11.1.7 21981 * Most modern mobile touch slider and framework with hardware accelerated transitions 21982 * https://swiperjs.com 21983 * 21984 * Copyright 2014-2024 Vladimir Kharlampidi 21985 * 21986 * Released under the MIT License 21987 * 21988 * Released on: July 24, 2024 21989 */ 21990 21991 21992 21993 21994/***/ })
21994 21995 21996/******/ }); 21997/************************************************************************/ 21998/******/ // The module cache 21999/******/ var __webpack_module_cache__ = {}; 22000/******/ 22001/******/ // The require function 22002/******/ function __webpack_require__(moduleId) { 22003/******/ // Check if module is in cache 22004/******/ var cachedModule = __webpack_module_cache__[moduleId]; 22005/******/ if (cachedModule !== undefined) { 22006/******/ return cachedModule.exports; 22007/******/ } 22008/******/ // Create a new module (and put it into the cache) 22009/******/ var module = __webpack_module_cache__[moduleId] = { 22010/******/ // no module.id needed 22011/******/ // no module.loaded needed 22012/******/ exports: {} 22013/******/ }; 22014/******/ 22015/******/ // Execute the module function 22016/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); 22017/******/ 22018/******/ // Return the exports of the module 22019/******/ return module.exports; 22020/******/ } 22021/******/ 22022/******/ // expose the modules object (__webpack_modules__) 22023/******/ __webpack_require__.m = __webpack_modules__; 22024/******/ 22025/************************************************************************/ 22026/******/ /* webpack/runtime/chunk loaded */ 22027/******/ !function() { 22028/******/ var deferred = []; 22029/******/ __webpack_require__.O = function(result, chunkIds, fn, priority) { 22030/******/ if(chunkIds) { 22031/******/ priority = priority || 0; 22032/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; 22033/******/ deferred[i] = [chunkIds, fn, priority]; 22034/******/ return; 22035/******/ } 22036/******/ var notFulfilled = Infinity; 22037/******/ for (var i = 0; i < deferred.length; i++) { 22038/******/ var chunkIds = deferred[i][0]; 22039/******/ var fn = deferred[i][1]; 22040/******/ var priority = deferred[i][2]; 22041/******/ var fulfilled = true; 22042/******/ for (var j = 0; j < chunkIds.length; j++) { 22043/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) { 22044/******/ chunkIds.splice(j--, 1); 22045/******/ } else { 22046/******/ fulfilled = false; 22047/******/ if(priority < notFulfilled) notFulfilled = priority; 22048/******/ } 22049/******/ } 22050/******/ if(fulfilled) { 22051/******/ deferred.splice(i--, 1) 22052/******/ var r = fn(); 22053/******/ if (r !== undefined) result = r; 22054/******/ } 22055/******/ } 22056/******/ return result; 22057/******/ }; 22058/******/ }(); 22059/******/ 22060/******/ /* webpack/runtime/define property getters */ 22061/******/ !function() { 22062/******/ // define getter functions for harmony exports 22063/******/ __webpack_require__.d = function(exports, definition) { 22064/******/ for(var key in definition) { 22065/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 22066/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 22067/******/ } 22068/******/ } 22069/******/ }; 22070/******/ }(); 22071/******/ 22072/******/ /* webpack/runtime/hasOwnProperty shorthand */ 22073/******/ !function() { 22074/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 22075/******/ }(); 22076/******/ 22077/******/ /* webpack/runtime/make namespace object */ 22078/******/ !function() { 22079/******/ // define __esModule on exports 22080/******/ __webpack_require__.r = function(exports) { 22081/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 22082/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 22083/******/ } 22084/******/ Object.defineProperty(exports, '__esModule', { value: true }); 22085/******/ }; 22086/******/ }(); 22087/******/ 22088/******/ /* webpack/runtime/jsonp chunk loading */ 22089/******/ !function() { 22090/******/ // no baseURI 22091/******/ 22092/******/ // object to store loaded and loading chunks 22093/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched 22094/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded 22095/******/ var installedChunks = { 22096/******/ "/js/app": 0, 22097/******/ "css/app": 0 22098/******/ }; 22099/******/ 22100/******/ // no chunk on demand loading 22101/******/ 22102/******/ // no prefetching 22103/******/ 22104/******/ // no preloaded
22105/******/ 22106/******/ // no HMR 22107/******/ 22108/******/ // no HMR manifest 22109/******/ 22110/******/ __webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; }; 22111/******/ 22112/******/ // install a JSONP callback for chunk loading 22113/******/ var webpackJsonpCallback = function(parentChunkLoadingFunction, data) { 22114/******/ var chunkIds = data[0]; 22115/******/ var moreModules = data[1]; 22116/******/ var runtime = data[2]; 22117/******/ // add "moreModules" to the modules object, 22118/******/ // then flag all "chunkIds" as loaded and fire callback 22119/******/ var moduleId, chunkId, i = 0; 22120/******/ if(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) { 22121/******/ for(moduleId in moreModules) { 22122/******/ if(__webpack_require__.o(moreModules, moduleId)) { 22123/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; 22124/******/ } 22125/******/ } 22126/******/ if(runtime) var result = runtime(__webpack_require__); 22127/******/ } 22128/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); 22129/******/ for(;i < chunkIds.length; i++) { 22130/******/ chunkId = chunkIds[i]; 22131/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { 22132/******/ installedChunks[chunkId][0](); 22133/******/ } 22134/******/ installedChunks[chunkId] = 0; 22135/******/ } 22136/******/ return __webpack_require__.O(result); 22137/******/ } 22138/******/ 22139/******/ var chunkLoadingGlobal = self["webpackChunkCredit9_v2"] = self["webpackChunkCredit9_v2"] || []; 22140/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); 22141/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); 22142/******/ }(); 22143/******/ 22144/************************************************************************/ 22145/******/ 22146/******/ // startup 22147/******/ // Load entry module and return exports 22148/******/ // This entry module depends on other loaded chunks and execution need to be delayed 22149/******/ __webpack_require__.O(undefined, ["css/app"], function() { return __webpack_require__("./src/js/app.js"); }) 22150/******/ var __webpack_exports__ = __webpack_require__.O(undefined, ["css/app"], function() { return __webpack_require__("./src/scss/app.scss"); }) 22151/******/ __webpack_exports__ = __webpack_require__.O(__webpack_exports__); 22152/******/ 22153/******/ })() 22154; 22155//# sourceMappingURL=app.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.