1/******/ (function() { // webpackBootstrap 2/******/ var __webpack_modules__ = ({ 3
4/***/ "./src/js/components/acalog/acalog.js": 5/*!********************************************!*\ 6 !*** ./src/js/components/acalog/acalog.js ***! 7 \********************************************/ 8/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 9 10"use strict"; 11__webpack_require__.r(__webpack_exports__); 12/* harmony import */ var _acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./acalogAPI.js */ "./src/js/components/acalog/acalogAPI.js"); 13/* harmony import */ var _modules_courseMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/courseMap.js */ "./src/js/components/acalog/modules/courseMap.js"); 14/* harmony import */ var _modules_overview__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/overview */ "./src/js/components/acalog/modules/overview.js"); 15/* harmony import */ var _modules_aosCourses__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/aosCourses */ "./src/js/components/acalog/modules/aosCourses.js"); 16/* harmony import */ var _modules_learningOutcomes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/learningOutcomes */ "./src/js/components/acalog/modules/learningOutcomes.js"); 17/* harmony import */ var _modules_programReqs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/programReqs */ "./src/js/components/acalog/modules/programReqs.js"); 18/* harmony import */ var _modules_programNote__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/programNote */ "./src/js/components/acalog/modules/programNote.js"); 19/* harmony import */ var _modules_programAccreditation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/programAccreditation */ "./src/js/components/acalog/modules/programAccreditation.js"); 20/* harmony import */ var _toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./toggleCourseMap.js */ "./src/js/components/acalog/toggleCourseMap.js"); 21 22 23 24 25 26 27 28 29// import { processCareerPathways } from "./modules/careerPathways"; 30 31(0,_toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_8__.initCourseMapToggle)(); 32function doACALogAPI() { 33 if (typeof window.$ === "undefined" && typeof window.jQuery !== "undefined") { 34 window.$ = window.jQuery; 35 } 36 37 // Program Data 38 $(function () { 39 var acalog = $(".acalog.js-hideAcalog"); 40 if (!acalog.length) { 41 // console.error("No .acalog div found!"); 42 return; 43 } 44 acalog.hide(); 45 acalog.acalogWidgetize({ 46 gateway: "https://catalog.sunywcc.edu" 47 }); 48 var checkAcalogLoaded = setInterval(function () { 49 let acalog = $(".acalog.js-hideAcalog"); 50 if (!acalog.length) { 51 return; 52 } 53 let sections = [{ 54 selector: ".js-programCourseMap", 55 handler: _modules_courseMap_js__WEBPACK_IMPORTED_MODULE_1__.processCourseMap, 56 searchFor: 'h2.acalog-program-core-name:contains("Program Map")' 57 }, { 58 selector: ".js-overview", 59 handler: _modules_overview__WEBPACK_IMPORTED_MODULE_2__.processOverview, 60 searchFor: 'h2.acalog-program-core-name:contains("Program Description")' 61 }, { 62 selector: ".js-programLearningOutcomes", 63 handler: _modules_learningOutcomes__WEBPACK_IMPORTED_MODULE_4__.processProgramLearningOutcomes, 64 searchFor: 'h3.acalog-program-core-name:contains("Program Learning Outcomes")' 65 }, { 66 selector: ".js-programReqs", 67 handler: _modules_programReqs__WEBPACK_IMPORTED_MODULE_5__.processProgramReqs, 68 searchFor: 'h2.acalog-program-core-name:contains("Program Requirements")' 69 }, { 70 selector: ".js-programNotes", 71 handler: _modules_programNote__WEBPACK_IMPORTED_MODULE_6__.processProgramNotes, 72 searchFor: 'h2:contains("Program Note")' 73 }, { 74 selector: ".js-programAccreditation", 75 handler: _modules_programAccreditation__WEBPACK_IMPORTED_MODULE_7__.processProgramAccreditation, 76 searchFor: 'h2:contains("Accreditation")' 77 } 78 //TODO Doesnt exist { selector: ".js-careerPathways", handler: processCareerPathways, searchFor: 'h2.acalog-program-core-name:contains("Career Pathways")' }, 79 ]; 80 let foundSections = 0; 81 sections.forEach(_ref => { 82 let { 83 selector, 84 handler, 85 searchFor 86 } = _ref; 87 let module = $(selector); 88 if (!module.length) return; 89 90 // console.log('acalog', acalog[0].innerHTML); 91 92 let sectionTitle = acalog.find(searchFor).first(); 93 if (!sectionTitle.length && foundSections !== 0) { 94 module.hide(); 95 return; 96 } 97 let mapContainer = sectionTitle.closest(".acalog-program-core"); 98 99 // console.log('mapContainer', mapContainer[0].innerHTML); 100 if (!mapContainer.length) { 101 return; 102 } 103 handler(module, mapContainer); 104 foundSections++; 105 }); 106 if (foundSections > 0) { 107 clearInterval(checkAcalogLoaded); 108 } 109 }, 500); 110 }); 111 112 // AOS Data 113 $(function () { 114 let programName = window.aosProgramName; 115 if (!programName) return; 116 var acalog = $(".acalog.js-hideAcalog"); 117 if (!acalog.length) { 118 // console.error("No .acalog div found!"); 119 return; 120 } 121 acalog.hide(); 122 acalog.acalogWidgetize({ 123 gateway: "https://catalog.sunywcc.edu", 124 data: 'programs', 125 catalogFilter: 'x', 126 programName 127 }); 128 var checkAcalogLoaded = setInterval(function () { 129 let acalog = $(".acalog.js-hideAcalog"); 130 if (!acalog.length) { 131 return; 132 } 133 let sections = [{ 134 selector: ".js-aosOverview", 135 handler: _modules_overview__WEBPACK_IMPORTED_MODULE_2__.processAosOverview, 136 searchFor: 'div.acalog-program-description', 137 searchFor2: 'div.acalog-program-core-description' 138 }, { 139 selector: ".js-aosProgramCourse", 140 handler: _modules_aosCourses__WEBPACK_IMPORTED_MODULE_3__.processAosCourses, 141 searchFor: 'div.acalog-program-cores', 142 sectionFound: '' 143 } 144 //TODO Doesnt exist { selector: ".js-careerPathways", handler: processCareerPathways, searchFor: 'h2.acalog-program-core-name:contains("Career Pathways")' }, 145 ]; 146 let foundSections = 0; 147 sections.forEach(_ref2 => { 148 let { 149 selector, 150 handler, 151 searchFor, 152 searchFor2 153 } = _ref2; 154 let module = $(selector); 155 if (!module.length) return; 156 let sectionFound = acalog.find(searchFor).first(); 157 if (!sectionFound.length || sectionFound.is(':empty')) { 158 sectionFound = acalog.find(searchFor2).first(); 159 if (!sectionFound.length) return; 160 } 161 let mapContainer = sectionFound; 162 if (!mapContainer.length) { 163 return; 164 } 165 handler(module, mapContainer); 166 foundSections++; 167 }); 168 if (foundSections > 0) { 169 clearInterval(checkAcalogLoaded); 170 } 171 }, 500); 172 }); 173} 174(0,_acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(doACALogAPI); 175 176/***/ }), 177
178/***/ "./src/js/components/acalog/acalogAPI.js": 179/*!***********************************************!*\ 180 !*** ./src/js/components/acalog/acalogAPI.js ***! 181 \***********************************************/ 182/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 183 184"use strict"; 185__webpack_require__.r(__webpack_exports__); 186/* harmony export */ __webpack_require__.d(__webpack_exports__, { 187/* harmony export */ loadAcalogAPI: function() { return /* binding */ loadAcalogAPI; } 188/* harmony export */ }); 189function loadAcalogAPI(callback) { 190 let reload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 191 const ID = "acalog-script"; 192 if (reload) { 193 const existingScript = document.getElementById(ID); 194 if (existingScript) { 195 existingScript.parentNode.removeChild(existingScript); 196 } 197 } 198 if (typeof window.AcalogWidgetAPI !== "undefined") { 199 callback(); 200 return; 201 } 202 var script = document.createElement("script"); 203 script.src = "https://catalog.sunywcc.edu/widget-api/widget-api.min.js"; 204 script.id = ID; 205 script.onload = callback; 206 document.head.appendChild(script); 207} 208 209/***/ }), 210
211/***/ "./src/js/components/acalog/modules/aosCourses.js": 212/*!********************************************************!*\ 213 !*** ./src/js/components/acalog/modules/aosCourses.js ***! 214 \********************************************************/ 215/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 216 217"use strict"; 218__webpack_require__.r(__webpack_exports__); 219/* harmony export */ __webpack_require__.d(__webpack_exports__, { 220/* harmony export */ processAosCourses: function() { return /* binding */ processAosCourses; } 221/* harmony export */ }); 222/* harmony import */ var _acalogAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI */ "./src/js/components/acalog/acalogAPI.js"); 223 224function processAosCourses(module, mapContainer) { 225 let overviewDataContainer = module.find(".js-aosCourses"); 226 overviewDataContainer.html(mapContainer); 227 (0,_acalogAPI__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true); 228} 229function handleAcalogLinkClick(selector, getContainerCallback) { 230 // Hidden due to task request 231 // $(document).on("click", selector, function (e) { 232 // e.preventDefault(); 233 // 234 // const $link = $(this); 235 // const $container = getContainerCallback($link); 236 // 237 // $('.acalog-permalink-container, .acalog-program-core-course-body').hide(); 238 // 239 // const catalogCourseUrl = $container.attr("data-acalog-ajax"); 240 // 241 // // Construct the API URL 242 // const apiUrl = `https://catalog.sunywcc.edu/widget-api/${catalogCourseUrl}`; 243 // 244 // if ($container.html()) { 245 // $container.show(); 246 // return; 247 // } 248 // 249 // $.ajax({ 250 // url: apiUrl, 251 // method: "GET", 252 // beforeSend: function () { 253 // $container.html( 254 // "Loading... Depending on your internet speed, it could take up to 30 seconds...please be patient." 255 // ); 256 // $container.show(); 257 // }, 258 // success: function (data) { 259 // const content = ` 260 // <h1 class="acalog-course-title">${data.prefix} ${data.code} - ${data.name}</h1> 261 // <div class="acalog-course-body">${data.body}</div> 262 // <a href="#" class="acalog-close" aria-label="Close acalog">Close</a> 263 // `; 264 // 265 // $container.html(content); 266 // }, 267 // error: function (xhr, status, error) { 268 // console.error("Error fetching course data:", error); 269 // $container.html("Error loading course data. Please try again."); 270 // }, 271 // }); 272 // }); 273} 274function fetchCourseDataAndInject() { 275 handleAcalogLinkClick(".js-aosProgramCourse .acalog-permalink a", function ($link) { 276 return $link.closest(".acalog-permalink").find(".acalog-permalink-container"); 277 }); 278 handleAcalogLinkClick(".js-aosProgramCourse .acalog-program-core-course a", function ($link) { 279 return $link.next().find(".acalog-program-core-course-body"); 280 }); 281 282 // Handle close button clicks using event delegation 283 $(document).on("click", ".acalog-close", function (e) { 284 e.preventDefault(); 285 e.stopPropagation(); 286 $(this).closest(".acalog-permalink-container").hide(); 287 }); 288} 289 290/***/ }), 291
292/***/ "./src/js/components/acalog/modules/courseMap.js": 293/*!*******************************************************!*\ 294 !*** ./src/js/components/acalog/modules/courseMap.js ***! 295 \*******************************************************/ 296/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 297 298"use strict"; 299__webpack_require__.r(__webpack_exports__); 300/* harmony export */ __webpack_require__.d(__webpack_exports__, { 301/* harmony export */ processCourseMap: function() { return /* binding */ processCourseMap; } 302/* harmony export */ }); 303/* harmony import */ var _acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI.js */ "./src/js/components/acalog/acalogAPI.js"); 304/* harmony import */ var _toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../toggleCourseMap.js */ "./src/js/components/acalog/toggleCourseMap.js"); 305 306 307function processCourseMap(module, mapContainer) { 308 let semesters = mapContainer.find("h3, h4").filter(function () { 309 let text = $(this).text().trim().toLowerCase(); 310 return text.startsWith("semest") && !text.includes("minimum total credits") && !text.includes("total credits"); 311 }); 312 let isAos = false; 313 if (isAos) { 314 processAosMode(module, semesters); 315 } else { 316 processDefaultMode(module, semesters); 317 } 318 if (typeof _toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_1__.initCourseMapToggle === "function") { 319 (0,_toggleCourseMap_js__WEBPACK_IMPORTED_MODULE_1__.initCourseMapToggle)(); 320 } 321} 322function fetchCourseDataAndInject() { 323 // Hidden due to task request 324 // $(document).on("click", ".js-programCourseMap .acalog-permalink a", function (e) { 325 // e.preventDefault(); 326 // 327 // const $link = $(this); 328 // const href = $link.attr("href"); 329 // const $permalink = $link.closest(".acalog-permalink"); 330 // 331 // if (href.includes("preview_course_nopop.php")) { 332 // // Find or create the container 333 // let $container = $permalink.find(".acalog-permalink-container"); 334 // if (!$container.length) {
335 // $container = $('<div class="acalog-permalink-container" style="display: none;"></div>'); 336 // $permalink.append($container); 337 // } 338 // 339 // // Hide all containers first 340 // $('.acalog-permalink-container').hide(); 341 // 342 // // Determine the API URL 343 // let apiUrl; 344 // if ($container.attr("data-acalog-ajax")) { 345 // // Use data attribute if available (already in correct format) 346 // apiUrl = `https://catalog.sunywcc.edu/widget-api${$container.attr("data-acalog-ajax")}`; 347 // } else { 348 // // Transform the href URL from query params to path format 349 // const url = new URL(href.startsWith('http') ? href : `https://catalog.sunywcc.edu${href}`); 350 // const catoid = url.searchParams.get('catoid'); 351 // const coid = url.searchParams.get('coid'); 352 // 353 // if (catoid && coid) { 354 // apiUrl = `https://catalog.sunywcc.edu/widget-api/catalog/${catoid}/course/${coid}/`; 355 // } else { 356 // // Fallback to original href if transformation fails 357 // apiUrl = href.replace('preview_course_nopop.php', 'widget-api/preview_course_nopop.php'); 358 // if (!apiUrl.startsWith('https://catalog.sunywcc.edu')) { 359 // apiUrl = `https://catalog.sunywcc.edu/widget-api${href}`; 360 // } 361 // } 362 // } 363 // 364 // // Check if content already loaded 365 // if ($container.html()) { 366 // $container.show(); 367 // return; 368 // } 369 // 370 // // Load the content 371 // $.ajax({ 372 // url: apiUrl, 373 // method: "GET", 374 // beforeSend: function () { 375 // $container.html( 376 // "Loading... Depending on your internet speed, it could take up to 30 seconds...please be patient." 377 // ); 378 // $container.show(); 379 // }, 380 // success: function (data) { 381 // const content = ` 382 // <h1 class="acalog-course-title">${data.prefix} ${data.code} - ${data.name}</h1> 383 // <div class="acalog-course-body">${data.body}</div> 384 // <a href="#" class="acalog-close" aria-label="Close acalog">Close</a> 385 // `; 386 // $container.html(content); 387 // }, 388 // error: function (xhr, status, error) { 389 // console.error("Error fetching course data:", error); 390 // $container.html("Error loading course data. Please try again."); 391 // }, 392 // }); 393 // 394 // } else if (href.includes("preview_program.php")) { 395 // const cpProgramCourseMaps = '/cp-program-course-maps'; 396 // const cpId = window._cpProgramId; 397 // const cpTitle = window._cpProgramTitle; 398 // 399 // const $link = $(this); 400 // const href = $link.attr('href'); 401 // 402 // const encodedHref = encodeURIComponent(href); 403 // const encodedId = encodeURIComponent(cpId); 404 // const encodedTitle = encodeURIComponent(cpTitle); 405 // 406 // const goToUrl = window.location.origin + cpProgramCourseMaps + '?cp_map_url=' + encodedHref + '&cp_map_id=' + encodedId + '&cp_map_title=' + encodedTitle; 407 // 408 // if (!cpId || !cpTitle) return; 409 // 410 // window.location.href = goToUrl; 411 // } 412 // }); 413 414 // Handle close button clicks using event delegation 415 // $(document).on("click", ".acalog-close", function (e) { 416 // e.preventDefault(); 417 // e.stopPropagation(); 418 // $(this) 419 // .closest(".acalog-permalink-container").hide(); 420 // }); 421} 422function processDefaultMode(module, semesters) { 423 let coursesMobile = module.find(".js-coursesMobile"); 424 let coursesDesktop = module.find(".js-coursesDesktop"); 425 coursesMobile.html(""); 426 coursesDesktop.html(""); 427 semesters.each(function (index) { 428 let semesterName = $(this).text().trim(); 429 let nextElement = $(this).next(); 430 let courses = []; 431 let multipleCourses = {}; 432 while (nextElement.length && nextElement.prop("tagName") !== "H4") { 433 if (nextElement.prop("tagName") === "TABLE") { 434 let rows = nextElement.find("tr"); 435 let multiLinkIndex = 0; 436 rows.each(function (rowIndex) { 437 if (rowIndex === 0) return; 438 let courseCell = $(this).find("td:first-child"); 439 let creditsCell = $(this).find("td:nth-child(2)"); 440 let credits = creditsCell.text().trim(); 441 let links = courseCell.find("a.acalog-permalink-link"); 442 if (links.length > 1) { 443 // Process each link while maintaining the surrounding HTML 444 let cellContent = courseCell.html(); 445 let $temp = $('<div>').html(cellContent); 446 447 // Process each link in the cell 448 $temp.find('a.acalog-permalink-link').each(function () { 449 let $link = $(this); 450 let fullUrl = $link.attr('href'); 451 let urlPath = fullUrl.replace("https://catalog.sunywcc.edu", ""); 452 let acalogUrl = `https://sunywcc.acalogadmin.com/preview${urlPath}`; 453 454 // Replace with processed link 455 $link.replaceWith(` 456 <a href="${fullUrl}" class="acalog-permalink-link"> 457 ${$link.html()} 458 </a> 459 <div class="acalog-permalink-container" data-acalog-ajax="${fullUrl}" style="display: none;"></div> 460 `); 461 }); 462 463 // Clean up any existing containers to avoid duplicates 464 $temp.find('.acalog-permalink-container').remove(); 465 466 // Create mobile version 467 let mobileHTML = ` 468 <div class="program__courseMap__semester__mobileCourses__course _12"> 469 <div class="acalog-permalink acalog-permalink-tooltip -multipleLinks"> 470 ${$temp.html()} 471 </div>
472 <span class="credits">${credits}</span> 473 </div> 474 `; 475 476 // Create desktop version 477 let desktopHTML = ` 478 <div class="program__courseMap__semesters__desktop__semester__course _12"> 479 <div class="acalog-permalink acalog-permalink-tooltip -multipleLinks"> 480 ${$temp.html()} 481 </div> 482 <span class="credits">${credits}</span> 483 </div> 484 `; 485 multipleCourses[multiLinkIndex] = { 486 mobile: mobileHTML, 487 desktop: desktopHTML 488 }; 489 courses.push({ 490 isMultiLink: true, 491 multiLinkIndex: multiLinkIndex, 492 credits: credits 493 }); 494 multiLinkIndex++; 495 } else if (links.length === 1) { 496 // Original single link processing 497 let link = links.first(); 498 let linkContainer = courseCell.find("a + .acalog-permalink-container"); 499 if (link.length) { 500 let fullUrl = link.attr("href"); 501 let urlPath = fullUrl.replace("https://catalog.sunywcc.edu", ""); 502 let acalogUrl = `https://sunywcc.acalogadmin.com/preview${urlPath}`; 503 let ajax_course_url = linkContainer.length ? linkContainer.attr('data-acalog-ajax') : fullUrl; 504 courses.push({ 505 title: link.text().trim(), 506 url: fullUrl, 507 acalogUrl: acalogUrl, 508 ajax_course_url: ajax_course_url, 509 credits: credits, 510 isMultiLink: false 511 }); 512 } 513 } else { 514 // Plain text 515 516 let textTitle = courseCell.text().trim(); 517 518 // skip lines like âSemester Total Creditsâ 519 if (!/Semester/i.test(textTitle)) { 520 courses.push({ 521 title: textTitle, 522 url: null, 523 credits: credits, 524 isMultiLink: false, 525 isPlainText: true 526 }); 527 } 528 } 529 }); 530 let totalCredits = courses.reduce((sum, c) => { 531 return sum + (parseInt(c.credits) || 0); 532 }, 0); 533 courses.push({ 534 isTotal: true, 535 title: "Total", 536 credits: totalCredits 537 }); 538 } 539 nextElement = nextElement.next(); 540 } 541 542 // Generate semester HTML (same as before) 543 let semesterMobileHTML = ` 544 <div class="program__courseMap__semester js-courseSemester ${index === 0 ? "-active" : ""}" data-action="s-${index + 1}"> 545 <div class="program__courseMap__semester__title"> 546 ${semesterName} 547 <div class="icon-mobile"> 548 <div class="icon-mobile-close"> 549 <svg width="16" height="10" viewBox="0 0 16 10" fill="none" xmlns="http://www.w3.org/2000/svg"> 550 <path d="M1.5 1.63867L8 8.13867L14.5 1.63867" stroke="#55565a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> 551 </svg> 552 </div> 553 <div class="icon-mobile-open"> 554 <svg width="16" height="10" viewBox="0 0 16 10" fill="none" xmlns="http://www.w3.org/2000/svg"> 555 <path d="M14 7.51855L8 1.51855L2 7.51855" stroke="#D69400" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> 556 </svg> 557 </div> 558 </div> 559 <div class="icon-desktop"> 560 <div class="icon-mobile-close"> 561 <svg width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 562 <path opacity="0.5" d="M2 13.5186L8 7.51855L2 1.51855" stroke="#55565A" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> 563 </svg> 564 </div> 565 <div class="icon-mobile-open"> 566 <svg width="10" height="16" viewBox="0 0 10 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 567 <path d="M2 13.5186L8 7.51855L2 1.51855" stroke="#D69400" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path> 568 </svg> 569 </div> 570 </div> 571 </div> 572 <div class="program__courseMap__semester__mobileCourses"> 573 <div class="_title -color-baltic-blue -mb-1"><span>Course</span><span>Credits</span></div> 574 <div class="program__courseMap__semester__mobileCourses__courses _w -gap-y-1"> 575 ${courses.map(c => { 576 if (c.isTotal) { 577 return ` 578 <div class="program__courseMap__semester__mobileCourses__course _12 course--total"> 579 <div class="_value _body"><strong>${c.title}</strong></div> 580 <div class="credits"><strong>${c.credits}</strong></div> 581 </div> 582 `; 583 } else if (c.isMultiLink) { 584 return multipleCourses[c.multiLinkIndex].mobile; 585 } else if (c.isPlainText) { 586 return ` 587 <div class="program__courseMap__semester__mobileCourses__course _12"> 588 <div class="_value _body">${c.title}</div>
589 <span class="credits">${c.credits}</span> 590 </div> 591 `; 592 } else { 593 return ` 594 <div class="program__courseMap__semester__mobileCourses__course _12 acalog-permalink acalog-permalink-tooltip"> 595 <a class="acalog-permalink-link" href="${c.url}"><div class="_value _body" aria-label="${c.title}">${c.title}</div></a> 596 <span class="credits">${c.credits}</span> 597 <div class="acalog-permalink-container" data-acalog-ajax="${c.ajax_course_url}" style="display: none;"></div> 598 </div> 599 `; 600 } 601 }).join('')} 602 </div> 603 </div> 604 </div> 605`; 606 coursesMobile.append(semesterMobileHTML); 607 608 // Desktop View 609 let semesterDesktopHTML = ` 610 <div class="program__courseMap__semesters__desktop__semester js-desktopSemesters ${index === 0 ? "-active" : ""}" data-action="s-${index + 1}"> 611 <div class="_title -color-baltic-blue -mb-2"><span>Course</span><span>Credits</span></div> 612 <div class="program__courseMap__semesters__desktop__semester__c
612ourses _w -gap-y-1"> 613 ${courses.map(c => { 614 if (c.isTotal) { 615 return ` 616 <div class="program__courseMap__semesters__desktop__semester__course _12 course--total"> 617 <div class="_value _body"><strong>${c.title}</strong></div> 618 <div class="credits"><strong>${c.credits}</strong></div> 619 </div> 620 `; 621 } else if (c.isMultiLink) { 622 return multipleCourses[c.multiLinkIndex].desktop; 623 } else if (c.isPlainText) { 624 return ` 625 <div class="program__courseMap__semesters__desktop__semester__course _12"> 626 <div class="_value _body">${c.title}</div> 627 <span class="credits">${c.credits}</span> 628 </div> 629 `; 630 } else { 631 return ` 632 <div class="program__courseMap__semesters__desktop__semester__course _12 acalog-permalink acalog-permalink-tooltip"> 633 <a href="${c.url}" class="acalog-permalink-link"><div class="_value _body-sm" aria-label="${c.title}">${c.title}</div></a> 634 <span class="credits">${c.credits}</span> 635 <div class="acalog-permalink-container" data-acalog-ajax="${c.ajax_course_url}" style="display: none;"></div> 636 </div> 637 `; 638 } 639 }).join('')} 640 </div> 641 </div> 642`; 643 coursesDesktop.append(semesterDesktopHTML); 644 }); 645 (0,_acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true); 646} 647function processAosMode(module, semesters) { 648 let aosCoursesContainer = module.find(".js-aosCourses"); 649 aosCoursesContainer.html(""); 650 semesters.each(function (index) { 651 let semesterName = $(this).text().trim(); 652 let nextElement = $(this).next(); 653 let courses = []; 654 while (nextElement.length && nextElement.prop("tagName") !== "H4") { 655 if (nextElement.prop("tagName") === "TABLE") { 656 let rows = nextElement.find("tr"); 657 rows.each(function (rowIndex) { 658 if (rowIndex === 0) return; 659 let courseCell = $(this).find("td:first-child"); 660 let link = courseCell.find("a"); 661 let linkContainer = courseCell.find("a + .acalog-permalink-container"); 662 if (link.length) { 663 let fullUrl = link.attr("href"); 664 let urlPath = fullUrl.replace("https://catalog.sunywcc.edu", ""); 665 // urlPath = urlPath.replace("review_course_nopop.php", "review_course.php"); 666 let acalogUrl = `https://sunywcc.acalogadmin.com/preview${urlPath}`; 667 let ajax_course_url = linkContainer.attr('data-acalog-ajax'); 668 courses.push({ 669 title: link.text().trim(), 670 url: fullUrl, 671 acalogUrl: acalogUrl, 672 ajax_course_url: ajax_course_url 673 }); 674 } 675 }); 676 } 677 nextElement = nextElement.next(); 678 } 679 let semesterAosHTML = ` 680 <div class="program__aosCourses__data__section _m6"> 681 <h3 class="program__aosCourses__data__section__title _h3 -color-baltic-blue -mb-1">${semesterName}</h3> 682 <div class="program__aosCourses__data__section__courses _w -gap-y-1"> 683 ${courses.map(c => `<div class="program__aosCourses__data__section__course _12 acalog-permalink acalog-permalink-tooltip"> 684 <a href="${c.url}" class="acalog-permalink-link"><div class="_value _body" aria-label="${c.title}">${c.title}</div></a> 685 <div class="acalog-permalink-container" data-acalog-ajax="${c.ajax_course_url}" style="display: none;"></div> 686 </div>`).join("")} 687 </div> 688 </div> 689 `; 690 aosCoursesContainer.append(semesterAosHTML); 691 }); 692 (0,_acalogAPI_js__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true); 693} 694 695/***/ }), 696
697/***/ "./src/js/components/acalog/modules/learningOutcomes.js": 698/*!**************************************************************!*\ 699 !*** ./src/js/components/acalog/modules/learningOutcomes.js ***! 700 \**************************************************************/ 701/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 702 703"use strict"; 704__webpack_require__.r(__webpack_exports__); 705/* harmony export */ __webpack_require__.d(__webpack_exports__, { 706/* harmony export */ processProgramLearningOutcomes: function() { return /* binding */ processProgramLearningOutcomes; } 707/* harmony export */ }); 708function processProgramLearningOutcomes(module, mapContainer) { 709 let outcomesTitle = mapContainer.find('h3.acalog-program-core-name:contains("Program Learning Outcomes")').first(); 710 if (!outcomesTitle.length) { 711 return; 712 } 713 let descriptionContainer = outcomesTitle.next(".acalog-program-core-description"); 714 if (!descriptionContainer.length) { 715 return; 716 } 717 let outcomesDataContainer = module.find(".js-learningOutcomesData"); 718 outcomesDataContainer.html(descriptionContainer.html()); 719} 720 721/***/ }), 722
723/***/ "./src/js/components/acalog/modules/overview.js": 724/*!******************************************************!*\ 725 !*** ./src/js/components/acalog/modules/overview.js ***! 726 \******************************************************/ 727/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 728 729"use strict"; 730__webpack_require__.r(__webpack_exports__); 731/* harmony export */ __webpack_require__.d(__webpack_exports__, { 732/* harmony export */ processAosOverview: function() { return /* binding */ processAosOverview; }, 733/* harmony export */ processOverview: function() { return /* binding */ processOverview; } 734/* harmony export */ }); 735function processOverview(module, mapContainer) { 736 let overviewTitle = mapContainer.find('h2.acalog-program-core-name:contains("Program Description")').first(); 737 if (!overviewTitle.length) { 738 return; 739 } 740 let descriptionContainer = overviewTitle.next(".acalog-program-core-description"); 741 if (!descriptionContainer.length) { 742 return; 743 } 744 let overviewDataContainer = module.find(".js-overviewData"); 745 overviewDataContainer.html(descriptionContainer.html()); 746} 747function processAosOverview(module, mapContainer) { 748 let overviewDataContainer = module.find(".js-overviewData"); 749 overviewDataContainer.html(mapContainer); 750} 751 752/***/ }), 753
754/***/ "./src/js/components/acalog/modules/overviewInProgramFinder.js": 755/*!*********************************************************************!*\ 756 !*** ./src/js/components/acalog/modules/overviewInProgramFinder.js ***! 757 \*********************************************************************/ 758/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 759 760"use strict"; 761__webpack_require__.r(__webpack_exports__); 762/* harmony export */ __webpack_require__.d(__webpack_exports__, { 763/* harmony export */ overviewInProgramFinder: function() { return /* binding */ overviewInProgramFinder; } 764/* harmony export */ }); 765/* harmony import */ var _acalogAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI */ "./src/js/components/acalog/acalogAPI.js"); 766/* harmony import */ var _helpers_localStorage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../helpers/localStorage */ "./src/js/helpers/localStorage.js"); 767 768 769const API_KEY = '77f07c6a693c4db31e55465a3a4f5a7d27deb458'; 770const CATALOGS_STORAGE_KEY = 'sp451_acalog_catalogs'; 771const CATALOGS_TTL_MS = 3 * 24 * 60 * 60 * 1000; 772function fetchCatalogs() { 773 let cachedCatalogs = (0,_helpers_localStorage__WEBPACK_IMPORTED_MODULE_1__.getLocalStorageWithExpiry)(CATALOGS_STORAGE_KEY); 774 if (cachedCatalogs && Array.isArray(cachedCatalogs) && cachedCatalogs.length) { 775 return Promise.resolve(cachedCatalogs); 776 } 777 const catalogsUrl = `https://sunywcc.apis.acalog.com/v1/content?key=${API_KEY}&format=xml&method=getCatalogs`; 778 return fetch(catalogsUrl).then(res => { 779 if (!res.ok) throw new Error('Failed to fetch catalogs'); 780 return res.text(); 781 }).then(xmlStr => { 782 const parser = new DOMParser(); 783 const xmlDoc = parser.parseFromString(xmlStr, 'application/xml'); 784 const catalogs = Array.from(xmlDoc.getElementsByTagName('catalog')).filter(catalog => { 785 const publishedNode = catalog.querySelector('state > published'); 786 const archivedNode = catalog.querySelector('state > archived'); 787 return publishedNode && archivedNode && publishedNode.textContent.trim().toLowerCase() === 'yes' && archivedNode.textContent.trim().toLowerCase() === 'no'; 788 }).map(catalog => { 789 const idAttr = catalog.getAttribute('id') || ''; 790 const match = idAttr.match(/acalog-catalog-(\d+)/); 791 return match ? Number(match[1]) : null; 792 }).filter(Boolean).sort((a, b) => b - a); 793 (0,_helpers_localStorage__WEBPACK_IMPORTED_MODULE_1__.setLocalStorageWithExpiry)(CATALOGS_STORAGE_KEY, catalogs, CATALOGS_TTL_MS); 794 return catalogs; 795 }); 796} 797function processOverview(module, mapContainer) { 798 let overviewTitle = mapContainer.find('h2.acalog-program-core-name:contains("Program Description")').first(); 799 if (!overviewTitle.length) { 800 return; 801 } 802 let descriptionContainer = overviewTitle.next(".acalog-program-core-description"); 803 if (!descriptionContainer.length) { 804 return; 805 } 806 let overviewDataContainer = module.find(".js-overviewContainer"); 807 overviewDataContainer.html(descriptionContainer.html()); 808} 809function processAosOverview(module, mapContainer) { 810 let overviewDataContainer = module.find(".js-overviewContainer"); 811 overviewDataContainer.html(mapContainer); 812} 813function fetchWithTimeout(url) { 814 let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 815 let timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5000; 816 // 5 seconds timeout default 817 return new Promise((resolve, reject) => { 818 const timer = setTimeout(() => { 819 reject(new Error('Fetch timed out')); 820 }, timeout); 821 options.headers = { 822 ...options.headers, 823 'Access-Control-Allow-Origin': window.location.origin 824 }; 825 fetch(url, options).then(response => { 826 clearTimeout(timer); 827 resolve(response); 828 }).catch(err => { 829 clearTimeout(timer); 830 reject(err); 831 }); 832 }); 833} 834function fetchProgramInCatalog(programName, catalogId) { 835 const query = encodeURIComponent(programName); 836 const url = `https://sunywcc.apis.acalog.com/v1/search/programs?key=${API_KEY}&format=xml&method=search&catalog=${catalogId}&query=${query}`; 837 return fetchWithTimeout(url, {}, 5000) // 5 sec timeout 838 .then(res => { 839 if (!res.ok) throw new Error(`Failed to fetch programs for catalog ${catalogId}`); 840 return res.text(); 841 }).then(xmlStr => { 842 const parser = new DOMParser(); 843 const xmlDoc = parser.parseFromString(xmlStr, 'application/xml'); 844 const results = xmlDoc.getElementsByTagName('result'); 845 for (let i = 0; i < results.length; i++) { 846 const nameNode = results[i].getElementsByTagName('name')[0]; 847 if (!nameNode) continue; 848 if (nameNode.textContent.trim() === programName) { 849 const idNode = results[i].getElementsByTagName('id')[0]; 850 if (!idNode) continue; 851 return { 852 catalogId, 853 programId: idNode.textContent.trim() 854 }; 855 } 856 } 857 // no match found 858 return null; 859 }); 860} 861function findProgramAcrossCatalogs(programName, catalogs) { 862 let idx = 0; 863 return new Promise((resolve, reject) => { 864 function tryNext() { 865 if (idx >= catalogs.length) { 866 resolve(null); 867 return; 868 } 869 const catalogId = catalogs[idx++]; 870 fetchProgramInCatalog(programName, catalogId).then(res => { 871 if (res) { 872 resolve(res); 873 } else { 874 tryNext(); 875 } 876 }).catch(() => {
877 // ignore errors, try next catalog 878 tryNext(); 879 }); 880 } 881 tryNext(); 882 }); 883} 884function fetchApiGoToProgram(programName, programBtn) { 885 if (!window.__openCatalogPrograms) { 886 console.warn('Open catalog programs mode disabled'); 887 return; 888 } 889 890 // There is already hard coded URL in backend 891 if (programBtn.hasClass('no-ajax')) { 892 return; 893 } 894 fetchCatalogs().then(catalogs => { 895 if (!catalogs || catalogs.length === 0) { 896 console.error('No active catalogs found'); 897 return; 898 } 899 return findProgramAcrossCatalogs(programName, catalogs); 900 }).then(result => { 901 if (!result) { 902 console.log('Program not found in any catalog'); 903 return; 904 } 905 const { 906 catalogId, 907 programId 908 } = result; 909 const previewUrl = `https://catalog.sunywcc.edu/preview_program.php?catoid=${catalogId}&poid=${programId}`; 910 programBtn.attr('href', previewUrl); 911 programBtn.attr('target', '_blank'); 912 }).catch(err => { 913 console.error('Error searching program:', err); 914 }); 915} 916function doACALogAPI($module) { 917 let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'program'; 918 var calledFetch = false; 919 if (typeof window.$ === "undefined" && typeof window.jQuery !== "undefined") { 920 window.$ = window.jQuery; 921 } 922 var programBtn = $module.find('.js-overviewContainer + a.btn'); 923 let programName = $module.data('program-name'); 924 if ($module.hasClass('-active')) return; 925 926 // Program Data 927 if (type === 'program') { 928 $(function () { 929 var acalog = $module.find(".acalog.js-hideAcalog"); 930 var container = $module.find('.js-overviewContainer'); 931 if (!acalog.length) { 932 return; 933 } 934 const hasHtml = container.children().length > 0; 935 const textLength = $.trim(container.text()).length; 936 if (hasHtml || textLength > 20) { 937 return false; 938 } 939 acalog.hide(); 940 acalog.acalogWidgetize({ 941 gateway: "https://catalog.sunywcc.edu" 942 }); 943 var checkAcalogLoaded = setInterval(function () { 944 let acalog = $module.find(".acalog.js-hideAcalog"); 945 if (!acalog.length) { 946 return; 947 } 948 let sections = [{ 949 handler: processOverview, 950 searchFor: 'h2.acalog-program-core-name:contains("Program Description")' 951 }]; 952 let foundSections = 0; 953 sections.forEach(_ref => { 954 let { 955 handler, 956 searchFor 957 } = _ref; 958 let module = $module[0]; 959 if (!module) return; 960 let sectionTitle = acalog.find(searchFor).first(); 961 if (!sectionTitle.length) { 962 return; 963 } 964 let mapContainer = sectionTitle.closest(".acalog-program-core"); 965 if (!mapContainer) { 966 return; 967 } 968 handler($module, mapContainer); 969 foundSections++; 970 }); 971 if (!calledFetch) { 972 calledFetch = true; 973 fetchApiGoToProgram(programName, programBtn); 974 } 975 if (foundSections > 0) { 976 clearInterval(checkAcalogLoaded); 977 } 978 }, 500); 979 }); 980 } else { 981 // AOS Data 982 $(function () { 983 var acalog = $module.find(".acalog.js-hideAcalog"); 984 var container = $module.find('.js-overviewContainer'); 985 const hasHtml = container.children().length > 0; 986 const textLength = $.trim(container.text()).length; 987 if (hasHtml || textLength > 20) { 988 return false; 989 } 990 if (!acalog.length) { 991 // console.error("No .acalog div found!"); 992 return; 993 } 994 let programName = acalog.data('acalog-program-name'); 995 if (!programName) return; 996 acalog.hide(); 997 acalog.acalogWidgetize({ 998 gateway: "https://catalog.sunywcc.edu", 999 data: 'programs', 1000 catalogFilter: 'x', 1001 programName 1002 }); 1003 var checkAcalogLoaded = setInterval(function () { 1004 let acalog = $module.find(".acalog.js-hideAcalog"); 1005 if (!acalog.length) { 1006 return; 1007 } 1008 let sections = [{ 1009 handler: processAosOverview, 1010 searchFor: 'div.acalog-program-description', 1011 searchFor2: 'div.acalog-program-core-description' 1012 }]; 1013 let foundSections = 0; 1014 sections.forEach(_ref2 => { 1015 let { 1016 handler, 1017 searchFor, 1018 searchFor2 1019 } = _ref2; 1020 let module = $module[0]; 1021 if (!module) return; 1022 let sectionFound = acalog.find(searchFor).first(); 1023 if (!sectionFound.length || !sectionFound[0].innerHTML || !$(searchFor).children().length > 0) { 1024 sectionFound = acalog.find(searchFor2).first(); 1025 if (!sectionFound.length) return; 1026 } 1027 let mapContainer = sectionFound; 1028 if (!mapContainer) { 1029 return; 1030 } 1031 handler($module, mapContainer); 1032 foundSections++; 1033 }); 1034 if (!calledFetch) { 1035 calledFetch = true; 1036 fetchApiGoToProgram(programName, programBtn); 1037 } 1038 if (foundSections > 0) { 1039 clearInterval(checkAcalogLoaded); 1040 } 1041 }, 500); 1042 }); 1043 } 1044} 1045function overviewInProgramFinder() { 1046 let apiClickablePrograms = $('.js-soloProgramFetchOverview'); 1047 apiClickablePrograms.click(function (e) { 1048 let _this = $(this); 1049 let type = _this.data('program-type'); 1050 doACALogAPI(_this, type); 1051 }); 1052} 1053 1054/***/ }), 1055
1056/***/ "./src/js/components/acalog/modules/programAccreditation.js": 1057/*!******************************************************************!*\ 1058 !*** ./src/js/components/acalog/modules/programAccreditation.js ***! 1059 \******************************************************************/ 1060/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1061 1062"use strict"; 1063__webpack_require__.r(__webpack_exports__); 1064/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1065/* harmony export */ processProgramAccreditation: function() { return /* binding */ processProgramAccreditation; } 1066/* harmony export */ }); 1067function processProgramAccreditation(module, mapContainer) { 1068 let programAccreditationTitle = mapContainer.find('h2:contains("Accreditation")').first(); 1069 if (!programAccreditationTitle.length) { 1070 return; 1071 } 1072 let parentElement = programAccreditationTitle.parent(); 1073 let otherChildren = parentElement.children().not(programAccreditationTitle); 1074 if (!otherChildren.length) { 1075 module.hide(); 1076 return; 1077 } 1078 let programNoteDataContainer = module.find(".js-programAccreditationData"); 1079 programNoteDataContainer.html(otherChildren.html()); 1080} 1081 1082/***/ }), 1083
1084/***/ "./src/js/components/acalog/modules/programNote.js": 1085/*!*********************************************************!*\ 1086 !*** ./src/js/components/acalog/modules/programNote.js ***! 1087 \*********************************************************/ 1088/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1089 1090"use strict"; 1091__webpack_require__.r(__webpack_exports__); 1092/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1093/* harmony export */ processProgramNotes: function() { return /* binding */ processProgramNotes; } 1094/* harmony export */ }); 1095function processProgramNotes(module, mapContainer) { 1096 let programNoteTitle = mapContainer.find('h2:contains("Program Note")').first(); 1097 if (!programNoteTitle.length) { 1098 return; 1099 } 1100 let parentElement = programNoteTitle.parent(); 1101 let otherChildren = parentElement.children().not(programNoteTitle); 1102 if (!otherChildren.length) { 1103 module.hide(); 1104 return; 1105 } 1106 let programNoteDataContainer = module.find(".js-programNotesData"); 1107 programNoteDataContainer.html(otherChildren.html()); 1108} 1109 1110/***/ }), 1111
1112/***/ "./src/js/components/acalog/modules/programReqs.js": 1113/*!*********************************************************!*\ 1114 !*** ./src/js/components/acalog/modules/programReqs.js ***! 1115 \*********************************************************/ 1116/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1117 1118"use strict"; 1119__webpack_require__.r(__webpack_exports__); 1120/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1121/* harmony export */ processProgramReqs: function() { return /* binding */ processProgramReqs; } 1122/* harmony export */ }); 1123/* harmony import */ var _acalogAPI__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../acalogAPI */ "./src/js/components/acalog/acalogAPI.js"); 1124 1125function processProgramReqs(module, mapContainer) { 1126 let programReqTitle = mapContainer.find('h2.acalog-program-core-name:contains("Program Requirements")').first(); 1127 if (!programReqTitle.length) { 1128 return; 1129 } 1130 let descriptionContainer = programReqTitle.next(".acalog-program-core-description"); 1131 if (!descriptionContainer.length) { 1132 return; 1133 } 1134 let programReqDataContainer = module.find(".js-programReqsData"); 1135 programReqDataContainer.html(descriptionContainer.html()); 1136} 1137function fetchCourseDataAndInject() { 1138 const cpProgramReqsUrl = '/cp-program-requirements'; 1139 const cpId = window._cpProgramId; 1140 const cpTitle = window._cpProgramTitle; 1141 // Hidden due to task request 1142 // $(document).on("click", ".js-programReqs a.acalog-permalink-link", function (e) { 1143 // const $link = $(this); 1144 // const href = $link.attr('href'); 1145 // 1146 // const encodedHref = encodeURIComponent(href); 1147 // const encodedId = encodeURIComponent(cpId); 1148 // const encodedTitle = encodeURIComponent(cpTitle); 1149 // 1150 // const goToUrl = window.location.origin + cpProgramReqsUrl + '?cp_url=' + encodedHref + '&cp_id=' + encodedId + '&cp_title=' + encodedTitle; 1151 // 1152 // e.preventDefault(); 1153 // 1154 // if (!cpId || !cpTitle) return; 1155 // 1156 // window.location.href = goToUrl; 1157 // }); 1158 1159 // Handle close button clicks using event delegation 1160 // $(document).on("click", ".acalog-close", function (e) { 1161 // e.preventDefault(); 1162 // e.stopPropagation(); 1163 // $(this) 1164 // .closest(".acalog-permalink-container").hide(); 1165 // }); 1166} 1167(0,_acalogAPI__WEBPACK_IMPORTED_MODULE_0__.loadAcalogAPI)(fetchCourseDataAndInject, true); 1168 1169/***/ }), 1170
1171/***/ "./src/js/components/acalog/toggleCourseMap.js": 1172/*!*****************************************************!*\ 1173 !*** ./src/js/components/acalog/toggleCourseMap.js ***! 1174 \*****************************************************/ 1175/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1176 1177"use strict"; 1178__webpack_require__.r(__webpack_exports__); 1179/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1180/* harmony export */ initCourseMapToggle: function() { return /* binding */ initCourseMapToggle; } 1181/* harmony export */ }); 1182function initCourseMapToggle() { 1183 let parentSemesters = $(".program__courseMap"); 1184 parentSemesters.each(function () { 1185 let semester = $(this); 1186 let semesterToggle = semester.find(".js-courseSemester"); 1187 let desktopSemesters = semester.find(".js-desktopSemesters"); 1188 semesterToggle.off("click").on("click", function (event) { 1189 let _this = $(this); 1190 let _thisAction = _this.data("action"); 1191 if ($(event.target).closest(".program__courseMap__semester__mobileCourses").length) { 1192 return; 1193 } 1194 if (_this.hasClass("-active")) { 1195 _this.removeClass("-active"); 1196 desktopSemesters.removeClass("-active"); 1197 } else { 1198 semesterToggle.removeClass("-active"); 1199 desktopSemesters.removeClass("-active"); 1200 _this.addClass("-active"); 1201 desktopSemesters.filter(`[data-action="${_thisAction}"]`).addClass("-active"); 1202 } 1203 }); 1204 }); 1205} 1206 1207/***/ }), 1208
1209/***/ "./src/js/components/alerts/index.js": 1210/*!*******************************************!*\ 1211 !*** ./src/js/components/alerts/index.js ***! 1212 \*******************************************/ 1213/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1214 1215"use strict"; 1216__webpack_require__.r(__webpack_exports__); 1217/* harmony default export */ __webpack_exports__["default"] = ($ => { 1218 $('.js-alert-trigger').on('click', function () { 1219 $(this).closest('.js-alert-bar').remove(); 1220 }); 1221}); 1222 1223/***/ }), 1224
1225/***/ "./src/js/components/customSelect/index.js": 1226/*!*************************************************!*\ 1227 !*** ./src/js/components/customSelect/index.js ***! 1228 \*************************************************/ 1229/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1230 1231"use strict"; 1232__webpack_require__.r(__webpack_exports__); 1233/* harmony default export */ __webpack_exports__["default"] = ($ => { 1234 $('select.custom').each(function () { 1235 let $this = $(this), 1236 numberOfOptions = $(this).children('option').length; 1237 let miniSelect = $this.hasClass('mini-select'); 1238 let selectStyledClass = 'select-styled'; 1239 if (miniSelect) { 1240 selectStyledClass = selectStyledClass + ' mini-styled btn arrow'; 1241 } 1242 $this.wrap('<div class="select" tabindex="0"></div>'); 1243 $this.closest('.select').addClass('custom'); 1244 $this.addClass('select-hidden'); 1245 $this.after('<div class="' + selectStyledClass + '"></div>'); 1246 let $styledSelect = $this.next('div.select-styled'); 1247 $styledSelect.text($this.children('option').eq(0).text()); 1248 if (miniSelect) { 1249 $styledSelect.text($this.data('title')); 1250 $(this).val('').change(); 1251 } 1252 let $list = $('<ul />', { 1253 'class': 'select-options js-' + $(this).attr('name') 1254 }).insertAfter($styledSelect); 1255 if (miniSelect) { 1256 $('<li />', { 1257 text: $this.data('title'), 1258 rel: '' 1259 }).appendTo($list); 1260 } 1261 for (let i = 0; i < numberOfOptions; i++) { 1262 let currentOption = $this.children('option').eq(i); 1263 $('<li />', { 1264 class: currentOption.prop('disabled') ? 'disabled' : '', 1265 text: currentOption.text(), 1266 rel: currentOption.val() 1267 }).appendTo($list); 1268 } 1269 let $listItems = $list.children('li'); 1270 $list.hide(); 1271 $styledSelect.click(function (e) { 1272 e.stopPropagation(); 1273 $('.select-styled.active').not(this).removeClass('active').next('ul.select-options').hide(); 1274 $(this).toggleClass('active').next('ul.select-options').toggle(); 1275 }); 1276 $this.val() ? $styledSelect.addClass('hasValue') : $styledSelect.removeClass('hasValue'); 1277 $listItems.click(function (e) { 1278 e.stopPropagation(); 1279 $styledSelect.text($(this).text()).removeClass('active'); 1280 $list.hide(); 1281 $this.val($(this).attr('rel')).change(); 1282 $this.val() ? $styledSelect.addClass('hasValue') : $styledSelect.removeClass('hasValue'); 1283 }); 1284 $(document).click(function (event) { 1285 if (!$(event.target).closest($this).length) { 1286 $styledSelect.removeClass('active'); 1287 $list.hide(); 1288 } 1289 }); 1290 $this.on('change', function () { 1291 const selectedValue = $this.val(); 1292 const selectedText = $this.find(`option[value="${selectedValue}"]`).text(); 1293 $styledSelect.text(selectedText); 1294 $listItems.removeClass('selected'); 1295 $listItems.filter(`[rel="${selectedValue}"]`).addClass('selected'); 1296 selectedValue ? $styledSelect.addClass('hasValue') : $styledSelect.removeClass('hasValue'); 1297 }); 1298 $this.removeClass('custom'); 1299 }); 1300}); 1301(() => { 1302 let lookingForForm = $('.js-lfForm'); 1303 let activateInterest = (selectJQElement, button) => { 1304 selectJQElement.on('change', function () { 1305 let $selected = $(this).find('option:selected'); 1306 let currentVal = $selected.val(); 1307 let target = $selected.data('target'); 1308 let label = $.trim($selected.text()); 1309 let isReal = !!currentVal && label !== 'Looking for...'; 1310 button.attr('href', currentVal); 1311 button.attr('target', target); 1312 button.attr('disabled', !isReal); 1313 button.attr('aria-disabled', isReal ? 'false' : 'true'); 1314 button.attr('aria-label', isReal ? 'Go to ' + label : 'Go'); 1315 }); 1316 }; 1317 lookingForForm.each(function () { 1318 let _form = $(this); 1319 let categorySelect = _form.find('.js-lfFormCategory'); 1320 let linksSelect = _form.find('.js-lfFormLinks'); 1321 let button = _form.find('.js-learnMoreBtn'); 1322 linksSelect.next('div').addClass('-disabled'); 1323 categorySelect.on('change', function () { 1324 let currentLinks = $(this).find('option:selected').data('links'); 1325 let styledSelect = linksSelect.next('.select-styled'); 1326 let listBox = linksSelect.siblings('.select-options'); 1327 linksSelect.next('div').removeClass('-disabled'); 1328 button.attr('disabled', true); 1329 button.attr('aria-disabled', 'true'); 1330 linksSelect.empty(); 1331 listBox.empty(); 1332 styledSelect.removeClass('hasValue'); 1333 Array.prototype.forEach.call(currentLinks, function (item, index) {
1334 let text = item['title'] ? item['title'] : item['name']; 1335 let target = item['target'] ? item['target'] : ''; 1336 if (index === 0) { 1337 styledSelect.text(text); 1338 button.attr('href', item['url']); 1339 button.attr('aria-label', 'Go'); 1340 } 1341 $('<option />', { 1342 value: item['url'], 1343 text: text, 1344 'data-target': target 1345 }).appendTo(linksSelect); 1346 $('<li />', { 1347 text: text, 1348 rel: item['url'], 1349 class: text === 'Looking for...' ? 'disabled' : '' 1350 }).appendTo(listBox); 1351 }); 1352 let $listItems = listBox.children('li'); 1353 $listItems.click(function (e) { 1354 e.stopPropagation(); 1355 styledSelect.text($(this).text()).removeClass('active'); 1356 listBox.hide(); 1357 linksSelect.val($(this).attr('rel')).change(); 1358 linksSelect.val() ? styledSelect.addClass('hasValue') : styledSelect.removeClass('hasValue'); 1359 }); 1360 activateInterest(linksSelect, button); 1361 }); 1362 activateInterest(linksSelect, button); 1363 }); 1364})(); 1365 1366/***/ }), 1367
1368/***/ "./src/js/components/filters/index.js": 1369/*!********************************************!*\ 1370 !*** ./src/js/components/filters/index.js ***! 1371 \********************************************/ 1372/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1373 1374"use strict"; 1375__webpack_require__.r(__webpack_exports__); 1376/* harmony default export */ __webpack_exports__["default"] = ($ => { 1377 const INITIAL_VISIBLE_ITEMS = 1000; 1378 const LOAD_MORE_INCREMENT = 2; 1379 const initialParams = new URLSearchParams(window.location.search); 1380 const $filterForms = $('.js-filterForm'); 1381 const $filterResults = $('.js-filterResults'); 1382 if (!$filterForms.length || !$filterResults.length) return; 1383 $filterForms.each(function () { 1384 const $filterForm = $(this); 1385 const $filters = $filterForm.find('select, input[type=radio], input[type=checkbox]'); 1386 const $filterSearch = $filterForm.find('input[name=search]'); 1387 const $resetBtn = $filterForm.find('.js-filterReset'); 1388 const $loadMoreBtn = $filterResults.find('.js-loadMoreFilters'); 1389 const $filterItems = $filterResults.find('.js-filterItem'); 1390 const facultyStaffFilter = $('.js-toggleSpecificFilter'); 1391 const specificFilter = $('.js-specificFilter'); 1392 let _filters = []; 1393 let visibleItems = INITIAL_VISIBLE_ITEMS; 1394 const NO_RESULTS_HTML = ` 1395 <div class="_subhead no-results-message _12"> 1396 No results. Try adapting or resetting filters. 1397 </div> 1398 `; 1399 let resetFilters = () => { 1400 const cleanUrl = window.location.origin + window.location.pathname; 1401 window.location.href = cleanUrl; 1402 }; 1403 const initializeFiltersFromURL = () => { 1404 _filters = []; 1405 initialParams.forEach((value, name) => { 1406 if (value && value !== "") { 1407 _filters.push({ 1408 name, 1409 value 1410 }); 1411 } 1412 }); 1413 $filters.each(function () { 1414 const $filter = $(this); 1415 const name = $filter.attr('name'); 1416 const matchingFilter = _filters.find(filter => filter.name === name); 1417 if (matchingFilter) { 1418 if ($filter.is('select')) { 1419 $filter.val(matchingFilter.value); 1420 } else if ($filter.is(':radio, :checkbox')) { 1421 $filter.prop('checked', $filter.val() === matchingFilter.value); 1422 } 1423 } 1424 }); 1425 const searchFilter = _filters.find(filter => filter.name === $filterSearch.attr('name')); 1426 if (searchFilter) { 1427 $filterSearch.val(searchFilter.value); 1428 } 1429 }; 1430 initializeFiltersFromURL(); 1431 const updateQueryParams = () => { 1432 const params = new URLSearchParams(); 1433 _filters.forEach(filter => { 1434 if (filter.value) { 1435 params.set(filter.name, filter.value); 1436 } 1437 }); 1438 if (params.toString()) { 1439 history.replaceState(null, '', `${window.location.pathname}?${params.toString()}`); 1440 } else { 1441 history.replaceState(null, '', window.location.pathname); 1442 } 1443 }; 1444 const updateFilterState = $filter => { 1445 const name = $filter.attr('name'); 1446 const value = $filter.is(':checkbox, :radio') ? $filter.is(':checked') ? $filter.val() : null : $filter.val(); 1447 _filters = _filters.filter(f => f.name !== name); 1448 if (value && value !== '') { 1449 _filters.push({ 1450 name, 1451 value 1452 }); 1453 } 1454 }; 1455 const applyFilters = () => { 1456 let totalMatchingCount = 0; // Track the number of items that match filters 1457 let visibleCount = 0; // Count items we are showing 1458 1459 // Remove any existing 'No Results' message 1460 $filterResults.find('.no-results-message').remove(); 1461 $filterItems.each(function () { 1462 const $item = $(this); 1463 let matches = true; 1464 1465 // Check filters other than search 1466 _filters.forEach(filter => { 1467 if (filter.name !== 'search') { 1468 if (!$item.hasClass(filter.value)) { 1469 matches = false; 1470 } 1471 } 1472 }); 1473 1474 // Check search filter 1475 const searchFilter = _filters.find(filter => filter.name === 'search'); 1476 if (searchFilter) { 1477 const searchValue = searchFilter.value.toLowerCase(); 1478 const itemText = $item.text().toLowerCase(); 1479 if (!itemText.includes(searchValue)) { 1480 matches = false;
1481 } 1482 } 1483 1484 // Count total matching items 1485 if (matches) { 1486 totalMatchingCount++; 1487 if (visibleCount < visibleItems) { 1488 $item.show(); 1489 visibleCount++; 1490 } else { 1491 $item.hide(); 1492 } 1493 } else { 1494 $item.hide(); 1495 } 1496 }); 1497 if (totalMatchingCount === 0) { 1498 $filterResults.append(NO_RESULTS_HTML); 1499 $loadMoreBtn.hide(); 1500 } else { 1501 if (visibleCount < totalMatchingCount) { 1502 $loadMoreBtn.show(); 1503 } else { 1504 $loadMoreBtn.hide(); 1505 } 1506 } 1507 updateQueryParams(); 1508 }; 1509 applyFilters(); 1510 $loadMoreBtn.on('click', function () { 1511 visibleItems += LOAD_MORE_INCREMENT; 1512 applyFilters(); 1513 }); 1514 $filters.on('change', function () { 1515 updateFilterState($(this)); 1516 applyFilters(); 1517 }); 1518 $filterSearch.on('input cut change keyup blur', function () { 1519 updateFilterState($(this)); 1520 applyFilters(); 1521 }); 1522 $resetBtn.on('click', function (e) { 1523 e.preventDefault(); 1524 resetFilters(); 1525 }); 1526 facultyStaffFilter.on('change', function () { 1527 let $_this = $(this); 1528 let $thisData = $_this.val(); 1529 if (!$_this.is(':checked')) { 1530 $thisData = ''; 1531 } 1532 specificFilter.hide().each(function () { 1533 let $firstDisabledLi = $(this).find('li.disabled').first(); 1534 let selectStyled = $(this).find('div.select-styled').first(); 1535 if ($firstDisabledLi.length) { 1536 $firstDisabledLi.trigger('click'); 1537 } 1538 if (selectStyled.length) { 1539 selectStyled.removeClass('hasValue'); 1540 selectStyled.text($thisData === 'faculty' ? 'Department' : 'Office'); 1541 } 1542 }); 1543 if (!$thisData) return; 1544 specificFilter.filter(`[data-specific="${$thisData}"]`).show(); 1545 }); 1546 let $selectedFilter = facultyStaffFilter.filter(':checked'); 1547 if ($selectedFilter.length) { 1548 let $thisData = $selectedFilter.val(); 1549 specificFilter.filter(`[data-specific="${$thisData}"]`).show(); 1550 } 1551 $filterForm.on('submit', function (e) { 1552 e.preventDefault(); 1553 }); 1554 }); 1555}); 1556 1557/***/ }), 1558
1559/***/ "./src/js/components/firstSection/index.js": 1560/*!*************************************************!*\ 1561 !*** ./src/js/components/firstSection/index.js ***! 1562 \*************************************************/ 1563/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1564 1565"use strict"; 1566__webpack_require__.r(__webpack_exports__); 1567/* harmony default export */ __webpack_exports__["default"] = ($ => { 1568 const firstModule = $('section.module').first(); 1569 if (firstModule.css("padding-top") === "0px") { 1570 firstModule.css("padding-top", "40px"); 1571 } 1572}); 1573 1574/***/ }), 1575
1576/***/ "./src/js/components/loadMore/index.js": 1577/*!*********************************************!*\ 1578 !*** ./src/js/components/loadMore/index.js ***! 1579 \*********************************************/ 1580/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1581 1582"use strict"; 1583__webpack_require__.r(__webpack_exports__); 1584/* harmony default export */ __webpack_exports__["default"] = ($ => { 1585 let loadMore = $('.js-loadMore'); 1586 let loadMoreSearch = $('.js-loadMoreSearch'); 1587 if (!loadMore.length && !loadMoreSearch.length) return; 1588 const { 1589 ajaxurl, 1590 current_page, 1591 found_posts, 1592 max_page, 1593 posts_per_page 1594 } = wp_params; 1595 if (parseInt(found_posts) <= parseInt(posts_per_page)) { 1596 loadMore.closest('div').remove(); 1597 loadMoreSearch.closest('div').remove(); 1598 return; 1599 } 1600 let isSearch = loadMore.data('search') || false; 1601 let searchQuery = loadMore.data('searchquery') || ''; 1602 let action = isSearch ? 'load_more_search_posts' : 'load_more_posts'; 1603 let postType = loadMore.data('type'); 1604 let container = $(loadMore.data('container')); 1605 let term = loadMore.data('term'); 1606 let termId = loadMore.data('termid'); 1607 let template = loadMore.data('template'); 1608 let page = current_page; 1609 loadMore.on('click', function (e) { 1610 e.preventDefault(); 1611 if (page >= max_page) return; 1612 $.ajax({ 1613 url: ajaxurl, 1614 type: 'POST', 1615 data: { 1616 action: action, 1617 page: parseInt(page) + 1, 1618 post_type: postType, 1619 term: term, 1620 termId: parseInt(termId), 1621 viewTemplate: template, 1622 search: isSearch, 1623 s: searchQuery 1624 }, 1625 beforeSend: function () { 1626 loadMore.html('<span>Loading...</span>'); 1627 }, 1628 success: function (response) { 1629 if (response) { 1630 if (response?.data?.html) { 1631 container.append(response.data.html); 1632 page++; 1633 wp_params.current_page = page; 1634 if (page >= max_page) { 1635 loadMore.closest('div').remove(); 1636 } else { 1637 loadMore.html('<span>Load More</span>'); 1638 } 1639 } else { 1640 loadMore.closest('div').remove(); 1641 } 1642 } else { 1643 loadMore.closest('div').remove(); 1644 } 1645 }, 1646 error: function () { 1647 loadMore.html('<span>Error. Please try later.</span>'); 1648 } 1649 }); 1650 }); 1651 loadMoreSearch.click(function () { 1652 var btn = $(this); 1653 var page = parseInt(btn.data("page")); 1654 var query = btn.data("query"); 1655 let container = $(btn.data('container')); 1656 $.ajax({ 1657 type: "POST", 1658 url: ajaxurl, 1659 data: { 1660 action: "load_more_search_posts", 1661 paged: page, 1662 s: query 1663 }, 1664 beforeSend: function () { 1665 btn.html('<span>Loading...</span>'); 1666 }, 1667 success: function (response) { 1668 if ($.trim(response) !== "") { 1669 container.append(response); 1670 btn.data("page", page + 1); 1671 btn.attr("data-page", page + 1); 1672 btn.html("<span>Load More</span>"); 1673 } else { 1674 btn.remove(); 1675 } 1676 }, 1677 error: function () { 1678 loadMore.html('<span>Error. Please try later.</span>'); 1679 } 1680 }); 1681 }); 1682}); 1683 1684/***/ }), 1685
1686/***/ "./src/js/components/officeFilters/index.js": 1687/*!**************************************************!*\ 1688 !*** ./src/js/components/officeFilters/index.js ***! 1689 \**************************************************/ 1690/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1691 1692"use strict"; 1693__webpack_require__.r(__webpack_exports__); 1694/* harmony default export */ __webpack_exports__["default"] = ($ => { 1695 const filterForm = document.querySelector(".js-officeFilterForm"); 1696 if (!filterForm) return; 1697 const searchInput = filterForm.querySelector('input[name="search"]'); 1698 const officeDivisions = document.querySelectorAll(".js-officeDivision"); 1699 1700 // No Results HTML 1701 const NO_RESULTS_HTML = ` 1702 <div class="_subhead no-results-message" style="margin-top: 40px;"> 1703 No results. Try adapting or resetting filters. 1704 </div> 1705 `; 1706 searchInput.addEventListener("input", () => { 1707 const searchTerm = searchInput.value.trim().toLowerCase(); 1708 let hasResults = false; 1709 officeDivisions.forEach(division => { 1710 let divisionVisible = false; 1711 1712 // Process each department inside the division 1713 const departments = division.querySelectorAll(".js-officeDepartment"); 1714 departments.forEach(department => { 1715 let departmentVisible = false; 1716 1717 // Check the department link text 1718 const departmentLink = department.querySelector(".js-officeDepartmentLink"); 1719 if (departmentLink && departmentLink.textContent.toLowerCase().includes(searchTerm)) { 1720 departmentVisible = true; 1721 } 1722 1723 // Check each child office inside the department 1724 const offices = department.querySelectorAll(".js-office"); 1725 offices.forEach(office => { 1726 const officeText = office.textContent.toLowerCase(); 1727 if (officeText.includes(searchTerm)) { 1728 departmentVisible = true; 1729 } 1730 }); 1731 1732 // Show or hide the department based on matches 1733 if (departmentVisible) { 1734 department.style.display = ""; 1735 divisionVisible = true; // Mark parent division as visible 1736 } else { 1737 department.style.display = "none"; 1738 } 1739 }); 1740 1741 // Show or hide the division based on department visibility 1742 if (divisionVisible) { 1743 division.style.display = ""; 1744 hasResults = true; // At least one division is visible 1745 } else { 1746 division.style.display = "none"; 1747 } 1748 }); 1749 1750 // Handle "No Results" message 1751 const noResultsMessage = document.querySelector(".no-results-message"); 1752 if (!hasResults) { 1753 if (!noResultsMessage) { 1754 filterForm.insertAdjacentHTML("afterend", NO_RESULTS_HTML); 1755 } 1756 } else { 1757 if (noResultsMessage) { 1758 noResultsMessage.remove(); 1759 } 1760 } 1761 }); 1762}); 1763 1764/***/ }), 1765
1766/***/ "./src/js/components/pathways/index.js": 1767/*!*********************************************!*\ 1768 !*** ./src/js/components/pathways/index.js ***! 1769 \*********************************************/ 1770/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1771 1772"use strict"; 1773__webpack_require__.r(__webpack_exports__); 1774/* harmony default export */ __webpack_exports__["default"] = ($ => { 1775 let pathways = $('._pathways'); 1776 pathways.each((index, el) => { 1777 let _el = $(el); 1778 let triggers = _el.find('.js-pathwayTrigger'); 1779 let targets = _el.find('.js-pathwayTarget'); 1780 triggers.on('click', function (e) { 1781 e.preventDefault(); 1782 let _this = $(this); 1783 if (_this.hasClass('-active')) return; 1784 targets.hide(); 1785 triggers.removeClass('-active').attr('aria-pressed', 'false'); 1786 _this.addClass('-active').attr('aria-pressed', 'true'); 1787 let dataTarget = _this.data('trigger'); 1788 targets.filter(`[data-trigger="${dataTarget}"]`).show(); 1789 }); 1790 }); 1791}); 1792 1793/***/ }), 1794
1795/***/ "./src/js/components/profilePopup/index.js": 1796/*!*************************************************!*\ 1797 !*** ./src/js/components/profilePopup/index.js ***! 1798 \*************************************************/ 1799/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1800 1801"use strict"; 1802__webpack_require__.r(__webpack_exports__); 1803/* harmony import */ var glightbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! glightbox */ "./node_modules/glightbox/dist/js/glightbox.min.js"); 1804/* harmony import */ var glightbox__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(glightbox__WEBPACK_IMPORTED_MODULE_0__); 1805 1806/* harmony default export */ __webpack_exports__["default"] = ($ => { 1807 const profilePopupTriggers = $('.js-fetchProfile'); 1808 profilePopupTriggers.on('click', async function (e) { 1809 e.preventDefault(); 1810 let _this = $(this); 1811 let ID = _this.data('id'); 1812 const { 1813 ajaxurl 1814 } = wp_params; 1815 if (!ID) { 1816 console.error("No ID provided for the profile popup."); 1817 return; 1818 } 1819 try { 1820 const response = await $.ajax({ 1821 url: ajaxurl, 1822 type: 'POST', 1823 data: { 1824 action: 'load_profile_popup', 1825 termId: ID 1826 } 1827 }); 1828 const lightbox = glightbox__WEBPACK_IMPORTED_MODULE_0___default()({ 1829 elements: [{ 1830 content: response, 1831 type: 'inline' 1832 }], 1833 touchNavigation: false, 1834 width: "920px", 1835 height: "auto" 1836 }); 1837 lightbox.open(); 1838 } catch (error) { 1839 console.error("Error loading profile popup:", error); 1840 const lightbox = glightbox__WEBPACK_IMPORTED_MODULE_0___default()({ 1841 elements: [{ 1842 content: `<div>Error loading profile content. Please try again later.</div>`, 1843 type: 'inline' 1844 }] 1845 }); 1846 lightbox.open(); 1847 } 1848 }); 1849}); 1850 1851/***/ }), 1852
1853/***/ "./src/js/components/programFinder/index.js": 1854/*!**************************************************!*\ 1855 !*** ./src/js/components/programFinder/index.js ***! 1856 \**************************************************/ 1857/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1858 1859"use strict"; 1860__webpack_require__.r(__webpack_exports__); 1861/* harmony import */ var _customSelect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../customSelect */ "./src/js/components/customSelect/index.js"); 1862/* harmony import */ var _helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../helpers/activeTrigger */ "./src/js/helpers/activeTrigger.js"); 1863/* harmony import */ var _acalog_modules_overviewInProgramFinder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../acalog/modules/overviewInProgramFinder */ "./src/js/components/acalog/modules/overviewInProgramFinder.js"); 1864 1865 1866 1867/* harmony default export */ __webpack_exports__["default"] = ($ => { 1868 const goals = $('[data-goal]'); 1869 const goalsSelect = $('select[name="goalSelect"]'); 1870 const filterGoals = $('.js-goalFilter'); 1871 const toggleFilters = $('.toggle-filters'); 1872 const contentBox = $('#content-box'); 1873 const filtersBox = $('#filters-box'); 1874 const url = new URL(window.location); 1875 const goalIdParam = url.searchParams.get('goalId'); 1876 let initializedActiveFilters = getFiltersFromQueryParams(); 1877 let isProgrammaticChange = false; 1878 if (!goals.length) return; 1879 async function fetchDegrees() { 1880 if (isProgrammaticChange) { 1881 isProgrammaticChange = false; 1882 return; 1883 } 1884 let _this = $(this); 1885 let ID; 1886 if (_this.is('select')) { 1887 ID = _this.val(); 1888 } else if (_this.is('[data-goal]')) { 1889 ID = _this.data('goal'); 1890 isProgrammaticChange = true; 1891 goalsSelect.val(ID).change(); 1892 } 1893 if (ID) { 1894 url.searchParams.set('goalId', ID); 1895 window.history.pushState({}, '', url); 1896 } 1897 const { 1898 ajaxurl 1899 } = wp_params; 1900 if (!ID) { 1901 console.error("No ID provided for the profile popup."); 1902 return; 1903 } 1904 try { 1905 const response = await $.ajax({ 1906 url: ajaxurl, 1907 type: 'POST', 1908 data: { 1909 action: 'load_degrees', 1910 goalId: ID 1911 } 1912 }); 1913 const { 1914 html, 1915 degrees 1916 } = response?.data; 1917 contentBox.html(html); 1918 if (degrees.length === 1) { 1919 const degreeId = degrees[0].id; 1920 const $degreeItem = $(`[data-degree-id="${degreeId}"]`); 1921 $degreeItem.addClass('-active'); 1922 } 1923 generateFilters(degrees); 1924 (0,_acalog_modules_overviewInProgramFinder__WEBPACK_IMPORTED_MODULE_2__.overviewInProgramFinder)(); 1925 if (initializedActiveFilters) { 1926 preselectFilters(degrees); 1927 initializedActiveFilters = null; 1928 } 1929 (0,_customSelect__WEBPACK_IMPORTED_MODULE_0__["default"])($); 1930 (0,_helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__["default"])(); 1931 filterGoals.removeClass('hidden'); 1932 toggleFilters.removeClass('hidden'); 1933 } catch (error) { 1934 console.error("Error loading profile popup:", error); 1935 } 1936 } 1937 function generateFilters(degrees) { 1938 filtersBox.find('._programFinder__left__filter:not(.js-goalFilter)').remove(); 1939 const filters = { 1940 degree_types: new Set(), 1941 preferred_learning: new Set(), 1942 locations: new Set(), 1943 area_of_study: new Set(), 1944 credentials: new Set() 1945 }; 1946 degrees.forEach(degree => { 1947 if (degree.locations) { 1948 degree.locations.forEach(location => filters.locations.add(location)); 1949 } 1950 if (degree.area_of_study) { 1951 degree.area_of_study.forEach(aos => filters.area_of_study.add(aos)); 1952 } 1953 if (degree.credentials) { 1954 degree.credentials.forEach(cred => filters.credentials.add(cred)); 1955 } 1956 if (degree.degree_types) { 1957 degree.degree_types.forEach(dt => filters.degree_types.add(dt)); 1958 } 1959 if (degree.preferred_learning) { 1960 degree.preferred_learning.forEach(pl => filters.preferred_learning.add(pl)); 1961 } 1962 }); 1963 if (filters?.locations?.size) renderCheckboxFilter('locations', 'Locations', filters.locations); 1964 if (filters?.credentials?.size) renderCheckboxFilter('credentials', 'Credentials', filters.credentials); 1965 if (filters?.degree_types?.size) renderCheckboxFilter('degree_types', 'Degree Types', filters.degree_types); 1966 if (filters?.preferred_learning?.size) renderCheckboxFilter('preferred_learning', 'Preferred Learning', filters.preferred_learning); 1967 if (filters?.area_of_study?.size) createFilterDropdown('area_of_study', 'Area of Study', filters.area_of_study); 1968 renderResetBtn(); 1969 filtersBox.find('input[type="checkbox"], select').on('change', function () { 1970 applyFilters(degrees); 1971 }); 1972 } 1973 function renderResetBtn() { 1974 const resetBtn = ` 1975 <div class="_programFinder__left__filter field field__reset" style="padding-top: 0;"> 1976 <a href="${window.location.origin + window.location.pathname}" class="js-filterReset resetBtn" style="font-weight: 600;" aria-label="Click to reset filters"> 1977 <svg width="15" height="15" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg"> 1978 <path d="M13.4844 6.50022H13.75C14.1657 6.50022 14.5 6.16585 14.5 5.75022V1.75022C14.5 1.4471 14.3188 1.1721 14.0375 1.05647C13.7563 0.940849 13.4344 1.00335 13.2188 1.21897L11.9
1978188 2.51897C9.1813 -0.184151 4.77192 -0.174776 2.05005 2.55022C-0.684326 5.2846 -0.684326 9.71585 2.05005 12.4502C4.78442 15.1846 9.21567 15.1846 11.95 12.4502C12.3407 12.0596 12.3407 11.4252 11.95 11.0346C11.5594 10.644 10.925 10.644 10.5344 11.0346C8.5813 12.9877 5.41567 12.9877 3.46255 11.0346C1.50942 9.08147 1.50942 5.91585 3.46255 3.96272C5.4063 2.01897 8.54692 2.0096 10.5032 3.93147L9.2188 5.21897C9.00317 5.4346 8.94067 5.75647 9.0563 6.03772C9.17192 6.31897 9.44692 6.50022 9.75005 6.50022H13.4844Z" fill="#005889"/> 1979 </svg> 1980 Reset 1981 </a> 1982 </div>`; 1983 filtersBox.append(resetBtn); 1984 } 1985 function renderCheckboxFilter(name, title, options) { 1986 const checkboxes = Array.from(options).map(option => ` 1987 <label> 1988 <input type="checkbox" name="${name}" value="${option}"> 1989 ${option} 1990 </label> 1991 `).join(''); 1992 const filterHTML = ` 1993 <div class="_programFinder__left__filter -checkbox"> 1994 <div class="_programFinder__left__filter__title _filterTitle">${title}</div> 1995 <div class="_programFinder__left__filter__item -checkbox__boxes"> 1996 ${checkboxes} 1997 </div> 1998 </div> 1999 `; 2000 filtersBox.append(filterHTML); 2001 } 2002 function createFilterDropdown(name, title, options) { 2003 const dropdown = Array.from(options).map(option => `<option value="${option}">${option}</option>`).join(''); 2004 const filterHTML = ` 2005 <div class="_programFinder__left__filter -select"> 2006 <div class="_programFinder__left__filter__title _filterTitle">${title}</div> 2007 <div class="_programFinder__left__filter__item"> 2008 <select name="${name}" class="custom" style="display: none;"> 2009 <option value="">Select ${title}</option> 2010 ${dropdown} 2011 </select> 2012 </div> 2013 </div> 2014 `; 2015 filtersBox.append(filterHTML); 2016 } 2017 function applyFilters(degrees) { 2018 $('.-active').removeClass('-active'); 2019 const activeFilters = { 2020 degree_types: getCheckedValues('degree_types'), 2021 preferred_learning: getCheckedValues('preferred_learning'), 2022 locations: getCheckedValues('locations'), 2023 area_of_study: getDropdownValue('area_of_study'), 2024 credentials: getCheckedValues('credentials') 2025 }; 2026 updateQueryParams(activeFilters); 2027 degrees.forEach(degree => { 2028 let degreeMatches = false; // Flag to track if any program in this degree matches 2029 2030 degree.programs.forEach(program => { 2031 let programMatches = true; // Assume program matches by default 2032 let programId = program.id; 2033 2034 // Loop through all active filters 2035 for (let [filterName, filterValues] of Object.entries(activeFilters)) { 2036 if (filterValues.length > 0) { 2037 const programFilterValues = program[filterName]; 2038 2039 // Check if the program matches the current filter 2040 if (!programFilterValues || !filterValues.some(value => programFilterValues.includes(value))) { 2041 programMatches = false; // Mark the program as non-matching 2042 break; // Stop checking filters if one doesn't match 2043 } 2044 } 2045 } 2046 2047 // Handle visibility of the program based on whether it matches 2048 if (programMatches) { 2049 $(`[data-program-id="${programId}"]`).show(); 2050 degreeMatches = true; // Mark degree as matching if this program matches 2051 } else { 2052 $(`[data-program-id="${programId}"]`).hide(); 2053 } 2054 }); 2055 $(`[data-degree-id="${degree.id}"]`).toggle(degreeMatches); 2056 const visibleDegrees = $('[data-degree-id]:visible'); 2057 if (visibleDegrees.length === 1) { 2058 const $degreeItem = visibleDegrees.first(); 2059 $degreeItem.addClass('-active'); 2060 } 2061 }); 2062 } 2063 function getCheckedValues(filterName) { 2064 return filtersBox.find(`input[name="${filterName}"]:checked`).map((_, checkbox) => checkbox.value).get(); 2065 } 2066 function getDropdownValue(filterName) { 2067 const value = filtersBox.find(`select[name="${filterName}"]`).val(); 2068 return value ? [value] : []; 2069 } 2070 function getFiltersFromQueryParams() { 2071 const params = new URLSearchParams(window.location.search); 2072 const filters = {}; 2073 2074 // Extract filters from query parameters 2075 const filterKeys = ['degree_types', 'preferred_learning', 'locations', 'area_of_study', 'credentials']; 2076 filterKeys.forEach(key => { 2077 const paramValue = params.get(key); 2078 if (paramValue) { 2079 filters[key] = paramValue.split(','); // Multiple values are separated by commas 2080 } else { 2081 filters[key] = []; 2082 } 2083 }); 2084 return filters; 2085 } 2086 function preselectFilters(degrees) { 2087 // Pre-select checkboxes based on `initializedActiveFilters` 2088 let exists = false;
2089 if (!initializedActiveFilters) return; 2090 Object.keys(initializedActiveFilters).forEach(filterKey => { 2091 const filterValues = initializedActiveFilters[filterKey]; 2092 if (filterKey === 'degree_types' || filterKey === 'preferred_learning' || filterKey === 'locations' || filterKey === 'credentials') { 2093 filterValues.forEach(value => { 2094 $(`input[name="${filterKey}"`).filter(`[value="${value}"]`).prop('checked', true); 2095 }); 2096 } 2097 2098 // For dropdowns, select the option if it matches 2099 if (filterKey === 'area_of_study') { 2100 filterValues.forEach(value => { 2101 $(`select[name="${filterKey}"`).val(value).trigger('change'); // Select matching option in dropdown 2102 }); 2103 } 2104 exists = true; 2105 }); 2106 if (exists) { 2107 applyFilters(degrees); 2108 } 2109 } 2110 function updateQueryParams(activeFilters) { 2111 const url = new URL(window.location); 2112 2113 // Loop through each active filter and update the URL 2114 for (const [filterName, filterValues] of Object.entries(activeFilters)) { 2115 if (filterValues.length > 0) { 2116 // Set the filter in the URL with values joined by commas 2117 url.searchParams.set(filterName, filterValues.join(',')); 2118 } else { 2119 // If no values are selected for the filter, remove the filter from the URL 2120 url.searchParams.delete(filterName); 2121 } 2122 } 2123 2124 // Update the URL without reloading the page 2125 window.history.pushState({}, '', url); 2126 } 2127 goals.on('click', fetchDegrees); 2128 goalsSelect.on('change', fetchDegrees); 2129 $(document).ready(() => { 2130 if (goalIdParam) { 2131 goalsSelect.val(goalIdParam).change(); 2132 } 2133 }); 2134}); 2135 2136/***/ }), 2137
2138/***/ "./src/js/components/siteNav/index.js": 2139/*!********************************************!*\ 2140 !*** ./src/js/components/siteNav/index.js ***! 2141 \********************************************/ 2142/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2143 2144"use strict"; 2145__webpack_require__.r(__webpack_exports__); 2146/* harmony import */ var _helpers_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../helpers/debounce */ "./src/js/helpers/debounce.js"); 2147 2148function getScrollXY() { 2149 let scrOfX = 0, 2150 scrOfY = 0; 2151 if (typeof window.pageYOffset == 'number') { 2152 //Netscape compliant 2153 scrOfY = window.pageYOffset; 2154 scrOfX = window.pageXOffset; 2155 } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) { 2156 //DOM compliant 2157 scrOfY = document.body.scrollTop; 2158 scrOfX = document.body.scrollLeft; 2159 } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) { 2160 //IE6 standards compliant mode 2161 scrOfY = document.documentElement.scrollTop; 2162 scrOfX = document.documentElement.scrollLeft; 2163 } 2164 return [scrOfX, scrOfY]; 2165} 2166function getDocHeight() { 2167 let D = document; 2168 let _body = document.body; 2169 return Math.max(_body.scrollHeight, D.documentElement.scrollHeight, _body.offsetHeight, D.documentElement.offsetHeight, _body.clientHeight, D.documentElement.clientHeight); 2170} 2171function calculateFirstParents(elements) { 2172 if (!elements || !elements.length) return; 2173 let DISTANCE_CONST = 650; 2174 let elementsChildren = elements.find('> .menu.-submenu'); 2175 let innerWidth = window.innerWidth; 2176 if (innerWidth < 1280) { 2177 elementsChildren.attr('style', ''); 2178 return; 2179 } 2180 elements.each((index, el) => { 2181 let rect = el.getBoundingClientRect(); 2182 let elWidth = rect.width; 2183 let distanceRight = innerWidth - rect.right; 2184 let childElSubmenu = $(el).find('> .menu.-submenu'); 2185 if (distanceRight + elWidth < DISTANCE_CONST) { 2186 let value = index === elements.length - 1 ? '0' : '-18px'; 2187 childElSubmenu.attr('style', `left: auto; right: ${value}`); 2188 } else { 2189 childElSubmenu.attr('style', ''); 2190 } 2191 }); 2192} 2193function positionSubmenu() { 2194 const menuItem = document.querySelectorAll('.js-moreTrigger'); 2195 if (!menuItem) return; 2196 menuItem.forEach(el => { 2197 const subMenu = el.querySelector('.moreMenu'); 2198 if (!subMenu) return; 2199 const menuItemRect = el.getBoundingClientRect(); 2200 const viewportWidth = window.innerWidth; 2201 const rightOffset = viewportWidth - (menuItemRect.left + menuItemRect.width); 2202 subMenu.style.right = `-${rightOffset}px`; 2203 }); 2204} 2205/* harmony default export */ __webpack_exports__["default"] = ($ => { 2206 let _body = document.body; 2207 let saved_scroll_position = 0; 2208 let current_scroll_position; 2209 let firstParentElements = $('.site__nav .menu > .menu-item-has-children'); 2210 let doc = $(document); 2211 _body.classList.toggle('scroll', doc.scrollTop() > 50); 2212 window.addEventListener('scroll', function () { 2213 current_scroll_position = window.pageYOffset; 2214 if (saved_scroll_position < current_scroll_position && current_scroll_position > 50) { 2215 _body.classList.remove('slideDown'); 2216 _body.classList.add('slideUp'); 2217 } else if (saved_scroll_position > current_scroll_position && getDocHeight() - 50 > getScrollXY()[1] + window.innerHeight) { 2218 _body.classList.remove('slideUp'); 2219 _body.classList.add('slideDown'); 2220 } 2221 saved_scroll_position = current_scroll_position; 2222 if (window.pageYOffset >= 50) { 2223 _body.classList.add('fixed-nav', 'scrolled'); 2224 } else { 2225 _body.classList.remove('fixed-nav'); 2226 } 2227 }); 2228 calculateFirstParents(firstParentElements); 2229 positionSubmenu(); 2230 window.addEventListener('resize', (0,_helpers_debounce__WEBPACK_IMPORTED_MODULE_0__["default"])(function () { 2231 calculateFirstParents(firstParentElements); 2232 positionSubmenu(); 2233 }, 500)); 2234}); 2235 2236/***/ }), 2237
2238/***/ "./src/js/components/swiper/index.js": 2239/*!*******************************************!*\ 2240 !*** ./src/js/components/swiper/index.js ***! 2241 \*******************************************/ 2242/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2243 2244"use strict"; 2245__webpack_require__.r(__webpack_exports__); 2246/* harmony import */ var swiper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! swiper */ "./node_modules/swiper/swiper.mjs"); 2247/* harmony import */ var swiper_modules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swiper/modules */ "./node_modules/swiper/modules/index.mjs"); 2248 2249 2250/* harmony default export */ __webpack_exports__["default"] = (() => { 2251 // Profile Spotlights carousel 2252 document.querySelectorAll('.js-profileSwiper').forEach(el => { 2253 new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](el, { 2254 modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation], 2255 slidesPerView: 'auto', 2256 spaceBetween: 16, 2257 pagination: { 2258 el: el.querySelector('.swiper_buttons_pagination'), 2259 clickable: true, 2260 dynamicBullets: true, 2261 dynamicMainBullets: 4 2262 }, 2263 navigation: { 2264 nextEl: el.querySelector('.swiper_buttons_next'), 2265 prevEl: el.querySelector('.swiper_buttons_prev') 2266 } 2267 }); 2268 }); 2269 2270 // News / Events block carousels 2271 document.querySelectorAll('.js-newsEventsSwiper').forEach(el => { 2272 const isSideBySide = el.dataset.layout === 'side-by-side'; 2273 const hasAutoplay = el.dataset.autoplay === '1'; 2274 const totalSlides = el.querySelectorAll('.swiper-slide').length; 2275 const getDynamic = w => { 2276 const perPage = w >= 1024 ? 4 : w >= 768 ? 2 : 1; 2277 const pages = Math.ceil(totalSlides / perPage); 2278 return pages > 4; 2279 }; 2280 const config = { 2281 modules: [swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Pagination, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Navigation, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Grid, swiper_modules__WEBPACK_IMPORTED_MODULE_1__.Autoplay], 2282 slidesPerView: 1, 2283 spaceBetween: 24, 2284 autoHeight: true, 2285 grid: { 2286 rows: 1, 2287 fill: 'row' 2288 }, 2289 ...(hasAutoplay && { 2290 autoplay: { 2291 delay: 5000, 2292 disableOnInteraction: false, 2293 pauseOnMouseEnter: true 2294 } 2295 }), 2296 breakpoints: { 2297 768: { 2298 slidesPerView: 2, 2299 spaceBetween: 24, 2300 grid: { 2301 rows: 1, 2302 fill: 'row' 2303 } 2304 }, 2305 1024: isSideBySide ? { 2306 slidesPerView: 1, 2307 spaceBetween: 30, 2308 grid: { 2309 rows: 4, 2310 fill: 'row' 2311 }, 2312 autoHeight: false 2313 } : { 2314 slidesPerView: 2, 2315 spaceBetween: 30, 2316 grid: { 2317 rows: 2, 2318 fill: 'row' 2319 }, 2320 autoHeight: false 2321 } 2322 }, 2323 navigation: { 2324 nextEl: el.querySelector('.swiper_buttons_next'), 2325 prevEl: el.querySelector('.swiper_buttons_prev') 2326 } 2327 }; 2328 const init = dynamic => { 2329 return new swiper__WEBPACK_IMPORTED_MODULE_0__["default"](el, { 2330 ...config, 2331 pagination: { 2332 el: el.querySelector('.swiper_buttons_pagination'), 2333 clickable: true, 2334 dynamicBullets: dynamic, 2335 dynamicMainBullets: 4 2336 } 2337 }); 2338 }; 2339 let dynamic = getDynamic(window.innerWidth); 2340 let swiper = init(dynamic); 2341 window.addEventListener('resize', () => { 2342 const next = getDynamic(window.innerWidth); 2343 if (next !== dynamic) { 2344 dynamic = next; 2345 swiper.destroy(true, true); 2346 swiper = init(dynamic); 2347 } 2348 }); 2349 }); 2350}); 2351 2352/***/ }), 2353
2354/***/ "./src/js/components/teaserTabs/index.js": 2355/*!***********************************************!*\ 2356 !*** ./src/js/components/teaserTabs/index.js ***! 2357 \***********************************************/ 2358/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2359 2360"use strict"; 2361__webpack_require__.r(__webpack_exports__); 2362/* harmony default export */ __webpack_exports__["default"] = ($ => { 2363 let teaserTabs = $('._teaserTabs'); 2364 teaserTabs.each((index, tab) => { 2365 let _self = $(tab); 2366 let tabs = _self.find('.js-tab'); 2367 let teasers = _self.find('.js-teaser'); 2368 let select = _self.find('select'); 2369 tabs.on('click', function () { 2370 let selectOptions = _self.find('.select-options'); 2371 let _this = $(this); 2372 if (_this.hasClass('-active')) return; 2373 let dataTeaser = _this.data('teaser'); 2374 selectOptions.find('li[rel="' + dataTeaser + '"]').click(); 2375 }); 2376 select.on('change', function () { 2377 let thisValue = $(this).val(); 2378 tabs.removeClass('-active'); 2379 teasers.removeClass('-active'); 2380 _self.find('.js-tab[data-teaser="' + thisValue + '"]').addClass('-active'); 2381 _self.find('.js-teaser[data-teaser="' + thisValue + '"]').addClass('-active'); 2382 }); 2383 }); 2384}); 2385 2386/***/ }), 2387
2388/***/ "./src/js/components/utilities/radioUncheck.js": 2389/*!*****************************************************!*\ 2390 !*** ./src/js/components/utilities/radioUncheck.js ***! 2391 \*****************************************************/ 2392/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2393 2394"use strict"; 2395__webpack_require__.r(__webpack_exports__); 2396/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2397/* harmony export */ initializeRadioButtons: function() { return /* binding */ initializeRadioButtons; } 2398/* harmony export */ }); 2399const initializeRadioButtons = cb => { 2400 const allowUncheckItems = document.querySelectorAll('.js-allowRadioUncheck'); 2401 const checkedArray = []; 2402 allowUncheckItems.forEach((item, index) => { 2403 checkedArray[index] = false; 2404 item.addEventListener('click', function (e) { 2405 // Toggle the checked state 2406 if (checkedArray[index]) { 2407 this.checked = false; 2408 checkedArray[index] = false; 2409 } else { 2410 checkedArray[index] = true; 2411 } 2412 2413 // Update other radio buttons' checked state 2414 checkedArray.forEach((_, i) => { 2415 if (i !== index) checkedArray[i] = false; 2416 }); 2417 2418 // Manually dispatch the 'change' event 2419 const changeEvent = new Event('change', { 2420 bubbles: true 2421 }); 2422 this.dispatchEvent(changeEvent); 2423 }); 2424 }); 2425 document.querySelectorAll('.js-allowRadioUncheck').forEach(item => { 2426 item.addEventListener('change', function (e) { 2427 cb && cb(); 2428 }); 2429 }); 2430}; 2431 2432/***/ }), 2433
2434/***/ "./src/js/components/videos/index.js": 2435/*!*******************************************!*\ 2436 !*** ./src/js/components/videos/index.js ***! 2437 \*******************************************/ 2438/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2439 2440"use strict"; 2441__webpack_require__.r(__webpack_exports__); 2442/* harmony import */ var plyr__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! plyr */ "./node_modules/plyr/dist/plyr.min.js"); 2443/* harmony import */ var plyr__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(plyr__WEBPACK_IMPORTED_MODULE_0__); 2444 2445/* harmony default export */ __webpack_exports__["default"] = (() => { 2446 const player = new (plyr__WEBPACK_IMPORTED_MODULE_0___default())('#js-popupPlayer'); 2447 const selectors = document.querySelectorAll('.js-player'); 2448 selectors.forEach(selector => { 2449 const player = new (plyr__WEBPACK_IMPORTED_MODULE_0___default())(selector); 2450 }); 2451}); 2452 2453/***/ }), 2454
2455/***/ "./src/js/helpers/activeTrigger.js": 2456/*!*****************************************!*\ 2457 !*** ./src/js/helpers/activeTrigger.js ***! 2458 \*****************************************/ 2459/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2460 2461"use strict"; 2462__webpack_require__.r(__webpack_exports__); 2463/* harmony default export */ __webpack_exports__["default"] = (() => { 2464 let activeTriggers = document.querySelectorAll('.js-activeTrigger'); 2465 activeTriggers.forEach(trigger => { 2466 if (trigger.dataset.bound === 'true') return; 2467 trigger.addEventListener('click', e => { 2468 e.preventDefault(); 2469 e.stopPropagation(); 2470 let dataBody = trigger.dataset.body_class; 2471 let focusTarget = trigger.dataset.focus_target; 2472 let anchor = trigger.querySelector('a'); 2473 if (anchor) { 2474 anchor.addEventListener('click', event => { 2475 event.stopPropagation(); 2476 }); 2477 } 2478 trigger.classList.remove('js-activeTrigger'); 2479 const isOpening = !trigger.classList.contains('-active'); 2480 if (isOpening && window.innerWidth < 1280) { 2481 const parentMenu = trigger.closest('.menu'); 2482 if (parentMenu) { 2483 parentMenu.querySelectorAll(':scope > .menu-item > .triggerBtn.-active').forEach(other => { 2484 if (other !== trigger) other.classList.remove('-active'); 2485 }); 2486 } 2487 } 2488 trigger.classList.toggle('-active'); 2489 if (trigger.hasAttribute('aria-expanded')) { 2490 trigger.setAttribute('aria-expanded', trigger.classList.contains('-active') ? 'true' : 'false'); 2491 } 2492 if (dataBody) { 2493 document.body.classList.toggle(dataBody); 2494 } 2495 if (focusTarget && trigger.classList.contains('-active')) { 2496 setTimeout(() => { 2497 document.querySelector(focusTarget).focus(); 2498 }, 300); 2499 } 2500 }); 2501 trigger.dataset.bound = 'true'; 2502 }); 2503}); 2504 2505/***/ }), 2506
2507/***/ "./src/js/helpers/debounce.js": 2508/*!************************************!*\ 2509 !*** ./src/js/helpers/debounce.js ***! 2510 \************************************/ 2511/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2512 2513"use strict"; 2514__webpack_require__.r(__webpack_exports__); 2515/* harmony default export */ __webpack_exports__["default"] = ((func, wait, immediate) => { 2516 let timeout; 2517 let waitTime = wait || 100; 2518 return function () { 2519 let context = this, 2520 args = arguments; 2521 clearTimeout(timeout); 2522 timeout = setTimeout(function () { 2523 timeout = null; 2524 if (!immediate) { 2525 func.apply(context, args); 2526 } 2527 }, waitTime); 2528 if (immediate && !timeout) { 2529 func.apply(context, args); 2530 } 2531 }; 2532}); 2533 2534/***/ }), 2535
2536/***/ "./src/js/helpers/localStorage.js": 2537/*!****************************************!*\ 2538 !*** ./src/js/helpers/localStorage.js ***! 2539 \****************************************/ 2540/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2541 2542"use strict"; 2543__webpack_require__.r(__webpack_exports__); 2544/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2545/* harmony export */ getLocalStorageWithExpiry: function() { return /* binding */ getLocalStorageWithExpiry; }, 2546/* harmony export */ setLocalStorageWithExpiry: function() { return /* binding */ setLocalStorageWithExpiry; } 2547/* harmony export */ }); 2548const setLocalStorageWithExpiry = (key, value, ttl) => { 2549 const data = { 2550 value, 2551 expiry: Date.now() + ttl 2552 }; 2553 localStorage.setItem(key, JSON.stringify(data)); 2554}; 2555const getLocalStorageWithExpiry = key => { 2556 const itemStr = localStorage.getItem(key); 2557 if (!itemStr) return null; 2558 try { 2559 const data = JSON.parse(itemStr); 2560 if (Date.now() > data.expiry) { 2561 localStorage.removeItem(key); 2562 return null; 2563 } 2564 return data.value; 2565 } catch { 2566 localStorage.removeItem(key); 2567 return null; 2568 } 2569}; 2570 2571/***/ }), 2572
vendor: 56,511 bytes, lines 2573-2582
2573/***/ "./node_modules/glightbox/dist/js/glightbox.min.js": 2574/*!*********************************************************!*\ 2575 !*** ./node_modules/glightbox/dist/js/glightbox.min.js ***! 2576 \*********************************************************/ 2577/***/ (function(module) { 2578 2579!function(e,t){ true?module.exports=t():0}(this,(function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,n(s.key),s)}}function i(e,i,n){return i&&t(e.prototype,i),n&&t(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function n(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var l=Date.now();function o(){var e={},t=!0,i=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],i++);for(var s=function(i){for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(t&&"[object Object]"===Object.prototype.toString.call(i[n])?e[n]=o(!0,e[n],i[n]):e[n]=i[n])};i<n;i++){var l=arguments[i];s(l)}return e}function r(e,t){if((E(e)||e===window||e===document)&&(e=[e]),L(e)||I(e)||(e=[e]),0!=M(e))if(L(e)&&!I(e))for(var i=e.length,n=0;n<i&&!1!==t.call(e[n],e[n],n,e);n++);else if(I(e))for(var s in e)if(P(e,s)&&!1===t.call(e[s],e[s],s,e))break}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[l]=e[l]||[],s={all:n,evt:null,found:null};return t&&i&&M(n)>0&&r(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return s.found=!0,s.evt=n,!1})),s}function h(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,o=t.once,h=void 0!==o&&o,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){C(n)&&n.call(u,e,this),h&&v.destroy()}return k(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){r(g,(function(t){var i=a(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},r(g,(function(t){var i=a(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function d(e,t){r(t.split(" "),(function(t){return e.classList.add(t)}))}function c(e,t){r(t.split(" "),(function(t){return e.classList.remove(t)}))}function u(e,t){return e.classList.contains(t)}function g(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if("function"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||""===t)return!1;if("none"===t)return C(i)&&i(),!1;var n=b(),s=t.split(" ");r(s,(function(t){d(e,"g"+t)})),h(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){r(s,(function(e){c(t,"g"+e)})),C(i)&&i()}})}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""===t)return e.style.webkitTransform="",e.style.MozTransform="",e.style.msTransform="",e.style.OTransform="",e.style.transform="",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function p(e){e.style.display="block"}function m(e){e.style.display="none"}function y(e){var t=document.createDocumentFragment(),i=document.createElement("div");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function x(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function b(){var e,t=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}function S(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function w(e,t,i){if(O(e))console.error("Inject assets error");else if(C(t)&&(i=t,t=!1),k(t)&&t in window)C(i)&&i();else{var n;if(-1!==e.indexOf(".css")){if((n=document.querySelectorAll('link[href="'+e+'"]'))&&n.length>0)return void(C(i)&&i());var s=document.getElementsByTagName("head")[0],l=s.querySelectorAll('link[rel="stylesheet"]'),o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.href=e,o.media="all",l?s.insertBefore(o,l[0]):s.appendChild(o),void(C(i)&&i())}if((n=document.querySelectorAll('script[src="'+e+'"]'))&&n.length>0){if(C(i)){if(k(t))return S((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement("script");r.type="text/javascript",r.src=e,r.onload=function(){if(C(i)){if(k(t))return S((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function T(){return"navigator"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function C(e){return"function"==typeof e}function k(e){return"string"==typeof e}function E(e){return!(!e||!e.nodeType||1!=e.nodeType)}function A(e){return Array.isArray(e)}function L(e){return e&&e.length&&isFinite(e.length)}function I(e){return"object"===s(e)&&null!=e&&!C(e)&&!A(e)}function O(e){return null==e}function P(e,t){return null!==e&&hasOwnProperty.call(e,t)}function M(e){if(I(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)P(e,i)&&t++;return t}return e.length}function z(e){return!isNaN(parseFloat(e))&&isFinite(e)}function X(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");if(!t.length)return!1;if(1==t.length)return t[0];"string"==typeof e&&(e=parseInt(e));var i=[];r(t,(function(e){i.push(e.getAttribute("data-taborder"))}));var n=Math.max.apply(Math,i.map((function(e){return parseInt(e)}))),s=e<0?1:e+1;s>n&&(s="1");var l=i.filter((function(e){return e>=parseInt(s)})),o=l.sort()[0];return document.querySelector('.gbtn[data-taborder="'.concat(o,'"]'))}function Y(e){if(e.events.hasOwnProperty("keyboard"))return!1;e.events.keyboard=h("keydown",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(".gbtn.focused");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if("input"==l||"textarea"==l||"button"==l)return}t.preventDefault();var o=document.querySelectorAll(".gbtn[data-taborder]");if(!o||o.length<=0)return;if(!s){var r=X();return void(r&&(r.focus(),d(r,"focused")))}var a=X(s.getAttribute("data-taborder"));c(s,"focused"),a&&(a.focus(),d(a,"focused"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}var q=i((function t(i,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(e(this,t),this.img=i,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener("mousedown",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener("mouseup",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener("mousemove",(function(e){return s.drag(e)}),!1),this.img.addEventListener("click",(function(e){return s.slide.classList.contains("dragging-nav")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}),[{key:"zoomIn",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute("data-style",t.getAttribute("style")),t.style.maxWidth=t.naturalWidth+"px",t.style.maxHeight=t.naturalHeight+"px",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add("zoomed"),this.zoomedIn=!0}}},{key:"zoomOut",value:function(){this.img.parentNode.setAttribute("style",""),this.img.setAttribute("style",this.img.getAttribute("data-style")),this.slide.classList.remove("zoomed"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&"function"==typeof this.onclose&&this.onclose()}},{key:"dragStart",value:function(e){e.preventDefault(),this.zoomedIn?("touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add("dragging"))):this.active=!1}},{key:"dragEnd",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove("dragging")}),100)}},{key:"drag",value:function(e){this.active&&(e.preventDefault(),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:"onMove",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:"setTranslate",value:function(e,t,i){e.style.transform="translate3d("+t+"px, "+i+"px, 0)"}},{key:"widowWidth",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),N=i((function t(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener("mousedown",(function(e){return i.dragStart(e)}),!1),this.el.addEventListener("mouseup",(function(e){return i.dragEnd(e)}),!1),this.el.addEventListener("mousemove",(function(e){return i.drag(e)}),!1)}),[{key:"dragStart",value:function(e){if(this.slide.classList.contains("zoomed"))this.active=!1;else{"touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains("nodrag")||g(e.target,".nodrag")||-1!==["input","select","textarea","button","a"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||"img"!==t&&g(e.target,".gslide-inline"))&&(this.active=!0,this.el.classList.add("dragging"),this.dragContainer=g(e.target,".ginner-container")))}}},{key:"dragEnd",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,"right"==this.doSlideChange&&this.instance.prevSlide(),"left"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove("dragging"),t.slide.classList.remove("dragging-nav"),t.dragContainer.style.transform="",t.dragContainer.style.transition=""}),100)}},{key:"drag",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add("dragging-nav"),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||"x"==this.lastDirection)){this.yOffset=0,this.lastDirection="x",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),"right"==n&&this.instance.prevSlide(),void("left"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||"y"==this.lastDirection)){this.xOffset=0,this.lastDirection="y",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:"shouldChange",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?"right":"left";("left"==t&&this.slide!==this.slide.parentNode.lastChild||"right"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:"shouldClose",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:"setTranslate",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?"all .2s ease":"",e.style.transform="translate3d(".concat(t,"px, ").concat(i,"px, 0)")}}]);function D(e,t,i,n){var s=e.querySelector(".gslide-media"),l=new Image,o="gSlideTitle_"+i,r="gSlideDesc_"+i;l.addEventListener("load",(function(){C(n)&&n()}),!1),l.src=t.href,""!=t.sizes&&""!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt="",O(t.alt)||""===t.alt||(l.alt=t.alt),""!==t.title&&l.setAttribute("aria-labelledby",o),""!==t.description&&l.setAttribute("aria-describedby",r),t.hasOwnProperty("_hasCustomWidth")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty("_hasCustomHeight")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function _(e,t,i,n){var s=this,l=e.querySelector(".ginner-container"),o="gvideo"+i,r=e.querySelector(".gslide-media"),a=this.getAllPlayers();d(l,"gvideo-container"),r.insertBefore(y('<div class="gvideo-wrapper"></div>'),r.firstChild);var h=e.querySelector(".gvideo-wrapper");w(this.settings.plyr.css,"Plyr");var c=t.href,u=null==t?void 0:t.videoProvider,g=!1;r.style.maxWidth=t.width,w(this.settings.plyr.js,"Plyr",(function(){if(!u&&c.match(/vimeo\.com\/([0-9]*)/)&&(u="vimeo"),!u&&(c.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||c.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||c.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)||c.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/))&&(u="youtube"),"local"===u||!u){u="local";var l='<video id="'+o+'" ';l+='style="background:#000; max-width: '.concat(t.width,';" '),l+='preload="metadata" ',l+='x-webkit-airplay="allow" ',l+="playsinline ",l+="controls ",l+='class="gvideo-local">',l+='<source src="'.concat(c,'">'),g=y(l+="</video>")}var r=g||y('<div id="'.concat(o,'" data-plyr-provider="').concat(u,'" data-plyr-embed-id="').concat(c,'"></div>'));d(h,"".concat(u,"-video gvideo")),h.appendChild(r),h.setAttribute("data-id",o),h.setAttribute("data-index",i);var v=P(s.settings.plyr,"config")?s.settings.plyr.config:{},f=new Plyr("#"+o,v);f.on("ready",(function(e){a[o]=e.detail.plyr,C(n)&&n()})),S((function(){return e.querySelector("iframe")&&"true"==e.querySelector("iframe").dataset.ready}),(function(){s.resize(e)})),f.on("enterfullscreen",W),f.on("exitfullscreen",W)}))}function W(e){var t=g(e.target,".gslide-media");"enterfullscreen"===e.type&&d(t,"fullscreen"),"exitfullscreen"===e.type&&c(t,"fullscreen")}function B(e,t,i,n){var s,l=this,o=e.querySelector(".gslide-media"),r=!(!P(t,"href")||!t.href)&&t.href.split("#").pop().trim(),a=!(!P(t,"content")||!t.content)&&t.content;if(a&&(k(a)&&(s=y('<div class="ginlined-content">'.concat(a,"</div>"))),E(a))){"none"==a.style.display&&(a.style.display="block");var c=document.createElement("div");c.className="ginlined-content",c.appendChild(a),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,d(g,"ginlined-content"),s=g}if(!s)return console.error("Unable to append inline slide content",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events["inlineclose"+r]=h("click",{onElement:o.querySelectorAll(".gtrigger-close"),withCallback:function(e){e.preventDefault(),l.close()}}),C(n)&&n()}function H(e,t,i,n){var s=e.querySelector(".gslide-media"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement("iframe");return l.className="vimeo-video gvideo",l.src=t,l.style.width="100%",l.style.height="100%",i&&l.setAttribute("allow",i),l.onload=function(){l.onload=null,d(l,"node-ready"),C(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var j=i((function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),this.defaults={href:"",sizes:"",srcset:"",title:"",type:"",videoProvider:"",description:"",alt:"",descPosition:"bottom",effect:"",width:"",height:"",content:!1,zoomable:!0,draggable:!0},I(i)&&(this.defaults=o(this.defaults,i))}),[{key:"sourceType",value:function(e){var t=e;return null!==(e=e.toLowerCase()).match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/)?"image":e.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||e.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)||e.match(/vimeo\.com\/([0-9]*)/)||null!==e.match(/\.(mp4|ogg|webm|mov)/)?"video":null!==e.match(/\.(mp3|wav|wma|aac|ogg)/)?"audio":e.indexOf("#")>-1&&""!==t.split("#").pop().trim()?"inline":e.indexOf("goajax=true")>-1?"ajax":"external"}},{key:"parseConfig",value:function(e,t){var i=this,n=o({descPosition:t.descPosition},this.defaults);if(I(e)&&!E(e)){P(e,"type")||(P(e,"content")&&e.content?e.type="inline":P(e,"href")&&(e.type=this.sourceType(e.href)));var s=o(n,e);return this.setSize(s,t),s}var l="",a=e.getAttribute("data-glightbox"),h=e.nodeName.toLowerCase();if("a"===h&&(l=e.href),"img"===h&&(l=e.src,n.alt=e.alt),n.href=l,r(n,(function(s,l){P(t,l)&&"width"!==l&&(n[l]=t[l]);var o=e.dataset[l];O(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type="inline"),!n.type&&l&&(n.type=this.sourceType(l)),O(a)){if(!n.title&&"a"==h){var d=e.title;O(d)||""===d||(n.title=d)}if(!n.title&&"img"==h){var c=e.alt;O(c)||""===c||(n.title=c)}}else{var u=[];r(n,(function(e,t){u.push(";\\s?"+t)})),u=u.join("\\s?:|"),""!==a.trim()&&r(n,(function(e,t){var s=a,l=new RegExp("s?"+t+"s?:s?(.*?)("+u+"s?:|$)"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\s*$/,"");n[t]=i.sanitizeValue(r)}}))}if(n.description&&"."===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(".glightbox-desc");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:"setSize",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="video"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=P(e,"width")&&""!==e.width?this.checkSize(e.width):n,e.height=P(e,"height")&&""!==e.height?this.checkSize(e.height):s,i&&"image"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:"checkSize",value:function(e){return z(e)?"".concat(e,"px"):e}},{key:"sanitizeValue",value:function(e){return"true"!==e&&"false"!==e?e:"true"===e}}]),V=i((function t(i,n,s){e(this,t),this.element=i,this.instance=n,this.index=s}),[{key:"setContent",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(u(t,"loaded"))return!1;var n=this.instance.settings,s=this.slideConfig,l=T();C(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(".gslide-media"),h=t.querySelector(".gslide-title"),c=t.querySelector(".gslide-desc"),g=t.querySelector(".gdesc-inner"),v=i,f="gSlideTitle_"+this.index,p="gSlideDesc_"+this.index;if(C(n.afterSlideLoad)&&(v=function(){C(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),""==s.title&&""==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(h&&""!==s.title?(h.id=f,h.innerHTML=s.title):h.parentNode.removeChild(h),c&&""!==s.description?(c.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),c.innerHTML=s.smallDescription,this.descriptionEvents(c,s)):c.innerHTML=s.description):c.parentNode.removeChild(c),d(a.parentNode,"desc-".concat(r)),d(g.parentNode,"description-".concat(r))),d(a,"gslide-".concat(o)),d(t,"loaded"),"video"!==o){if("external"!==o)return"inline"===o?(B.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new N({dragEl:t.querySelector(".gslide-inline"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void("image"!==o?C(v)&&v():D(t,s,this.index,(function(){var i=t.querySelector("img");s.draggable&&new N({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(d(i,"zoomable"),new q(i,t,(function(){e.instance.resize()}))),C(v)&&v()})));H.apply(this,[t,s,this.index,v])}else _.apply(this.instance,[t,s,this.index,v])}},{key:"slideShortDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement("div");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... <a href="#" class="desc-more">'+i+"</a>"):o}},{key:"descriptionEvents",value:function(e,t){var i=this,n=e.querySelector(".desc-more");if(!n)return!1;h("click",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=g(n,".gslide-desc");if(!l)return!1;l.innerHTML=t.description,d(s,"gdesc-open");var o=h("click",{onElement:[s,g(l,".gslide-description")],withCallback:function(e,n){"a"!==e.target.nodeName.toLowerCase()&&(c(s,"gdesc-open"),d(s,"gdesc-closed"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){c(s,"gdesc-closed")}),400),o.destroy())}})}})}},{key:"create",value:function(){return y(this.instance.settings.slideHTML)}},{key:"getConfig",value:function(){E(this.element)||this.element.hasOwnProperty("draggable")||(this.element.draggable=this.instance.settings.draggable);var e=new j(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]);function F(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function R(e,t){var i=function(e,t){var i=F(e)*F(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var G=i((function t(i){e(this,t),this.handlers=[],this.el=i}),[{key:"add",value:function(e){this.handlers.push(e)}},{key:"del",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:"dispatch",value:function(){for(var e=0,t=this.handlers.length;e<t;e++){var i=this.handlers[e];"function"==typeof i&&i.apply(this.el,arguments)}}}]);function Z(e,t){var i=new G(e);return i.add(t),i}var U=i((function t(i,n){e(this,t),this.element="string"==typeof i?document.querySelector(i):i,this.start=this.start.bind(this),this.move=this.move.bind(this),this.end=this.end.bind(this),this.cancel=this.cancel.bind(this),this.element.addEventListener("touchstart",this.start,!1),this.element.addEventListener("touchmove",this.move,!1),this.element.addEventListener("touchend",this.end,!1),this.element.addEventListener("touchcancel",this.cancel,!1),this.preV={x:null,y:null},this.pinchStartLen=null,this.zoom=1,this.isDoubleTap=!1;var s=function(){};this.rotate=Z(this.element,n.rotate||s),this.touchStart=Z(this.element,n.touchStart||s),this.multipointStart=Z(this.element,n.multipointStart||s),this.multipointEnd=Z(this.element,n.multipointEnd||s),this.pinch=Z(this.element,n.pinch||s),this.swipe=Z(this.element,n.swipe||s),this.tap=Z(this.element,n.tap||s),this.doubleTap=Z(this.element,n.doubleTap||s),this.longTap=Z(this.element,n.longTap||s),this.singleTap=Z(this.element,n.singleTap||s),this.pressMove=Z(this.element,n.pressMove||s),this.twoFingerPressMove=Z(this.element,n.twoFingerPressMove||s),this.touchMove=Z(this.element,n.touchMove||s),this.touchEnd=Z(this.element,n.touchEnd||s),this.touchCancel=Z(this.element,n.touchCancel||s),this.translateContainer=this.element,this._cancelAllHandler=this.cancelAll.bind(this),window.addEventListener("scroll",this._cancelAllHandler),this.delta=null,this.last=null,this.now=null,this.tapTimeout=null,this.singleTapTimeout=null,this.longTapTimeout=null,this.swipeTimeout=null,this.x1=this.x2=this.y1=this.y2=null,this.preTapPosition={x:null,y:null}}),[{key:"start",value:function(e){if(e.touches)if(e.target&&e.target.nodeName&&["a","button","input"].indexOf(e.target.nodeName.toLowerCase())>=0)console.log("ignore drag for this touched element",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=F(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}},{key:"move",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=F(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=R(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:"end",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:"cancelAll",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:"cancel",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:"_cancelLongTap",value:function(){clearTimeout(this.longTapTimeout)}},{key:"_cancelSingleTap",value:function(){clearTimeout(this.singleTapTimeout)}},{key:"_swipeDirection",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?"Left":"Right":i-n>0?"Up":"Down"}},{key:"on",value:function(e,t){this[e]&&this[e].add(t)}},{key:"off",value:function(e,t){this[e]&&this[e].del(t)}},{key:"destroy",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener("touchstart",this.start),this.element.removeEventListener("touchmove",this.move),this.element.removeEventListener("touchend",this.end),this.element.removeEventListener("touchcancel",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener("scroll",this._cancelAllHandler),null}}]);function $(e){var t=function(){var e,t=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=u(e,"gslide-media")?e:e.querySelector(".gslide-media"),s=g(n,".ginner-container"),l=e.querySelector(".gslide-description");i>769&&(n=s),d(n,"greset"),f(n,"translate3d(0, 0, 0)"),h(t,{onElement:n,once:!0,withCallback:function(e,t){c(n,"greset")}}),n.style.opacity="",l&&(l.style.opacity="")}function J(e){if(e.events.hasOwnProperty("touch"))return!1;var t,i,n,s=x(),l=s.width,o=s.height,r=!1,a=null,h=null,v=null,p=!1,m=1,y=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},M=0,z=0,X=document.getElementById("glightbox-slider"),Y=document.querySelector(".goverlay"),q=new U(X,{touchStart:function(t){if(r=!0,(u(t.targetTouches[0].target,"ginner-container")||g(t.targetTouches[0].target,".gslide-desc")||"a"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),g(t.targetTouches[0].target,".gslide-inline")&&!u(t.targetTouches[0].target.parentNode,"gslide-inline")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,z=t.targetTouches[0].clientY,a=e.activeSlide,h=a.querySelector(".gslide-media"),n=a.querySelector(".gslide-inline"),v=null,u(h,"gslide-image")&&(v=h.querySelector("img")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(h=a.querySelector(".ginner-container")),c(Y,"greset"),t.pageX>20&&t.pageX<window.innerWidth-20)return;t.preventDefault()}},touchMove:function(s){if(r&&(P=s.targetTouches[0],!b&&!S)){if(n&&n.offsetHeight>o){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var d,c=s.targetTouches[0].clientX,u=s.targetTouches[0].clientY,g=M-c,m=z-u;if(Math.abs(g)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&v&&(d=1-Math.abs(i)/o,Y.style.opacity=d,e.settings.touchFollowAxis&&(E=0)),I&&(d=1-Math.abs(t)/l,h.style.opacity=d,e.settings.touchFollowAxis&&(A=0)),!v)return f(h,"translate3d(".concat(E,"%, 0, 0)"));f(h,"translate3d(".concat(E,"%, ").concat(A,"%, 0)"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&v))return t<29&&i<25?(d(Y,"greset"),Y.style.opacity=1,$(h)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=y||1},pinch:function(e){if(!v||p)return!1;b=!0,v.scaleX=v.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void v.setAttribute("style","");t>4.5&&(t=4.5),v.style.transform="scale3d(".concat(t,", ").concat(t,", 1)"),y=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n="translate3d(".concat(t,"px, ").concat(i,"px, 0)");y&&(n+=" scale3d(".concat(y,", ").concat(y,", 1)")),f(v,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if("Left"==t.direction){if(e.index==e.elements.length-1)return $(h);e.nextSlide()}if("Right"==t.direction){if(0==e.index)return $(h);e.prevSlide()}}}});e.events.touch=q}var K=T(),Q=null!==T()||void 0!==document.createTouch||"ontouchstart"in window||"onmsgesturechange"in window||navigator.msMaxTouchPoints,ee=document.getElementsByTagName("html")[0],te={selector:".glightbox",elements:null,skin:"clean",theme:"clean",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:"bottom",width:"900px",height:"506px",videosWidth:"960px",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:"https://cdn.plyr.io/3.6.12/plyr.css",js:"https://cdn.plyr.io/3.6.12/plyr.js",config:{ratio:"16:9",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:"zoom",closeEffect:"zoom",slideEffect:"slide",moreText:"See more",moreLength:60,cssEfects:{fade:{in:"fadeIn",out:"fadeOut"},zoom:{in:"zoomIn",out:"zoomOut"},slide:{in:"slideInRight",out:"slideOutLeft"},slideBack:{in:"slideInLeft",out:"slideOutRight"},none:{in:"none",out:"none"}},svg:{close:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>',next:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>',prev:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>'},slideHTML:'<div class="gslide">\n <div class="gslide-inner-content">\n <div class="ginner-container">\n <div class="gslide-media">\n </div>\n <div class="gslide-description">\n <div class="gdesc-inner">\n <h4 class="gslide-title"></h4>\n <div class="gslide-desc"></div>\n </div>\n </div>\n </div>\n </div>\n</div>',lightboxHTML:'<div id="glightbox-body" class="glightbox-container" tabindex="-1" role="dialog" aria-hidden="false">\n <div class="gloader visible"></div>\n <div class="goverlay"></div>\n <div class="gcontainer">\n <div id="glightbox-slider" class="gslider"></div>\n <button class="gclose gbtn" aria-label="Close" data-taborder="3">{closeSVG}</button>\n <button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>\n <button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>\n</div>\n</div>'},ie=i((function t(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,t),this.customOptions=i,this.settings=o(te,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}),[{key:"init",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=h("click",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:"open",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0===this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=z(t)?t:this.settings.startAt;if(E(e)){var n=e.getAttribute("data-gallery");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),O(i)&&(i=this.getElementIndex(e))<0&&(i=0)}z(i)||(i=0),this.build(),v(this.overlay,"none"===this.settings.openEffect?"none":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement("style");o.type="text/css",o.className="gcss-styles",o.innerText=".gscrollbar-fixer {margin-right: ".concat(l,"px}"),document.head.appendChild(o),d(s,"gscrollbar-fixer")}d(s,"glightbox-open"),d(ee,"glightbox-open"),K&&(d(document.body,"glightbox-mobile"),this.settings.slideEffect="slide"),this.showSlide(i,!0),1===this.elements.length?(d(this.prevButton,"glightbox-button-hidden"),d(this.nextButton,"glightbox-button-hidden")):(c(this.prevButton,"glightbox-button-hidden"),c(this.nextButton,"glightbox-button-hidden")),this.lightboxOpen=!0,this.trigger("open"),C(this.settings.onOpen)&&this.settings.onOpen(),Q&&this.settings.touchNavigation&&J(this),this.settings.keyboardNavigation&&Y(this)}},{key:"openAt",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:"showSlide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];p(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(".current");n&&c(n,"current"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(".gslide")[t];if(u(s,"loaded"))this.slideAnimateIn(s,i),m(this.loader);else{p(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger("slide_before_load",o),l.instance.setContent(s,(function(){m(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger("slide_after_load",o)}))}this.slideDescription=s.querySelector(".gslide-description"),this.slideDescriptionContained=this.slideDescription&&u(this.slideDescription.parentNode,"gslide-media"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:"preloadSlide",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(O(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(".gslide")[e];if(u(i,"loaded"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger("slide_before_load",l),"video"===s||"external"===s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}),200):n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}},{key:"prevSlide",value:function(){this.goToSlide(this.index-1)}},{key:"nextSlide",value:function(){this.goToSlide(this.index+1)}},{key:"goToSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:"insertSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new V(e,this,t),n=i.getConfig(),s=o({},n),l=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(l);else{var d=this.slidesContainer.querySelectorAll(".gslide")[t];this.slidesContainer.insertBefore(l,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0===this.index&&0===t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(".gslide")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger("slide_inserted",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),C(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:"removeSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(".gslide")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger("slide_removed",e),C(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:"slideAnimateIn",value:function(e,t){var i=this,n=e.querySelector(".gslide-media"),s=e.querySelector(".gslide-description"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(m(s),s.style.display=""),c(e,this.effectsClasses),t)v(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),C(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a="none"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),v(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),C(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),d(e,"current")}},{key:"slideAnimateOut",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;c(e,this.effectsClasses),d(e,"prev");var t=this.settings.slideEffect,i="none"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger("slide_before_change",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:O(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),C(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),v(e,i,(function(){var t=e.querySelector(".ginner-container"),i=e.querySelector(".gslide-media"),n=e.querySelector(".gslide-description");t.style.transform="",i.style.transform="",c(i,"greset"),i.style.opacity="",n&&(n.style.opacity=""),c(e,"prev")}))}},{key:"getAllPlayers",value:function(){return this.videoPlayers}},{key:"getSlidePlayerInstance",value:function(e){var t="gvideo"+e,i=this.getAllPlayers();return!(!P(i,t)||!i[t])&&i[t]}},{key:"stopSlideVideo",value:function(e){if(E(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("stopSlideVideo is deprecated, use slidePlayerPause");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"slidePlayerPause",value:function(e){if(E(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"playSlideVideo",value:function(e){if(E(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("playSlideVideo is deprecated, use slidePlayerPlay");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:"slidePlayerPlay",value:function(e){var t;if(!K||null!==(t=this.settings.plyr.config)&&void 0!==t&&t.muted){if(E(e)){var i=e.querySelector(".gvideo-wrapper");i&&(e=i.getAttribute("data-index"))}var n=this.getSlidePlayerInstance(e);n&&!n.playing&&(n.play(),this.settings.autofocusVideos&&n.elements.container.focus())}}},{key:"setElements",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&r(e,(function(e,n){var s=new V(e,t,n),l=s.getConfig(),r=o({},l);r.slideConfig=l,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML="",this.elements.length&&(r(this.elements,(function(){var e=y(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:"getElementIndex",value:function(e){var t=!1;return r(this.elements,(function(i,n){if(P(i,"node")&&i.node==e)return t=n,!0})),t}},{key:"getElements",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!O(this.settings.elements)&&A(this.settings.elements)&&this.settings.elements.length&&r(this.settings.elements,(function(i,n){var s=new V(i,e,n),l=s.getConfig(),r=o({},l);r.node=!1,r.index=n,r.instance=s,r.slideConfig=l,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(r(i,(function(i,n){var s=new V(i,e,n),l=s.getConfig(),r=o({},l);r.node=i,r.index=n,r.instance=s,r.slideConfig=l,r.gallery=i.getAttribute("data-gallery"),t.push(r)})),t):t}},{key:"getGalleryElements",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:"getSelector",value:function(){return!this.settings.elements&&(this.settings.selector&&"data-"==this.settings.selector.substring(0,5)?"*[".concat(this.settings.selector,"]"):this.settings.selector)}},{key:"getActiveSlide",value:function(){return this.slidesContainer.querySelectorAll(".gslide")[this.index]}},{key:"getActiveSlideIndex",value:function(){return this.index}},{key:"getAnimationClasses",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push("g".concat(i.in)),e.push("g".concat(i.out))}return e.join(" ")}},{key:"build",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];r(t,(function(e){e.parentNode==document.body&&"#"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute("aria-hidden")&&(i.push(e),e.setAttribute("aria-hidden","true"))}));var n=P(this.settings.svg,"next")?this.settings.svg.next:"",s=P(this.settings.svg,"prev")?this.settings.svg.prev:"",l=P(this.settings.svg,"close")?this.settings.svg.close:"",o=this.settings.lightboxHTML;o=y(o=(o=(o=o.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(o);var a=document.getElementById("glightbox-body");this.modal=a;var c=a.querySelector(".gclose");this.prevButton=a.querySelector(".gprev"),this.nextButton=a.querySelector(".gnext"),this.overlay=a.querySelector(".goverlay"),this.loader=a.querySelector(".gloader"),this.slidesContainer=document.getElementById("glightbox-slider"),this.bodyHiddenChildElms=i,this.events={},d(this.modal,"glightbox-"+this.settings.skin),this.settings.closeButton&&c&&(this.events.close=h("click",{onElement:c,withCallback:function(t,i){t.preventDefault(),e.close()}})),c&&!this.settings.closeButton&&c.parentNode.removeChild(c),this.nextButton&&(this.events.next=h("click",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=h("click",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=h("click",{onElement:a,withCallback:function(t,i){e.preventOutsideClick||u(document.body,"glightbox-mobile")||g(t.target,".ginner-container")||g(t.target,".gbtn")||u(t.target,"gnext")||u(t.target,"gprev")||e.close()}})),r(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(".gslide")[i]})),Q&&d(document.body,"glightbox-touch"),this.events.resize=h("resize",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:"resize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!u(e,"zoomed")){var t=x(),i=e.querySelector(".gvideo-wrapper"),n=e.querySelector(".gslide-image"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?d(document.body,"glightbox-mobile"):c(document.body,"glightbox-mobile"),i||n){var r=!1;if(s&&(u(s,"description-bottom")||u(s,"description-top"))&&!u(s,"gabsolute")&&(r=!0),n)if(l<=768)n.querySelector("img");else if(r){var a,h,g=s.offsetHeight,v=n.querySelector("img"),f=null===(a=this.elements[this.index])||void 0===a?void 0:a.node,p="100vh";f&&(p=null!==(h=f.getAttribute("data-height"))&&void 0!==h?h:p),v.setAttribute("style","max-height: calc(".concat(p," - ").concat(g,"px)")),s.setAttribute("style","max-width: ".concat(v.offsetWidth,"px;"))}if(i){var m=P(this.settings.plyr.config,"ratio")?this.settings.plyr.config.ratio:"";if(!m){var y=i.clientWidth,b=i.clientHeight,S=y/b;m="".concat(y/S,":").concat(b/S)}var w=m.split(":"),T=this.settings.videosWidth,C=this.settings.videosWidth,k=(C=z(T)||-1!==T.indexOf("px")?parseInt(T):-1!==T.indexOf("vw")?l*parseInt(T)/100:-1!==T.indexOf("vh")?o*parseInt(T)/100:-1!==T.indexOf("%")?l*parseInt(T)/100:parseInt(i.clientWidth))/(parseInt(w[0])/parseInt(w[1]));if(k=Math.floor(k),r&&(o-=s.offsetHeight),C>l||k>o||o<k&&l>C){var E=i.offsetWidth,A=i.offsetHeight,L=o/A,I={width:E*L,height:A*L};i.parentNode.setAttribute("style","max-width: ".concat(I.width,"px")),r&&s.setAttribute("style","max-width: ".concat(I.width,"px;"))}else i.parentNode.style.maxWidth="".concat(T),r&&s.setAttribute("style","max-width: ".concat(T,";"))}}}}},{key:"reload",value:function(){this.init()}},{key:"updateNavigationClasses",value:function(){var e=this.loop();c(this.nextButton,"disabled"),c(this.prevButton,"disabled"),0==this.index&&this.elements.length-1==0?(d(this.prevButton,"disabled"),d(this.nextButton,"disabled")):0!==this.index||e?this.index!==this.elements.length-1||e||d(this.nextButton,"disabled"):d(this.prevButton,"disabled")}},{key:"loop",value:function(){var e=P(this.settings,"loopAtEnd")?this.settings.loopAtEnd:null;return e=P(this.settings,"loop")?this.settings.loop:e,e}},{key:"close",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&r(this.bodyHiddenChildElms,(function(e){e.removeAttribute("aria-hidden")})),d(this.modal,"glightbox-closing"),v(this.overlay,"none"==this.settings.openEffect?"none":this.settings.cssEfects.fade.out),v(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;c(ee,"glightbox-open"),c(i,"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"),e.modal.parentNode.removeChild(e.modal),e.trigger("close"),C(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(".gcss-styles");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:"destroy",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:"on",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!C(t))throw new TypeError("Event name and callback must be defined");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:"once",value:function(e,t){this.on(e,t,!0)}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];r(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&r(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:"clearAllEvents",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:"version",value:function(){return"3.3.1"}}]);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new ie(e);return t.init(),t}})); 2580 2581/***/ }), 2582
2583/***/ "./src/sass/main.scss": 2584/*!****************************!*\ 2585 !*** ./src/sass/main.scss ***! 2586 \****************************/ 2587/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2588 2589"use strict"; 2590__webpack_require__.r(__webpack_exports__); 2591// extracted by mini-css-extract-plugin 2592 2593 2594/***/ }), 2595
vendor: 113,336 bytes, lines 2596-2607
2596/***/ "./node_modules/plyr/dist/plyr.min.js": 2597/*!********************************************!*\ 2598 !*** ./node_modules/plyr/dist/plyr.min.js ***! 2599 \********************************************/ 2600/***/ (function(module, __unused_webpack_exports, __webpack_require__) { 2601 2602"object"==typeof navigator&&function(e,t){ true?module.exports=t():0}(this,(function(){"use strict";function e(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var s=i.call(e,t||"default");if("object"!=typeof s)return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function t(e,t){for(var i=0;i<t.length;i++){var s=t[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function i(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function s(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,s)}return i}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a={addCSS:!0,thumbWidth:15,watch:!0};var l=function(e){return null!=e?e.constructor:null},r=function(e,t){return!!(e&&t&&e instanceof t)},o=function(e){return null==e},c=function(e){return l(e)===Object},u=function(e){return l(e)===String},h=function(e){return Array.isArray(e)},d=function(e){return r(e,NodeList)},m={nullOrUndefined:o,object:c,number:function(e){return l(e)===Number&&!Number.isNaN(e)},string:u,boolean:function(e){return l(e)===Boolean},function:function(e){return l(e)===Function},array:h,nodeList:d,element:function(e){return r(e,Element)},event:function(e){return r(e,Event)},empty:function(e){return o(e)||(u(e)||h(e)||d(e))&&!e.length||c(e)&&!Object.keys(e).length}};function p(e,t){if(1>t){var i=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(i))}return Math.round(e/t)*t}var g=function(){function e(t,i){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,e),m.element(t)?this.element=t:m.string(t)&&(this.element=document.querySelector(t)),m.element(this.element)&&m.empty(this.element.rangeTouch)&&(this.config=n({},a,{},i),this.init())}return function(e,i,s){i&&t(e.prototype,i),s&&t(e,s)}(e,[{key:"init",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}},{key:"destroy",value:function(){e.enabled&&(this.config.addCSS&&(this.element.style.userSelect="",this.element.style.webKitUserSelect="",this.element.style.touchAction=""),this.listeners(!1),this.element.rangeTouch=null)}},{key:"listeners",value:function(e){var t=this,i=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach((function(e){t.element[i](e,(function(e){return t.set(e)}),!1)}))}},{key:"get",value:function(t){if(!e.enabled||!m.event(t))return null;var i,s=t.target,n=t.changedTouches[0],a=parseFloat(s.getAttribute("min"))||0,l=parseFloat(s.getAttribute("max"))||100,r=parseFloat(s.getAttribute("step"))||1,o=s.getBoundingClientRect(),c=100/o.width*(this.config.thumbWidth/2)/100;return 0>(i=100/o.width*(n.clientX-o.left))?i=0:100<i&&(i=100),50>i?i-=(100-2*i)*c:50<i&&(i+=2*(i-50)*c),a+p(i/100*(l-a),r)}},{key:"set",value:function(t){e.enabled&&m.event(t)&&!t.target.disabled&&(t.preventDefault(),t.target.value=this.get(t),function(e,t){if(e&&t){var i=new Event(t,{bubbles:!0});e.dispatchEvent(i)}}(t.target,"touchend"===t.type?"change":"input"))}}],[{key:"setup",value:function(t){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},s=null;if(m.empty(t)||m.string(t)?s=Array.from(document.querySelectorAll(m.string(t)?t:'input[type="range"]')):m.element(t)?s=[t]:m.nodeList(t)?s=Array.from(t):m.array(t)&&(s=t.filter(m.element)),m.empty(s))return null;var l=n({},a,{},i);if(m.string(t)&&l.watch){var r=new MutationObserver((function(i){Array.from(i).forEach((function(i){Array.from(i.addedNodes).forEach((function(i){m.element(i)&&function(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}(i,t)&&new e(i,l)}))}))}));r.observe(document.body,{childList:!0,subtree:!0})}return s.map((function(t){return new e(t,i)}))}},{key:"enabled",get:function(){return"ontouchstart"in document.documentElement}}]),e}();const f=e=>null!=e?e.constructor:null,y=(e,t)=>Boolean(e&&t&&e instanceof t),b=e=>null==e,v=e=>f(e)===Object,w=e=>f(e)===String,T=e=>"function"==typeof e,k=e=>Array.isArray(e),C=e=>y(e,NodeList),A=e=>b(e)||(w(e)||k(e)||C(e))&&!e.length||v(e)&&!Object.keys(e).length;var S={nullOrUndefined:b,object:v,number:e=>f(e)===Number&&!Number.isNaN(e),string:w,boolean:e=>f(e)===Boolean,function:T,array:k,weakMap:e=>y(e,WeakMap),nodeList:C,element:e=>null!==e&&"object"==typeof e&&1===e.nodeType&&"object"==typeof e.style&&"object"==typeof e.ownerDocument,textNode:e=>f(e)===Text,event:e=>y(e,Event),keyboardEvent:e=>y(e,KeyboardEvent),cue:e=>y(e,window.TextTrackCue)||y(e,window.VTTCue),track:e=>y(e,TextTrack)||!b(e)&&w(e.kind),promise:e=>y(e,Promise)&&T(e.then),url:e=>{if(y(e,window.URL))return!0;if(!w(e))return!1;let t=e;e.startsWith("http://")&&e.startsWith("https://")||(t=`http://${e}`);try{return!A(new URL(t).hostname)}catch(e){return!1}},empty:A};const E=(()=>{const e=document.createElement("span"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},i=Object.keys(t).find((t=>void 0!==e.style[t]));return!!S.string(i)&&t[i]})();function P(e,t){setTimeout((()=>{try{e.hidden=!0,e.offsetHeight,e.hidden=!1}catch(e){}}),t)}var M={isIE:Boolean(window.document.documentMode),isEdge:/Edge/g.test(navigator.userAgent),isWebKit:"WebkitAppearance"in document.documentElement.style&&!/Edge/g.test(navigator.userAgent),isIPhone:/iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1,isIPadOS:"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1,isIos:/iPad|iPhone|iPod/gi.test(navigator.userAgent)&&navigator.maxTouchPoints>1};function N(e,t){return t.split(".").reduce(((e,t)=>e&&e[t]),e)}function x(e={},...t){if(!t.length)return e;const i=t.shift();return S.object(i)?(Object.keys(i).forEach((t=>{S.object(i[t])?(Object.keys(e).includes(t)||Object.assign(e,{[t]:{}}),x(e[t],i[t])):Object.assign(e,{[t]:i[t]})})),x(e,...t)):e}function L(e,t){const i=e.length?e:[e];Array.from(i).reverse().forEach(((e,i)=>{const s=i>0?t.cloneNode(!0):t,n=e.parentNode,a=e.nextSibling;s.appendChild(e),a?n.insertBefore(s,a):n.appendChild(s)}))}function I(e,t){S.element(e)&&!S.empty(t)&&Object.entries(t).filter((([,e])=>!S.nullOrUndefined(e))).forEach((([t,i])=>e.setAttribute(t,i)))}function $(e,t,i){const s=document.createElement(e);return S.object(t)&&I(s,t),S.string(i)&&(s.innerText=i),s}function _(e,t,i,s){S.element(t)&&t.appendChild($(e,i,s))}function O(e){S.nodeList(e)||S.array(e)?Array.from(e).forEach(O):S.element(e)&&S.element(e.parentNode)&&e.parentNode.removeChild(e)}function j(e){if(!S.element(e))return;let{length:t}=e.childNodes;for(;t>0;)e.removeChild(e.lastChild),t-=1}function q(e,t){return S.element(t)&&S.element(t.parentNode)&&S.element(e)?(t.parentNode.replaceChild(e,t),e):null}function D(e,t){if(!S.string(e)||S.empty(e))return{};const i={},s=x({},t);return e.split(",").forEach((e=>{const t=e.trim(),n=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),[l]=a,r=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":S.string(s.class)?i.class=`${s.class} ${n}`:i.class=n;break;case"#":i.id=t.replace("#","");break;case"[":i[l]=r}})),x(s,i)}function H(e,t){if(!S.element(e))return;let i=t;S.boolean(i)||(i=!e.hidden),e.hidden=i}function R(e,t,i){if(S.nodeList(e))return Array.from(e).map((e=>R(e,t,i)));if(S.element(e)){let s="toggle";return void 0!==i&&(s=i?"add":"remove"),e.classList[s](t),e.classList.contains(t)}return!1}function F(e,t){return S.element(e)&&e.classList.contains(t)}function V(e,t){const{prototype:i}=Element;return(i.matches||i.webkitMatchesSelector||i.mozMatchesSelector||i.msMatchesSelector||function(){return Array.from(document.querySelectorAll(t)).includes(this)}).call(e,t)}function U(e){return this.elements.container.querySelectorAll(e)}function B(e){return this.elements.container.querySelector(e)}function W(e=null,t=!1){S.element(e)&&e.focus({preventScroll:!0,focusVisible:t})}const z={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},K={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check(e,t){const i=K[e]||"html5"!==t;return{api:i,ui:i&&K.rangeInput}},pip:!(M.isIPhone||!S.function($("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||$("video").disablePictureInPicture)),airplay:S.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime(e){if(S.empty(e))return!1;const[t]=e.split("/");let i=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(z).includes(i)&&(i+=`; codecs="${z[e]}"`);try{return Boolean(i&&this.media.canPlayType(i).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(()=>{const e=document.createElement("input");return e.type="range","range"===e.type})(),touch:"ontouchstart"in document.documentElement,transitions:!1!==E,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Y=(()=>{let e=!1;try{const t=Object.defineProperty({},"passive",{get:()=>(e=!0,null)});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e})();function Q(e,t,i,s=!1,n=!0,a=!1){if(!e||!("addEventListener"in e)||S.empty(t)||!S.function(i))return;const l=t.split(" ");let r=a;Y&&(r={passive:n,capture:a}),l.forEach((t=>{this&&this.eventListeners&&s&&this.eventListeners.push({element:e,type:t,callback:i,options:r}),e[s?"addEventListener":"removeEventListener"](t,i,r)}))}function X(e,t="",i,s=!0,n=!1){Q.call(this,e,t,i,!0,s,n)}function J(e,t="",i,s=!0,n=!1){Q.call(this,e,t,i,!1,s,n)}function G(e,t="",i,s=!0,n=!1){const a=(...l)=>{J(e,t,a,s,n),i.apply(this,l)};Q.call(this,e,t,a,!0,s,n)}function Z(e,t="",i=!1,s={}){if(!S.element(e)||S.empty(t))return;const n=new CustomEvent(t,{bubbles:i,detail:{...s,plyr:this}});e.dispatchEvent(n)}function ee(){this&&this.eventListeners&&(this.eventListeners.forEach((e=>{const{element:t,type:i,callback:s,options:n}=e;t.removeEventListener(i,s,n)})),this.eventListeners=[])}function te(){return new Promise((e=>this.ready?setTimeout(e,0):X.call(this,this.elements.container,"ready",e))).then((()=>{}))}function ie(e){S.promise(e)&&e.then(null,(()=>{}))}function se(e){return S.array(e)?e.filter(((t,i)=>e.indexOf(t)===i)):e}function ne(e,t){return S.array(e)&&e.length?e.reduce(((e,i)=>Math.abs(i-t)<Math.abs(e-t)?i:e)):null}function ae(e){return!(!window||!window.CSS)&&window.CSS.supports(e)}const le=[[1,1],[4,3],[3,4],[5,4],[4,5],[3,2],[2,3],[16,10],[10,16],[16,9],[9,16],[21,9],[9,21],[32,9],[9,32]].reduce(((e,[t,i])=>({...e,[t/i]:[t,i]})),{});function re(e){if(!(S.array(e)||S.string(e)&&e.includes(":")))return!1;return(S.array(e)?e:e.split(":")).map(Number).every(S.number)}function oe(e){if(!S.array(e)||!e.every(S.number))return null;const[t,i]=e,s=(e,t)=>0===t?e:s(t,e%t),n=s(t,i);return[t/n,i/n]}function ce(e){const t=e=>re(e)?e.split(":").map(Number):null;let i=t(e);if(null===i&&(i=t(this.config.ratio)),null===i&&!S.empty(this.embed)&&S.array(this.embed.ratio)&&({ratio:i}=this.embed),null===i&&this.isHTML5){const{videoWidth:e,videoHeight:t}=this.media;i=[e,t]}return oe(i)}function ue(e){if(!this.isVideo)return{};const{wrapper:t}=this.elements,i=ce.call(this,e);if(!S.array(i))return{};const[s,n]=oe(i),a=100/s*n;if(ae(`aspect-ratio: ${s}/${n}`)?t.style.aspectRatio=`${s}/${n}`:t.style.paddingBottom=`${a}%`,this.isVimeo&&!this.config.vimeo.premium&&this.supported.ui){const e=100/this.media.offsetWidth*parseInt(window.getComputedStyle(this.media).paddingBottom,10),i=(e-a)/(e/50);this.fullscreen.active?t.style.paddingBottom=null:this.media.style.transform=`translateY(-${i}%)`}else this.isHTML5&&t.classList.add(this.config.classNames.videoFixedRatio);return{padding:a,ratio:i}}function he(e,t,i=.05){const s=e/t,n=ne(Object.keys(le),s);return Math.abs(n-s)<=i?le[n]:[e,t]}const de={getSources(){if(!this.isHTML5)return[];return Array.from(this.media.querySelectorAll("source")).filter((e=>{const t=e.getAttribute("type");return!!S.empty(t)||K.mime.call(this,t)}))},getQualityOptions(){return this.config.quality.forced?this.config.quality.options:de.getSources.call(this).map((e=>Number(e.getAttribute("size")))).filter(Boolean)},setup(){if(!this.isHTML5)return;const e=this;e.options.speed=e.config.speed.options,S.empty(this.config.ratio)||ue.call(e),Object.defineProperty(e.media,"quality",{get(){const t=de.getSources.call(e).find((t=>t.getAttribute("src")===e.source));return t&&Number(t.getAttribute("size"))},set(t){if(e.quality!==t){if(e.config.quality.forced&&S.function(e.config.quality.onChange))e.config.quality.onChange(t);else{const i=de.getSources.call(e).find((e=>Number(e.getAttribute("size"))===t));if(!i)return;const{currentTime:s,paused:n,preload:a,readyState:l,playbackRate:r}=e.media;e.media.src=i.getAttribute("src"),("none"!==a||l)&&(e.once("loadedmetadata",(()=>{e.speed=r,e.currentTime=s,n||ie(e.play())})),e.media.load())}Z.call(e,e.media,"qualitychange",!1,{quality:t})}}})},cancelRequests(){this.isHTML5&&(O(de.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function me(e,...t){return S.empty(e)?e:e.toString().replace(/{(\d+)}/g,((e,i)=>t[i].toString()))}const pe=(e="",t="",i="")=>e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]/\\])/g,"\\$1"),"g"),i.toString()),ge=(e="")=>e.toString().replace(/\w\S*/g,(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()));function fe(e=""){let t=e.toString();return t=function(e=""){let t=e.toString();return t=pe(t,"-"," "),t=pe(t,"_"," "),t=ge(t),pe(t," ","")}(t),t.charAt(0).toLowerCase()+t.slice(1)}function ye(e){const t=document.createElement("div");return t.appendChild(e),t.innerHTML}const be={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},ve={get(e="",t={}){if(S.empty(e)||S.empty(t))return"";let i=N(t.i18n,e);if(S.empty(i))return Object.keys(be).includes(e)?be[e]:"";const s={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(s).forEach((([e,t])=>{i=pe(i,e,t)})),i}};class we{constructor(t){e(this,"get",(e=>{if(!we.supported||!this.enabled)return null;const t=window.localStorage.getItem(this.key);if(S.empty(t))return null;const i=JSON.parse(t);return S.string(e)&&e.length?i[e]:i})),e(this,"set",(e=>{if(!we.supported||!this.enabled)return;if(!S.object(e))return;let t=this.get();S.empty(t)&&(t={}),x(t,e);try{window.localStorage.setItem(this.key,JSON.stringify(t))}catch(e){}})),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}static get supported(){try{if(!("localStorage"in window))return!1;const e="___test";return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}}}function Te(e,t="text"){return new Promise(((i,s)=>{try{const s=new XMLHttpRequest;if(!("withCredentials"in s))return;s.addEventListener("load",(()=>{if("text"===t)try{i(JSON.parse(s.responseText))}catch(e){i(s.responseText)}else i(s.response)})),s.addEventListener("error",(()=>{throw new Error(s.status)})),s.open("GET",e,!0),s.responseType=t,s.send()}catch(e){s(e)}}))}function ke(e,t){if(!S.string(e))return;const i="cache",s=S.string(t);let n=!1;const a=()=>null!==document.getElementById(t),l=(e,t)=>{e.innerHTML=t,s&&a()||document.body.insertAdjacentElement("afterbegin",e)};if(!s||!a()){const a=we.supported,r=document.createElement("div");if(r.setAttribute("hidden",""),s&&r.setAttribute("id",t),a){const e=window.localStorage.getItem(`${i}-${t}`);if(n=null!==e,n){const t=JSON.parse(e);l(r,t.content)}}Te(e).then((e=>{if(!S.empty(e)){if(a)try{window.localStorage.setItem(`${i}-${t}`,JSON.stringify({content:e}))}catch(e){}l(r,e)}})).catch((()=>{}))}}const Ce=e=>Math.trunc(e/60/60%60,10),Ae=e=>Math.trunc(e/60%60,10),Se=e=>Math.trunc(e%60,10);function Ee(e=0,t=!1,i=!1){if(!S.number(e))return Ee(void 0,t,i);const s=e=>`0${e}`.slice(-2);let n=Ce(e);const a=Ae(e),l=Se(e);return n=t||n>0?`${n}:`:"",`${i&&e>0?"-":""}${n}${s(a)}:${s(l)}`}const Pe={getIconUrl(){const e=new URL(this.config.iconUrl,window.location),t=window.location.host?window.location.host:window.top.location.host,i=e.host!==t||M.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:i}},findElements(){try{return this.elements.controls=B.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:U.call(this,this.config.selectors.buttons.play),pause:B.call(this,this.config.selectors.buttons.pause),restart:B.call(this,this.config.selectors.buttons.restart),rewind:B.call(this,this.config.selectors.buttons.rewind),fastForward:B.call(this,this.config.selectors.buttons.fastForward),mute:B.call(this,this.config.selectors.buttons.mute),pip:B.call(this,this.config.selectors.buttons.pip),airplay:B.call(this,this.config.selectors.buttons.airplay),settings:B.call(this,this.config.selectors.buttons.settings),captions:B.call(this,this.config.selectors.buttons.captions),fullscreen:B.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=B.call(this,this.config.selectors.progress),this.elements.inputs={seek:B.call(this,this.config.selectors.inputs.seek),volume:B.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:B.call(this,this.config.selectors.display.buffer),currentTime:B.call(this,this.config.selectors.display.currentTime),duration:B.call(this,this.config.selectors.display.duration)},S.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`)),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon(e,t){const i="http://www.w3.org/2000/svg",s=Pe.getIconUrl.call(this),n=`${s.cors?"":s.url}#${this.config.iconPrefix}`,a=document.createElementNS(i,"svg");I(a,x(t,{"aria-hidden":"true",focusable:"false"}));const l=document.createElementNS(i,"use"),r=`${n}-${e}`;return"href"in l&&l.setAttributeNS("http://www.w3.org/1999/xlink","href",r),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",r),a.appendChild(l),a},createLabel(e,t={}){const i=ve.get(e,this.config);return $("span",{...t,class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")},i)},createBadge(e){if(S.empty(e))return null;const t=$("span",{class:this.config.classNames.menu.value});return t.appendChild($("span",{class:this.config.classNames.menu.badge},e)),t},createButton(e,t){const i=x({},t);let s=fe(e);const n={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach((e=>{Object.keys(i).includes(e)&&(n[e]=i[e],delete i[e])})),"button"!==n.element||Object.keys(i).includes("type")||(i.type="button"),Object.keys(i).includes("class")?i.class.split(" ").some((e=>e===this.config.classNames.control))||x(i,{class:`${i.class} ${this.config.classNames.control}`}):i.class=this.config.classNames.control,e){case"play":n.toggle=!0,n.label="play",n.labelPressed="pause",n.icon="play",n.iconPressed="pause";break;case"mute":n.toggle=!0,n.label="mute",n.labelPressed="unmute",n.icon="volume",n.iconPressed="muted";break;case"captions":n.toggle=!0,n.label="enableCaptions",n.labelPressed="disableCaptions",n.icon="captions-off",n.iconPressed="captions-on";break;case"fullscreen":n.toggle=!0,n.label="enterFullscreen",n.labelPressed="exitFullscreen",n.icon="enter-fullscreen",n.iconPressed="exit-fullscreen";break;case"play-large":i.class+=` ${this.config.classNames.control}--overlaid`,s="play",n.label="play",n.icon="play";break;default:S.empty(n.label)&&(n.label=s),S.empty(n.icon)&&(n.icon=e)}const a=$(n.element);return n.toggle?(a.appendChild(Pe.createIcon.call(this,n.iconPressed,{class:"icon--pressed"})),a.appendChild(Pe.createIcon.call(this,n.icon,{class:"icon--not-pressed"})),a.appendChild(Pe.createLabel.call(this,n.labelPressed,{class:"label--pressed"})),a.appendChild(Pe.createLabel.call(this,n.label,{class:"label--not-pressed"}))):(a.appendChild(Pe.createIcon.call(this,n.icon)),a.appendChild(Pe.createLabel.call(this,n.label))),x(i,D(this.config.selectors.buttons[s],i)),I(a,i),"play"===s?(S.array(this.elements.buttons[s])||(this.elements.buttons[s]=[]),this.elements.buttons[s].push(a)):this.elements.buttons[s]=a,a},createRange(e,t){const i=$("input",x(D(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":ve.get(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=i,Pe.updateRangeFill.call(this,i),g.setup(i),i},createProgress(e,t){const i=$("progress",x(D(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){i.appendChild($("span",null,"0"));const t={played:"played",buffer:"buffered"}[e],s=t?ve.get(t,this.config):"";i.innerText=`% ${s.toLowerCase()}`}return this.elements.display[e]=i,i},createTime(e,t){const i=D(this.config.selectors.display[e],t),s=$("div",x(i,{class:`${i.class?i.class:""} ${this.config.classNames.display.time} `.trim(),"aria-label":ve.get(e,this.config),role:"timer"}),"00:00");return this.elements.display[e]=s,s},bindMenuItemShortcuts(e,t){X.call(this,e,"keydown keyup",(i=>{if(![" ","ArrowUp","ArrowDown","ArrowRight"].includes(i.key))return;if(i.preventDefault(),i.stopPropagation(),"keydown"===i.type)return;const s=V(e,'[role="menuitemradio"]');if(!s&&[" ","ArrowRight"].includes(i.key))Pe.showMenuPanel.call(this,t,!0);else{let t;" "!==i.key&&("ArrowDown"===i.key||s&&"ArrowRight"===i.key?(t=e.nextElementSibling,S.element(t)||(t=e.parentNode.firstElementChild)):(t=e.previousElementSibling,S.element(t)||(t=e.parentNode.lastElementChild)),W.call(this,t,!0))}}),!1),X.call(this,e,"keyup",(e=>{"Return"===e.key&&Pe.focusFirstMenuItem.call(this,null,!0)}))},createMenuItem({value:e,list:t,type:i,title:s,badge:n=null,checked:a=!1}){const l=D(this.config.selectors.inputs[i]),r=$("button",x(l,{type:"button",role:"menuitemradio",class:`${this.config.classNames.control} ${l.class?l.class:""}`.trim(),"aria-checked":a,value:e})),o=$("span");o.innerHTML=s,S.element(n)&&o.appendChild(n),r.appendChild(o),Object.defineProperty(r,"checked",{enumerable:!0,get:()=>"true"===r.getAttribute("aria-checked"),set(e){e&&Array.from(r.parentNode.children).filter((e=>V(e,'[role="menuitemradio"]'))).forEach((e=>e.setAttribute("aria-checked","false"))),r.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(r,"click keyup",(t=>{if(!S.keyboardEvent(t)||" "===t.key){switch(t.preventDefault(),t.stopPropagation(),r.checked=!0,i){case"language":this.currentTrack=Number(e);break;case"quality":this.quality=e;break;case"speed":this.speed=parseFloat(e)}Pe.showMenuPanel.call(this,"home",S.keyboardEvent(t))}}),i,!1),Pe.bindMenuItemShortcuts.call(this,r,i),t.appendChild(r)},formatTime(e=0,t=!1){if(!S.number(e))return e;return Ee(e,Ce(this.duration)>0,t)},updateTimeDisplay(e=null,t=0,i=!1){S.element(e)&&S.number(t)&&(e.innerText=Pe.formatTime(t,i))},updateVolume(){this.supported.ui&&(S.element(this.elements.inputs.volume)&&Pe.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),S.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange(e,t=0){S.element(e)&&(e.value=t,Pe.updateRangeFill.call(this,e))},updateProgress(e){if(!this.supported.ui||!S.event(e))return;let t=0;const i=(e,t)=>{const i=S.number(t)?t:0,s=S.element(e)?e:this.elements.display.buffer;if(S.element(s)){s.value=i;const e=s.getElementsByTagName("span")[0];S.element(e)&&(e.childNodes[0].nodeValue=i)}};if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":s=this.currentTime,n=this.duration,t=0===s||0===n||Number.isNaN(s)||Number.isNaN(n)?0:(s/n*100).toFixed(2),"timeupdate"===e.type&&Pe.setRange.call(this,this.elements.inputs.seek,t);break;case"playing":case"progress":i(this.elements.display.buffer,100*this.buffered)}var s,n},updateRangeFill(e){const t=S.event(e)?e.target:e;if(S.element(t)&&"range"===t.getAttribute("type")){if(V(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);const e=Pe.formatTime(this.currentTime),i=Pe.formatTime(this.duration),s=ve.get("seekLabel",this.config);t.setAttribute("aria-valuetext",s.replace("{currentTime}",e).replace("{duration}",i))}else if(V(t,this.config.selectors.inputs.volume)){const e=100*t.value;t.setAttribute("aria-valuenow",e),t.setAttribute("aria-valuetext",`${e.toFixed(1)}%`)}else t.setAttribute("aria-valuenow",t.value);(M.isWebKit||M.isIPadOS)&&t.style.setProperty("--value",t.value/t.max*100+"%")}},updateSeekTooltip(e){var t,i;if(!this.config.tooltips.seek||!S.element(this.elements.inputs.seek)||!S.element(this.elements.display.seekTooltip)||0===this.duration)return;const s=this.elements.display.seekTooltip,n=`${this.config.classNames.tooltip}--visible`,a=e=>R(s,n,e);if(this.touch)return void a(!1);let l=0;const r=this.elements.progress.getBoundingClientRect();if(S.event(e))l=100/r.width*(e.pageX-r.left);else{if(!F(s,n))return;l=parseFloat(s.style.left,10)}l<0?l=0:l>100&&(l=100);const o=this.duration/100*l;s.innerText=Pe.formatTime(o);const c=null===(t=this.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(o)));c&&s.insertAdjacentHTML("afterbegin",`${c.label}<br>`),s.style.left=`${l}%`,S.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)},timeUpdate(e){const t=!S.element(this.elements.display.duration)&&this.config.invertTime;Pe.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||Pe.updateProgress.call(this,e)},durationUpdate(){if(!this.supported.ui||!this.config.invertTime&&this.currentTime)return;if(this.duration>=2**32)return H(this.elements.display.currentTime,!0),void H(this.elements.progress,!0);S.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);const e=S.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&Pe.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&Pe.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),this.config.markers.enabled&&Pe.setMarkers.call(this),Pe.updateSeekTooltip.call(this)},toggleMenuButton(e,t){H(this.elements.settings.buttons[e],!t)},updateSetting(e,t,i){const s=this.elements.settings.panels[e];let n=null,a=t;if("captions"===e)n=this.currentTrack;else{if(n=S.empty(i)?this[e]:i,S.empty(n)&&(n=this.config[e].default),!S.empty(this.options[e])&&!this.options[e].includes(n))return void this.debug.warn(`Unsupported value of '${n}' for ${e}`);if(!this.config[e].options.includes(n))return void this.debug.warn(`Disabled value of '${n}' for ${e}`)}if(S.element(a)||(a=s&&s.querySelector('[role="menu"]')),!S.element(a))return;this.elements.settings.buttons[e].querySelector(`.${this.config.classNames.menu.value}`).innerHTML=Pe.getLabel.call(this,e,n);const l=a&&a.querySelector(`[value="${n}"]`);S.element(l)&&(l.checked=!0)},getLabel(e,t){switch(e){case"speed":return 1===t?ve.get("normal",this.config):`${t}×`;case"quality":if(S.number(t)){const e=ve.get(`qualityLabel.${t}`,this.config);return e.length?e:`${t}p`}return ge(t);case"captions":return xe.getLabel.call(this);default:return null}},setQualityMenu(e){if(!S.element(this.elements.settings.panels.quality))return;const t="quality",i=this.elements.settings.panels.quality.querySelector('[role="menu"]');S.array(e)&&(this.options.quality=se(e).filter((e=>this.config.quality.options.includes(e))));const s=!S.empty(this.options.quality)&&this.options.quality.length>1;if(Pe.toggleMenuButton.call(this,t,s),j(i),Pe.checkMenu.call(this),!s)return;const n=e=>{const t=ve.get(`qualityBadge.${e}`,this.config);return t.length?Pe.createBadge.call(this,t):null};this.options.quality.sort(((e,t)=>{const i=this.config.quality.options;return i.indexOf(e)>i.indexOf(t)?1:-1})).forEach((e=>{Pe.createMenuItem.call(this,{value:e,list:i,type:t,title:Pe.getLabel.call(this,"quality",e),badge:n(e)})})),Pe.updateSetting.call(this,t,i)},setCaptionsMenu(){if(!S.element(this.elements.settings.panels.captions))return;const e="captions",t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),i=xe.getTracks.call(this),s=Boolean(i.length);if(Pe.toggleMenuButton.call(this,e,s),j(t),Pe.checkMenu.call(this),!s)return;const n=i.map(((e,i)=>({value:i,checked:this.captions.toggled&&this.currentTrack===i,title:xe.getLabel.call(this,e),badge:e.language&&Pe.createBadge.call(this,e.language.toUpperCase()),list:t,type:"language"})));n.unshift({value:-1,checked:!this.captions.toggled,title:ve.get("disabled",this.config),list:t,type:"language"}),n.forEach(Pe.createMenuItem.bind(this)),Pe.updateSetting.call(this,e,t)},setSpeedMenu(){if(!S.element(this.elements.settings.panels.speed))return;const e="speed",t=this.elements.settings.panels.speed.querySelector('[role="menu"]');this.options.speed=this.options.speed.filter((e=>e>=this.minimumSpeed&&e<=this.maximumSpeed));const i=!S.empty(this.options.speed)&&this.options.speed.length>1;Pe.toggleMenuButton.call(this,e,i),j(t),Pe.checkMenu.call(this),i&&(this.options.speed.forEach((i=>{Pe.createMenuItem.call(this,{value:i,list:t,type:e,title:Pe.getLabel.call(this,"speed",i)})})),Pe.updateSetting.call(this,e,t))},checkMenu(){const{buttons:e}=this.elements.settings,t=!S.empty(e)&&Object.values(e).some((e=>!e.hidden));H(this.elements.settings.menu,!t)},focusFirstMenuItem(e,t=!1){if(this.elements.settings.popup.hidden)return;let i=e;S.element(i)||(i=Object.values(this.elements.settings.panels).find((e=>!e.hidden)));const s=i.querySelector('[role^="menuitem"]');W.call(this,s,t)},toggleMenu(e){const{popup:t}=this.elements.settings,i=this.elements.buttons.settings;if(!S.element(t)||!S.element(i))return;const{hidden:s}=t;let n=s;if(S.boolean(e))n=e;else if(S.keyboardEvent(e)&&"Escape"===e.key)n=!1;else if(S.event(e)){const s=S.function(e.composedPath)?e.composedPath()[0]:e.target,a=t.contains(s);if(a||!a&&e.target!==i&&n)return}i.setAttribute("aria-expanded",n),H(t,!n),R(this.elements.container,this.config.classNames.menu.open,n),n&&S.keyboardEvent(e)?Pe.focusFirstMenuItem.call(this,null,!0):n||s||W.call(this,i,S.keyboardEvent(e))},getMenuSize(e){const t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);const i=t.scrollWidth,s=t.scrollHeight;return O(t),{width:i,height:s}},showMenuPanel(e="",t=!1){const i=this.elements.container.querySelector(`#plyr-settings-${this.id}-${e}`);if(!S.element(i))return;const s=i.parentNode,n=Array.from(s.children).find((e=>!e.hidden));if(K.transitions&&!K.reducedMotion){s.style.width=`${n.scrollWidth}px`,s.style.height=`${n.scrollHeight}px`;const e=Pe.getMenuSize.call(this,i),t=e=>{e.target===s&&["width","height"].includes(e.propertyName)&&(s.style.width="",s.style.height="",J.call(this,s,E,t))};X.call(this,s,E,t),s.style.width=`${e.width}px`,s.style.height=`${e.height}px`}H(n,!0),H(i,!1),Pe.focusFirstMenuItem.call(this,i,t)},setDownloadUrl(){const e=this.elements.buttons.download;S.element(e)&&e.setAttribute("href",this.download)},create(e){const{bindMenuItemShortcuts:t,createButton:i,createProgress:s,createRange:n,createTime:a,setQualityMenu:l,setSpeedMenu:r,showMenuPanel:o}=Pe;this.elements.controls=null,S.array(this.config.controls)&&this.config.controls.includes("play-large")&&this.elements.container.appendChild(i.call(this,"play-large"));const c=$("div",D(this.config.selectors.controls.wrapper));this.elements.controls=c;const u={class:"plyr__controls__item"};return se(S.array(this.config.controls)?this.config.controls:[]).forEach((l=>{if("restart"===l&&c.appendChild(i.call(this,"restart",u)),"rewind"===l&&c.appendChild(i.call(this,"rewind",u)),"play"===l&&c.appendChild(i.call(this,"play",u)),"fast-forward"===l&&c.appendChild(i.call(this,"fast-forward",u)),"progress"===l){const t=$("div",{class:`${u.class} plyr__progress__container`}),i=$("div",D(this.config.selectors.progress));if(i.appendChild(n.call(this,"seek",{id:`plyr-seek-${e.id}`})),i.appendChild(s.call(this,"buffer")),this.config.tooltips.seek){const e=$("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(e),this.elements.display.seekTooltip=e}this.elements.progress=i,t.appendChild(this.elements.progress),c.appendChild(t)}if("current-time"===l&&c.appendChild(a.call(this,"currentTime",u)),"duration"===l&&c.appendChild(a.call(this,"duration",u)),"mute"===l||"volume"===l){let{volume:t}=this.elements;if(S.element(t)&&c.contains(t)||(t=$("div",x({},u,{class:`${u.class} plyr__volume`.trim()})),this.elements.volume=t,c.appendChild(t)),"mute"===l&&t.appendChild(i.call(this,"mute")),"volume"===l&&!M.isIos&&!M.isIPadOS){const i={max:1,step:.05,value:this.config.volume};t.appendChild(n.call(this,"volume",x(i,{id:`plyr-volume-${e.id}`})))}}if("captions"===l&&c.appendChild(i.call(this,"captions",u)),"settings"===l&&!S.empty(this.config.settings)){const s=$("div",x({},u,{class:`${u.class} plyr__menu`.trim(),hidden:""}));s.appendChild(i.call(this,"settings",{"aria-haspopup":!0,"aria-controls":`plyr-settings-${e.id}`,"aria-expanded":!1}));const n=$("div",{class:"plyr__menu__container",id:`plyr-settings-${e.id}`,hidden:""}),a=$("div"),l=$("div",{id:`plyr-settings-${e.id}-home`}),r=$("div",{role:"menu"});l.appendChild(r),a.appendChild(l),this.elements.settings.panels.home=l,this.config.settings.forEach((i=>{const s=$("button",x(D(this.config.selectors.buttons.settings),{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--forward`,role:"menuitem","aria-haspopup":!0,hidden:""}));t.call(this,s,i),X.call(this,s,"click",(()=>{o.call(this,i,!1)}));const n=$("span",null,ve.get(i,this.config)),l=$("span",{class:this.config.classNames.menu.value});l.innerHTML=e[i],n.appendChild(l),s.appendChild(n),r.appendChild(s);const c=$("div",{id:`plyr-settings-${e.id}-${i}`,hidden:""}),u=$("button",{type:"button",class:`${this.config.classNames.control} ${this.config.classNames.control}--back`});u.appendChild($("span",{"aria-hidden":!0},ve.get(i,this.config))),u.appendChild($("span",{class:this.config.classNames.hidden},ve.get("menuBack",this.config))),X.call(this,c,"keydown",(e=>{"ArrowLeft"===e.key&&(e.preventDefault(),e.stopPropagation(),o.call(this,"home",!0))}),!1),X.call(this,u,"click",(()=>{o.call(this,"home",!1)})),c.appendChild(u),c.appendChild($("div",{role:"menu"})),a.appendChild(c),this.elements.settings.buttons[i]=s,this.elements.settings.panels[i]=c})),n.appendChild(a),s.appendChild(n),c.appendChild(s),this.elements.settings.popup=n,this.elements.settings.menu=s}if("pip"===l&&K.pip&&c.appendChild(i.call(this,"pip",u)),"airplay"===l&&K.airplay&&c.appendChild(i.call(this,"airplay",u)),"download"===l){const e=x({},u,{element:"a",href:this.download,target:"_blank"});this.isHTML5&&(e.download="");const{download:t}=this.config.urls;!S.url(t)&&this.isEmbed&&x(e,{icon:`logo-${this.provider}`,label:this.provider}),c.appendChild(i.call(this,"download",e))}"fullscreen"===l&&c.appendChild(i.call(this,"fullscreen",u))})),this.isHTML5&&l.call(this,de.getQualityOptions.call(this)),r.call(this),c},inject(){if(this.config.loadSprite){const e=Pe.getIconUrl.call(this);e.cors&&ke(e.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());let e=null;this.elements.controls=null;const t={id:this.id,seektime:this.config.seekTime,title:this.config.title};let i=!0;S.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,t)),this.config.controls||(this.config.controls=[]),S.element(this.config.controls)||S.string(this.config.controls)?e=this.config.controls:(e=Pe.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:xe.getLabel.call(this)}),i=!1);let s;i&&S.string(this.config.controls)&&(e=(e=>{let i=e;return Object.entries(t).forEach((([e,t])=>{i=pe(i,`{${e}}`,t)})),i})(e)),S.string(this.config.selectors.controls.container)&&(s=document.querySelector(this.config.selectors.controls.container)),S.element(s)||(s=this.elements.container);if(s[S.element(e)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",e),S.element(this.elements.controls)||Pe.findElements.call(this),!S.empty(this.elements.buttons)){const e=e=>{const t=this.config.classNames.controlPressed;e.setAttribute("aria-pressed","false"),Object.defineProperty(e,"pressed",{configurable:!0,enumerable:!0,get:()=>F(e,t),set(i=!1){R(e,t,i),e.setAttribute("aria-pressed",i?"true":"false")}})};Object.values(this.elements.buttons).filter(Boolean).forEach((t=>{S.array(t)||S.nodeList(t)?Array.from(t).filter(Boolean).forEach(e):e(t)}))}if(M.isEdge&&P(s),this.config.tooltips.controls){const{classNames:e,selectors:t}=this.config,i=`${t.controls.wrapper} ${t.labels} .${e.hidden}`,s=U.call(this,i);Array.from(s).forEach((e=>{R(e,this.config.classNames.hidden,!1),R(e,this.config.classNames.tooltip,!0)}))}},setMediaMetadata(){try{"mediaSession"in navigator&&(navigator.mediaSession.metadata=new window.MediaMetadata({title:this.config.mediaMetadata.title,artist:this.config.mediaMetadata.artist,album:this.config.mediaMetadata.album,artwork:this.config.mediaMetadata.artwork}))}catch(e){}},setMarkers(){var e,t;if(!this.duration||this.elements.markers)return;const i=null===(e=this.config.markers)||void 0===e||null===(t=e.points)||void 0===t?void 0:t.filter((({time:e})=>e>0&&e<this.duration));if(null==i||!i.length)return;const s=document.createDocumentFragment(),n=document.createDocumentFragment();let a=null;const l=`${this.config.classNames.tooltip}--visible`,r=e=>R(a,l,e);i.forEach((e=>{const t=$("span",{class:this.config.classNames.marker},""),i=e.time/this.duration*100+"%";a&&(t.addEventListener("mouseenter",(()=>{e.label||(a.style.left=i,a.innerHTML=e.label,r(!0))})),t.addEventListener("mouseleave",(()=>{r(!1)}))),t.addEventListener("click",(()=>{this.currentTime=e.time})),t.style.left=i,n.appendChild(t)})),s.appendChild(n),this.config.tooltips.seek||(a=$("span",{class:this.config.classNames.tooltip},""),s.appendChild(a)),this.elements.markers={points:n,tip:a},this.elements.progress.appendChild(s)}};function Me(e,t=!0){let i=e;if(t){const e=document.createElement("a");e.href=i,i=e.href}try{return new URL(i)}catch(e){return null}}function Ne(e){const t=new URLSearchParams;return S.object(e)&&Object.entries(e).forEach((([e,i])=>{t.set(e,i)})),t}const xe={setup(){if(!this.supported.ui)return;if(!this.isVideo||this.isYouTube||this.isHTML5&&!K.textTracks)return void(S.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&Pe.setCaptionsMenu.call(this));var e,t;if(S.element(this.elements.captions)||(this.elements.captions=$("div",D(this.config.selectors.captions)),this.elements.captions.setAttribute("dir","auto"),e=this.elements.captions,t=this.elements.wrapper,S.element(e)&&S.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),M.isIE&&window.URL){const e=this.media.querySelectorAll("track");Array.from(e).forEach((e=>{const t=e.getAttribute("src"),i=Me(t);null!==i&&i.hostname!==window.location.href.hostname&&["http:","https:"].includes(i.protocol)&&Te(t,"blob").then((t=>{e.setAttribute("src",window.URL.createObjectURL(t))})).catch((()=>{O(e)}))}))}const i=se((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map((e=>e.split("-")[0])));let s=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();"auto"===s&&([s]=i);let n=this.storage.get("captions");if(S.boolean(n)||({active:n}=this.config.captions),Object.assign(this.captions,{toggled:!1,active:n,language:s,languages:i}),this.isHTML5){const e=this.config.captions.update?"addtrack removetrack":"removetrack";X.call(this,this.media.textTracks,e,xe.update.bind(this))}setTimeout(xe.update.bind(this),0)},update(){const e=xe.getTracks.call(this,!0),{active:t,language:i,meta:s,currentTrackNode:n}=this.captions,a=Boolean(e.find((e=>e.language===i)));this.isHTML5&&this.isVideo&&e.filter((e=>!s.get(e))).forEach((e=>{this.debug.log("Track added",e),s.set(e,{default:"showing"===e.mode}),"showing"===e.mode&&(e.mode="hidden"),X.call(this,e,"cuechange",(()=>xe.updateCues.call(this)))})),(a&&this.language!==i||!e.includes(n))&&(xe.setLanguage.call(this,i),xe.toggle.call(this,t&&a)),this.elements&&R(this.elements.container,this.config.classNames.captions.enabled,!S.empty(e)),S.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&Pe.setCaptionsMenu.call(this)},toggle(e,t=!0){if(!this.supported.ui)return;const{toggled:i}=this.captions,s=this.config.classNames.captions.active,n=S.nullOrUndefined(e)?!i:e;if(n!==i){if(t||(this.captions.active=n,this.storage.set({captions:n})),!this.language&&n&&!t){const e=xe.getTracks.call(this),t=xe.findTrack.call(this,[this.captions.language,...this.captions.languages],!0);return this.captions.language=t.language,void xe.set.call(this,e.indexOf(t))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=n),R(this.elements.container,s,n),this.captions.toggled=n,Pe.updateSetting.call(this,"captions"),Z.call(this,this.media,n?"captionsenabled":"captionsdisabled")}setTimeout((()=>{n&&this.captions.toggled&&(this.captions.currentTrackNode.mode="hidden")}))},set(e,t=!0){const i=xe.getTracks.call(this);if(-1!==e)if(S.number(e))if(e in i){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;const s=i[e],{language:n}=s||{};this.captions.currentTrackNode=s,Pe.updateSetting.call(this,"captions"),t||(this.captions.language=n,this.storage.set({language:n})),this.isVimeo&&this.embed.enableTextTrack(n),Z.call(this,this.media,"languagechange")}xe.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&xe.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else xe.toggle.call(this,!1,t)},setLanguage(e,t=!0){if(!S.string(e))return void this.debug.warn("Invalid language argument",e);const i=e.toLowerCase();this.captions.language=i;const s=xe.getTracks.call(this),n=xe.findTrack.call(this,[i]);xe.set.call(this,s.indexOf(n),t)},getTracks(e=!1){return Array.from((this.media||{}).textTracks||[]).filter((t=>!this.isHTML5||e||this.captions.meta.has(t))).filter((e=>["captions","subtitles"].includes(e.kind)))},findTrack(e,t=!1){const i=xe.getTracks.call(this),s=e=>Number((this.captions.meta.get(e)||{}).default),n=Array.from(i).sort(((e,t)=>s(t)-s(e)));let a;return e.every((e=>(a=n.find((t=>t.language===e)),!a))),a||(t?n[0]:void 0)},getCurrentTrack(){return xe.getTracks.call(this)[this.currentTrack]},getLabel(e){let t=e;return!S.track(t)&&K.textTracks&&this.captions.toggled&&(t=xe.getCurrentTrack.call(this)),S.track(t)?S.empty(t.label)?S.empty(t.language)?ve.get("enabled",this.config):e.language.toUpperCase():t.label:ve.get("disabled",this.config)},updateCues(e){if(!this.supported.ui)return;if(!S.element(this.elements.captions))return void this.debug.warn("No captions element to render to");if(!S.nullOrUndefined(e)&&!Array.isArray(e))return void this.debug.warn("updateCues: Invalid input",e);let t=e;if(!t){const e=xe.getCurrentTrack.call(this);t=Array.from((e||{}).activeCues||[]).map((e=>e.getCueAsHTML())).map(ye)}const i=t.map((e=>e.trim())).join("\n");if(i!==this.elements.captions.innerHTML){j(this.elements.captions);const e=$("span",D(this.config.selectors.caption));e.innerHTML=i,this.elements.captions.appendChild(e),Z.call(this,this.media,"cuechange")}}},Le={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:null,clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.7.8/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240],forced:!1,onChange:null},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2,4]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",pip:"PIP",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/oembed.json?url={0}"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://noembed.com/embed?url=https://www.youtube.com/watch?v={0}"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption"},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",videoFixedRatio:"plyr__video-wrapper--fixed-ratio",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",marker:"plyr__progress__marker",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id",hash:"data-plyr-embed-hash"}},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1,customControls:!0,referrerPolicy:null,premium:!1},youtube:{rel:0,showinfo:0,iv_load_policy:3,modestbranding:1,customControls:!0,noCookie:!1},mediaMetadata:{title:"",artist:"",album:"",artwork:[]},markers:{enabled:!1,points:[]}},Ie="picture-in-picture",$e="inline",_e={html5:"html5",youtube:"youtube",vimeo:"vimeo"},Oe="audio",je="video";const qe=()=>{};class De{constructor(e=!1){this.enabled=window.console&&e,this.enabled&&this.log("Debugging enabled")}get log(){return this.enabled?Function.prototype.bind.call(console.log,console):qe}get warn(){return this.enabled?Function.prototype.bind.call(console.warn,console):qe}get error(){return this.enabled?Function.prototype.bind.call(console.error,console):qe}}class He{constructor(t){e(this,"onChange",(()=>{if(!this.supported)return;const e=this.player.elements.buttons.fullscreen;S.element(e)&&(e.pressed=this.active);const t=this.target===this.player.media?this.target:this.player.elements.container;Z.call(this.player,t,this.active?"enterfullscreen":"exitfullscreen",!0)})),e(this,"toggleFallback",((e=!1)=>{if(e?this.scrollPosition={x:window.scrollX??0,y:window.scrollY??0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=e?"hidden":"",R(this.target,this.player.config.classNames.fullscreen.fallback,e),M.isIos){let t=document.head.querySelector('meta[name="viewport"]');const i="viewport-fit=cover";t||(t=document.createElement("meta"),t.setAttribute("name","viewport"));const s=S.string(t.content)&&t.content.includes(i);e?(this.cleanupViewport=!s,s||(t.content+=`,${i}`)):this.cleanupViewport&&(t.content=t.content.split(",").filter((e=>e.trim()!==i)).join(","))}this.onChange()})),e(this,"trapFocus",(e=>{if(M.isIos||M.isIPadOS||!this.active||"Tab"!==e.key)return;const t=document.activeElement,i=U.call(this.player,"a[href], button:not(:disabled), input:not(:disabled), [tabindex]"),[s]=i,n=i[i.length-1];t!==n||e.shiftKey?t===s&&e.shiftKey&&(n.focus(),e.preventDefault()):(s.focus(),e.preventDefault())})),e(this,"update",(()=>{if(this.supported){let e;e=this.forceFallback?"Fallback (forced)":He.nativeSupported?"Native":"Fallback",this.player.debug.log(`${e} fullscreen enabled`)}else this.player.debug.log("Fullscreen not supported and fallback disabled");R(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.supported)})),e(this,"enter",(()=>{this.supported&&(M.isIos&&this.player.config.fullscreen.iosNative?this.player.isVimeo?this.player.embed.requestFullscreen():this.target.webkitEnterFullscreen():!He.nativeSupported||this.forceFallback?this.toggleFallback(!0):this.prefix?S.empty(this.prefix)||this.target[`${this.prefix}Request${this.property}`]():this.target.requestFullscreen({navigationUI:"hide"}))})),e(this,"exit",(()=>{if(this.supported)if(M.isIos&&this.player.config.fullscreen.iosNative)this.player.isVimeo?this.player.embed.exitFullscreen():this.target.webkitEnterFullscreen(),ie(this.player.play());else if(!He.nativeSupported||this.forceFallback)this.toggleFallback(!1);else if(this.prefix){if(!S.empty(this.prefix)){const e="moz"===this.prefix?"Cancel":"Exit";document[`${this.prefix}${e}${this.property}`]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)})),e(this,"toggle",(()=>{this.active?this.exit():this.enter()})),this.player=t,this.prefix=He.prefix,this.property=He.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,this.player.elements.fullscreen=t.config.fullscreen.container&&function(e,t){const{prototype:i}=Element;return(i.closest||function(){let e=this;do{if(V.matches(e,t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null}).call(e,t)}(this.player.elements.container,t.config.fullscreen.container),X.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":`${this.prefix}fullscreenchange`,(()=>{this.onChange()})),X.call(this.player,this.player.elements.container,"dblclick",(e=>{S.element(this.player.elements.controls)&&this.player.elements.controls.contains(e.target)||this.player.listeners.proxy(e,this.toggle,"fullscreen")})),X.call(this,this.player.elements.container,"keydown",(e=>this.trapFocus(e))),this.update()}static get nativeSupported(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}get useNative(){return He.nativeSupported&&!this.forceFallback}static get prefix(){if(S.function(document.exitFullscreen))return"";let e="";return["webkit","moz","ms"].some((t=>!(!S.function(document[`${t}ExitFullscreen`])&&!S.function(document[`${t}CancelFullScreen`]))&&(e=t,!0))),e}static get property(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}get supported(){return[this.player.config.fullscreen.enabled,this.player.isVideo,He.nativeSupported||this.player.config.fullscreen.fallback,!this.player.isYouTube||He.nativeSupported||!M.isIos||this.player.config.playsinline&&!this.player.config.fullscreen.iosNative].every(Boolean)}get active(){if(!this.supported)return!1;if(!He.nativeSupported||this.forceFallback)return F(this.target,this.player.config.classNames.fullscreen.fallback);const e=this.prefix?this.target.getRootNode()[`${this.prefix}${this.property}Element`]:this.target.getRootNode().fullscreenElement;return e&&e.shadowRoot?e===this.target.getRootNode().host:e===this.target}get target(){return M.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.fullscreen??this.player.elements.container}}function Re(e,t=1){return new Promise(((i,s)=>{const n=new Image,a=()=>{delete n.onload,delete n.onerror,(n.naturalWidth>=t?i:s)(n)};Object.assign(n,{onload:a,onerror:a,src:e})}))}const Fe={addStyleHook(){R(this.elements.container,this.config.selectors.container.replace(".",""),!0),R(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls(e=!1){e&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build(){if(this.listeners.media(),!this.supported.ui)return this.debug.warn(`Basic support only for ${this.provider} ${this.type}`),void Fe.toggleNativeControls.call(this,!0);S.element(this.elements.controls)||(Pe.inject.call(this),this.listeners.controls()),Fe.toggleNativeControls.call(this),this.isHTML5&&xe.setup.call(this),this.volume=null,this.muted=null,this.loop=null,this.quality=null,this.speed=null,Pe.updateVolume.call(this),Pe.timeUpdate.call(this),Pe.durationUpdate.call(this),Fe.checkPlaying.call(this),R(this.elements.container,this.config.classNames.pip.supported,K.pip&&this.isHTML5&&this.isVideo),R(this.elements.container,this.config.classNames.airplay.supported,K.airplay&&this.isHTML5),R(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout((()=>{Z.call(this,this.media,"ready")}),0),Fe.setTitle.call(this),this.poster&&Fe.setPoster.call(this,this.poster,!1).catch((()=>{})),this.config.duration&&Pe.durationUpdate.call(this),this.config.mediaMetadata&&Pe.setMediaMetadata.call(this)},setTitle(){let e=ve.get("play",this.config);if(S.string(this.config.title)&&!S.empty(this.config.title)&&(e+=`, ${this.config.title}`),Array.from(this.elements.buttons.play||[]).forEach((t=>{t.setAttribute("aria-label",e)})),this.isEmbed){const e=B.call(this,"iframe");if(!S.element(e))return;const t=S.empty(this.config.title)?"video":this.config.title,i=ve.get("frameTitle",this.config);e.setAttribute("title",i.replace("{title}",t))}},togglePoster(e){R(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster(e,t=!0){return t&&this.poster?Promise.reject(new Error("Poster already set")):(this.media.setAttribute("data-poster",e),this.elements.poster.removeAttribute("hidden"),te.call(this).then((()=>Re(e))).catch((t=>{throw e===this.poster&&Fe.togglePoster.call(this,!1),t})).then((()=>{if(e!==this.poster)throw new Error("setPoster cancelled by later call to setPoster")})).then((()=>(Object.assign(this.elements.poster.style,{backgroundImage:`url('${e}')`,backgroundSize:""}),Fe.togglePoster.call(this,!0),e))))},checkPlaying(e){R(this.elements.container,this.config.classNames.playing,this.playing),R(this.elements.container,this.config.classNames.paused,this.paused),R(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach((e=>{Object.assign(e,{pressed:this.playing}),e.setAttribute("aria-label",ve.get(this.playing?"pause":"play",this.config))})),S.event(e)&&"timeupdate"===e.type||Fe.toggleControls.call(this)},checkLoading(e){this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout((()=>{R(this.elements.container,this.config.classNames.loading,this.loading),Fe.toggleControls.call(this)}),this.loading?250:0)},toggleControls(e){const{controls:t}=this.elements;if(t&&this.config.hideControls){const i=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||i))}},migrateStyles(){Object.values({...this.media.style}).filter((e=>!S.empty(e)&&S.string(e)&&e.startsWith("--plyr"))).forEach((e=>{this.elements.container.style.setProperty(e,this.media.style.getPropertyValue(e)),this.media.style.removeProperty(e)})),S.empty(this.media.style)&&this.media.removeAttribute("style")}};class Ve{constructor(t){e(this,"firstTouch",(()=>{const{player:e}=this,{elements:t}=e;e.touch=!0,R(t.container,e.config.classNames.isTouch,!0)})),e(this,"global",((e=!0)=>{const{player:t}=this;t.config.keyboard.global&&Q.call(t,window,"keydown keyup",this.handleKey,e,!1),Q.call(t,document.body,"click",this.toggleMenu,e),G.call(t,document.body,"touchstart",this.firstTouch)})),e(this,"container",(()=>{const{player:e}=this,{config:t,elements:i,timers:s}=e;!t.keyboard.global&&t.keyboard.focused&&X.call(e,i.container,"keydown keyup",this.handleKey,!1),X.call(e,i.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",(t=>{const{controls:n}=i;n&&"enterfullscreen"===t.type&&(n.pressed=!1,n.hover=!1);let a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(Fe.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(s.controls),s.controls=setTimeout((()=>Fe.toggleControls.call(e,!1)),a)}));const n=()=>{if(!e.isVimeo||e.config.vimeo.premium)return;const t=i.wrapper,{active:s}=e.fullscreen,[n,a]=ce.call(e),l=ae(`aspect-ratio: ${n} / ${a}`);if(!s)return void(l?(t.style.width=null,t.style.height=null):(t.style.maxWidth=null,t.style.margin=null));const[r,o]=[Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)],c=r/o>n/a;l?(t.style.width=c?"auto":"100%",t.style.height=c?"100%":"auto"):(t.style.maxWidth=c?o/a*n+"px":null,t.style.margin=c?"0 auto":null)},a=()=>{clearTimeout(s.resized),s.resized=setTimeout(n,50)};X.call(e,i.container,"enterfullscreen exitfullscreen",(t=>{const{target:s}=e.fullscreen;if(s!==i.container)return;if(!e.isEmbed&&S.empty(e.config.ratio))return;n();("enterfullscreen"===t.type?X:J).call(e,window,"resize",a)}))})),e(this,"media",(()=>{const{player:e}=this,{elements:t}=e;if(X.call(e,e.media,"timeupdate seeking seeked",(t=>Pe.timeUpdate.call(e,t))),X.call(e,e.media,"durationchange loadeddata loadedmetadata",(t=>Pe.durationUpdate.call(e,t))),X.call(e,e.media,"ended",(()=>{e.isHTML5&&e.isVideo&&e.config.resetOnEnd&&(e.restart(),e.pause())})),X.call(e,e.media,"progress playing seeking seeked",(t=>Pe.updateProgress.call(e,t))),X.call(e,e.media,"volumechange",(t=>Pe.updateVolume.call(e,t))),X.call(e,e.media,"playing play pause ended emptied timeupdate",(t=>Fe.checkPlaying.call(e,t))),X.call(e,e.media,"waiting canplay seeked playing",(t=>Fe.checkLoading.call(e,t))),e.supported.ui&&e.config.clickToPlay&&!e.isAudio){const i=B.call(e,`.${e.config.classNames.video}`);if(!S.element(i))return;X.call(e,t.container,"click",(s=>{([t.container,i].includes(s.target)||i.contains(s.target))&&(e.touch&&e.config.hideControls||(e.ended?(this.proxy(s,e.restart,"restart"),this.proxy(s,(()=>{ie(e.play())}),"play")):this.proxy(s,(()=>{ie(e.togglePlay())}),"play")))}))}e.supported.ui&&e.config.disableContextMenu&&X.call(e,t.wrapper,"contextmenu",(e=>{e.preventDefault()}),!1),X.call(e,e.media,"volumechange",(()=>{e.storage.set({volume:e.volume,muted:e.muted})})),X.call(e,e.media,"ratechange",(()=>{Pe.updateSetting.call(e,"speed"),e.storage.set({speed:e.speed})})),X.call(e,e.media,"qualitychange",(t=>{Pe.updateSetting.call(e,"quality",null,t.detail.quality)})),X.call(e,e.media,"ready qualitychange",(()=>{Pe.setDownloadUrl.call(e)}));const i=e.config.events.concat(["keyup","keydown"]).join(" ");X.call(e,e.media,i,(i=>{let{detail:s={}}=i;"error"===i.type&&(s=e.media.error),Z.call(e,t.container,i.type,!0,s)}))})),e(this,"proxy",((e,t,i)=>{const{player:s}=this,n=s.config.listeners[i];let a=!0;S.function(n)&&(a=n.call(s,e)),!1!==a&&S.function(t)&&t.call(s,e)})),e(this,"bind",((e,t,i,s,n=!0)=>{const{player:a}=this,l=a.config.listeners[s],r=S.function(l);X.call(a,e,t,(e=>this.proxy(e,i,s)),n&&!r)})),e(this,"controls",(()=>{const{player:e}=this,{elements:t}=e,i=M.isIE?"change":"input";if(t.buttons.play&&Array.from(t.buttons.play).forEach((t=>{this.bind(t,"click",(()=>{ie(e.togglePlay())}),"play")})),this.bind(t.buttons.restart,"click",e.restart,"restart"),this.bind(t.buttons.rewind,"click",(()=>{e.lastSeekTime=Date.now(),e.rewind()}),"rewind"),this.bind(t.buttons.fastForward,"click",(()=>{e.lastSeekTime=Date.now(),e.forward()}),"fastForward"),this.bind(t.buttons.mute,"click",(()=>{e.muted=!e.muted}),"mute"),this.bind(t.buttons.captions,"click",(()=>e.toggleCaptions())),this.bind(t.buttons.download,"click",(()=>{Z.call(e,e.media,"download")}),"download"),this.bind(t.buttons.fullscreen,"click",(()=>{e.fullscreen.toggle()}),"fullscreen"),this.bind(t.buttons.pip,"click",(()=>{e.pip="toggle"}),"pip"),this.bind(t.buttons.airplay,"click",e.airplay,"airplay"),this.bind(t.buttons.settings,"click",(t=>{t.stopPropagation(),t.preventDefault(),Pe.toggleMenu.call(e,t)}),null,!1),this.bind(t.buttons.settings,"keyup",(t=>{[" ","Enter"].includes(t.key)&&("Enter"!==t.key?(t.preventDefault(),t.stopPropagation(),Pe.toggleMenu.call(e,t)):Pe.focusFirstMenuItem.call(e,null,!0))}),null,!1),this.bind(t.settings.menu,"keydown",(t=>{"Escape"===t.key&&Pe.toggleMenu.call(e,t)})),this.bind(t.inputs.seek,"mousedown mousemove",(e=>{const i=t.progress.getBoundingClientRect(),s=100/i.width*(e.pageX-i.left);e.currentTarget.setAttribute("seek-value",s)})),this.bind(t.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",(t=>{const i=t.currentTarget,s="play-on-seeked";if(S.keyboardEvent(t)&&!["ArrowLeft","ArrowRight"].includes(t.key))return;e.lastSeekTime=Date.now();const n=i.hasAttribute(s),a=["mouseup","touchend","keyup"].includes(t.type);n&&a?(i.removeAttribute(s),ie(e.play())):!a&&e.playing&&(i.setAttribute(s,""),e.pause())})),M.isIos){const t=U.call(e,'input[type="range"]');Array.from(t).forEach((e=>this.bind(e,i,(e=>P(e.target)))))}this.bind(t.inputs.seek,i,(t=>{const i=t.currentTarget;let s=i.getAttribute("seek-value");S.empty(s)&&(s=i.value),i.removeAttribute("seek-value"),e.currentTime=s/i.max*e.duration}),"seek"),this.bind(t.progress,"mouseenter mouseleave mousemove",(t=>Pe.updateSeekTooltip.call(e,t))),this.bind(t.progress,"mousemove touchmove",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startMove(t)})),this.bind(t.progress,"mouseleave touchend click",(()=>{const{previewThumbnails:t}=e;t&&t.loaded&&t.endMove(!1,!0)})),this.bind(t.progress,"mousedown touchstart",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.startScrubbing(t)})),this.bind(t.progress,"mouseup touchend",(t=>{const{previewThumbnails:i}=e;i&&i.loaded&&i.endScrubbing(t)})),M.isWebKit&&Array.from(U.call(e,'input[type="range"]')).forEach((t=>{this.bind(t,"input",(t=>Pe.updateRangeFill.call(e,t.target)))})),e.config.toggleInvert&&!S.element(t.display.duration)&&this.bind(t.display.currentTime,"click",(()=>{0!==e.currentTime&&(e.config.invertTime=!e.config.invertTime,Pe.timeUpdate.call(e))})),this.bind(t.inputs.volume,i,(t=>{e.volume=t.target.value}),"volume"),this.bind(t.controls,"mouseenter mouseleave",(i=>{t.controls.hover=!e.touch&&"mouseenter"===i.type})),t.fullscreen&&Array.from(t.fullscreen.children).filter((e=>!e.contains(t.container))).forEach((i=>{this.bind(i,"mouseenter mouseleave",(i=>{t.controls&&(t.controls.hover=!e.touch&&"mouseenter"===i.type)}))})),this.bind(t.controls,"mousedown mouseup touchstart touchend touchcancel",(e=>{t.controls.pressed=["mousedown","touchstart"].includes(e.type)})),this.bind(t.controls,"focusin",(()=>{const{config:i,timers:s}=e;R(t.controls,i.classNames.noTransition,!0),Fe.toggleControls.call(e,!0),setTimeout((()=>{R(t.controls,i.classNames.noTransition,!1)}),0);const n=this.touch?3e3:4e3;clearTimeout(s.controls),s.controls=setTimeout((()=>Fe.toggleControls.call(e,!1)),n)})),this.bind(t.inputs.volume,"wheel",(t=>{const i=t.webkitDirectionInvertedFromDevice,[s,n]=[t.deltaX,-t.deltaY].map((e=>i?-e:e)),a=Math.sign(Math.abs(s)>Math.abs(n)?s:n);e.increaseVolume(a/50);const{volume:l}=e.media;(1===a&&l<1||-1===a&&l>0)&&t.preventDefault()}),"volume",!1)})),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.firstTouch=this.firstTouch.bind(this)}handleKey(e){const{player:t}=this,{elements:i}=t,{key:s,type:n,altKey:a,ctrlKey:l,metaKey:r,shiftKey:o}=e,c="keydown"===n,u=c&&s===this.lastKey;if(a||l||r||o)return;if(!s)return;if(c){const n=document.activeElement;if(S.element(n)){const{editable:s}=t.config.selectors,{seek:a}=i.inputs;if(n!==a&&V(n,s))return;if(" "===e.key&&V(n,'button, [role^="menuitem"]'))return}switch([" ","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","0","1","2","3","4","5","6","7","8","9","c","f","k","l","m"].includes(s)&&(e.preventDefault(),e.stopPropagation()),s){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":u||(h=parseInt(s,10),t.currentTime=t.duration/10*h);break;case" ":case"k":u||ie(t.togglePlay());break;case"ArrowUp":t.increaseVolume(.1);break;case"ArrowDown":t.decreaseVolume(.1);break;case"m":u||(t.muted=!t.muted);break;case"ArrowRight":t.forward();break;case"ArrowLeft":t.rewind();break;case"f":t.fullscreen.toggle();break;case"c":u||t.toggleCaptions();break;case"l":t.loop=!t.loop}"Escape"===s&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=s}else this.lastKey=null;var h}toggleMenu(e){Pe.toggleMenu.call(this.player,e)}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof __webpack_require__.g?__webpack_require__.g:"undefined"!=typeof self&&self;var Ue=function(e,t){return e(t={exports:{}},t.exports),t.exports}((function(e,t){e.exports=function(){var e=function(){},t={},i={},s={};function n(e,t){e=e.push?e:[e];var n,a,l,r=[],o=e.length,c=o;for(n=function(e,i){i.length&&r.push(e),--c||t(r)};o--;)a=e[o],(l=i[a])?n(a,l):(s[a]=s[a]||[]).push(n)}function a(e,t){if(e){var n=s[e];if(i[e]=t,n)for(;n.length;)n[0](e,t),n.splice(0,1)}}function l(t,i){t.call&&(t={success:t}),i.length?(t.error||e)(i):(t.success||e)(t)}function r(t,i,s,n){var a,l,o=document,c=s.async,u=(s.numRetries||0)+1,h=s.before||e,d=t.replace(/[\?|#].*$/,""),m=t.replace(/^(css|img)!/,"");n=n||0,/(^css!|\.css$)/.test(d)?((l=o.createElement("link")).rel="stylesheet",l.href=m,(a="hideFocus"in l)&&l.relList&&(a=0,l.rel="preload",l.as="style")):/(^img!|\.(png|gif|jpg|svg|webp)$)/.test(d)?(l=o.createElement("img")).src=m:((l=o.createElement("script")).src=t,l.async=void 0===c||c),l.onload=l.onerror=l.onbeforeload=function(e){var o=e.type[0];if(a)try{l.sheet.cssText.length||(o="e")}catch(e){18!=e.code&&(o="e")}if("e"==o){if((n+=1)<u)return r(t,i,s,n)}else if("preload"==l.rel&&"style"==l.as)return l.rel="stylesheet";i(t,o,e.defaultPrevented)},!1!==h(t,l)&&o.head.appendChild(l)}function o(e,t,i){var s,n,a=(e=e.push?e:[e]).length,l=a,o=[];for(s=function(e,i,s){if("e"==i&&o.push(e),"b"==i){if(!s)return;o.push(e)}--a||t(o)},n=0;n<l;n++)r(e[n],s,i)}function c(e,i,s){var n,r;if(i&&i.trim&&(n=i),r=(n?s:i)||{},n){if(n in t)throw"LoadJS";t[n]=!0}function c(t,i){o(e,(function(e){l(r,e),t&&l({success:t,error:i},e),a(n,e)}),r)}if(r.returnPromise)return new Promise(c);c()}return c.ready=function(e,t){return n(e,(function(e){l(t,e)})),c},c.done=function(e){a(e,[])},c.reset=function(){t={},i={},s={}},c.isDefined=function(e){return e in t},c}()}));function Be(e){return new Promise(((t,i)=>{Ue(e,{success:t,error:i})}))}function We(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Z.call(this,this.media,e?"play":"pause"))}const ze={setup(){const e=this;R(e.elements.wrapper,e.config.classNames.embed,!0),e.options.speed=e.config.speed.options,ue.call(e),S.object(window.Vimeo)?ze.ready.call(e):Be(e.config.urls.vimeo.sdk).then((()=>{ze.ready.call(e)})).catch((t=>{e.debug.warn("Vimeo SDK (player.js) failed to load",t)}))},ready(){const e=this,t=e.config.vimeo,{premium:i,referrerPolicy:s,...n}=t;let a=e.media.getAttribute("src"),l="";S.empty(a)?(a=e.media.getAttribute(e.config.attributes.embed.id),l=e.media.getAttribute(e.config.attributes.embed.hash)):l=function(e){const t=e.match(/^.*(vimeo.com\/|video\/)(\d+)(\?.*&*h=|\/)+([\d,a-f]+)/);return t&&5===t.length?t[4]:null}(a);const r=l?{h:l}:{};i&&Object.assign(n,{controls:!1,sidedock:!1});const o=Ne({loop:e.config.loop.active,autoplay:e.autoplay,muted:e.muted,gesture:"media",playsinline:e.config.playsinline,...r,...n}),c=(u=a,S.empty(u)?null:S.number(Number(u))?u:u.match(/^.*(vimeo.com\/|video\/)(\d+).*/)?RegExp.$2:u);var u;const h=$("iframe"),d=me(e.config.urls.vimeo.iframe,c,o);if(h.setAttribute("src",d),h.setAttribute("allowfullscreen",""),h.setAttribute("allow",["autoplay","fullscreen","picture-in-picture","encrypted-media","accelerometer","gyroscope"].join("; ")),S.empty(s)||h.setAttribute("referrerPolicy",s),i||!t.customControls)h.setAttribute("data-poster",e.poster),e.media=q(h,e.media);else{const t=$("div",{class:e.config.classNames.embedContainer,"data-poster":e.poster});t.appendChild(h),e.media=q(t,e.media)}t.customControls||Te(me(e.config.urls.vimeo.api,d)).then((t=>{!S.empty(t)&&t.thumbnail_url&&Fe.setPoster.call(e,t.thumbnail_url).catch((()=>{}))})),e.embed=new window.Vimeo.Player(h,{autopause:e.config.autopause,muted:e.muted}),e.media.paused=!0,e.media.currentTime=0,e.supported.ui&&e.embed.disableTextTrack(),e.media.play=()=>(We.call(e,!0),e.embed.play()),e.media.pause=()=>(We.call(e,!1),e.embed.pause()),e.media.stop=()=>{e.pause(),e.currentTime=0};let{currentTime:m}=e.media;Object.defineProperty(e.media,"currentTime",{get:()=>m,set(t){const{embed:i,media:s,paused:n,volume:a}=e,l=n&&!i.hasPlayed;s.seeking=!0,Z.call(e,s,"seeking"),Promise.resolve(l&&i.setVolume(0)).then((()=>i.setCurrentTime(t))).then((()=>l&&i.pause())).then((()=>l&&i.setVolume(a))).catch((()=>{}))}});let p=e.config.speed.selected;Object.defineProperty(e.media,"playbackRate",{get:()=>p,set(t){e.embed.setPlaybackRate(t).then((()=>{p=t,Z.call(e,e.media,"ratechange")})).catch((()=>{e.options.speed=[1]}))}});let{volume:g}=e.config;Object.defineProperty(e.media,"volume",{get:()=>g,set(t){e.embed.setVolume(t).then((()=>{g=t,Z.call(e,e.media,"volumechange")}))}});let{muted:f}=e.config;Object.defineProperty(e.media,"muted",{get:()=>f,set(t){const i=!!S.boolean(t)&&t;e.embed.setMuted(!!i||e.config.muted).then((()=>{f=i,Z.call(e,e.media,"volumechange")}))}});let y,{loop:b}=e.config;Object.defineProperty(e.media,"loop",{get:()=>b,set(t){const i=S.boolean(t)?t:e.config.loop.active;e.embed.setLoop(i).then((()=>{b=i}))}}),e.embed.getVideoUrl().then((t=>{y=t,Pe.setDownloadUrl.call(e)})).catch((e=>{this.debug.warn(e)})),Object.defineProperty(e.media,"currentSrc",{get:()=>y}),Object.defineProperty(e.media,"ended",{get:()=>e.currentTime===e.duration}),Promise.all([e.embed.getVideoWidth(),e.embed.getVideoHeight()]).then((t=>{const[i,s]=t;e.embed.ratio=he(i,s),ue.call(this)})),e.embed.setAutopause(e.config.autopause).then((t=>{e.config.autopause=t})),e.embed.getVideoTitle().then((t=>{e.config.title=t,Fe.setTitle.call(this)})),e.embed.getCurrentTime().then((t=>{m=t,Z.call(e,e.media,"timeupdate")})),e.embed.getDuration().then((t=>{e.media.duration=t,Z.call(e,e.media,"durationchange")})),e.embed.getTextTracks().then((t=>{e.media.textTracks=t,xe.setup.call(e)})),e.embed.on("cuechange",(({cues:t=[]})=>{const i=t.map((e=>function(e){const t=document.createDocumentFragment(),i=document.createElement("div");return t.appendChild(i),i.innerHTML=e,t.firstChild.innerText}(e.text)));xe.updateCues.call(e,i)})),e.embed.on("loaded",(()=>{if(e.embed.getPaused().then((t=>{We.call(e,!t),t||Z.call(e,e.media,"playing")})),S.element(e.embed.element)&&e.supported.ui){e.embed.element.setAttribute("tabindex",-1)}})),e.embed.on("bufferstart",(()=>{Z.call(e,e.media,"waiting")})),e.embed.on("bufferend",(()=>{Z.call(e,e.media,"playing")})),e.embed.on("play",(()=>{We.call(e,!0),Z.call(e,e.media,"playing")})),e.embed.on("pause",(()=>{We.call(e,!1)})),e.embed.on("timeupdate",(t=>{e.media.seeking=!1,m=t.seconds,Z.call(e,e.media,"timeupdate")})),e.embed.on("progress",(t=>{e.media.buffered=t.percent,Z.call(e,e.media,"progress"),1===parseInt(t.percent,10)&&Z.call(e,e.media,"canplaythrough"),e.embed.getDuration().then((t=>{t!==e.media.duration&&(e.media.duration=t,Z.call(e,e.media,"durationchange"))}))})),e.embed.on("seeked",(()=>{e.media.seeking=!1,Z.call(e,e.media,"seeked")})),e.embed.on("ended",(()=>{e.media.paused=!0,Z.call(e,e.media,"ended")})),e.embed.on("error",(t=>{e.media.error=t,Z.call(e,e.media,"error")})),t.customControls&&setTimeout((()=>Fe.build.call(e)),0)}};function Ke(e){e&&!this.embed.hasPlayed&&(this.embed.hasPlayed=!0),this.media.paused===e&&(this.media.paused=!e,Z.call(this,this.media,e?"play":"pause"))}function Ye(e){return e.noCookie?"https://www.youtube-nocookie.com":"http:"===window.location.protocol?"http://www.youtube.com":void 0}const Qe={setup(){if(R(this.elements.wrapper,this.config.classNames.embed,!0),S.object(window.YT)&&S.function(window.YT.Player))Qe.ready.call(this);else{const e=window.onYouTubeIframeAPIReady;window.onYouTubeIframeAPIReady=()=>{S.function(e)&&e(),Qe.ready.call(this)},Be(this.config.urls.youtube.sdk).catch((e=>{this.debug.warn("YouTube API failed to load",e)}))}},getTitle(e){Te(me(this.config.urls.youtube.api,e)).then((e=>{if(S.object(e)){const{title:t,height:i,width:s}=e;this.config.title=t,Fe.setTitle.call(this),this.embed.ratio=he(s,i)}ue.call(this)})).catch((()=>{ue.call(this)}))},ready(){const e=this,t=e.config.youtube,i=e.media&&e.media.getAttribute("id");if(!S.empty(i)&&i.startsWith("youtube-"))return;let s=e.media.getAttribute("src");S.empty(s)&&(s=e.media.getAttribute(this.config.attributes.embed.id));const n=(a=s,S.empty(a)?null:a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|&v=)([^#&?]*).*/)?RegExp.$2:a);var a;const l=$("div",{id:`${e.provider}-${Math.floor(1e4*Math.random())}`,"data-poster":t.customControls?e.poster:void 0});if(e.media=q(l,e.media),t.customControls){const t=e=>`https://i.ytimg.com/vi/${n}/${e}default.jpg`;Re(t("maxres"),121).catch((()=>Re(t("sd"),121))).catch((()=>Re(t("hq")))).then((t=>Fe.setPoster.call(e,t.src))).then((t=>{t.includes("maxres")||(e.elements.poster.style.backgroundSize="cover")})).catch((()=>{}))}e.embed=new window.YT.Player(e.media,{videoId:n,host:Ye(t),playerVars:x({},{autoplay:e.config.autoplay?1:0,hl:e.config.hl,controls:e.supported.ui&&t.customControls?0:1,disablekb:1,playsinline:e.config.playsinline&&!e.config.fullscreen.iosNative?1:0,cc_load_policy:e.captions.active?1:0,cc_lang_pref:e.config.captions.language,widget_referrer:window?window.location.href:null},t),events:{onError(t){if(!e.media.error){const i=t.data,s={2:"The request contains an invalid parameter value. For example, this error occurs if you specify a video ID that does not have 11 characters, or if the video ID contains invalid characters, such as exclamation points or asterisks.",5:"The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.",100:"The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.",101:"The owner of the requested video does not allow it to be played in embedded players.",150:"The owner of the requested video does not allow it to be played in embedded players."}[i]||"An unknown error occurred";e.media.error={code:i,message:s},Z.call(e,e.media,"error")}},onPlaybackRateChange(t){const i=t.target;e.media.playbackRate=i.getPlaybackRate(),Z.call(e,e.media,"ratechange")},onReady(i){if(S.function(e.media.play))return;const s=i.target;Qe.getTitle.call(e,n),e.media.play=()=>{Ke.call(e,!0),s.playVideo()},e.media.pause=()=>{Ke.call(e,!1),s.pauseVideo()},e.media.stop=()=>{s.stopVideo()},e.media.duration=s.getDuration(),e.media.paused=!0,e.media.currentTime=0,Object.defineProperty(e.media,"currentTime",{get:()=>Number(s.getCurrentTime()),set(t){e.paused&&!e.embed.hasPlayed&&e.embed.mute(),e.media.seeking=!0,Z.call(e,e.media,"seeking"),s.seekTo(t)}}),Object.defineProperty(e.media,"playbackRate",{get:()=>s.getPlaybackRate(),set(e){s.setPlaybackRate(e)}});let{volume:a}=e.config;Object.defineProperty(e.media,"volume",{get:()=>a,set(t){a=t,s.setVolume(100*a),Z.call(e,e.media,"volumechange")}});let{muted:l}=e.config;Object.defineProperty(e.media,"muted",{get:()=>l,set(t){const i=S.boolean(t)?t:l;l=i,s[i?"mute":"unMute"](),s.setVolume(100*a),Z.call(e,e.media,"volumechange")}}),Object.defineProperty(e.media,"currentSrc",{get:()=>s.getVideoUrl()}),Object.defineProperty(e.media,"ended",{get:()=>e.currentTime===e.duration});const r=s.getAvailablePlaybackRates();e.options.speed=r.filter((t=>e.config.speed.options.includes(t))),e.supported.ui&&t.customControls&&e.media.setAttribute("tabindex",-1),Z.call(e,e.media,"timeupdate"),Z.call(e,e.media,"durationchange"),clearInterval(e.timers.buffering),e.timers.buffering=setInterval((()=>{e.media.buffered=s.getVideoLoadedFraction(),(null===e.media.lastBuffered||e.media.lastBuffered<e.media.buffered)&&Z.call(e,e.media,"progress"),e.media.lastBuffered=e.media.buffered,1===e.media.buffered&&(clearInterval(e.timers.buffering),Z.call(e,e.media,"canplaythrough"))}),200),t.customControls&&setTimeout((()=>Fe.build.call(e)),50)},onStateChange(i){const s=i.target;clearInterval(e.timers.playing);switch(e.media.seeking&&[1,2].includes(i.data)&&(e.media.seeking=!1,Z.call(e,e.media,"seeked")),i.data){case-1:Z.call(e,e.media,"timeupdate"),e.media.buffered=s.getVideoLoadedFraction(),Z.call(e,e.media,"progress");break;case 0:Ke.call(e,!1),e.media.loop?(s.stopVideo(),s.playVideo()):Z.call(e,e.media,"ended");break;case 1:t.customControls&&!e.config.autoplay&&e.media.paused&&!e.embed.hasPlayed?e.media.pause():(Ke.call(e,!0),Z.call(e,e.media,"playing"),e.timers.playing=setInterval((()=>{Z.call(e,e.media,"timeupdate")}),50),e.media.duration!==s.getDuration()&&(e.media.duration=s.getDuration(),Z.call(e,e.media,"durationchange")));break;case 2:e.muted||e.embed.unMute(),Ke.call(e,!1);break;case 3:Z.call(e,e.media,"waiting")}Z.call(e,e.elements.container,"statechange",!1,{code:i.data})}}})}},Xe={setup(){this.media?(R(this.elements.container,this.config.classNames.type.replace("{0}",this.type),!0),R(this.elements.container,this.config.classNames.provider.replace("{0}",this.provider),!0),this.isEmbed&&R(this.elements.container,this.config.classNames.type.replace("{0}","video"),!0),this.isVideo&&(this.elements.wrapper=$("div",{class:this.config.classNames.video}),L(this.media,this.elements.wrapper),this.elements.poster=$("div",{class:this.config.classNames.poster}),this.elements.wrapper.appendChild(this.elements.poster)),this.isHTML5?de.setup.call(this):this.isYouTube?Qe.setup.call(this):this.isVimeo&&ze.setup.call(this)):this.debug.warn("No media element found!")}};class Je{constructor(t){e(this,"load",(()=>{this.enabled&&(S.object(window.google)&&S.object(window.google.ima)?this.ready():Be(this.player.config.urls.googleIMA.sdk).then((()=>{this.ready()})).catch((()=>{this.trigger("error",new Error("Google IMA SDK failed to load"))})))})),e(this,"ready",(()=>{var e;this.enabled||((e=this).manager&&e.manager.destroy(),e.elements.displayContainer&&e.elements.displayContainer.destroy(),e.elements.container.remove()),this.startSafetyTimer(12e3,"ready()"),this.managerPromise.then((()=>{this.clearSafetyTimer("onAdsManagerLoaded()")})),this.listeners(),this.setupIMA()})),e(this,"setupIMA",(()=>{this.elements.container=$("div",{class:this.player.config.classNames.ads}),this.player.elements.container.appendChild(this.elements.container),google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED),google.ima.settings.setLocale(this.player.config.ads.language),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(this.player.config.playsinline),this.elements.displayContainer=new google.ima.AdDisplayContainer(this.elements.container,this.player.media),this.loader=new google.ima.AdsLoader(this.elements.displayContainer),this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,(e=>this.onAdsManagerLoaded(e)),!1),this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e)),!1),this.requestAds()})),e(this,"requestAds",(()=>{const{container:e}=this.player.elements;try{const t=new google.ima.AdsRequest;t.adTagUrl=this.tagUrl,t.linearAdSlotWidth=e.offsetWidth,t.linearAdSlotHeight=e.offsetHeight,t.nonLinearAdSlotWidth=e.offsetWidth,t.nonLinearAdSlotHeight=e.offsetHeight,t.forceNonLinearFullSlot=!1,t.setAdWillPlayMuted(!this.player.muted),this.loader.requestAds(t)}catch(e){this.onAdError(e)}})),e(this,"pollCountdown",((e=!1)=>{if(!e)return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval((()=>{const e=Ee(Math.max(this.manager.getRemainingTime(),0)),t=`${ve.get("advertisement",this.player.config)} - ${e}`;this.elements.container.setAttribute("data-badge-text",t)}),100)})),e(this,"onAdsManagerLoaded",(e=>{if(!this.enabled)return;const t=new google.ima.AdsRenderingSettings;t.restoreCustomPlaybackStateOnAdBreakComplete=!0,t.enablePreloading=!0,this.manager=e.getAdsManager(this.player,t),this.cuePoints=this.manager.getCuePoints(),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,(e=>this.onAdError(e))),Object.keys(google.ima.AdEvent.Type).forEach((e=>{this.manager.addEventListener(google.ima.AdEvent.Type[e],(e=>this.onAdEvent(e)))})),this.trigger("loaded")})),e(this,"addCuePoints",(()=>{S.empty(this.cuePoints)||this.cuePoints.forEach((e=>{if(0!==e&&-1!==e&&e<this.player.duration){const t=this.player.elements.progress;if(S.element(t)){const i=100/this.player.duration*e,s=$("span",{class:this.player.config.classNames.cues});s.style.left=`${i.toString()}%`,t.appendChild(s)}}}))})),e(this,"onAdEvent",(e=>{const{container:t}=this.player.elements,i=e.getAd(),s=e.getAdData();switch((e=>{Z.call(this.player,this.player.media,`ads${e.replace(/_/g,"").toLowerCase()}`)})(e.type),e.type){case google.ima.AdEvent.Type.LOADED:this.trigger("loaded"),this.pollCountdown(!0),i.isLinear()||(i.width=t.offsetWidth,i.height=t.offsetHeight);break;case google.ima.AdEvent.Type.STARTED:this.manager.setVolume(this.player.volume);break;case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:this.player.ended?this.loadAds():this.loader.contentComplete();break;case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:this.pauseContent();break;case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:this.pollCountdown(),this.resumeContent();break;case google.ima.AdEvent.Type.LOG:s.adError&&this.player.debug.warn(`Non-fatal ad error: ${s.adError.getMessage()}`)}})),e(this,"onAdError",(e=>{this.cancel(),this.player.debug.warn("Ads error",e)})),e(this,"listeners",(()=>{const{container:e}=this.player.elements;let t;this.player.on("canplay",(()=>{this.addCuePoints()})),this.player.on("ended",(()=>{this.loader.contentComplete()})),this.player.on("timeupdate",(()=>{t=this.player.currentTime})),this.player.on("seeked",(()=>{const e=this.player.currentTime;S.empty(this.cuePoints)||this.cuePoints.forEach(((i,s)=>{t<i&&i<e&&(this.manager.discardAdBreak(),this.cuePoints.splice(s,1))}))})),window.addEventListener("resize",(()=>{this.manager&&this.manager.resize(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL)}))})),e(this,"play",(()=>{const{container:e}=this.player.elements;this.managerPromise||this.resumeContent(),this.managerPromise.then((()=>{this.manager.setVolume(this.player.volume),this.elements.displayContainer.initialize();try{this.initialized||(this.manager.init(e.offsetWidth,e.offsetHeight,google.ima.ViewMode.NORMAL),this.manager.start()),this.initialized=!0}catch(e){this.onAdError(e)}})).catch((()=>{}))})),e(this,"resumeContent",(()=>{this.elements.container.style.zIndex="",this.playing=!1,ie(this.player.media.play())})),e(this,"pauseContent",(()=>{this.elements.container.style.zIndex=3,this.playing=!0,this.player.media.pause()})),e(this,"cancel",(()=>{this.initialized&&this.resumeContent(),this.trigger("error"),this.loadAds()})),e(this,"loadAds",(()=>{this.managerPromise.then((()=>{this.manager&&this.manager.destroy(),this.managerPromise=new Promise((e=>{this.on("loaded",e),this.player.debug.log(this.manager)})),this.initialized=!1,this.requestAds()})).catch((()=>{}))})),e(this,"trigger",((e,...t)=>{const i=this.events[e];S.array(i)&&i.forEach((e=>{S.function(e)&&e.apply(this,t)}))})),e(this,"on",((e,t)=>(S.array(this.events[e])||(this.events[e]=[]),this.events[e].push(t),this))),e(this,"startSafetyTimer",((e,t)=>{this.player.debug.log(`Safety timer invoked from: ${t}`),this.safetyTimer=setTimeout((()=>{this.cancel(),this.clearSafetyTimer("startSafetyTimer()")}),e)})),e(this,"clearSafetyTimer",(e=>{S.nullOrUndefined(this.safetyTimer)||(this.player.debug.log(`Safety timer cleared from: ${e}`),clearTimeout(this.safetyTimer),this.safetyTimer=null)})),this.player=t,this.config=t.config.ads,this.playing=!1,this.initialized=!1,this.elements={container:null,displayContainer:null},this.manager=null,this.loader=null,this.cuePoints=null,this.events={},this.safetyTimer=null,this.countdownTimer=null,this.managerPromise=new Promise(((e,t)=>{this.on("loaded",e),this.on("error",t)})),this.load()}get enabled(){const{config:e}=this;return this.player.isHTML5&&this.player.isVideo&&e.enabled&&(!S.empty(e.publisherId)||S.url(e.tagUrl))}get tagUrl(){const{config:e}=this;if(S.url(e.tagUrl))return e.tagUrl;return`https://go.aniview.com/api/adserver6/vast/?${Ne({AV_PUBLISHERID:"58c25bb0073ef448b1087ad6",AV_CHANNELID:"5a0458dc28a06145e4519d21",AV_URL:window.location.hostname,cb:Date.now(),AV_WIDTH:640,AV_HEIGHT:480,AV_CDIM2:e.publisherId})}`}}function Ge(e=0,t=0,i=255){return Math.min(Math.max(e,t),i)}const Ze=e=>{const t=[];return e.split(/\r\n\r\n|\n\n|\r\r/).forEach((e=>{const i={};e.split(/\r\n|\n|\r/).forEach((e=>{if(S.number(i.startTime)){if(!S.empty(e.trim())&&S.empty(i.text)){const t=e.trim().split("#xywh=");[i.text]=t,t[1]&&([i.x,i.y,i.w,i.h]=t[1].split(","))}}else{const t=e.match(/([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})( ?--> ?)([0-9]{2})?:?([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);t&&(i.startTime=60*Number(t[1]||0)*60+60*Number(t[2])+Number(t[3])+Number(`0.${t[4]}`),i.endTime=60*Number(t[6]||0)*60+60*Number(t[7])+Number(t[8])+Number(`0.${t[9]}`))}})),i.text&&t.push(i)})),t},et=(e,t)=>{const i={};return e>t.width/t.height?(i.width=t.width,i.height=1/e*t.width):(i.height=t.height,i.width=e*t.height),i};class tt{constructor(t){e(this,"load",(()=>{this.player.elements.display.seekTooltip&&(this.player.elements.display.seekTooltip.hidden=this.enabled),this.enabled&&this.getThumbnails().then((()=>{this.enabled&&(this.render(),this.determineContainerAutoSizing(),this.listeners(),this.loaded=!0)}))})),e(this,"getThumbnails",(()=>new Promise((e=>{const{src:t}=this.player.config.previewThumbnails;if(S.empty(t))throw new Error("Missing previewThumbnails.src config attribute");const i=()=>{this.thumbnails.sort(((e,t)=>e.height-t.height)),this.player.debug.log("Preview thumbnails",this.thumbnails),e()};if(S.function(t))t((e=>{this.thumbnails=e,i()}));else{const e=(S.string(t)?[t]:t).map((e=>this.getThumbnail(e)));Promise.all(e).then(i)}})))),e(this,"getThumbnail",(e=>new Promise((t=>{Te(e).then((i=>{const s={frames:Ze(i),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||s.frames[0].text.startsWith("http://")||s.frames[0].text.startsWith("https://")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));const n=new Image;n.onload=()=>{s.height=n.naturalHeight,s.width=n.naturalWidth,this.thumbnails.push(s),t()},n.src=s.urlPrefix+s.frames[0].text}))})))),e(this,"startMove",(e=>{if(this.loaded&&S.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t,i;const s=this.player.elements.progress.getBoundingClientRect(),n=100/s.width*(e.pageX-s.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=Ee(this.seekTime);const a=null===(t=this.player.config.markers)||void 0===t||null===(i=t.points)||void 0===i?void 0:i.find((({time:e})=>e===Math.round(this.seekTime)));a&&this.elements.thumb.time.insertAdjacentHTML("afterbegin",`${a.label}<br>`)}this.showImageAtCurrentTime()}})),e(this,"endMove",(()=>{this.toggleThumbContainer(!1,!0)})),e(this,"startScrubbing",(e=>{(S.nullOrUndefined(e.button)||!1===e.button||0===e.button)&&(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))})),e(this,"endScrubbing",(()=>{this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):G.call(this.player,this.player.media,"timeupdate",(()=>{this.mouseDown||this.toggleScrubbingContainer(!1)}))})),e(this,"listeners",(()=>{this.player.on("play",(()=>{this.toggleThumbContainer(!1,!0)})),this.player.on("seeked",(()=>{this.toggleThumbContainer(!1)})),this.player.on("timeupdate",(()=>{this.lastTime=this.player.media.currentTime}))})),e(this,"render",(()=>{this.elements.thumb.container=$("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=$("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);const e=$("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=$("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.imageContainer.appendChild(e),S.element(this.player.elements.progress)&&this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=$("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)})),e(this,"destroy",(()=>{this.elements.thumb.container&&this.elements.thumb.container.remove(),this.elements.scrubbing.container&&this.elements.scrubbing.container.remove()})),e(this,"showImageAtCurrentTime",(()=>{this.mouseDown?this.setScrubbingContainerSize():this.setThumbContainerSizeAndPos();const e=this.thumbnails[0].frames.findIndex((e=>this.seekTime>=e.startTime&&this.seekTime<=e.endTime)),t=e>=0;let i=0;this.mouseDown||this.toggleThumbContainer(t),t&&(this.thumbnails.forEach(((t,s)=>{this.loadedImages.includes(t.frames[e].text)&&(i=s)})),e!==this.showingThumb&&(this.showingThumb=e,this.loadImage(i)))})),e(this,"loadImage",((e=0)=>{const t=this.showingThumb,i=this.thumbnails[e],{urlPrefix:s}=i,n=i.frames[t],a=i.frames[t].text,l=s+a;if(this.currentImageElement&&this.currentImageElement.dataset.filename===a)this.showImage(this.currentImageElement,n,e,t,a,!1),this.currentImageElement.dataset.index=t,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);const i=new Image;i.src=l,i.dataset.index=t,i.dataset.filename=a,this.showingThumbFilename=a,this.player.debug.log(`Loading image: ${l}`),i.onload=()=>this.showImage(i,n,e,t,a,!0),this.loadingImage=i,this.removeOldImages(i)}})),e(this,"showImage",((e,t,i,s,n,a=!0)=>{this.player.debug.log(`Showing thumb: ${n}. num: ${s}. qual: ${i}. newimg: ${a}`),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(n)||this.loadedImages.push(n)),this.preloadNearby(s,!0).then(this.preloadNearby(s,!1)).then(this.getHigherQuality(i,e,t,n))})),e(this,"removeOldImages",(e=>{Array.from(this.currentImageContainer.children).forEach((t=>{if("img"!==t.tagName.toLowerCase())return;const i=this.usingSprites?500:1e3;if(t.dataset.index!==e.dataset.index&&!t.dataset.deleting){t.dataset.deleting=!0;const{currentImageContainer:e}=this;setTimeout((()=>{e.removeChild(t),this.player.debug.log(`Removing thumb: ${t.dataset.filename}`)}),i)}}))})),e(this,"preloadNearby",((e,t=!0)=>new Promise((i=>{setTimeout((()=>{const s=this.thumbnails[0].frames[e].text;if(this.showingThumbFilename===s){let n;n=t?this.thumbnails[0].frames.slice(e):this.thumbnails[0].frames.slice(0,e).reverse();let a=!1;n.forEach((e=>{const t=e.text;if(t!==s&&!this.loadedImages.includes(t)){a=!0,this.player.debug.log(`Preloading thumb filename: ${t}`);const{urlPrefix:e}=this.thumbnails[0],s=e+t,n=new Image;n.src=s,n.onload=()=>{this.player.debug.log(`Preloaded thumb filename: ${t}`),this.loadedImages.includes(t)||this.loadedImages.push(t),i()}}})),a||i()}}),300)})))),e(this,"getHigherQuality",((e,t,i,s)=>{if(e<this.thumbnails.length-1){let n=t.naturalHeight;this.usingSprites&&(n=i.h),n<this.thumbContainerHeight&&setTimeout((()=>{this.showingThumbFilename===s&&(this.player.debug.log(`Showing higher quality thumb for: ${s}`),this.loadImage(e+1))}),300)}})),e(this,"toggleThumbContainer",((e=!1,t=!1)=>{const i=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(i,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,"toggleScrubbingContainer",((e=!1)=>{const t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)})),e(this,"determineContainerAutoSizing",(()=>{(this.elements.thumb.imageContainer.clientHeight>20||this.elements.thumb.imageContainer.clientWidth>20)&&(this.sizeSpecifiedInCSS=!0)})),e(this,"setThumbContainerSizeAndPos",(()=>{const{imageContainer:e}=this.elements.thumb;if(this.sizeSpecifiedInCSS){if(e.clientHeight>20&&e.clientWidth<20){const t=Math.floor(e.clientHeight*this.thumbAspectRatio);e.style.width=`${t}px`}else if(e.clientHeight<20&&e.clientWidth>20){const t=Math.floor(e.clientWidth/this.thumbAspectRatio);e.style.height=`${t}px`}}else{const t=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);e.style.height=`${this.thumbContainerHeight}px`,e.style.width=`${t}px`}this.setThumbContainerPos()})),e(this,"setThumbContainerPos",(()=>{const e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),{container:i}=this.elements.thumb,s=t.left-e.left+10,n=t.right-e.left-i.clientWidth-10,a=this.mousePosX-e.left-i.clientWidth/2,l=Ge(a,s,n);i.style.left=`${l}px`,i.style.setProperty("--preview-arrow-offset",a-l+"px")})),e(this,"setScrubbingContainerSize",(()=>{const{width:e,height:t}=et(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});this.elements.scrubbing.container.style.width=`${e}px`,this.elements.scrubbing.container.style.height=`${t}px`})),e(this,"setImageSizeAndOffset",((e,t)=>{if(!this.usingSprites)return;const i=this.thumbContainerHeight/t.h;e.style.height=e.naturalHeight*i+"px",e.style.width=e.naturalWidth*i+"px",e.style.left=`-${t.x*i}px`,e.style.top=`-${t.y*i}px`})),this.player=t,this.thumbnails=[],this.loaded=!1,this.lastMouseMoveTime=Date.now(),this.mouseDown=!1,this.loadedImages=[],this.elements={thumb:{},scrubbing:{}},this.load()}get enabled(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}get currentImageContainer(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}get usingSprites(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}get thumbAspectRatio(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}get thumbContainerHeight(){if(this.mouseDown){const{height:e}=et(this.thumbAspectRatio,{width:this.player.media.clientWidth,height:this.player.media.clientHeight});return e}return this.sizeSpecifiedInCSS?this.elements.thumb.imageContainer.clientHeight:Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}get currentImageElement(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement}set currentImageElement(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}const it={insertElements(e,t){S.string(t)?_(e,this.media,{src:t}):S.array(t)&&t.forEach((t=>{_(e,this.media,t)}))},change(e){N(e,"sources.length")?(de.cancelRequests.call(this),this.destroy.call(this,(()=>{this.options.quality=[],O(this.media),this.media=null,S.element(this.elements.container)&&this.elements.container.removeAttribute("class");const{sources:t,type:i}=e,[{provider:s=_e.html5,src:n}]=t,a="html5"===s?i:"div",l="html5"===s?{}:{src:n};Object.assign(this,{provider:s,type:i,supported:K.check(i,s,this.config.playsinline),media:$(a,l)}),this.elements.container.appendChild(this.media),S.boolean(e.autoplay)&&(this.config.autoplay=e.autoplay),this.isHTML5&&(this.config.crossorigin&&this.media.setAttribute("crossorigin",""),this.config.autoplay&&this.media.setAttribute("autoplay",""),S.empty(e.poster)||(this.poster=e.poster),this.config.loop.active&&this.media.setAttribute("loop",""),this.config.muted&&this.media.setAttribute("muted",""),this.config.playsinline&&this.media.setAttribute("playsinline","")),Fe.addStyleHook.call(this),this.isHTML5&&it.insertElements.call(this,"source",t),this.config.title=e.title,Xe.setup.call(this),this.isHTML5&&Object.keys(e).includes("tracks")&&it.insertElements.call(this,"track",e.tracks),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&Fe.build.call(this),this.isHTML5&&this.media.load(),S.empty(e.previewThumbnails)||(Object.assign(this.config.previewThumbnails,e.previewThumbnails),this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))),this.fullscreen.update()}),!0)):this.debug.warn("Invalid source format")}};class st{constructor(t,i){if(e(this,"play",(()=>S.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then((()=>this.ads.play())).catch((()=>ie(this.media.play()))),this.media.play()):null)),e(this,"pause",(()=>this.playing&&S.function(this.media.pause)?this.media.pause():null)),e(this,"togglePlay",(e=>(S.boolean(e)?e:!this.playing)?this.play():this.pause())),e(this,"stop",(()=>{this.isHTML5?(this.pause(),this.restart()):S.function(this.media.stop)&&this.media.stop()})),e(this,"restart",(()=>{this.currentTime=0})),e(this,"rewind",(e=>{this.currentTime-=S.number(e)?e:this.config.seekTime})),e(this,"forward",(e=>{this.currentTime+=S.number(e)?e:this.config.seekTime})),e(this,"increaseVolume",(e=>{const t=this.media.muted?0:this.volume;this.volume=t+(S.number(e)?e:0)})),e(this,"decreaseVolume",(e=>{this.increaseVolume(-e)})),e(this,"airplay",(()=>{K.airplay&&this.media.webkitShowPlaybackTargetPicker()})),e(this,"toggleControls",(e=>{if(this.supported.ui&&!this.isAudio){const t=F(this.elements.container,this.config.classNames.hideControls),i=void 0===e?void 0:!e,s=R(this.elements.container,this.config.classNames.hideControls,i);if(s&&S.array(this.config.controls)&&this.config.controls.includes("settings")&&!S.empty(this.config.settings)&&Pe.toggleMenu.call(this,!1),s!==t){const e=s?"controlshidden":"controlsshown";Z.call(this,this.media,e)}return!s}return!1})),e(this,"on",((e,t)=>{X.call(this,this.elements.container,e,t)})),e(this,"once",((e,t)=>{G.call(this,this.elements.container,e,t)})),e(this,"off",((e,t)=>{J(this.elements.container,e,t)})),e(this,"destroy",((e,t=!1)=>{if(!this.ready)return;const i=()=>{document.body.style.overflow="",this.embed=null,t?(Object.keys(this.elements).length&&(O(this.elements.buttons.play),O(this.elements.captions),O(this.elements.controls),O(this.elements.wrapper),this.elements.buttons.play=null,this.elements.captions=null,this.elements.controls=null,this.elements.wrapper=null),S.function(e)&&e()):(ee.call(this),de.cancelRequests.call(this),q(this.elements.original,this.elements.container),Z.call(this,this.elements.original,"destroyed",!0),S.function(e)&&e.call(this.elements.original),this.ready=!1,setTimeout((()=>{this.elements=null,this.media=null}),200))};this.stop(),clearTimeout(this.timers.loading),clearTimeout(this.timers.controls),clearTimeout(this.timers.resized),this.isHTML5?(Fe.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&S.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))})),e(this,"supports",(e=>K.mime.call(this,e))),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=K.touch,this.media=t,S.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||S.nodeList(this.media)||S.array(this.media))&&(this.media=this.media[0]),this.config=x({},Le,st.defaults,i||{},(()=>{try{return JSON.parse(this.media.getAttribute("data-plyr-config"))}catch(e){return{}}})()),this.elements={container:null,fullscreen:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new De(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",K),S.nullOrUndefined(this.media)||!S.element(this.media))return void this.debug.error("Setup failed: no suitable element passed");if(this.media.plyr)return void this.debug.warn("Target already setup");if(!this.config.enabled)return void this.debug.error("Setup failed: disabled by config");if(!K.check().api)return void this.debug.error("Setup failed: no support");const s=this.media.cloneNode(!0);s.autoplay=!1,this.elements.original=s;const n=this.media.tagName.toLowerCase();let a=null,l=null;switch(n){case"div":if(a=this.media.querySelector("iframe"),S.element(a)){if(l=Me(a.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?_e.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?_e.vimeo:null}(l.toString()),this.elements.container=this.media,this.media=a,this.elements.container.className="",l.search.length){const e=["1","true"];e.includes(l.searchParams.get("autoplay"))&&(this.config.autoplay=!0),e.includes(l.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=e.includes(l.searchParams.get("playsinline")),this.config.youtube.hl=l.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(S.empty(this.provider)||!Object.values(_e).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=je;break;case"video":case"audio":this.type=n,this.provider=_e.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=K.check(this.type,this.provider),this.supported.api?(this.eventListeners=[],this.listeners=new Ve(this),this.storage=new we(this),this.media.plyr=this,S.element(this.elements.container)||(this.elements.container=$("div"),L(this.media,this.elements.container)),Fe.migrateStyles.call(this),Fe.addStyleHook.call(this),Xe.setup.call(this),this.config.debug&&X.call(this,this.elements.container,this.config.events.join(" "),(e=>{this.debug.log(`event: ${e.type}`)})),this.fullscreen=new He(this),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&Fe.build.call(this),this.listeners.container(),this.listeners.global(),this.config.ads.enabled&&(this.ads=new Je(this)),this.isHTML5&&this.config.autoplay&&this.once("canplay",(()=>ie(this.play()))),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))):this.debug.error("Setup failed: no support")}get isHTML5(){return this.provider===_e.html5}get isEmbed(){return this.isYouTube||this.isVimeo}get isYouTube(){return this.provider===_e.youtube}get isVimeo(){return this.provider===_e.vimeo}get isVideo(){return this.type===je}get isAudio(){return this.type===Oe}get playing(){return Boolean(this.ready&&!this.paused&&!this.ended)}get paused(){return Boolean(this.media.paused)}get stopped(){return Boolean(this.paused&&0===this.currentTime)}get ended(){return Boolean(this.media.ended)}set currentTime(e){if(!this.duration)return;const t=S.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log(`Seeking to ${this.currentTime} seconds`)}get currentTime(){return Number(this.media.currentTime)}get buffered(){const{buffered:e}=this.media;return S.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}get seeking(){return Boolean(this.media.seeking)}get duration(){const e=parseFloat(this.config.duration),t=(this.media||{}).duration,i=S.number(t)&&t!==1/0?t:0;return e||i}set volume(e){let t=e;S.string(t)&&(t=Number(t)),S.number(t)||(t=this.storage.get("volume")),S.number(t)||({volume:t}=this.config),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!S.empty(e)&&this.muted&&t>0&&(this.muted=!1)}get volume(){return Number(this.media.volume)}set muted(e){let t=e;S.boolean(t)||(t=this.storage.get("muted")),S.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t}get muted(){return Boolean(this.media.muted)}get hasAudio(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}set speed(e){let t=null;S.number(e)&&(t=e),S.number(t)||(t=this.storage.get("speed")),S.number(t)||(t=this.config.speed.selected);const{minimumSpeed:i,maximumSpeed:s}=this;t=Ge(t,i,s),this.config.speed.selected=t,setTimeout((()=>{this.media&&(this.media.playbackRate=t)}),0)}get speed(){return Number(this.media.playbackRate)}get minimumSpeed(){return this.isYouTube?Math.min(...this.options.speed):this.isVimeo?.5:.0625}get maximumSpeed(){return this.isYouTube?Math.max(...this.options.speed):this.isVimeo?2:16}set quality(e){const t=this.config.quality,i=this.options.quality;if(!i.length)return;let s=[!S.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(S.number),n=!0;if(!i.includes(s)){const e=ne(i,s);this.debug.warn(`Unsupported quality option: ${s}, using ${e} instead`),s=e,n=!1}t.selected=s,this.media.quality=s,n&&this.storage.set({quality:s})}get quality(){return this.media.quality}set loop(e){const t=S.boolean(e)?e:this.config.loop.active;this.config.loop.active=t,this.media.loop=t}get loop(){return Boolean(this.media.loop)}set source(e){it.change.call(this,e)}get source(){return this.media.currentSrc}get download(){const{download:e}=this.config.urls;return S.url(e)?e:this.source}set download(e){S.url(e)&&(this.config.urls.download=e,Pe.setDownloadUrl.call(this))}set poster(e){this.isVideo?Fe.setPoster.call(this,e,!1).catch((()=>{})):this.debug.warn("Poster can only be set for video")}get poster(){return this.isVideo?this.media.getAttribute("poster")||this.media.getAttribute("data-poster"):null}get ratio(){if(!this.isVideo)return null;const e=oe(ce.call(this));return S.array(e)?e.join(":"):e}set ratio(e){this.isVideo?S.string(e)&&re(e)?(this.config.ratio=oe(e),ue.call(this)):this.debug.error(`Invalid aspect ratio specified (${e})`):this.debug.warn("Aspect ratio can only be set for video")}set autoplay(e){this.config.autoplay=S.boolean(e)?e:this.config.autoplay}get autoplay(){return Boolean(this.config.autoplay)}toggleCaptions(e){xe.toggle.call(this,e,!1)}set currentTrack(e){xe.set.call(this,e,!1),xe.setup.call(this)}get currentTrack(){const{toggled:e,currentTrack:t}=this.captions;return e?t:-1}set language(e){xe.setLanguage.call(this,e,!1)}get language(){return(xe.getCurrentTrack.call(this)||{}).language}set pip(e){if(!K.pip)return;const t=S.boolean(e)?e:!this.pip;S.function(this.media.webkitSetPresentationMode)&&this.media.webkitSetPresentationMode(t?Ie:$e),S.function(this.media.requestPictureInPicture)&&(!this.pip&&t?this.media.requestPictureInPicture():this.pip&&!t&&document.exitPictureInPicture())}get pip(){return K.pip?S.empty(this.media.webkitPresentationMode)?this.media===document.pictureInPictureElement:this.media.webkitPresentationMode===Ie:null}setPreviewThumbnails(e){this.previewThumbnails&&this.previewThumbnails.loaded&&(this.previewThumbnails.destroy(),this.previewThumbnails=null),Object.assign(this.config.previewThumbnails,e),this.config.previewThumbnails.enabled&&(this.previewThumbnails=new tt(this))}static supported(e,t){return K.check(e,t)}static loadSprite(e,t){return ke(e,t)}static setup(e,t={}){let i=null;return S.string(e)?i=Array.from(document.querySelectorAll(e)):S.nodeList(e)?i=Array.from(e):S.array(e)&&(i=e.filter(S.element)),S.empty(i)?null:i.map((e=>new st(e,t)))}}var nt;return st.defaults=(nt=Le,JSON.parse(JSON.stringify(nt))),st})); 2603//# sourceMappingURL=plyr.min.js.map 2604 2605 2606/***/ }), 2607
vendor: 14,112 bytes, lines 2608-3003
2608/***/ "./node_modules/swiper/modules/a11y.mjs": 2609/*!**********************************************!*\ 2610 !*** ./node_modules/swiper/modules/a11y.mjs ***! 2611 \**********************************************/ 2612/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 2613 2614"use strict"; 2615__webpack_require__.r(__webpack_exports__); 2616/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2617/* harmony export */ "default": function() { return /* binding */ A11y; } 2618/* harmony export */ }); 2619/* 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"); 2620/* 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"); 2621/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 2622 2623 2624 2625 2626function A11y(_ref) { 2627 let { 2628 swiper, 2629 extendParams, 2630 on 2631 } = _ref; 2632 extendParams({ 2633 a11y: { 2634 enabled: true, 2635 notificationClass: 'swiper-notification', 2636 prevSlideMessage: 'Previous slide', 2637 nextSlideMessage: 'Next slide', 2638 firstSlideMessage: 'This is the first slide', 2639 lastSlideMessage: 'This is the last slide', 2640 paginationBulletMessage: 'Go to slide {{index}}', 2641 slideLabelMessage: '{{index}} / {{slidesLength}}', 2642 containerMessage: null, 2643 containerRoleDescriptionMessage: null, 2644 containerRole: null, 2645 itemRoleDescriptionMessage: null, 2646 slideRole: 'group', 2647 id: null, 2648 scrollOnFocus: true 2649 } 2650 }); 2651 swiper.a11y = { 2652 clicked: false 2653 }; 2654 let liveRegion = null; 2655 let preventFocusHandler; 2656 let focusTargetSlideEl; 2657 let visibilityChangedTimestamp = new Date().getTime(); 2658 function notify(message) { 2659 const notification = liveRegion; 2660 if (notification.length === 0) return; 2661 notification.innerHTML = ''; 2662 notification.innerHTML = message; 2663 } 2664 function getRandomNumber(size) { 2665 if (size === void 0) { 2666 size = 16; 2667 } 2668 const randomChar = () => Math.round(16 * Math.random()).toString(16); 2669 return 'x'.repeat(size).replace(/x/g, randomChar); 2670 } 2671 function makeElFocusable(el) { 2672 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2673 el.forEach(subEl => { 2674 subEl.setAttribute('tabIndex', '0'); 2675 }); 2676 } 2677 function makeElNotFocusable(el) { 2678 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2679 el.forEach(subEl => { 2680 subEl.setAttribute('tabIndex', '-1'); 2681 }); 2682 } 2683 function addElRole(el, role) { 2684 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2685 el.forEach(subEl => { 2686 subEl.setAttribute('role', role); 2687 }); 2688 } 2689 function addElRoleDescription(el, description) { 2690 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2691 el.forEach(subEl => { 2692 subEl.setAttribute('aria-roledescription', description); 2693 }); 2694 } 2695 function addElControls(el, controls) { 2696 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2697 el.forEach(subEl => { 2698 subEl.setAttribute('aria-controls', controls); 2699 }); 2700 } 2701 function addElLabel(el, label) { 2702 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2703 el.forEach(subEl => { 2704 subEl.setAttribute('aria-label', label); 2705 }); 2706 } 2707 function addElId(el, id) { 2708 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2709 el.forEach(subEl => { 2710 subEl.setAttribute('id', id); 2711 }); 2712 } 2713 function addElLive(el, live) { 2714 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2715 el.forEach(subEl => { 2716 subEl.setAttribute('aria-live', live); 2717 }); 2718 } 2719 function disableEl(el) { 2720 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2721 el.forEach(subEl => { 2722 subEl.setAttribute('aria-disabled', true); 2723 }); 2724 } 2725 function enableEl(el) { 2726 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 2727 el.forEach(subEl => { 2728 subEl.setAttribute('aria-disabled', false); 2729 }); 2730 } 2731 function onEnterOrSpaceKey(e) { 2732 if (e.keyCode !== 13 && e.keyCode !== 32) return; 2733 const params = swiper.params.a11y; 2734 const targetEl = e.target; 2735 if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { 2736 if (!e.target.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) return; 2737 } 2738 if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { 2739 const prevEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.prevEl); 2740 const nextEls = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.navigation.nextEl); 2741 if (nextEls.includes(targetEl)) { 2742 if (!(swiper.isEnd && !swiper.params.loop)) { 2743 swiper.slideNext(); 2744 } 2745 if (swiper.isEnd) { 2746 notify(params.lastSlideMessage); 2747 } else { 2748 notify(params.nextSlideMessage); 2749 } 2750 } 2751 if (prevEls.includes(targetEl)) { 2752 if (!(swiper.isBeginning && !swiper.params.loop)) { 2753 swiper.slidePrev(); 2754 } 2755 if (swiper.isBeginning) { 2756 notify(params.firstSlideMessage); 2757 } else { 2758 notify(params.prevSlideMessage); 2759 } 2760 } 2761 } 2762 if (swiper.pagination && targetEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletClass))) { 2763 targetEl.click(); 2764 } 2765 } 2766 function updateNavigation() { 2767 if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; 2768 const { 2769 nextEl, 2770 prevEl 2771 } = swiper.navigation; 2772 if (prevEl) { 2773 if (swiper.isBeginning) { 2774 disableEl(prevEl); 2775 makeElNotFocusable(prevEl); 2776 } else { 2777 enableEl(prevEl); 2778 makeElFocusable(prevEl); 2779 } 2780 } 2781 if (nextEl) { 2782 if (swiper.isEnd) { 2783 disableEl(nextEl); 2784 makeElNotFocusable(nextEl); 2785 } else { 2786 enableEl(nextEl); 2787 makeElFocusable(nextEl); 2788 } 2789 } 2790 } 2791 function hasPagination() { 2792 return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; 2793 } 2794 function hasClickablePagination() { 2795 return hasPagination() && swiper.params.pagination.clickable; 2796 } 2797 function updatePagination() { 2798 const params = swiper.params.a11y; 2799 if (!hasPagination()) return; 2800 swiper.pagination.bullets.forEach(bulletEl => { 2801 if (swiper.params.pagination.clickable) { 2802 makeElFocusable(bulletEl); 2803 if (!swiper.params.pagination.renderBullet) { 2804 addElRole(bulletEl, 'button'); 2805 addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) + 1)); 2806 } 2807 } 2808 if (bulletEl.matches((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper.params.pagination.bulletActiveClass))) { 2809 bulletEl.setAttribute('aria-current', 'true'); 2810 } else { 2811 bulletEl.removeAttribute('aria-current'); 2812 } 2813 }); 2814 } 2815 const initNavEl = (el, wrapperId, message) => { 2816 makeElFocusable(el); 2817 if (el.tagName !== 'BUTTON') { 2818 addElRole(el, 'button'); 2819 el.addEventListener('keydown', onEnterOrSpaceKey); 2820 } 2821 addElLabel(el, message); 2822 addElControls(el, wrapperId); 2823 }; 2824 const handlePointerDown = e => { 2825 if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { 2826 preventFocusHandler = true; 2827 } 2828 swiper.a11y.clicked = true; 2829 }; 2830 const handlePointerUp = () => { 2831 preventFocusHandler = false; 2832 requestAnimationFrame(() => { 2833 requestAnimationFrame(() => { 2834 if (!swiper.destroyed) { 2835 swiper.a11y.clicked = false; 2836 } 2837 }); 2838 }); 2839 }; 2840 const onVisibilityChange = e => { 2841 visibilityChangedTimestamp = new Date().getTime(); 2842 }; 2843 const handleFocus = e => { 2844 if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; 2845 if (new Date().getTime() - visibilityChangedTimestamp < 100) return; 2846 const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 2847 if (!slideEl || !swiper.slides.includes(slideEl)) return; 2848 focusTargetSlideEl = slideEl; 2849 const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; 2850 const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); 2851 if (isActive || isVisible) return; 2852 if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; 2853 if (swiper.isHorizontal()) { 2854 swiper.el.scrollLeft = 0; 2855 } else { 2856 swiper.el.scrollTop = 0; 2857 } 2858 requestAnimationFrame(() => { 2859 if (preventFocusHandler) return; 2860 if (swiper.params.loop) { 2861 swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); 2862 } else { 2863 swiper.slideTo(swiper.slides.indexOf(slideEl), 0); 2864 } 2865 preventFocusHandler = false; 2866 }); 2867 }; 2868 const initSlides = () => { 2869 const params = swiper.params.a11y; 2870 if (params.itemRoleDescriptionMessage) { 2871 addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); 2872 } 2873 if (params.slideRole) { 2874 addElRole(swiper.slides, params.slideRole); 2875 } 2876 const slidesLength = swiper.slides.length; 2877 if (params.slideLabelMessage) { 2878 swiper.slides.forEach((slideEl, index) => { 2879 const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; 2880 const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); 2881 addElLabel(slideEl, ariaLabelMessage); 2882 }); 2883 } 2884 }; 2885 const init = () => { 2886 const params = swiper.params.a11y; 2887 swiper.el.append(liveRegion); 2888 2889 // Container 2890 const containerEl = swiper.el; 2891 if (params.containerRoleDescriptionMessage) { 2892 addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); 2893 } 2894 if (params.containerMessage) { 2895 addElLabel(containerEl, params.containerMessage); 2896 } 2897 if (params.containerRole) { 2898 addElRole(containerEl, params.containerRole); 2899 } 2900 2901 // Wrapper 2902 const wrapperEl = swiper.wrapperEl; 2903 const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; 2904 const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; 2905 addElId(wrapperEl, wrapperId); 2906 addElLive(wrapperEl, live); 2907 2908 // Slide 2909 initSlides(); 2910 2911 // Navigation 2912 let { 2913 nextEl, 2914 prevEl 2915 } = swiper.navigation ? swiper.navigation : {}; 2916 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 2917 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 2918 if (nextEl) { 2919 nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); 2920 } 2921 if (prevEl) { 2922 prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); 2923 } 2924 2925 // Pagination 2926 if (hasClickablePagination()) { 2927 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 2928 paginationEl.forEach(el => { 2929 el.addEventListener('keydown', onEnterOrSpaceKey); 2930 }); 2931 } 2932 2933 // Tab focus 2934 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2935 document.addEventListener('visibilitychange', onVisibilityChange); 2936 swiper.el.addEventListener('focus', handleFocus, true); 2937 swiper.el.addEventListener('focus', handleFocus, true); 2938 swiper.el.addEventListener('pointerdown', handlePointerDown, true); 2939 swiper.el.addEventListener('pointerup', handlePointerUp, true); 2940 }; 2941 function destroy() { 2942 if (liveRegion) liveRegion.remove(); 2943 let { 2944 nextEl, 2945 prevEl 2946 } = swiper.navigation ? swiper.navigation : {}; 2947 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(nextEl); 2948 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(prevEl); 2949 if (nextEl) { 2950 nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 2951 } 2952 if (prevEl) { 2953 prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); 2954 } 2955 2956 // Pagination 2957 if (hasClickablePagination()) { 2958 const paginationEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 2959 paginationEl.forEach(el => { 2960 el.removeEventListener('keydown', onEnterOrSpaceKey); 2961 }); 2962 } 2963 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 2964 document.removeEventListener('visibilitychange', onVisibilityChange); 2965 // Tab focus 2966 if (swiper.el && typeof swiper.el !== 'string') { 2967 swiper.el.removeEventListener('focus', handleFocus, true); 2968 swiper.el.removeEventListener('pointerdown', handlePointerDown, true); 2969 swiper.el.removeEventListener('pointerup', handlePointerUp, true); 2970 } 2971 } 2972 on('beforeInit', () => { 2973 liveRegion = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.c)('span', swiper.params.a11y.notificationClass); 2974 liveRegion.setAttribute('aria-live', 'assertive'); 2975 liveRegion.setAttribute('aria-atomic', 'true'); 2976 }); 2977 on('afterInit', () => { 2978 if (!swiper.params.a11y.enabled) return; 2979 init(); 2980 }); 2981 on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { 2982 if (!swiper.params.a11y.enabled) return; 2983 initSlides(); 2984 }); 2985 on('fromEdge toEdge afterInit lock unlock', () => { 2986 if (!swiper.params.a11y.enabled) return; 2987 updateNavigation(); 2988 }); 2989 on('paginationUpdate', () => { 2990 if (!swiper.params.a11y.enabled) return; 2991 updatePagination(); 2992 }); 2993 on('destroy', () => { 2994 if (!swiper.params.a11y.enabled) return; 2995 destroy(); 2996 }); 2997} 2998 2999 3000 3001 3002/***/ }), 3003
vendor: 10,069 bytes, lines 3004-3323
3004/***/ "./node_modules/swiper/modules/autoplay.mjs": 3005/*!**************************************************!*\ 3006 !*** ./node_modules/swiper/modules/autoplay.mjs ***! 3007 \**************************************************/ 3008/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3009 3010"use strict"; 3011__webpack_require__.r(__webpack_exports__); 3012/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3013/* harmony export */ "default": function() { return /* binding */ Autoplay; } 3014/* harmony export */ }); 3015/* 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"); 3016 3017 3018/* eslint no-underscore-dangle: "off" */ 3019/* eslint no-use-before-define: "off" */ 3020function Autoplay(_ref) { 3021 let { 3022 swiper, 3023 extendParams, 3024 on, 3025 emit, 3026 params 3027 } = _ref; 3028 swiper.autoplay = { 3029 running: false, 3030 paused: false, 3031 timeLeft: 0 3032 }; 3033 extendParams({ 3034 autoplay: { 3035 enabled: false, 3036 delay: 3000, 3037 waitForTransition: true, 3038 disableOnInteraction: false, 3039 stopOnLastSlide: false, 3040 reverseDirection: false, 3041 pauseOnMouseEnter: false 3042 } 3043 }); 3044 let timeout; 3045 let raf; 3046 let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; 3047 let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; 3048 let autoplayTimeLeft; 3049 let autoplayStartTime = new Date().getTime(); 3050 let wasPaused; 3051 let isTouched; 3052 let pausedByTouch; 3053 let touchStartTimeout; 3054 let slideChanged; 3055 let pausedByInteraction; 3056 let pausedByPointerEnter; 3057 function onTransitionEnd(e) { 3058 if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; 3059 if (e.target !== swiper.wrapperEl) return; 3060 swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); 3061 if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { 3062 return; 3063 } 3064 resume(); 3065 } 3066 const calcTimeLeft = () => { 3067 if (swiper.destroyed || !swiper.autoplay.running) return; 3068 if (swiper.autoplay.paused) { 3069 wasPaused = true; 3070 } else if (wasPaused) { 3071 autoplayDelayCurrent = autoplayTimeLeft; 3072 wasPaused = false; 3073 } 3074 const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); 3075 swiper.autoplay.timeLeft = timeLeft; 3076 emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); 3077 raf = requestAnimationFrame(() => { 3078 calcTimeLeft(); 3079 }); 3080 }; 3081 const getSlideDelay = () => { 3082 let activeSlideEl; 3083 if (swiper.virtual && swiper.params.virtual.enabled) { 3084 activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; 3085 } else { 3086 activeSlideEl = swiper.slides[swiper.activeIndex]; 3087 } 3088 if (!activeSlideEl) return undefined; 3089 const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); 3090 return currentSlideDelay; 3091 }; 3092 const run = delayForce => { 3093 if (swiper.destroyed || !swiper.autoplay.running) return; 3094 cancelAnimationFrame(raf); 3095 calcTimeLeft(); 3096 let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; 3097 autoplayDelayTotal = swiper.params.autoplay.delay; 3098 autoplayDelayCurrent = swiper.params.autoplay.delay; 3099 const currentSlideDelay = getSlideDelay(); 3100 if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { 3101 delay = currentSlideDelay; 3102 autoplayDelayTotal = currentSlideDelay; 3103 autoplayDelayCurrent = currentSlideDelay; 3104 } 3105 autoplayTimeLeft = delay; 3106 const speed = swiper.params.speed; 3107 const proceed = () => { 3108 if (!swiper || swiper.destroyed) return; 3109 if (swiper.params.autoplay.reverseDirection) { 3110 if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { 3111 swiper.slidePrev(speed, true, true); 3112 emit('autoplay'); 3113 } else if (!swiper.params.autoplay.stopOnLastSlide) { 3114 swiper.slideTo(swiper.slides.length - 1, speed, true, true); 3115 emit('autoplay'); 3116 } 3117 } else { 3118 if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { 3119 swiper.slideNext(speed, true, true); 3120 emit('autoplay'); 3121 } else if (!swiper.params.autoplay.stopOnLastSlide) { 3122 swiper.slideTo(0, speed, true, true); 3123 emit('autoplay'); 3124 } 3125 } 3126 if (swiper.params.cssMode) { 3127 autoplayStartTime = new Date().getTime(); 3128 requestAnimationFrame(() => { 3129 run(); 3130 }); 3131 } 3132 }; 3133 if (delay > 0) { 3134 clearTimeout(timeout); 3135 timeout = setTimeout(() => { 3136 proceed(); 3137 }, delay); 3138 } else { 3139 requestAnimationFrame(() => { 3140 proceed(); 3141 }); 3142 } 3143 3144 // eslint-disable-next-line 3145 return delay; 3146 }; 3147 const start = () => { 3148 autoplayStartTime = new Date().getTime(); 3149 swiper.autoplay.running = true; 3150 run(); 3151 emit('autoplayStart'); 3152 }; 3153 const stop = () => { 3154 swiper.autoplay.running = false; 3155 clearTimeout(timeout); 3156 cancelAnimationFrame(raf); 3157 emit('autoplayStop'); 3158 }; 3159 const pause = (internal, reset) => { 3160 if (swiper.destroyed || !swiper.autoplay.running) return; 3161 clearTimeout(timeout); 3162 if (!internal) { 3163 pausedByInteraction = true; 3164 } 3165 const proceed = () => { 3166 emit('autoplayPause'); 3167 if (swiper.params.autoplay.waitForTransition) { 3168 swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); 3169 } else { 3170 resume(); 3171 } 3172 }; 3173 swiper.autoplay.paused = true; 3174 if (reset) { 3175 if (slideChanged) { 3176 autoplayTimeLeft = swiper.params.autoplay.delay; 3177 } 3178 slideChanged = false; 3179 proceed(); 3180 return; 3181 } 3182 const delay = autoplayTimeLeft || swiper.params.autoplay.delay; 3183 autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); 3184 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; 3185 if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; 3186 proceed(); 3187 }; 3188 const resume = () => { 3189 if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; 3190 autoplayStartTime = new Date().getTime(); 3191 if (pausedByInteraction) { 3192 pausedByInteraction = false; 3193 run(autoplayTimeLeft); 3194 } else { 3195 run(); 3196 } 3197 swiper.autoplay.paused = false; 3198 emit('autoplayResume'); 3199 }; 3200 const onVisibilityChange = () => { 3201 if (swiper.destroyed || !swiper.autoplay.running) return; 3202 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 3203 if (document.visibilityState === 'hidden') { 3204 pausedByInteraction = true; 3205 pause(true); 3206 } 3207 if (document.visibilityState === 'visible') { 3208 resume(); 3209 } 3210 }; 3211 const onPointerEnter = e => { 3212 if (e.pointerType !== 'mouse') return; 3213 pausedByInteraction = true; 3214 pausedByPointerEnter = true; 3215 if (swiper.animating || swiper.autoplay.paused) return; 3216 pause(true); 3217 }; 3218 const onPointerLeave = e => { 3219 if (e.pointerType !== 'mouse') return; 3220 pausedByPointerEnter = false; 3221 if (swiper.autoplay.paused) { 3222 resume(); 3223 } 3224 }; 3225 const attachMouseEvents = () => { 3226 if (swiper.params.autoplay.pauseOnMouseEnter) { 3227 swiper.el.addEventListener('pointerenter', onPointerEnter); 3228 swiper.el.addEventListener('pointerleave', onPointerLeave); 3229 } 3230 }; 3231 const detachMouseEvents = () => { 3232 if (swiper.el && typeof swiper.el !== 'string') { 3233 swiper.el.removeEventListener('pointerenter', onPointerEnter); 3234 swiper.el.removeEventListener('pointerleave', onPointerLeave); 3235 } 3236 }; 3237 const attachDocumentEvents = () => { 3238 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 3239 document.addEventListener('visibilitychange', onVisibilityChange); 3240 }; 3241 const detachDocumentEvents = () => { 3242 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 3243 document.removeEventListener('visibilitychange', onVisibilityChange); 3244 }; 3245 on('init', () => { 3246 if (swiper.params.autoplay.enabled) { 3247 attachMouseEvents(); 3248 attachDocumentEvents(); 3249 start(); 3250 } 3251 }); 3252 on('destroy', () => { 3253 detachMouseEvents(); 3254 detachDocumentEvents(); 3255 if (swiper.autoplay.running) { 3256 stop(); 3257 } 3258 }); 3259 on('_freeModeStaticRelease', () => { 3260 if (pausedByTouch || pausedByInteraction) { 3261 resume(); 3262 } 3263 }); 3264 on('_freeModeNoMomentumRelease', () => { 3265 if (!swiper.params.autoplay.disableOnInteraction) { 3266 pause(true, true); 3267 } else { 3268 stop(); 3269 } 3270 }); 3271 on('beforeTransitionStart', (_s, speed, internal) => { 3272 if (swiper.destroyed || !swiper.autoplay.running) return; 3273 if (internal || !swiper.params.autoplay.disableOnInteraction) { 3274 pause(true, true); 3275 } else { 3276 stop(); 3277 } 3278 }); 3279 on('sliderFirstMove', () => { 3280 if (swiper.destroyed || !swiper.autoplay.running) return; 3281 if (swiper.params.autoplay.disableOnInteraction) { 3282 stop(); 3283 return; 3284 } 3285 isTouched = true; 3286 pausedByTouch = false; 3287 pausedByInteraction = false; 3288 touchStartTimeout = setTimeout(() => { 3289 pausedByInteraction = true; 3290 pausedByTouch = true; 3291 pause(true); 3292 }, 200); 3293 }); 3294 on('touchEnd', () => { 3295 if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; 3296 clearTimeout(touchStartTimeout); 3297 clearTimeout(timeout); 3298 if (swiper.params.autoplay.disableOnInteraction) { 3299 pausedByTouch = false; 3300 isTouched = false; 3301 return; 3302 } 3303 if (pausedByTouch && swiper.params.cssMode) resume(); 3304 pausedByTouch = false; 3305 isTouched = false; 3306 }); 3307 on('slideChange', () => { 3308 if (swiper.destroyed || !swiper.autoplay.running) return; 3309 slideChanged = true; 3310 }); 3311 Object.assign(swiper.autoplay, { 3312 start, 3313 stop, 3314 pause, 3315 resume 3316 }); 3317} 3318 3319 3320 3321 3322/***/ }), 3323
vendor: 7,533 bytes, lines 3324-3530
3324/***/ "./node_modules/swiper/modules/controller.mjs": 3325/*!****************************************************!*\ 3326 !*** ./node_modules/swiper/modules/controller.mjs ***! 3327 \****************************************************/ 3328/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3329 3330"use strict"; 3331__webpack_require__.r(__webpack_exports__); 3332/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3333/* harmony export */ "default": function() { return /* binding */ Controller; } 3334/* harmony export */ }); 3335/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3336 3337 3338/* eslint no-bitwise: ["error", { "allow": [">>"] }] */ 3339function Controller(_ref) { 3340 let { 3341 swiper, 3342 extendParams, 3343 on 3344 } = _ref; 3345 extendParams({ 3346 controller: { 3347 control: undefined, 3348 inverse: false, 3349 by: 'slide' // or 'container' 3350 } 3351 }); 3352 3353 swiper.controller = { 3354 control: undefined 3355 }; 3356 function LinearSpline(x, y) { 3357 const binarySearch = function search() { 3358 let maxIndex; 3359 let minIndex; 3360 let guess; 3361 return (array, val) => { 3362 minIndex = -1; 3363 maxIndex = array.length; 3364 while (maxIndex - minIndex > 1) { 3365 guess = maxIndex + minIndex >> 1; 3366 if (array[guess] <= val) { 3367 minIndex = guess; 3368 } else { 3369 maxIndex = guess; 3370 } 3371 } 3372 return maxIndex; 3373 }; 3374 }(); 3375 this.x = x; 3376 this.y = y; 3377 this.lastIndex = x.length - 1; 3378 // Given an x value (x2), return the expected y2 value: 3379 // (x1,y1) is the known point before given value, 3380 // (x3,y3) is the known point after given value. 3381 let i1; 3382 let i3; 3383 this.interpolate = function interpolate(x2) { 3384 if (!x2) return 0; 3385 3386 // Get the indexes of x1 and x3 (the array indexes before and after given x2): 3387 i3 = binarySearch(this.x, x2); 3388 i1 = i3 - 1; 3389 3390 // We have our indexes i1 & i3, so we can calculate already: 3391 // y2 := ((x2âx1) à (y3ây1)) ÷ (x3âx1) + y1 3392 return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; 3393 }; 3394 return this; 3395 } 3396 function getInterpolateFunction(c) { 3397 swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); 3398 } 3399 function setTranslate(_t, byController) { 3400 const controlled = swiper.controller.control; 3401 let multiplier; 3402 let controlledTranslate; 3403 const Swiper = swiper.constructor; 3404 function setControlledTranslate(c) { 3405 if (c.destroyed) return; 3406 3407 // this will create an Interpolate function based on the snapGrids 3408 // x is the Grid of the scrolled scroller and y will be the controlled scroller 3409 // it makes sense to create this only once and recall it for the interpolation 3410 // the function does a lot of value caching for performance 3411 const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; 3412 if (swiper.params.controller.by === 'slide') { 3413 getInterpolateFunction(c); 3414 // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid 3415 // but it did not work out 3416 controlledTranslate = -swiper.controller.spline.interpolate(-translate); 3417 } 3418 if (!controlledTranslate || swiper.params.controller.by === 'container') { 3419 multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); 3420 if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { 3421 multiplier = 1; 3422 } 3423 controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); 3424 } 3425 if (swiper.params.controller.inverse) { 3426 controlledTranslate = c.maxTranslate() - controlledTranslate; 3427 } 3428 c.updateProgress(controlledTranslate); 3429 c.setTranslate(controlledTranslate, swiper); 3430 c.updateActiveIndex(); 3431 c.updateSlidesClasses(); 3432 } 3433 if (Array.isArray(controlled)) { 3434 for (let i = 0; i < controlled.length; i += 1) { 3435 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 3436 setControlledTranslate(controlled[i]); 3437 } 3438 } 3439 } else if (controlled instanceof Swiper && byController !== controlled) { 3440 setControlledTranslate(controlled); 3441 } 3442 } 3443 function setTransition(duration, byController) { 3444 const Swiper = swiper.constructor; 3445 const controlled = swiper.controller.control; 3446 let i; 3447 function setControlledTransition(c) { 3448 if (c.destroyed) return; 3449 c.setTransition(duration, swiper); 3450 if (duration !== 0) { 3451 c.transitionStart(); 3452 if (c.params.autoHeight) { 3453 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.n)(() => { 3454 c.updateAutoHeight(); 3455 }); 3456 } 3457 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(c.wrapperEl, () => { 3458 if (!controlled) return; 3459 c.transitionEnd(); 3460 }); 3461 } 3462 } 3463 if (Array.isArray(controlled)) { 3464 for (i = 0; i < controlled.length; i += 1) { 3465 if (controlled[i] !== byController && controlled[i] instanceof Swiper) { 3466 setControlledTransition(controlled[i]); 3467 } 3468 } 3469 } else if (controlled instanceof Swiper && byController !== controlled) { 3470 setControlledTransition(controlled); 3471 } 3472 } 3473 function removeSpline() { 3474 if (!swiper.controller.control) return; 3475 if (swiper.controller.spline) { 3476 swiper.controller.spline = undefined; 3477 delete swiper.controller.spline; 3478 } 3479 } 3480 on('beforeInit', () => { 3481 if (typeof window !== 'undefined' && ( 3482 // eslint-disable-line 3483 typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { 3484 const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; 3485 controlElements.forEach(controlElement => { 3486 if (!swiper.controller.control) swiper.controller.control = []; 3487 if (controlElement && controlElement.swiper) { 3488 swiper.controller.control.push(controlElement.swiper); 3489 } else if (controlElement) { 3490 const eventName = `${swiper.params.eventsPrefix}init`; 3491 const onControllerSwiper = e => { 3492 swiper.controller.control.push(e.detail[0]); 3493 swiper.update(); 3494 controlElement.removeEventListener(eventName, onControllerSwiper); 3495 }; 3496 controlElement.addEventListener(eventName, onControllerSwiper); 3497 } 3498 }); 3499 return; 3500 } 3501 swiper.controller.control = swiper.params.controller.control; 3502 }); 3503 on('update', () => { 3504 removeSpline(); 3505 }); 3506 on('resize', () => { 3507 removeSpline(); 3508 }); 3509 on('observerUpdate', () => { 3510 removeSpline(); 3511 }); 3512 on('setTranslate', (_s, translate, byController) => { 3513 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 3514 swiper.controller.setTranslate(translate, byController); 3515 }); 3516 on('setTransition', (_s, duration, byController) => { 3517 if (!swiper.controller.control || swiper.controller.control.destroyed) return; 3518 swiper.controller.setTransition(duration, byController); 3519 }); 3520 Object.assign(swiper.controller, { 3521 setTranslate, 3522 setTransition 3523 }); 3524} 3525 3526 3527 3528 3529/***/ }), 3530
vendor: 5,930 bytes, lines 3531-3675
3531/***/ "./node_modules/swiper/modules/effect-cards.mjs": 3532/*!******************************************************!*\ 3533 !*** ./node_modules/swiper/modules/effect-cards.mjs ***! 3534 \******************************************************/ 3535/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3536 3537"use strict"; 3538__webpack_require__.r(__webpack_exports__); 3539/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3540/* harmony export */ "default": function() { return /* binding */ EffectCards; } 3541/* harmony export */ }); 3542/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 3543/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 3544/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 3545/* 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"); 3546/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3547 3548 3549 3550 3551 3552 3553function EffectCards(_ref) { 3554 let { 3555 swiper, 3556 extendParams, 3557 on 3558 } = _ref; 3559 extendParams({ 3560 cardsEffect: { 3561 slideShadows: true, 3562 rotate: true, 3563 perSlideRotate: 2, 3564 perSlideOffset: 8 3565 } 3566 }); 3567 const setTranslate = () => { 3568 const { 3569 slides, 3570 activeIndex, 3571 rtlTranslate: rtl 3572 } = swiper; 3573 const params = swiper.params.cardsEffect; 3574 const { 3575 startTranslate, 3576 isTouched 3577 } = swiper.touchEventsData; 3578 const currentTranslate = rtl ? -swiper.translate : swiper.translate; 3579 for (let i = 0; i < slides.length; i += 1) { 3580 const slideEl = slides[i]; 3581 const slideProgress = slideEl.progress; 3582 const progress = Math.min(Math.max(slideProgress, -4), 4); 3583 let offset = slideEl.swiperSlideOffset; 3584 if (swiper.params.centeredSlides && !swiper.params.cssMode) { 3585 swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; 3586 } 3587 if (swiper.params.centeredSlides && swiper.params.cssMode) { 3588 offset -= slides[0].swiperSlideOffset; 3589 } 3590 let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; 3591 let tY = 0; 3592 const tZ = -100 * Math.abs(progress); 3593 let scale = 1; 3594 let rotate = -params.perSlideRotate * progress; 3595 let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; 3596 const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; 3597 const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; 3598 const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; 3599 if (isSwipeToNext || isSwipeToPrev) { 3600 const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; 3601 rotate += -28 * progress * subProgress; 3602 scale += -0.5 * subProgress; 3603 tXAdd += 96 * subProgress; 3604 tY = `${-25 * subProgress * Math.abs(progress)}%`; 3605 } 3606 if (progress < 0) { 3607 // next 3608 tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; 3609 } else if (progress > 0) { 3610 // prev 3611 tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; 3612 } else { 3613 tX = `${tX}px`; 3614 } 3615 if (!swiper.isHorizontal()) { 3616 const prevY = tY; 3617 tY = tX; 3618 tX = prevY; 3619 } 3620 const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; 3621 3622 /* eslint-disable */ 3623 const transform = ` 3624 translate3d(${tX}, ${tY}, ${tZ}px) 3625 rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) 3626 scale(${scaleString}) 3627 `; 3628 /* eslint-enable */ 3629 3630 if (params.slideShadows) { 3631 // Set shadows 3632 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 3633 if (!shadowEl) { 3634 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('cards', slideEl); 3635 } 3636 if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); 3637 } 3638 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 3639 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 3640 targetEl.style.transform = transform; 3641 } 3642 }; 3643 const setTransition = duration => { 3644 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 3645 transformElements.forEach(el => { 3646 el.style.transitionDuration = `${duration}ms`; 3647 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 3648 shadowEl.style.transitionDuration = `${duration}ms`; 3649 }); 3650 }); 3651 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 3652 swiper, 3653 duration, 3654 transformElements 3655 }); 3656 }; 3657 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 3658 effect: 'cards', 3659 swiper, 3660 on, 3661 setTranslate, 3662 setTransition, 3663 perspective: () => true, 3664 overwriteParams: () => ({ 3665 watchSlidesProgress: true, 3666 virtualTranslate: !swiper.params.cssMode 3667 }) 3668 }); 3669} 3670 3671 3672 3673 3674/***/ }), 3675
vendor: 5,714 bytes, lines 3676-3798
3676/***/ "./node_modules/swiper/modules/effect-coverflow.mjs": 3677/*!**********************************************************!*\ 3678 !*** ./node_modules/swiper/modules/effect-coverflow.mjs ***! 3679 \**********************************************************/ 3680/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3681 3682"use strict"; 3683__webpack_require__.r(__webpack_exports__); 3684/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3685/* harmony export */ "default": function() { return /* binding */ EffectCoverflow; } 3686/* harmony export */ }); 3687/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 3688/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 3689/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 3690/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3691 3692 3693 3694 3695 3696function EffectCoverflow(_ref) { 3697 let { 3698 swiper, 3699 extendParams, 3700 on 3701 } = _ref; 3702 extendParams({ 3703 coverflowEffect: { 3704 rotate: 50, 3705 stretch: 0, 3706 depth: 100, 3707 scale: 1, 3708 modifier: 1, 3709 slideShadows: true 3710 } 3711 }); 3712 const setTranslate = () => { 3713 const { 3714 width: swiperWidth, 3715 height: swiperHeight, 3716 slides, 3717 slidesSizesGrid 3718 } = swiper; 3719 const params = swiper.params.coverflowEffect; 3720 const isHorizontal = swiper.isHorizontal(); 3721 const transform = swiper.translate; 3722 const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; 3723 const rotate = isHorizontal ? params.rotate : -params.rotate; 3724 const translate = params.depth; 3725 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.o)(swiper); 3726 // Each slide offset from center 3727 for (let i = 0, length = slides.length; i < length; i += 1) { 3728 const slideEl = slides[i]; 3729 const slideSize = slidesSizesGrid[i]; 3730 const slideOffset = slideEl.swiperSlideOffset; 3731 const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; 3732 const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; 3733 let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; 3734 let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; 3735 // var rotateZ = 0 3736 let translateZ = -translate * Math.abs(offsetMultiplier); 3737 let stretch = params.stretch; 3738 // Allow percentage to make a relative stretch for responsive sliders 3739 if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { 3740 stretch = parseFloat(params.stretch) / 100 * slideSize; 3741 } 3742 let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; 3743 let translateX = isHorizontal ? stretch * offsetMultiplier : 0; 3744 let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); 3745 3746 // Fix for ultra small values 3747 if (Math.abs(translateX) < 0.001) translateX = 0; 3748 if (Math.abs(translateY) < 0.001) translateY = 0; 3749 if (Math.abs(translateZ) < 0.001) translateZ = 0; 3750 if (Math.abs(rotateY) < 0.001) rotateY = 0; 3751 if (Math.abs(rotateX) < 0.001) rotateX = 0; 3752 if (Math.abs(scale) < 0.001) scale = 0; 3753 const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; 3754 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 3755 targetEl.style.transform = slideTransform; 3756 slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; 3757 if (params.slideShadows) { 3758 // Set shadows 3759 let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 3760 let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 3761 if (!shadowBeforeEl) { 3762 shadowBeforeEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'left' : 'top'); 3763 } 3764 if (!shadowAfterEl) { 3765 shadowAfterEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); 3766 } 3767 if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; 3768 if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; 3769 } 3770 } 3771 }; 3772 const setTransition = duration => { 3773 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 3774 transformElements.forEach(el => { 3775 el.style.transitionDuration = `${duration}ms`; 3776 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 3777 shadowEl.style.transitionDuration = `${duration}ms`; 3778 }); 3779 }); 3780 }; 3781 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 3782 effect: 'coverflow', 3783 swiper, 3784 on, 3785 setTranslate, 3786 setTransition, 3787 perspective: () => true, 3788 overwriteParams: () => ({ 3789 watchSlidesProgress: true 3790 }) 3791 }); 3792} 3793 3794 3795 3796 3797/***/ }), 3798
vendor: 6,483 bytes, lines 3799-3964
3799/***/ "./node_modules/swiper/modules/effect-creative.mjs": 3800/*!*********************************************************!*\ 3801 !*** ./node_modules/swiper/modules/effect-creative.mjs ***! 3802 \*********************************************************/ 3803/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3804 3805"use strict"; 3806__webpack_require__.r(__webpack_exports__); 3807/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3808/* harmony export */ "default": function() { return /* binding */ EffectCreative; } 3809/* harmony export */ }); 3810/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 3811/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 3812/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 3813/* 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"); 3814/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3815 3816 3817 3818 3819 3820 3821function EffectCreative(_ref) { 3822 let { 3823 swiper, 3824 extendParams, 3825 on 3826 } = _ref; 3827 extendParams({ 3828 creativeEffect: { 3829 limitProgress: 1, 3830 shadowPerProgress: false, 3831 progressMultiplier: 1, 3832 perspective: true, 3833 prev: { 3834 translate: [0, 0, 0], 3835 rotate: [0, 0, 0], 3836 opacity: 1, 3837 scale: 1 3838 }, 3839 next: { 3840 translate: [0, 0, 0], 3841 rotate: [0, 0, 0], 3842 opacity: 1, 3843 scale: 1 3844 } 3845 } 3846 }); 3847 const getTranslateValue = value => { 3848 if (typeof value === 'string') return value; 3849 return `${value}px`; 3850 }; 3851 const setTranslate = () => { 3852 const { 3853 slides, 3854 wrapperEl, 3855 slidesSizesGrid 3856 } = swiper; 3857 const params = swiper.params.creativeEffect; 3858 const { 3859 progressMultiplier: multiplier 3860 } = params; 3861 const isCenteredSlides = swiper.params.centeredSlides; 3862 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 3863 if (isCenteredSlides) { 3864 const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; 3865 wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; 3866 } 3867 for (let i = 0; i < slides.length; i += 1) { 3868 const slideEl = slides[i]; 3869 const slideProgress = slideEl.progress; 3870 const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); 3871 let originalProgress = progress; 3872 if (!isCenteredSlides) { 3873 originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); 3874 } 3875 const offset = slideEl.swiperSlideOffset; 3876 const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; 3877 const r = [0, 0, 0]; 3878 let custom = false; 3879 if (!swiper.isHorizontal()) { 3880 t[1] = t[0]; 3881 t[0] = 0; 3882 } 3883 let data = { 3884 translate: [0, 0, 0], 3885 rotate: [0, 0, 0], 3886 scale: 1, 3887 opacity: 1 3888 }; 3889 if (progress < 0) { 3890 data = params.next; 3891 custom = true; 3892 } else if (progress > 0) { 3893 data = params.prev; 3894 custom = true; 3895 } 3896 // set translate 3897 t.forEach((value, index) => { 3898 t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; 3899 }); 3900 // set rotates 3901 r.forEach((value, index) => { 3902 let val = data.rotate[index] * Math.abs(progress * multiplier); 3903 r[index] = val; 3904 }); 3905 slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; 3906 const translateString = t.join(', '); 3907 const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; 3908 const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; 3909 const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; 3910 const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; 3911 3912 // Set shadows 3913 if (custom && data.shadow || !custom) { 3914 let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); 3915 if (!shadowEl && data.shadow) { 3916 shadowEl = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('creative', slideEl); 3917 } 3918 if (shadowEl) { 3919 const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; 3920 shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); 3921 } 3922 } 3923 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 3924 targetEl.style.transform = transform; 3925 targetEl.style.opacity = opacityString; 3926 if (data.origin) { 3927 targetEl.style.transformOrigin = data.origin; 3928 } 3929 } 3930 }; 3931 const setTransition = duration => { 3932 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 3933 transformElements.forEach(el => { 3934 el.style.transitionDuration = `${duration}ms`; 3935 el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { 3936 shadowEl.style.transitionDuration = `${duration}ms`; 3937 }); 3938 }); 3939 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 3940 swiper, 3941 duration, 3942 transformElements, 3943 allSlides: true 3944 }); 3945 }; 3946 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 3947 effect: 'creative', 3948 swiper, 3949 on, 3950 setTranslate, 3951 setTransition, 3952 perspective: () => swiper.params.creativeEffect.perspective, 3953 overwriteParams: () => ({ 3954 watchSlidesProgress: true, 3955 virtualTranslate: !swiper.params.cssMode 3956 }) 3957 }); 3958} 3959 3960 3961 3962 3963/***/ }), 3964
vendor: 7,636 bytes, lines 3965-4155
3965/***/ "./node_modules/swiper/modules/effect-cube.mjs": 3966/*!*****************************************************!*\ 3967 !*** ./node_modules/swiper/modules/effect-cube.mjs ***! 3968 \*****************************************************/ 3969/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 3970 3971"use strict"; 3972__webpack_require__.r(__webpack_exports__); 3973/* harmony export */ __webpack_require__.d(__webpack_exports__, { 3974/* harmony export */ "default": function() { return /* binding */ EffectCube; } 3975/* harmony export */ }); 3976/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 3977/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 3978 3979 3980 3981function EffectCube(_ref) { 3982 let { 3983 swiper, 3984 extendParams, 3985 on 3986 } = _ref; 3987 extendParams({ 3988 cubeEffect: { 3989 slideShadows: true, 3990 shadow: true, 3991 shadowOffset: 20, 3992 shadowScale: 0.94 3993 } 3994 }); 3995 const createSlideShadows = (slideEl, progress, isHorizontal) => { 3996 let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 3997 let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 3998 if (!shadowBefore) { 3999 shadowBefore = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); 4000 slideEl.append(shadowBefore); 4001 } 4002 if (!shadowAfter) { 4003 shadowAfter = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); 4004 slideEl.append(shadowAfter); 4005 } 4006 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 4007 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 4008 }; 4009 const recreateShadows = () => { 4010 // create new ones 4011 const isHorizontal = swiper.isHorizontal(); 4012 swiper.slides.forEach(slideEl => { 4013 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 4014 createSlideShadows(slideEl, progress, isHorizontal); 4015 }); 4016 }; 4017 const setTranslate = () => { 4018 const { 4019 el, 4020 wrapperEl, 4021 slides, 4022 width: swiperWidth, 4023 height: swiperHeight, 4024 rtlTranslate: rtl, 4025 size: swiperSize, 4026 browser 4027 } = swiper; 4028 const r = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.o)(swiper); 4029 const params = swiper.params.cubeEffect; 4030 const isHorizontal = swiper.isHorizontal(); 4031 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 4032 let wrapperRotate = 0; 4033 let cubeShadowEl; 4034 if (params.shadow) { 4035 if (isHorizontal) { 4036 cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); 4037 if (!cubeShadowEl) { 4038 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 4039 swiper.wrapperEl.append(cubeShadowEl); 4040 } 4041 cubeShadowEl.style.height = `${swiperWidth}px`; 4042 } else { 4043 cubeShadowEl = el.querySelector('.swiper-cube-shadow'); 4044 if (!cubeShadowEl) { 4045 cubeShadowEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', 'swiper-cube-shadow'); 4046 el.append(cubeShadowEl); 4047 } 4048 } 4049 } 4050 for (let i = 0; i < slides.length; i += 1) { 4051 const slideEl = slides[i]; 4052 let slideIndex = i; 4053 if (isVirtual) { 4054 slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); 4055 } 4056 let slideAngle = slideIndex * 90; 4057 let round = Math.floor(slideAngle / 360); 4058 if (rtl) { 4059 slideAngle = -slideAngle; 4060 round = Math.floor(-slideAngle / 360); 4061 } 4062 const progress = Math.max(Math.min(slideEl.progress, 1), -1); 4063 let tx = 0; 4064 let ty = 0; 4065 let tz = 0; 4066 if (slideIndex % 4 === 0) { 4067 tx = -round * 4 * swiperSize; 4068 tz = 0; 4069 } else if ((slideIndex - 1) % 4 === 0) { 4070 tx = 0; 4071 tz = -round * 4 * swiperSize; 4072 } else if ((slideIndex - 2) % 4 === 0) { 4073 tx = swiperSize + round * 4 * swiperSize; 4074 tz = swiperSize; 4075 } else if ((slideIndex - 3) % 4 === 0) { 4076 tx = -swiperSize; 4077 tz = 3 * swiperSize + swiperSize * 4 * round; 4078 } 4079 if (rtl) { 4080 tx = -tx; 4081 } 4082 if (!isHorizontal) { 4083 ty = tx; 4084 tx = 0; 4085 } 4086 const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; 4087 if (progress <= 1 && progress > -1) { 4088 wrapperRotate = slideIndex * 90 + progress * 90; 4089 if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; 4090 } 4091 slideEl.style.transform = transform; 4092 if (params.slideShadows) { 4093 createSlideShadows(slideEl, progress, isHorizontal); 4094 } 4095 } 4096 wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; 4097 wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; 4098 if (params.shadow) { 4099 if (isHorizontal) { 4100 cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; 4101 } else { 4102 const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; 4103 const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); 4104 const scale1 = params.shadowScale; 4105 const scale2 = params.shadowScale / multiplier; 4106 const offset = params.shadowOffset; 4107 cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; 4108 } 4109 } 4110 const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; 4111 wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; 4112 wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); 4113 }; 4114 const setTransition = duration => { 4115 const { 4116 el, 4117 slides 4118 } = swiper; 4119 slides.forEach(slideEl => { 4120 slideEl.style.transitionDuration = `${duration}ms`; 4121 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { 4122 subEl.style.transitionDuration = `${duration}ms`; 4123 }); 4124 }); 4125 if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { 4126 const shadowEl = el.querySelector('.swiper-cube-shadow'); 4127 if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; 4128 } 4129 }; 4130 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 4131 effect: 'cube', 4132 swiper, 4133 on, 4134 setTranslate, 4135 setTransition, 4136 recreateShadows, 4137 getEffectParams: () => swiper.params.cubeEffect, 4138 perspective: () => true, 4139 overwriteParams: () => ({ 4140 slidesPerView: 1, 4141 slidesPerGroup: 1, 4142 watchSlidesProgress: true, 4143 resistanceRatio: 0, 4144 spaceBetween: 0, 4145 centeredSlides: false, 4146 virtualTranslate: true 4147 }) 4148 }); 4149} 4150 4151 4152 4153 4154/***/ }), 4155
vendor: 3,103 bytes, lines 4156-4240
4156/***/ "./node_modules/swiper/modules/effect-fade.mjs": 4157/*!*****************************************************!*\ 4158 !*** ./node_modules/swiper/modules/effect-fade.mjs ***! 4159 \*****************************************************/ 4160/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4161 4162"use strict"; 4163__webpack_require__.r(__webpack_exports__); 4164/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4165/* harmony export */ "default": function() { return /* binding */ EffectFade; } 4166/* harmony export */ }); 4167/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 4168/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 4169/* 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"); 4170/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4171 4172 4173 4174 4175 4176function EffectFade(_ref) { 4177 let { 4178 swiper, 4179 extendParams, 4180 on 4181 } = _ref; 4182 extendParams({ 4183 fadeEffect: { 4184 crossFade: false 4185 } 4186 }); 4187 const setTranslate = () => { 4188 const { 4189 slides 4190 } = swiper; 4191 const params = swiper.params.fadeEffect; 4192 for (let i = 0; i < slides.length; i += 1) { 4193 const slideEl = swiper.slides[i]; 4194 const offset = slideEl.swiperSlideOffset; 4195 let tx = -offset; 4196 if (!swiper.params.virtualTranslate) tx -= swiper.translate; 4197 let ty = 0; 4198 if (!swiper.isHorizontal()) { 4199 ty = tx; 4200 tx = 0; 4201 } 4202 const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); 4203 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(params, slideEl); 4204 targetEl.style.opacity = slideOpacity; 4205 targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; 4206 } 4207 }; 4208 const setTransition = duration => { 4209 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_3__.g)(slideEl)); 4210 transformElements.forEach(el => { 4211 el.style.transitionDuration = `${duration}ms`; 4212 }); 4213 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_2__.e)({ 4214 swiper, 4215 duration, 4216 transformElements, 4217 allSlides: true 4218 }); 4219 }; 4220 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_0__.e)({ 4221 effect: 'fade', 4222 swiper, 4223 on, 4224 setTranslate, 4225 setTransition, 4226 overwriteParams: () => ({ 4227 slidesPerView: 1, 4228 slidesPerGroup: 1, 4229 watchSlidesProgress: true, 4230 spaceBetween: 0, 4231 virtualTranslate: !swiper.params.cssMode 4232 }) 4233 }); 4234} 4235 4236 4237 4238 4239/***/ }), 4240
vendor: 5,336 bytes, lines 4241-4371
4241/***/ "./node_modules/swiper/modules/effect-flip.mjs": 4242/*!*****************************************************!*\ 4243 !*** ./node_modules/swiper/modules/effect-flip.mjs ***! 4244 \*****************************************************/ 4245/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4246 4247"use strict"; 4248__webpack_require__.r(__webpack_exports__); 4249/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4250/* harmony export */ "default": function() { return /* binding */ EffectFlip; } 4251/* harmony export */ }); 4252/* harmony import */ var _shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/create-shadow.mjs */ "./node_modules/swiper/shared/create-shadow.mjs"); 4253/* harmony import */ var _shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/effect-init.mjs */ "./node_modules/swiper/shared/effect-init.mjs"); 4254/* harmony import */ var _shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/effect-target.mjs */ "./node_modules/swiper/shared/effect-target.mjs"); 4255/* 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"); 4256/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4257 4258 4259 4260 4261 4262 4263function EffectFlip(_ref) { 4264 let { 4265 swiper, 4266 extendParams, 4267 on 4268 } = _ref; 4269 extendParams({ 4270 flipEffect: { 4271 slideShadows: true, 4272 limitRotation: true 4273 } 4274 }); 4275 const createSlideShadows = (slideEl, progress) => { 4276 let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); 4277 let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); 4278 if (!shadowBefore) { 4279 shadowBefore = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); 4280 } 4281 if (!shadowAfter) { 4282 shadowAfter = (0,_shared_create_shadow_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); 4283 } 4284 if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); 4285 if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); 4286 }; 4287 const recreateShadows = () => { 4288 // Set shadows 4289 swiper.params.flipEffect; 4290 swiper.slides.forEach(slideEl => { 4291 let progress = slideEl.progress; 4292 if (swiper.params.flipEffect.limitRotation) { 4293 progress = Math.max(Math.min(slideEl.progress, 1), -1); 4294 } 4295 createSlideShadows(slideEl, progress); 4296 }); 4297 }; 4298 const setTranslate = () => { 4299 const { 4300 slides, 4301 rtlTranslate: rtl 4302 } = swiper; 4303 const params = swiper.params.flipEffect; 4304 const rotateFix = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.o)(swiper); 4305 for (let i = 0; i < slides.length; i += 1) { 4306 const slideEl = slides[i]; 4307 let progress = slideEl.progress; 4308 if (swiper.params.flipEffect.limitRotation) { 4309 progress = Math.max(Math.min(slideEl.progress, 1), -1); 4310 } 4311 const offset = slideEl.swiperSlideOffset; 4312 const rotate = -180 * progress; 4313 let rotateY = rotate; 4314 let rotateX = 0; 4315 let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; 4316 let ty = 0; 4317 if (!swiper.isHorizontal()) { 4318 ty = tx; 4319 tx = 0; 4320 rotateX = -rotateY; 4321 rotateY = 0; 4322 } else if (rtl) { 4323 rotateY = -rotateY; 4324 } 4325 slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; 4326 if (params.slideShadows) { 4327 createSlideShadows(slideEl, progress); 4328 } 4329 const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; 4330 const targetEl = (0,_shared_effect_target_mjs__WEBPACK_IMPORTED_MODULE_2__.e)(params, slideEl); 4331 targetEl.style.transform = transform; 4332 } 4333 }; 4334 const setTransition = duration => { 4335 const transformElements = swiper.slides.map(slideEl => (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_4__.g)(slideEl)); 4336 transformElements.forEach(el => { 4337 el.style.transitionDuration = `${duration}ms`; 4338 el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { 4339 shadowEl.style.transitionDuration = `${duration}ms`; 4340 }); 4341 }); 4342 (0,_shared_effect_virtual_transition_end_mjs__WEBPACK_IMPORTED_MODULE_3__.e)({ 4343 swiper, 4344 duration, 4345 transformElements 4346 }); 4347 }; 4348 (0,_shared_effect_init_mjs__WEBPACK_IMPORTED_MODULE_1__.e)({ 4349 effect: 'flip', 4350 swiper, 4351 on, 4352 setTranslate, 4353 setTransition, 4354 recreateShadows, 4355 getEffectParams: () => swiper.params.flipEffect, 4356 perspective: () => true, 4357 overwriteParams: () => ({ 4358 slidesPerView: 1, 4359 slidesPerGroup: 1, 4360 watchSlidesProgress: true, 4361 spaceBetween: 0, 4362 virtualTranslate: !swiper.params.cssMode 4363 }) 4364 }); 4365} 4366 4367 4368 4369 4370/***/ }), 4371
vendor: 9,261 bytes, lines 4372-4624
4372/***/ "./node_modules/swiper/modules/free-mode.mjs": 4373/*!***************************************************!*\ 4374 !*** ./node_modules/swiper/modules/free-mode.mjs ***! 4375 \***************************************************/ 4376/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4377 4378"use strict"; 4379__webpack_require__.r(__webpack_exports__); 4380/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4381/* harmony export */ "default": function() { return /* binding */ freeMode; } 4382/* harmony export */ }); 4383/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4384 4385 4386function freeMode(_ref) { 4387 let { 4388 swiper, 4389 extendParams, 4390 emit, 4391 once 4392 } = _ref; 4393 extendParams({ 4394 freeMode: { 4395 enabled: false, 4396 momentum: true, 4397 momentumRatio: 1, 4398 momentumBounce: true, 4399 momentumBounceRatio: 1, 4400 momentumVelocityRatio: 1, 4401 sticky: false, 4402 minimumVelocity: 0.02 4403 } 4404 }); 4405 function onTouchStart() { 4406 if (swiper.params.cssMode) return; 4407 const translate = swiper.getTranslate(); 4408 swiper.setTranslate(translate); 4409 swiper.setTransition(0); 4410 swiper.touchEventsData.velocities.length = 0; 4411 swiper.freeMode.onTouchEnd({ 4412 currentPos: swiper.rtl ? swiper.translate : -swiper.translate 4413 }); 4414 } 4415 function onTouchMove() { 4416 if (swiper.params.cssMode) return; 4417 const { 4418 touchEventsData: data, 4419 touches 4420 } = swiper; 4421 // Velocity 4422 if (data.velocities.length === 0) { 4423 data.velocities.push({ 4424 position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], 4425 time: data.touchStartTime 4426 }); 4427 } 4428 data.velocities.push({ 4429 position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], 4430 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() 4431 }); 4432 } 4433 function onTouchEnd(_ref2) { 4434 let { 4435 currentPos 4436 } = _ref2; 4437 if (swiper.params.cssMode) return; 4438 const { 4439 params, 4440 wrapperEl, 4441 rtlTranslate: rtl, 4442 snapGrid, 4443 touchEventsData: data 4444 } = swiper; 4445 // Time diff 4446 const touchEndTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)(); 4447 const timeDiff = touchEndTime - data.touchStartTime; 4448 if (currentPos < -swiper.minTranslate()) { 4449 swiper.slideTo(swiper.activeIndex); 4450 return; 4451 } 4452 if (currentPos > -swiper.maxTranslate()) { 4453 if (swiper.slides.length < snapGrid.length) { 4454 swiper.slideTo(snapGrid.length - 1); 4455 } else { 4456 swiper.slideTo(swiper.slides.length - 1); 4457 } 4458 return; 4459 } 4460 if (params.freeMode.momentum) { 4461 if (data.velocities.length > 1) { 4462 const lastMoveEvent = data.velocities.pop(); 4463 const velocityEvent = data.velocities.pop(); 4464 const distance = lastMoveEvent.position - velocityEvent.position; 4465 const time = lastMoveEvent.time - velocityEvent.time; 4466 swiper.velocity = distance / time; 4467 swiper.velocity /= 2; 4468 if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { 4469 swiper.velocity = 0; 4470 } 4471 // this implies that the user stopped moving a finger then released. 4472 // There would be no events with distance zero, so the last event is stale. 4473 if (time > 150 || (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.d)() - lastMoveEvent.time > 300) { 4474 swiper.velocity = 0; 4475 } 4476 } else { 4477 swiper.velocity = 0; 4478 } 4479 swiper.velocity *= params.freeMode.momentumVelocityRatio; 4480 data.velocities.length = 0; 4481 let momentumDuration = 1000 * params.freeMode.momentumRatio; 4482 const momentumDistance = swiper.velocity * momentumDuration; 4483 let newPosition = swiper.translate + momentumDistance; 4484 if (rtl) newPosition = -newPosition; 4485 let doBounce = false; 4486 let afterBouncePosition; 4487 const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; 4488 let needsLoopFix; 4489 if (newPosition < swiper.maxTranslate()) { 4490 if (params.freeMode.momentumBounce) { 4491 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 4492 newPosition = swiper.maxTranslate() - bounceAmount; 4493 } 4494 afterBouncePosition = swiper.maxTranslate(); 4495 doBounce = true; 4496 data.allowMomentumBounce = true; 4497 } else { 4498 newPosition = swiper.maxTranslate(); 4499 } 4500 if (params.loop && params.centeredSlides) needsLoopFix = true; 4501 } else if (newPosition > swiper.minTranslate()) { 4502 if (params.freeMode.momentumBounce) { 4503 if (newPosition - swiper.minTranslate() > bounceAmount) { 4504 newPosition = swiper.minTranslate() + bounceAmount; 4505 } 4506 afterBouncePosition = swiper.minTranslate(); 4507 doBounce = true; 4508 data.allowMomentumBounce = true; 4509 } else { 4510 newPosition = swiper.minTranslate(); 4511 } 4512 if (params.loop && params.centeredSlides) needsLoopFix = true; 4513 } else if (params.freeMode.sticky) { 4514 let nextSlide; 4515 for (let j = 0; j < snapGrid.length; j += 1) { 4516 if (snapGrid[j] > -newPosition) { 4517 nextSlide = j; 4518 break; 4519 } 4520 } 4521 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { 4522 newPosition = snapGrid[nextSlide]; 4523 } else { 4524 newPosition = snapGrid[nextSlide - 1]; 4525 } 4526 newPosition = -newPosition; 4527 } 4528 if (needsLoopFix) { 4529 once('transitionEnd', () => { 4530 swiper.loopFix(); 4531 }); 4532 } 4533 // Fix duration 4534 if (swiper.velocity !== 0) { 4535 if (rtl) { 4536 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); 4537 } else { 4538 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); 4539 } 4540 if (params.freeMode.sticky) { 4541 // If freeMode.sticky is active and the user ends a swipe with a slow-velocity 4542 // event, then durations can be 20+ seconds to slide one (or zero!) slides. 4543 // It's easy to see this when simulating touch with mouse events. To fix this, 4544 // limit single-slide swipes to the default slide duration. This also has the 4545 // nice side effect of matching slide speed if the user stopped moving before 4546 // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. 4547 // For faster swipes, also apply limits (albeit higher ones). 4548 const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 4549 const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 4550 if (moveDistance < currentSlideSize) { 4551 momentumDuration = params.speed; 4552 } else if (moveDistance < 2 * currentSlideSize) { 4553 momentumDuration = params.speed * 1.5; 4554 } else { 4555 momentumDuration = params.speed * 2.5; 4556 } 4557 } 4558 } else if (params.freeMode.sticky) { 4559 swiper.slideToClosest(); 4560 return; 4561 } 4562 if (params.freeMode.momentumBounce && doBounce) { 4563 swiper.updateProgress(afterBouncePosition); 4564 swiper.setTransition(momentumDuration); 4565 swiper.setTranslate(newPosition); 4566 swiper.transitionStart(true, swiper.swipeDirection); 4567 swiper.animating = true; 4568 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 4569 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; 4570 emit('momentumBounce'); 4571 swiper.setTransition(params.speed); 4572 setTimeout(() => { 4573 swiper.setTranslate(afterBouncePosition); 4574 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 4575 if (!swiper || swiper.destroyed) return; 4576 swiper.transitionEnd(); 4577 }); 4578 }, 0); 4579 }); 4580 } else if (swiper.velocity) { 4581 emit('_freeModeNoMomentumRelease'); 4582 swiper.updateProgress(newPosition); 4583 swiper.setTransition(momentumDuration); 4584 swiper.setTranslate(newPosition); 4585 swiper.transitionStart(true, swiper.swipeDirection); 4586 if (!swiper.animating) { 4587 swiper.animating = true; 4588 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(wrapperEl, () => { 4589 if (!swiper || swiper.destroyed) return; 4590 swiper.transitionEnd(); 4591 }); 4592 } 4593 } else { 4594 swiper.updateProgress(newPosition); 4595 } 4596 swiper.updateActiveIndex(); 4597 swiper.updateSlidesClasses(); 4598 } else if (params.freeMode.sticky) { 4599 swiper.slideToClosest(); 4600 return; 4601 } else if (params.freeMode) { 4602 emit('_freeModeNoMomentumRelease'); 4603 } 4604 if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { 4605 emit('_freeModeStaticRelease'); 4606 swiper.updateProgress(); 4607 swiper.updateActiveIndex(); 4608 swiper.updateSlidesClasses(); 4609 } 4610 } 4611 Object.assign(swiper, { 4612 freeMode: { 4613 onTouchStart, 4614 onTouchMove, 4615 onTouchEnd 4616 } 4617 }); 4618} 4619 4620 4621 4622 4623/***/ }), 4624
vendor: 5,731 bytes, lines 4625-4794
4625/***/ "./node_modules/swiper/modules/grid.mjs": 4626/*!**********************************************!*\ 4627 !*** ./node_modules/swiper/modules/grid.mjs ***! 4628 \**********************************************/ 4629/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4630 4631"use strict"; 4632__webpack_require__.r(__webpack_exports__); 4633/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4634/* harmony export */ "default": function() { return /* binding */ Grid; } 4635/* harmony export */ }); 4636function Grid(_ref) { 4637 let { 4638 swiper, 4639 extendParams, 4640 on 4641 } = _ref; 4642 extendParams({ 4643 grid: { 4644 rows: 1, 4645 fill: 'column' 4646 } 4647 }); 4648 let slidesNumberEvenToRows; 4649 let slidesPerRow; 4650 let numFullColumns; 4651 let wasMultiRow; 4652 const getSpaceBetween = () => { 4653 let spaceBetween = swiper.params.spaceBetween; 4654 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 4655 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 4656 } else if (typeof spaceBetween === 'string') { 4657 spaceBetween = parseFloat(spaceBetween); 4658 } 4659 return spaceBetween; 4660 }; 4661 const initSlides = slides => { 4662 const { 4663 slidesPerView 4664 } = swiper.params; 4665 const { 4666 rows, 4667 fill 4668 } = swiper.params.grid; 4669 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 4670 numFullColumns = Math.floor(slidesLength / rows); 4671 if (Math.floor(slidesLength / rows) === slidesLength / rows) { 4672 slidesNumberEvenToRows = slidesLength; 4673 } else { 4674 slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; 4675 } 4676 if (slidesPerView !== 'auto' && fill === 'row') { 4677 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); 4678 } 4679 slidesPerRow = slidesNumberEvenToRows / rows; 4680 }; 4681 const unsetSlides = () => { 4682 if (swiper.slides) { 4683 swiper.slides.forEach(slide => { 4684 if (slide.swiperSlideGridSet) { 4685 slide.style.height = ''; 4686 slide.style[swiper.getDirectionLabel('margin-top')] = ''; 4687 } 4688 }); 4689 } 4690 }; 4691 const updateSlide = (i, slide, slides) => { 4692 const { 4693 slidesPerGroup 4694 } = swiper.params; 4695 const spaceBetween = getSpaceBetween(); 4696 const { 4697 rows, 4698 fill 4699 } = swiper.params.grid; 4700 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; 4701 // Set slides order 4702 let newSlideOrderIndex; 4703 let column; 4704 let row; 4705 if (fill === 'row' && slidesPerGroup > 1) { 4706 const groupIndex = Math.floor(i / (slidesPerGroup * rows)); 4707 const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; 4708 const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); 4709 row = Math.floor(slideIndexInGroup / columnsInGroup); 4710 column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; 4711 newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; 4712 slide.style.order = newSlideOrderIndex; 4713 } else if (fill === 'column') { 4714 column = Math.floor(i / rows); 4715 row = i - column * rows; 4716 if (column > numFullColumns || column === numFullColumns && row === rows - 1) { 4717 row += 1; 4718 if (row >= rows) { 4719 row = 0; 4720 column += 1; 4721 } 4722 } 4723 } else { 4724 row = Math.floor(i / slidesPerRow); 4725 column = i - row * slidesPerRow; 4726 } 4727 slide.row = row; 4728 slide.column = column; 4729 slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; 4730 slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; 4731 slide.swiperSlideGridSet = true; 4732 }; 4733 const updateWrapperSize = (slideSize, snapGrid) => { 4734 const { 4735 centeredSlides, 4736 roundLengths 4737 } = swiper.params; 4738 const spaceBetween = getSpaceBetween(); 4739 const { 4740 rows 4741 } = swiper.params.grid; 4742 swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; 4743 swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; 4744 if (!swiper.params.cssMode) { 4745 swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 4746 } 4747 if (centeredSlides) { 4748 const newSlidesGrid = []; 4749 for (let i = 0; i < snapGrid.length; i += 1) { 4750 let slidesGridItem = snapGrid[i]; 4751 if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); 4752 if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); 4753 } 4754 snapGrid.splice(0, snapGrid.length); 4755 snapGrid.push(...newSlidesGrid); 4756 } 4757 }; 4758 const onInit = () => { 4759 wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; 4760 }; 4761 const onUpdate = () => { 4762 const { 4763 params, 4764 el 4765 } = swiper; 4766 const isMultiRow = params.grid && params.grid.rows > 1; 4767 if (wasMultiRow && !isMultiRow) { 4768 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 4769 numFullColumns = 1; 4770 swiper.emitContainerClasses(); 4771 } else if (!wasMultiRow && isMultiRow) { 4772 el.classList.add(`${params.containerModifierClass}grid`); 4773 if (params.grid.fill === 'column') { 4774 el.classList.add(`${params.containerModifierClass}grid-column`); 4775 } 4776 swiper.emitContainerClasses(); 4777 } 4778 wasMultiRow = isMultiRow; 4779 }; 4780 on('init', onInit); 4781 on('update', onUpdate); 4782 swiper.grid = { 4783 initSlides, 4784 unsetSlides, 4785 updateSlide, 4786 updateWrapperSize 4787 }; 4788} 4789 4790 4791 4792 4793/***/ }), 4794
vendor: 4,432 bytes, lines 4795-4904
4795/***/ "./node_modules/swiper/modules/hash-navigation.mjs": 4796/*!*********************************************************!*\ 4797 !*** ./node_modules/swiper/modules/hash-navigation.mjs ***! 4798 \*********************************************************/ 4799/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4800 4801"use strict"; 4802__webpack_require__.r(__webpack_exports__); 4803/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4804/* harmony export */ "default": function() { return /* binding */ HashNavigation; } 4805/* harmony export */ }); 4806/* 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"); 4807/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 4808 4809 4810 4811function HashNavigation(_ref) { 4812 let { 4813 swiper, 4814 extendParams, 4815 emit, 4816 on 4817 } = _ref; 4818 let initialized = false; 4819 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 4820 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 4821 extendParams({ 4822 hashNavigation: { 4823 enabled: false, 4824 replaceState: false, 4825 watchState: false, 4826 getSlideIndex(_s, hash) { 4827 if (swiper.virtual && swiper.params.virtual.enabled) { 4828 const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; 4829 if (!slideWithHash) return 0; 4830 const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); 4831 return index; 4832 } 4833 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]); 4834 } 4835 } 4836 }); 4837 const onHashChange = () => { 4838 emit('hashChange'); 4839 const newHash = document.location.hash.replace('#', ''); 4840 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 4841 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; 4842 if (newHash !== activeSlideHash) { 4843 const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); 4844 if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; 4845 swiper.slideTo(newIndex); 4846 } 4847 }; 4848 const setHash = () => { 4849 if (!initialized || !swiper.params.hashNavigation.enabled) return; 4850 const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; 4851 const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; 4852 if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { 4853 window.history.replaceState(null, null, `#${activeSlideHash}` || ''); 4854 emit('hashSet'); 4855 } else { 4856 document.location.hash = activeSlideHash || ''; 4857 emit('hashSet'); 4858 } 4859 }; 4860 const init = () => { 4861 if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; 4862 initialized = true; 4863 const hash = document.location.hash.replace('#', ''); 4864 if (hash) { 4865 const speed = 0; 4866 const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); 4867 swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); 4868 } 4869 if (swiper.params.hashNavigation.watchState) { 4870 window.addEventListener('hashchange', onHashChange); 4871 } 4872 }; 4873 const destroy = () => { 4874 if (swiper.params.hashNavigation.watchState) { 4875 window.removeEventListener('hashchange', onHashChange); 4876 } 4877 }; 4878 on('init', () => { 4879 if (swiper.params.hashNavigation.enabled) { 4880 init(); 4881 } 4882 }); 4883 on('destroy', () => { 4884 if (swiper.params.hashNavigation.enabled) { 4885 destroy(); 4886 } 4887 }); 4888 on('transitionEnd _freeModeNoMomentumRelease', () => { 4889 if (initialized) { 4890 setHash(); 4891 } 4892 }); 4893 on('slideChange', () => { 4894 if (initialized && swiper.params.cssMode) { 4895 setHash(); 4896 } 4897 }); 4898} 4899 4900 4901 4902 4903/***/ }), 4904
vendor: 5,144 bytes, lines 4905-5062
4905/***/ "./node_modules/swiper/modules/history.mjs": 4906/*!*************************************************!*\ 4907 !*** ./node_modules/swiper/modules/history.mjs ***! 4908 \*************************************************/ 4909/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 4910 4911"use strict"; 4912__webpack_require__.r(__webpack_exports__); 4913/* harmony export */ __webpack_require__.d(__webpack_exports__, { 4914/* harmony export */ "default": function() { return /* binding */ History; } 4915/* harmony export */ }); 4916/* 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"); 4917 4918 4919function History(_ref) { 4920 let { 4921 swiper, 4922 extendParams, 4923 on 4924 } = _ref; 4925 extendParams({ 4926 history: { 4927 enabled: false, 4928 root: '', 4929 replaceState: false, 4930 key: 'slides', 4931 keepQuery: false 4932 } 4933 }); 4934 let initialized = false; 4935 let paths = {}; 4936 const slugify = text => { 4937 return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); 4938 }; 4939 const getPathValues = urlOverride => { 4940 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 4941 let location; 4942 if (urlOverride) { 4943 location = new URL(urlOverride); 4944 } else { 4945 location = window.location; 4946 } 4947 const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); 4948 const total = pathArray.length; 4949 const key = pathArray[total - 2]; 4950 const value = pathArray[total - 1]; 4951 return { 4952 key, 4953 value 4954 }; 4955 }; 4956 const setHistory = (key, index) => { 4957 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 4958 if (!initialized || !swiper.params.history.enabled) return; 4959 let location; 4960 if (swiper.params.url) { 4961 location = new URL(swiper.params.url); 4962 } else { 4963 location = window.location; 4964 } 4965 const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; 4966 let value = slugify(slide.getAttribute('data-history')); 4967 if (swiper.params.history.root.length > 0) { 4968 let root = swiper.params.history.root; 4969 if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); 4970 value = `${root}/${key ? `${key}/` : ''}${value}`; 4971 } else if (!location.pathname.includes(key)) { 4972 value = `${key ? `${key}/` : ''}${value}`; 4973 } 4974 if (swiper.params.history.keepQuery) { 4975 value += location.search; 4976 } 4977 const currentState = window.history.state; 4978 if (currentState && currentState.value === value) { 4979 return; 4980 } 4981 if (swiper.params.history.replaceState) { 4982 window.history.replaceState({ 4983 value 4984 }, null, value); 4985 } else { 4986 window.history.pushState({ 4987 value 4988 }, null, value); 4989 } 4990 }; 4991 const scrollToSlide = (speed, value, runCallbacks) => { 4992 if (value) { 4993 for (let i = 0, length = swiper.slides.length; i < length; i += 1) { 4994 const slide = swiper.slides[i]; 4995 const slideHistory = slugify(slide.getAttribute('data-history')); 4996 if (slideHistory === value) { 4997 const index = swiper.getSlideIndex(slide); 4998 swiper.slideTo(index, speed, runCallbacks); 4999 } 5000 } 5001 } else { 5002 swiper.slideTo(0, speed, runCallbacks); 5003 } 5004 }; 5005 const setHistoryPopState = () => { 5006 paths = getPathValues(swiper.params.url); 5007 scrollToSlide(swiper.params.speed, paths.value, false); 5008 }; 5009 const init = () => { 5010 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5011 if (!swiper.params.history) return; 5012 if (!window.history || !window.history.pushState) { 5013 swiper.params.history.enabled = false; 5014 swiper.params.hashNavigation.enabled = true; 5015 return; 5016 } 5017 initialized = true; 5018 paths = getPathValues(swiper.params.url); 5019 if (!paths.key && !paths.value) { 5020 if (!swiper.params.history.replaceState) { 5021 window.addEventListener('popstate', setHistoryPopState); 5022 } 5023 return; 5024 } 5025 scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); 5026 if (!swiper.params.history.replaceState) { 5027 window.addEventListener('popstate', setHistoryPopState); 5028 } 5029 }; 5030 const destroy = () => { 5031 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5032 if (!swiper.params.history.replaceState) { 5033 window.removeEventListener('popstate', setHistoryPopState); 5034 } 5035 }; 5036 on('init', () => { 5037 if (swiper.params.history.enabled) { 5038 init(); 5039 } 5040 }); 5041 on('destroy', () => { 5042 if (swiper.params.history.enabled) { 5043 destroy(); 5044 } 5045 }); 5046 on('transitionEnd _freeModeNoMomentumRelease', () => { 5047 if (initialized) { 5048 setHistory(swiper.params.history.key, swiper.activeIndex); 5049 } 5050 }); 5051 on('slideChange', () => { 5052 if (initialized && swiper.params.cssMode) { 5053 setHistory(swiper.params.history.key, swiper.activeIndex); 5054 } 5055 }); 5056} 5057 5058 5059 5060 5061/***/ }), 5062
vendor: 7,341 bytes, lines 5063-5144
5063/***/ "./node_modules/swiper/modules/index.mjs": 5064/*!***********************************************!*\ 5065 !*** ./node_modules/swiper/modules/index.mjs ***! 5066 \***********************************************/ 5067/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5068 5069"use strict"; 5070__webpack_require__.r(__webpack_exports__); 5071/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5072/* harmony export */ A11y: function() { return /* reexport safe */ _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__["default"]; }, 5073/* harmony export */ Autoplay: function() { return /* reexport safe */ _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__["default"]; }, 5074/* harmony export */ Controller: function() { return /* reexport safe */ _controller_mjs__WEBPACK_IMPORTED_MODULE_8__["default"]; }, 5075/* harmony export */ EffectCards: function() { return /* reexport safe */ _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__["default"]; }, 5076/* harmony export */ EffectCoverflow: function() { return /* reexport safe */ _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__["default"]; }, 5077/* harmony export */ EffectCreative: function() { return /* reexport safe */ _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__["default"]; }, 5078/* harmony export */ EffectCube: function() { return /* reexport safe */ _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__["default"]; }, 5079/* harmony export */ EffectFade: function() { return /* reexport safe */ _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__["default"]; }, 5080/* harmony export */ EffectFlip: function() { return /* reexport safe */ _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__["default"]; }, 5081/* harmony export */ FreeMode: function() { return /* reexport safe */ _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__["default"]; }, 5082/* harmony export */ Grid: function() { return /* reexport safe */ _grid_mjs__WEBPACK_IMPORTED_MODULE_15__["default"]; }, 5083/* harmony export */ HashNavigation: function() { return /* reexport safe */ _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__["default"]; }, 5084/* harmony export */ History: function() { return /* reexport safe */ _history_mjs__WEBPACK_IMPORTED_MODULE_10__["default"]; }, 5085/* harmony export */ Keyboard: function() { return /* reexport safe */ _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__["default"]; }, 5086/* harmony export */ Manipulation: function() { return /* reexport safe */ _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__["default"]; }, 5087/* harmony export */ Mousewheel: function() { return /* reexport safe */ _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__["default"]; }, 5088/* harmony export */ Navigation: function() { return /* reexport safe */ _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__["default"]; }, 5089/* harmony export */ Pagination: function() { return /* reexport safe */ _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__["default"]; }, 5090/* harmony export */ Parallax: function() { return /* reexport safe */ _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__["default"]; }, 5091/* harmony export */ Scrollbar: function() { return /* reexport safe */ _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__["default"]; }, 5092/* harmony export */ Thumbs: function() { return /* reexport safe */ _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__["default"]; }, 5093/* harmony export */ Virtual: function() { return /* reexport safe */ _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__["default"]; }, 5094/* harmony export */ Zoom: function() { return /* reexport safe */ _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__["default"]; } 5095/* harmony export */ }); 5096/* harmony import */ var _virtual_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./virtual.mjs */ "./node_modules/swiper/modules/virtual.mjs"); 5097/* harmony import */ var _keyboard_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keyboard.mjs */ "./node_modules/swiper/modules/keyboard.mjs"); 5098/* harmony import */ var _mousewheel_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mousewheel.mjs */ "./node_modules/swiper/modules/mousewheel.mjs"); 5099/* harmony import */ var _navigation_mjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./navigation.mjs */ "./node_modules/swiper/modules/navigation.mjs"); 5100/* harmony import */ var _pagination_mjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pagination.mjs */ "./node_modules/swiper/modules/pagination.mjs"); 5101/* harmony import */ var _scrollbar_mjs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./scrollbar.mjs */ "./node_modules/swiper/modules/scrollbar.mjs"); 5102/* harmony import */ var _parallax_mjs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./parallax.mjs */ "./node_modules/swiper/modules/parallax.mjs"); 5103/* harmony import */ var _zoom_mjs__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./zoom.mjs */ "./node_modules/swiper/modules/zoom.mjs"); 5104/* harmony import */ var _controller_mjs__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./controller.mjs */ "./node_modules/swiper/modules/controller.mjs"); 5105/* harmony import */ var _a11y_mjs__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./a11y.mjs */ "./node_modules/swiper/modules/a11y.mjs"); 5106/* harmony import */ var _history_mjs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./history.mjs */ "./node_modules/swiper/modules/history.mjs"); 5107/* harmony import */ var _hash_navigation_mjs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hash-navigation.mjs */ "./node_modules/swiper/modules/hash-navigation.mjs"); 5108/* harmony import */ var _autoplay_mjs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./autoplay.mjs */ "./node_modules/swiper/modules/autoplay.mjs"); 5109/* harmony import */ var _thumbs_mjs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./thumbs.mjs */ "./node_modules/swiper/modules/thumbs.mjs"); 5110/* harmony import */ var _free_mode_mjs__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./free-mode.mjs */ "./node_modules/swiper/modules/free-mode.mjs"); 5111/* harmony import */ var _grid_mjs__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./grid.mjs */ "./node_modules/swiper/modules/grid.mjs"); 5112/* harmony import */ var _manipulation_mjs__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./manipulation.mjs */ "./node_modules/swiper/modules/manipulation.mjs"); 5113/* harmony import */ var _effect_fade_mjs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./effect-fade.mjs */ "./node_modules/swiper/modules/effect-fade.mjs"); 5114/* harmony import */ var _effect_cube_mjs__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./effect-cube.mjs */ "./node_modules/swiper/modules/effect-cube.mjs"); 5115/* harmony import */ var _effect_flip_mjs__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./effect-flip.mjs */ "./node_modules/swiper/modules/effect-flip.mjs"); 5116/* harmony import */ var _effect_coverflow_mjs__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./effect-coverflow.mjs */ "./node_modules/swiper/modules/effect-coverflow.mjs"); 5117/* harmony import */ var _effect_creative_mjs__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./effect-creative.mjs */ "./node_modules/swiper/modules/effect-creative.mjs"); 5118/* harmony import */ var _effect_cards_mjs__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./effect-cards.mjs */ "./node_modules/swiper/modules/effect-cards.mjs"); 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143/***/ }), 5144
vendor: 5,293 bytes, lines 5145-5278
5145/***/ "./node_modules/swiper/modules/keyboard.mjs": 5146/*!**************************************************!*\ 5147 !*** ./node_modules/swiper/modules/keyboard.mjs ***! 5148 \**************************************************/ 5149/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5150 5151"use strict"; 5152__webpack_require__.r(__webpack_exports__); 5153/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5154/* harmony export */ "default": function() { return /* binding */ Keyboard; } 5155/* harmony export */ }); 5156/* 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"); 5157/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5158 5159 5160 5161/* eslint-disable consistent-return */ 5162function Keyboard(_ref) { 5163 let { 5164 swiper, 5165 extendParams, 5166 on, 5167 emit 5168 } = _ref; 5169 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 5170 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5171 swiper.keyboard = { 5172 enabled: false 5173 }; 5174 extendParams({ 5175 keyboard: { 5176 enabled: false, 5177 onlyInViewport: true, 5178 pageUpDown: true 5179 } 5180 }); 5181 function handle(event) { 5182 if (!swiper.enabled) return; 5183 const { 5184 rtlTranslate: rtl 5185 } = swiper; 5186 let e = event; 5187 if (e.originalEvent) e = e.originalEvent; // jquery fix 5188 const kc = e.keyCode || e.charCode; 5189 const pageUpDown = swiper.params.keyboard.pageUpDown; 5190 const isPageUp = pageUpDown && kc === 33; 5191 const isPageDown = pageUpDown && kc === 34; 5192 const isArrowLeft = kc === 37; 5193 const isArrowRight = kc === 39; 5194 const isArrowUp = kc === 38; 5195 const isArrowDown = kc === 40; 5196 // Directions locks 5197 if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { 5198 return false; 5199 } 5200 if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { 5201 return false; 5202 } 5203 if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { 5204 return undefined; 5205 } 5206 if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { 5207 return undefined; 5208 } 5209 if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { 5210 let inView = false; 5211 // Check that swiper should be inside of visible area of window 5212 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) { 5213 return undefined; 5214 } 5215 const el = swiper.el; 5216 const swiperWidth = el.clientWidth; 5217 const swiperHeight = el.clientHeight; 5218 const windowWidth = window.innerWidth; 5219 const windowHeight = window.innerHeight; 5220 const swiperOffset = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el); 5221 if (rtl) swiperOffset.left -= el.scrollLeft; 5222 const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; 5223 for (let i = 0; i < swiperCoord.length; i += 1) { 5224 const point = swiperCoord[i]; 5225 if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { 5226 if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line 5227 inView = true; 5228 } 5229 } 5230 if (!inView) return undefined; 5231 } 5232 if (swiper.isHorizontal()) { 5233 if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { 5234 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 5235 } 5236 if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); 5237 if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); 5238 } else { 5239 if (isPageUp || isPageDown || isArrowUp || isArrowDown) { 5240 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 5241 } 5242 if (isPageDown || isArrowDown) swiper.slideNext(); 5243 if (isPageUp || isArrowUp) swiper.slidePrev(); 5244 } 5245 emit('keyPress', kc); 5246 return undefined; 5247 } 5248 function enable() { 5249 if (swiper.keyboard.enabled) return; 5250 document.addEventListener('keydown', handle); 5251 swiper.keyboard.enabled = true; 5252 } 5253 function disable() { 5254 if (!swiper.keyboard.enabled) return; 5255 document.removeEventListener('keydown', handle); 5256 swiper.keyboard.enabled = false; 5257 } 5258 on('init', () => { 5259 if (swiper.params.keyboard.enabled) { 5260 enable(); 5261 } 5262 }); 5263 on('destroy', () => { 5264 if (swiper.keyboard.enabled) { 5265 disable(); 5266 } 5267 }); 5268 Object.assign(swiper.keyboard, { 5269 enable, 5270 disable 5271 }); 5272} 5273 5274 5275 5276 5277/***/ }), 5278
vendor: 5,537 bytes, lines 5279-5484
5279/***/ "./node_modules/swiper/modules/manipulation.mjs": 5280/*!******************************************************!*\ 5281 !*** ./node_modules/swiper/modules/manipulation.mjs ***! 5282 \******************************************************/ 5283/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5284 5285"use strict"; 5286__webpack_require__.r(__webpack_exports__); 5287/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5288/* harmony export */ "default": function() { return /* binding */ Manipulation; } 5289/* harmony export */ }); 5290function appendSlide(slides) { 5291 const swiper = this; 5292 const { 5293 params, 5294 slidesEl 5295 } = swiper; 5296 if (params.loop) { 5297 swiper.loopDestroy(); 5298 } 5299 const appendElement = slideEl => { 5300 if (typeof slideEl === 'string') { 5301 const tempDOM = document.createElement('div'); 5302 tempDOM.innerHTML = slideEl; 5303 slidesEl.append(tempDOM.children[0]); 5304 tempDOM.innerHTML = ''; 5305 } else { 5306 slidesEl.append(slideEl); 5307 } 5308 }; 5309 if (typeof slides === 'object' && 'length' in slides) { 5310 for (let i = 0; i < slides.length; i += 1) { 5311 if (slides[i]) appendElement(slides[i]); 5312 } 5313 } else { 5314 appendElement(slides); 5315 } 5316 swiper.recalcSlides(); 5317 if (params.loop) { 5318 swiper.loopCreate(); 5319 } 5320 if (!params.observer || swiper.isElement) { 5321 swiper.update(); 5322 } 5323} 5324 5325function prependSlide(slides) { 5326 const swiper = this; 5327 const { 5328 params, 5329 activeIndex, 5330 slidesEl 5331 } = swiper; 5332 if (params.loop) { 5333 swiper.loopDestroy(); 5334 } 5335 let newActiveIndex = activeIndex + 1; 5336 const prependElement = slideEl => { 5337 if (typeof slideEl === 'string') { 5338 const tempDOM = document.createElement('div'); 5339 tempDOM.innerHTML = slideEl; 5340 slidesEl.prepend(tempDOM.children[0]); 5341 tempDOM.innerHTML = ''; 5342 } else { 5343 slidesEl.prepend(slideEl); 5344 } 5345 }; 5346 if (typeof slides === 'object' && 'length' in slides) { 5347 for (let i = 0; i < slides.length; i += 1) { 5348 if (slides[i]) prependElement(slides[i]); 5349 } 5350 newActiveIndex = activeIndex + slides.length; 5351 } else { 5352 prependElement(slides); 5353 } 5354 swiper.recalcSlides(); 5355 if (params.loop) { 5356 swiper.loopCreate(); 5357 } 5358 if (!params.observer || swiper.isElement) { 5359 swiper.update(); 5360 } 5361 swiper.slideTo(newActiveIndex, 0, false); 5362} 5363 5364function addSlide(index, slides) { 5365 const swiper = this; 5366 const { 5367 params, 5368 activeIndex, 5369 slidesEl 5370 } = swiper; 5371 let activeIndexBuffer = activeIndex; 5372 if (params.loop) { 5373 activeIndexBuffer -= swiper.loopedSlides; 5374 swiper.loopDestroy(); 5375 swiper.recalcSlides(); 5376 } 5377 const baseLength = swiper.slides.length; 5378 if (index <= 0) { 5379 swiper.prependSlide(slides); 5380 return; 5381 } 5382 if (index >= baseLength) { 5383 swiper.appendSlide(slides); 5384 return; 5385 } 5386 let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 5387 const slidesBuffer = []; 5388 for (let i = baseLength - 1; i >= index; i -= 1) { 5389 const currentSlide = swiper.slides[i]; 5390 currentSlide.remove(); 5391 slidesBuffer.unshift(currentSlide); 5392 } 5393 if (typeof slides === 'object' && 'length' in slides) { 5394 for (let i = 0; i < slides.length; i += 1) { 5395 if (slides[i]) slidesEl.append(slides[i]); 5396 } 5397 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; 5398 } else { 5399 slidesEl.append(slides); 5400 } 5401 for (let i = 0; i < slidesBuffer.length; i += 1) { 5402 slidesEl.append(slidesBuffer[i]); 5403 } 5404 swiper.recalcSlides(); 5405 if (params.loop) { 5406 swiper.loopCreate(); 5407 } 5408 if (!params.observer || swiper.isElement) { 5409 swiper.update(); 5410 } 5411 if (params.loop) { 5412 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 5413 } else { 5414 swiper.slideTo(newActiveIndex, 0, false); 5415 } 5416} 5417 5418function removeSlide(slidesIndexes) { 5419 const swiper = this; 5420 const { 5421 params, 5422 activeIndex 5423 } = swiper; 5424 let activeIndexBuffer = activeIndex; 5425 if (params.loop) { 5426 activeIndexBuffer -= swiper.loopedSlides; 5427 swiper.loopDestroy(); 5428 } 5429 let newActiveIndex = activeIndexBuffer; 5430 let indexToRemove; 5431 if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { 5432 for (let i = 0; i < slidesIndexes.length; i += 1) { 5433 indexToRemove = slidesIndexes[i]; 5434 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 5435 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 5436 } 5437 newActiveIndex = Math.max(newActiveIndex, 0); 5438 } else { 5439 indexToRemove = slidesIndexes; 5440 if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); 5441 if (indexToRemove < newActiveIndex) newActiveIndex -= 1; 5442 newActiveIndex = Math.max(newActiveIndex, 0); 5443 } 5444 swiper.recalcSlides(); 5445 if (params.loop) { 5446 swiper.loopCreate(); 5447 } 5448 if (!params.observer || swiper.isElement) { 5449 swiper.update(); 5450 } 5451 if (params.loop) { 5452 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); 5453 } else { 5454 swiper.slideTo(newActiveIndex, 0, false); 5455 } 5456} 5457 5458function removeAllSlides() { 5459 const swiper = this; 5460 const slidesIndexes = []; 5461 for (let i = 0; i < swiper.slides.length; i += 1) { 5462 slidesIndexes.push(i); 5463 } 5464 swiper.removeSlide(slidesIndexes); 5465} 5466 5467function Manipulation(_ref) { 5468 let { 5469 swiper 5470 } = _ref; 5471 Object.assign(swiper, { 5472 appendSlide: appendSlide.bind(swiper), 5473 prependSlide: prependSlide.bind(swiper), 5474 addSlide: addSlide.bind(swiper), 5475 removeSlide: removeSlide.bind(swiper), 5476 removeAllSlides: removeAllSlides.bind(swiper) 5477 }); 5478} 5479 5480 5481 5482 5483/***/ }), 5484
vendor: 16,028 bytes, lines 5485-5896
5485/***/ "./node_modules/swiper/modules/mousewheel.mjs": 5486/*!****************************************************!*\ 5487 !*** ./node_modules/swiper/modules/mousewheel.mjs ***! 5488 \****************************************************/ 5489/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5490 5491"use strict"; 5492__webpack_require__.r(__webpack_exports__); 5493/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5494/* harmony export */ "default": function() { return /* binding */ Mousewheel; } 5495/* harmony export */ }); 5496/* 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"); 5497/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5498 5499 5500 5501/* eslint-disable consistent-return */ 5502function Mousewheel(_ref) { 5503 let { 5504 swiper, 5505 extendParams, 5506 on, 5507 emit 5508 } = _ref; 5509 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 5510 extendParams({ 5511 mousewheel: { 5512 enabled: false, 5513 releaseOnEdges: false, 5514 invert: false, 5515 forceToAxis: false, 5516 sensitivity: 1, 5517 eventsTarget: 'container', 5518 thresholdDelta: null, 5519 thresholdTime: null, 5520 noMousewheelClass: 'swiper-no-mousewheel' 5521 } 5522 }); 5523 swiper.mousewheel = { 5524 enabled: false 5525 }; 5526 let timeout; 5527 let lastScrollTime = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 5528 let lastEventBeforeSnap; 5529 const recentWheelEvents = []; 5530 function normalize(e) { 5531 // Reasonable defaults 5532 const PIXEL_STEP = 10; 5533 const LINE_HEIGHT = 40; 5534 const PAGE_HEIGHT = 800; 5535 let sX = 0; 5536 let sY = 0; // spinX, spinY 5537 let pX = 0; 5538 let pY = 0; // pixelX, pixelY 5539 5540 // Legacy 5541 if ('detail' in e) { 5542 sY = e.detail; 5543 } 5544 if ('wheelDelta' in e) { 5545 sY = -e.wheelDelta / 120; 5546 } 5547 if ('wheelDeltaY' in e) { 5548 sY = -e.wheelDeltaY / 120; 5549 } 5550 if ('wheelDeltaX' in e) { 5551 sX = -e.wheelDeltaX / 120; 5552 } 5553 5554 // side scrolling on FF with DOMMouseScroll 5555 if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { 5556 sX = sY; 5557 sY = 0; 5558 } 5559 pX = sX * PIXEL_STEP; 5560 pY = sY * PIXEL_STEP; 5561 if ('deltaY' in e) { 5562 pY = e.deltaY; 5563 } 5564 if ('deltaX' in e) { 5565 pX = e.deltaX; 5566 } 5567 if (e.shiftKey && !pX) { 5568 // if user scrolls with shift he wants horizontal scroll 5569 pX = pY; 5570 pY = 0; 5571 } 5572 if ((pX || pY) && e.deltaMode) { 5573 if (e.deltaMode === 1) { 5574 // delta in LINE units 5575 pX *= LINE_HEIGHT; 5576 pY *= LINE_HEIGHT; 5577 } else { 5578 // delta in PAGE units 5579 pX *= PAGE_HEIGHT; 5580 pY *= PAGE_HEIGHT; 5581 } 5582 } 5583 5584 // Fall-back if spin cannot be determined 5585 if (pX && !sX) { 5586 sX = pX < 1 ? -1 : 1; 5587 } 5588 if (pY && !sY) { 5589 sY = pY < 1 ? -1 : 1; 5590 } 5591 return { 5592 spinX: sX, 5593 spinY: sY, 5594 pixelX: pX, 5595 pixelY: pY 5596 }; 5597 } 5598 function handleMouseEnter() { 5599 if (!swiper.enabled) return; 5600 swiper.mouseEntered = true; 5601 } 5602 function handleMouseLeave() { 5603 if (!swiper.enabled) return; 5604 swiper.mouseEntered = false; 5605 } 5606 function animateSlider(newEvent) { 5607 if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { 5608 // Prevent if delta of wheel scroll delta is below configured threshold 5609 return false; 5610 } 5611 if (swiper.params.mousewheel.thresholdTime && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { 5612 // Prevent if time between scrolls is below configured threshold 5613 return false; 5614 } 5615 5616 // If the movement is NOT big enough and 5617 // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): 5618 // Don't go any further (avoid insignificant scroll movement). 5619 if (newEvent.delta >= 6 && (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)() - lastScrollTime < 60) { 5620 // Return false as a default 5621 return true; 5622 } 5623 // If user is scrolling towards the end: 5624 // If the slider hasn't hit the latest slide or 5625 // if the slider is a loop and 5626 // if the slider isn't moving right now: 5627 // Go to next slide and 5628 // emit a scroll event. 5629 // Else (the user is scrolling towards the beginning) and 5630 // if the slider hasn't hit the first slide or 5631 // if the slider is a loop and 5632 // if the slider isn't moving right now: 5633 // Go to prev slide and 5634 // emit a scroll event. 5635 if (newEvent.direction < 0) { 5636 if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { 5637 swiper.slideNext(); 5638 emit('scroll', newEvent.raw); 5639 } 5640 } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { 5641 swiper.slidePrev(); 5642 emit('scroll', newEvent.raw); 5643 } 5644 // If you got here is because an animation has been triggered so store the current time 5645 lastScrollTime = new window.Date().getTime(); 5646 // Return false as a default 5647 return false; 5648 } 5649 function releaseScroll(newEvent) { 5650 const params = swiper.params.mousewheel; 5651 if (newEvent.direction < 0) { 5652 if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { 5653 // Return true to animate scroll on edges 5654 return true; 5655 } 5656 } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { 5657 // Return true to animate scroll on edges 5658 return true; 5659 } 5660 return false; 5661 } 5662 function handle(event) { 5663 let e = event; 5664 let disableParentSwiper = true; 5665 if (!swiper.enabled) return; 5666 5667 // Ignore event if the target or its parents have the swiper-no-mousewheel class 5668 if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; 5669 const params = swiper.params.mousewheel; 5670 if (swiper.params.cssMode) { 5671 e.preventDefault(); 5672 } 5673 let targetEl = swiper.el; 5674 if (swiper.params.mousewheel.eventsTarget !== 'container') { 5675 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 5676 } 5677 const targetElContainsTarget = targetEl && targetEl.contains(e.target); 5678 if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; 5679 if (e.originalEvent) e = e.originalEvent; // jquery fix 5680 let delta = 0; 5681 const rtlFactor = swiper.rtlTranslate ? -1 : 1; 5682 const data = normalize(e); 5683 if (params.forceToAxis) { 5684 if (swiper.isHorizontal()) { 5685 if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; 5686 } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; 5687 } else { 5688 delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; 5689 } 5690 if (delta === 0) return true; 5691 if (params.invert) delta = -delta; 5692 5693 // Get the scroll positions 5694 let positions = swiper.getTranslate() + delta * params.sensitivity; 5695 if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); 5696 if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); 5697 5698 // When loop is true: 5699 // the disableParentSwiper will be true. 5700 // When loop is false: 5701 // if the scroll positions is not on edge, 5702 // then the disableParentSwiper will be true. 5703 // if the scroll on edge positions, 5704 // then the disableParentSwiper will be false. 5705 disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); 5706 if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); 5707 if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { 5708 // Register the new event in a variable which stores the relevant data 5709 const newEvent = { 5710 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 5711 delta: Math.abs(delta), 5712 direction: Math.sign(delta), 5713 raw: event 5714 }; 5715 5716 // Keep the most recent events 5717 if (recentWheelEvents.length >= 2) { 5718 recentWheelEvents.shift(); // only store the last N events 5719 } 5720 5721 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 5722 recentWheelEvents.push(newEvent); 5723 5724 // If there is at least one previous recorded event: 5725 // If direction has changed or 5726 // if the scroll is quicker than the previous one: 5727 // Animate the slider. 5728 // Else (this is the first time the wheel is moved): 5729 // Animate the slider. 5730 if (prevEvent) { 5731 if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { 5732 animateSlider(newEvent); 5733 } 5734 } else { 5735 animateSlider(newEvent); 5736 } 5737 5738 // If it's time to release the scroll: 5739 // Return now so you don't hit the preventDefault. 5740 if (releaseScroll(newEvent)) { 5741 return true; 5742 } 5743 } else { 5744 // Freemode or scrollContainer: 5745 5746 // If we recently snapped after a momentum scroll, then ignore wheel events 5747 // to give time for the deceleration to finish. Stop ignoring after 500 msecs 5748 // or if it's a new scroll (larger delta or inverse sign as last event before 5749 // an end-of-momentum snap). 5750 const newEvent = { 5751 time: (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(), 5752 delta: Math.abs(delta), 5753 direction: Math.sign(delta) 5754 }; 5755 const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; 5756 if (!ignoreWheelEvents) { 5757 lastEventBeforeSnap = undefined; 5758 let position = swiper.getTranslate() + delta * params.sensitivity; 5759 const wasBeginning = swiper.isBeginning; 5760 const wasEnd = swiper.isEnd; 5761 if (position >= swiper.minTranslate()) position = swiper.minTranslate(); 5762 if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); 5763 swiper.setTransition(0); 5764 swiper.setTranslate(position); 5765 swiper.updateProgress(); 5766 swiper.updateActiveIndex(); 5767 swiper.updateSlidesClasses(); 5768 if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { 5769 swiper.updateSlidesClasses(); 5770 } 5771 if (swiper.params.loop) { 5772 swiper.loopFix({ 5773 direction: newEvent.direction < 0 ? 'next' : 'prev', 5774 byMousewheel: true 5775 }); 5776 } 5777 if (swiper.params.freeMode.sticky) { 5778 // When wheel scrolling starts with sticky (aka snap) enabled, then detect 5779 // the end of a momentum scroll by storing recent (N=15?) wheel events. 5780 // 1. do all N events have decreasing or same (absolute value) delta? 5781 // 2. did all N events arrive in the last M (M=500?) msecs? 5782 // 3. does the earliest event have an (absolute value) delta that's 5783 // at least P (P=1?) larger than the most recent event's delta? 5784 // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? 5785 // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. 5786 // Snap immediately and ignore remaining wheel events in this scroll. 5787 // See comment above for "remaining wheel events in this scroll" determination. 5788 // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. 5789 clearTimeout(timeout); 5790 timeout = undefined; 5791 if (recentWheelEvents.length >= 15) { 5792 recentWheelEvents.shift(); // only store the last N events 5793 } 5794 5795 const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; 5796 const firstEvent = recentWheelEvents[0]; 5797 recentWheelEvents.push(newEvent); 5798 if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { 5799 // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. 5800 recentWheelEvents.splice(0); 5801 } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { 5802 // We're at the end of the deceleration of a momentum scroll, so there's no need 5803 // to wait for more events. Snap ASAP on the next tick. 5804 // Also, because there's some remaining momentum we'll bias the snap in the 5805 // direction of the ongoing scroll because it's better UX for the scroll to snap 5806 // in the same direction as the scroll instead of reversing to snap. Therefore, 5807 // if it's already scrolled more than 20% in the current direction, keep going. 5808 const snapToThreshold = delta > 0 ? 0.8 : 0.2; 5809 lastEventBeforeSnap = newEvent; 5810 recentWheelEvents.splice(0); 5811 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 5812 if (swiper.destroyed || !swiper.params) return; 5813 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 5814 }, 0); // no delay; move on next tick 5815 } 5816 5817 if (!timeout) { 5818 // if we get here, then we haven't detected the end of a momentum scroll, so 5819 // we'll consider a scroll "complete" when there haven't been any wheel events 5820 // for 500ms. 5821 timeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 5822 if (swiper.destroyed || !swiper.params) return; 5823 const snapToThreshold = 0.5; 5824 lastEventBeforeSnap = newEvent; 5825 recentWheelEvents.splice(0); 5826 swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); 5827 }, 500); 5828 } 5829 } 5830 5831 // Emit event 5832 if (!ignoreWheelEvents) emit('scroll', e); 5833 5834 // Stop autoplay 5835 if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); 5836 // Return page scroll on edge positions 5837 if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { 5838 return true; 5839 } 5840 } 5841 } 5842 if (e.preventDefault) e.preventDefault();else e.returnValue = false; 5843 return false; 5844 } 5845 function events(method) { 5846 let targetEl = swiper.el; 5847 if (swiper.params.mousewheel.eventsTarget !== 'container') { 5848 targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); 5849 } 5850 targetEl[method]('mouseenter', handleMouseEnter); 5851 targetEl[method]('mouseleave', handleMouseLeave); 5852 targetEl[method]('wheel', handle); 5853 } 5854 function enable() { 5855 if (swiper.params.cssMode) { 5856 swiper.wrapperEl.removeEventListener('wheel', handle); 5857 return true; 5858 } 5859 if (swiper.mousewheel.enabled) return false; 5860 events('addEventListener'); 5861 swiper.mousewheel.enabled = true; 5862 return true; 5863 } 5864 function disable() { 5865 if (swiper.params.cssMode) { 5866 swiper.wrapperEl.addEventListener(event, handle); 5867 return true; 5868 } 5869 if (!swiper.mousewheel.enabled) return false; 5870 events('removeEventListener'); 5871 swiper.mousewheel.enabled = false; 5872 return true; 5873 } 5874 on('init', () => { 5875 if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { 5876 disable(); 5877 } 5878 if (swiper.params.mousewheel.enabled) enable(); 5879 }); 5880 on('destroy', () => { 5881 if (swiper.params.cssMode) { 5882 enable(); 5883 } 5884 if (swiper.mousewheel.enabled) disable(); 5885 }); 5886 Object.assign(swiper.mousewheel, { 5887 enable, 5888 disable 5889 }); 5890} 5891 5892 5893 5894 5895/***/ }), 5896
vendor: 7,442 bytes, lines 5897-6113
5897/***/ "./node_modules/swiper/modules/navigation.mjs": 5898/*!****************************************************!*\ 5899 !*** ./node_modules/swiper/modules/navigation.mjs ***! 5900 \****************************************************/ 5901/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 5902 5903"use strict"; 5904__webpack_require__.r(__webpack_exports__); 5905/* harmony export */ __webpack_require__.d(__webpack_exports__, { 5906/* harmony export */ "default": function() { return /* binding */ Navigation; } 5907/* harmony export */ }); 5908/* 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"); 5909/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 5910 5911 5912 5913function Navigation(_ref) { 5914 let { 5915 swiper, 5916 extendParams, 5917 on, 5918 emit 5919 } = _ref; 5920 extendParams({ 5921 navigation: { 5922 nextEl: null, 5923 prevEl: null, 5924 hideOnClick: false, 5925 disabledClass: 'swiper-button-disabled', 5926 hiddenClass: 'swiper-button-hidden', 5927 lockClass: 'swiper-button-lock', 5928 navigationDisabledClass: 'swiper-navigation-disabled' 5929 } 5930 }); 5931 swiper.navigation = { 5932 nextEl: null, 5933 prevEl: null 5934 }; 5935 function getEl(el) { 5936 let res; 5937 if (el && typeof el === 'string' && swiper.isElement) { 5938 res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el); 5939 if (res) return res; 5940 } 5941 if (el) { 5942 if (typeof el === 'string') res = [...document.querySelectorAll(el)]; 5943 if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { 5944 res = swiper.el.querySelector(el); 5945 } else if (res && res.length === 1) { 5946 res = res[0]; 5947 } 5948 } 5949 if (el && !res) return el; 5950 // if (Array.isArray(res) && res.length === 1) res = res[0]; 5951 return res; 5952 } 5953 function toggleEl(el, disabled) { 5954 const params = swiper.params.navigation; 5955 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 5956 el.forEach(subEl => { 5957 if (subEl) { 5958 subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); 5959 if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; 5960 if (swiper.params.watchOverflow && swiper.enabled) { 5961 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 5962 } 5963 } 5964 }); 5965 } 5966 function update() { 5967 // Update Navigation Buttons 5968 const { 5969 nextEl, 5970 prevEl 5971 } = swiper.navigation; 5972 if (swiper.params.loop) { 5973 toggleEl(prevEl, false); 5974 toggleEl(nextEl, false); 5975 return; 5976 } 5977 toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); 5978 toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); 5979 } 5980 function onPrevClick(e) { 5981 e.preventDefault(); 5982 if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; 5983 swiper.slidePrev(); 5984 emit('navigationPrev'); 5985 } 5986 function onNextClick(e) { 5987 e.preventDefault(); 5988 if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; 5989 swiper.slideNext(); 5990 emit('navigationNext'); 5991 } 5992 function init() { 5993 const params = swiper.params.navigation; 5994 swiper.params.navigation = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper, swiper.originalParams.navigation, swiper.params.navigation, { 5995 nextEl: 'swiper-button-next', 5996 prevEl: 'swiper-button-prev' 5997 }); 5998 if (!(params.nextEl || params.prevEl)) return; 5999 let nextEl = getEl(params.nextEl); 6000 let prevEl = getEl(params.prevEl); 6001 Object.assign(swiper.navigation, { 6002 nextEl, 6003 prevEl 6004 }); 6005 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 6006 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 6007 const initButton = (el, dir) => { 6008 if (el) { 6009 el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 6010 } 6011 if (!swiper.enabled && el) { 6012 el.classList.add(...params.lockClass.split(' ')); 6013 } 6014 }; 6015 nextEl.forEach(el => initButton(el, 'next')); 6016 prevEl.forEach(el => initButton(el, 'prev')); 6017 } 6018 function destroy() { 6019 let { 6020 nextEl, 6021 prevEl 6022 } = swiper.navigation; 6023 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 6024 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 6025 const destroyButton = (el, dir) => { 6026 el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); 6027 el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); 6028 }; 6029 nextEl.forEach(el => destroyButton(el, 'next')); 6030 prevEl.forEach(el => destroyButton(el, 'prev')); 6031 } 6032 on('init', () => { 6033 if (swiper.params.navigation.enabled === false) { 6034 // eslint-disable-next-line 6035 disable(); 6036 } else { 6037 init(); 6038 update(); 6039 } 6040 }); 6041 on('toEdge fromEdge lock unlock', () => { 6042 update(); 6043 }); 6044 on('destroy', () => { 6045 destroy(); 6046 }); 6047 on('enable disable', () => { 6048 let { 6049 nextEl, 6050 prevEl 6051 } = swiper.navigation; 6052 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 6053 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 6054 if (swiper.enabled) { 6055 update(); 6056 return; 6057 } 6058 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); 6059 }); 6060 on('click', (_s, e) => { 6061 let { 6062 nextEl, 6063 prevEl 6064 } = swiper.navigation; 6065 nextEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(nextEl); 6066 prevEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(prevEl); 6067 const targetEl = e.target; 6068 let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); 6069 if (swiper.isElement && !targetIsButton) { 6070 const path = e.path || e.composedPath && e.composedPath(); 6071 if (path) { 6072 targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); 6073 } 6074 } 6075 if (swiper.params.navigation.hideOnClick && !targetIsButton) { 6076 if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; 6077 let isHidden; 6078 if (nextEl.length) { 6079 isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); 6080 } else if (prevEl.length) { 6081 isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); 6082 } 6083 if (isHidden === true) { 6084 emit('navigationShow'); 6085 } else { 6086 emit('navigationHide'); 6087 } 6088 [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); 6089 } 6090 }); 6091 const enable = () => { 6092 swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); 6093 init(); 6094 update(); 6095 }; 6096 const disable = () => { 6097 swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); 6098 destroy(); 6099 }; 6100 Object.assign(swiper.navigation, { 6101 enable, 6102 disable, 6103 update, 6104 init, 6105 destroy 6106 }); 6107} 6108 6109 6110 6111 6112/***/ }), 6113
vendor: 19,074 bytes, lines 6114-6591
6114/***/ "./node_modules/swiper/modules/pagination.mjs": 6115/*!****************************************************!*\ 6116 !*** ./node_modules/swiper/modules/pagination.mjs ***! 6117 \****************************************************/ 6118/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6119 6120"use strict"; 6121__webpack_require__.r(__webpack_exports__); 6122/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6123/* harmony export */ "default": function() { return /* binding */ Pagination; } 6124/* harmony export */ }); 6125/* 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"); 6126/* 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"); 6127/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6128 6129 6130 6131 6132function Pagination(_ref) { 6133 let { 6134 swiper, 6135 extendParams, 6136 on, 6137 emit 6138 } = _ref; 6139 const pfx = 'swiper-pagination'; 6140 extendParams({ 6141 pagination: { 6142 el: null, 6143 bulletElement: 'span', 6144 clickable: false, 6145 hideOnClick: false, 6146 renderBullet: null, 6147 renderProgressbar: null, 6148 renderFraction: null, 6149 renderCustom: null, 6150 progressbarOpposite: false, 6151 type: 'bullets', 6152 // 'bullets' or 'progressbar' or 'fraction' or 'custom' 6153 dynamicBullets: false, 6154 dynamicMainBullets: 1, 6155 formatFractionCurrent: number => number, 6156 formatFractionTotal: number => number, 6157 bulletClass: `${pfx}-bullet`, 6158 bulletActiveClass: `${pfx}-bullet-active`, 6159 modifierClass: `${pfx}-`, 6160 currentClass: `${pfx}-current`, 6161 totalClass: `${pfx}-total`, 6162 hiddenClass: `${pfx}-hidden`, 6163 progressbarFillClass: `${pfx}-progressbar-fill`, 6164 progressbarOppositeClass: `${pfx}-progressbar-opposite`, 6165 clickableClass: `${pfx}-clickable`, 6166 lockClass: `${pfx}-lock`, 6167 horizontalClass: `${pfx}-horizontal`, 6168 verticalClass: `${pfx}-vertical`, 6169 paginationDisabledClass: `${pfx}-disabled` 6170 } 6171 }); 6172 swiper.pagination = { 6173 el: null, 6174 bullets: [] 6175 }; 6176 let bulletSize; 6177 let dynamicBulletIndex = 0; 6178 function isPaginationDisabled() { 6179 return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; 6180 } 6181 function setSideBullets(bulletEl, position) { 6182 const { 6183 bulletActiveClass 6184 } = swiper.params.pagination; 6185 if (!bulletEl) return; 6186 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 6187 if (bulletEl) { 6188 bulletEl.classList.add(`${bulletActiveClass}-${position}`); 6189 bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; 6190 if (bulletEl) { 6191 bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); 6192 } 6193 } 6194 } 6195 function getMoveDirection(prevIndex, nextIndex, length) { 6196 prevIndex = prevIndex % length; 6197 nextIndex = nextIndex % length; 6198 if (nextIndex === prevIndex + 1) { 6199 return 'next'; 6200 } else if (nextIndex === prevIndex - 1) { 6201 return 'previous'; 6202 } 6203 return; 6204 } 6205 function onBulletClick(e) { 6206 const bulletEl = e.target.closest((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(swiper.params.pagination.bulletClass)); 6207 if (!bulletEl) { 6208 return; 6209 } 6210 e.preventDefault(); 6211 const index = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bulletEl) * swiper.params.slidesPerGroup; 6212 if (swiper.params.loop) { 6213 if (swiper.realIndex === index) return; 6214 const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length); 6215 if (moveDirection === 'next') { 6216 swiper.slideNext(); 6217 } else if (moveDirection === 'previous') { 6218 swiper.slidePrev(); 6219 } else { 6220 swiper.slideToLoop(index); 6221 } 6222 } else { 6223 swiper.slideTo(index); 6224 } 6225 } 6226 function update() { 6227 // Render || Update Pagination bullets/items 6228 const rtl = swiper.rtl; 6229 const params = swiper.params.pagination; 6230 if (isPaginationDisabled()) return; 6231 let el = swiper.pagination.el; 6232 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6233 // Current/Total 6234 let current; 6235 let previousIndex; 6236 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 6237 const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 6238 if (swiper.params.loop) { 6239 previousIndex = swiper.previousRealIndex || 0; 6240 current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; 6241 } else if (typeof swiper.snapIndex !== 'undefined') { 6242 current = swiper.snapIndex; 6243 previousIndex = swiper.previousSnapIndex; 6244 } else { 6245 previousIndex = swiper.previousIndex || 0; 6246 current = swiper.activeIndex || 0; 6247 } 6248 // Types 6249 if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 6250 const bullets = swiper.pagination.bullets; 6251 let firstIndex; 6252 let lastIndex; 6253 let midIndex; 6254 if (params.dynamicBullets) { 6255 bulletSize = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.f)(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); 6256 el.forEach(subEl => { 6257 subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; 6258 }); 6259 if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { 6260 dynamicBulletIndex += current - (previousIndex || 0); 6261 if (dynamicBulletIndex > params.dynamicMainBullets - 1) { 6262 dynamicBulletIndex = params.dynamicMainBullets - 1; 6263 } else if (dynamicBulletIndex < 0) { 6264 dynamicBulletIndex = 0; 6265 } 6266 } 6267 firstIndex = Math.max(current - dynamicBulletIndex, 0); 6268 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 6269 midIndex = (lastIndex + firstIndex) / 2; 6270 } 6271 bullets.forEach(bulletEl => { 6272 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(); 6273 bulletEl.classList.remove(...classesToRemove); 6274 }); 6275 if (el.length > 1) { 6276 bullets.forEach(bullet => { 6277 const bulletIndex = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.h)(bullet); 6278 if (bulletIndex === current) { 6279 bullet.classList.add(...params.bulletActiveClass.split(' ')); 6280 } else if (swiper.isElement) { 6281 bullet.setAttribute('part', 'bullet'); 6282 } 6283 if (params.dynamicBullets) { 6284 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 6285 bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 6286 } 6287 if (bulletIndex === firstIndex) { 6288 setSideBullets(bullet, 'prev'); 6289 } 6290 if (bulletIndex === lastIndex) { 6291 setSideBullets(bullet, 'next'); 6292 } 6293 } 6294 }); 6295 } else { 6296 const bullet = bullets[current]; 6297 if (bullet) { 6298 bullet.classList.add(...params.bulletActiveClass.split(' ')); 6299 } 6300 if (swiper.isElement) { 6301 bullets.forEach((bulletEl, bulletIndex) => { 6302 bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); 6303 }); 6304 } 6305 if (params.dynamicBullets) { 6306 const firstDisplayedBullet = bullets[firstIndex]; 6307 const lastDisplayedBullet = bullets[lastIndex]; 6308 for (let i = firstIndex; i <= lastIndex; i += 1) { 6309 if (bullets[i]) { 6310 bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); 6311 } 6312 } 6313 setSideBullets(firstDisplayedBullet, 'prev'); 6314 setSideBullets(lastDisplayedBullet, 'next'); 6315 } 6316 } 6317 if (params.dynamicBullets) { 6318 const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 6319 const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; 6320 const offsetProp = rtl ? 'right' : 'left'; 6321 bullets.forEach(bullet => { 6322 bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; 6323 }); 6324 } 6325 } 6326 el.forEach((subEl, subElIndex) => { 6327 if (params.type === 'fraction') { 6328 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.currentClass)).forEach(fractionEl => { 6329 fractionEl.textContent = params.formatFractionCurrent(current + 1); 6330 }); 6331 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.totalClass)).forEach(totalEl => { 6332 totalEl.textContent = params.formatFractionTotal(total); 6333 }); 6334 } 6335 if (params.type === 'progressbar') { 6336 let progressbarDirection; 6337 if (params.progressbarOpposite) { 6338 progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; 6339 } else { 6340 progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; 6341 } 6342 const scale = (current + 1) / total; 6343 let scaleX = 1; 6344 let scaleY = 1; 6345 if (progressbarDirection === 'horizontal') { 6346 scaleX = scale; 6347 } else { 6348 scaleY = scale; 6349 } 6350 subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.progressbarFillClass)).forEach(progressEl => { 6351 progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; 6352 progressEl.style.transitionDuration = `${swiper.params.speed}ms`; 6353 }); 6354 } 6355 if (params.type === 'custom' && params.renderCustom) { 6356 subEl.innerHTML = params.renderCustom(swiper, current + 1, total); 6357 if (subElIndex === 0) emit('paginationRender', subEl); 6358 } else { 6359 if (subElIndex === 0) emit('paginationRender', subEl); 6360 emit('paginationUpdate', subEl); 6361 } 6362 if (swiper.params.watchOverflow && swiper.enabled) { 6363 subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); 6364 } 6365 }); 6366 } 6367 function render() { 6368 // Render Container 6369 const params = swiper.params.pagination; 6370 if (isPaginationDisabled()) return; 6371 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; 6372 let el = swiper.pagination.el; 6373 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6374 let paginationHTML = ''; 6375 if (params.type === 'bullets') { 6376 let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 6377 if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { 6378 numberOfBullets = slidesLength; 6379 } 6380 for (let i = 0; i < numberOfBullets; i += 1) { 6381 if (params.renderBullet) { 6382 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); 6383 } else { 6384 // prettier-ignore 6385 paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}"></${params.bulletElement}>`; 6386 } 6387 } 6388 } 6389 if (params.type === 'fraction') { 6390 if (params.renderFraction) { 6391 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); 6392 } else { 6393 paginationHTML = `<span class="${params.currentClass}"></span>` + ' / ' + `<span class="${params.totalClass}"></span>`; 6394 } 6395 } 6396 if (params.type === 'progressbar') { 6397 if (params.renderProgressbar) { 6398 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); 6399 } else { 6400 paginationHTML = `<span class="${params.progressbarFillClass}"></span>`; 6401 } 6402 } 6403 swiper.pagination.bullets = []; 6404 el.forEach(subEl => { 6405 if (params.type !== 'custom') { 6406 subEl.innerHTML = paginationHTML || ''; 6407 } 6408 if (params.type === 'bullets') { 6409 swiper.pagination.bullets.push(...subEl.querySelectorAll((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_0__.c)(params.bulletClass))); 6410 } 6411 }); 6412 if (params.type !== 'custom') { 6413 emit('paginationRender', el[0]); 6414 } 6415 } 6416 function init() { 6417 swiper.params.pagination = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_1__.c)(swiper, swiper.originalParams.pagination, swiper.params.pagination, { 6418 el: 'swiper-pagination' 6419 }); 6420 const params = swiper.params.pagination; 6421 if (!params.el) return; 6422 let el; 6423 if (typeof params.el === 'string' && swiper.isElement) { 6424 el = swiper.el.querySelector(params.el); 6425 } 6426 if (!el && typeof params.el === 'string') { 6427 el = [...document.querySelectorAll(params.el)]; 6428 } 6429 if (!el) { 6430 el = params.el; 6431 } 6432 if (!el || el.length === 0) return; 6433 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { 6434 el = [...swiper.el.querySelectorAll(params.el)]; 6435 // check if it belongs to another nested Swiper 6436 if (el.length > 1) { 6437 el = el.filter(subEl => { 6438 if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.a)(subEl, '.swiper')[0] !== swiper.el) return false; 6439 return true; 6440 })[0]; 6441 } 6442 } 6443 if (Array.isArray(el) && el.length === 1) el = el[0]; 6444 Object.assign(swiper.pagination, { 6445 el 6446 }); 6447 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6448 el.forEach(subEl => { 6449 if (params.type === 'bullets' && params.clickable) { 6450 subEl.classList.add(...(params.clickableClass || '').split(' ')); 6451 } 6452 subEl.classList.add(params.modifierClass + params.type); 6453 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 6454 if (params.type === 'bullets' && params.dynamicBullets) { 6455 subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); 6456 dynamicBulletIndex = 0; 6457 if (params.dynamicMainBullets < 1) { 6458 params.dynamicMainBullets = 1; 6459 } 6460 } 6461 if (params.type === 'progressbar' && params.progressbarOpposite) { 6462 subEl.classList.add(params.progressbarOppositeClass); 6463 } 6464 if (params.clickable) { 6465 subEl.addEventListener('click', onBulletClick); 6466 } 6467 if (!swiper.enabled) { 6468 subEl.classList.add(params.lockClass); 6469 } 6470 }); 6471 } 6472 function destroy() { 6473 const params = swiper.params.pagination; 6474 if (isPaginationDisabled()) return; 6475 let el = swiper.pagination.el; 6476 if (el) { 6477 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6478 el.forEach(subEl => { 6479 subEl.classList.remove(params.hiddenClass); 6480 subEl.classList.remove(params.modifierClass + params.type); 6481 subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 6482 if (params.clickable) { 6483 subEl.classList.remove(...(params.clickableClass || '').split(' ')); 6484 subEl.removeEventListener('click', onBulletClick); 6485 } 6486 }); 6487 } 6488 if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); 6489 } 6490 on('changeDirection', () => { 6491 if (!swiper.pagination || !swiper.pagination.el) return; 6492 const params = swiper.params.pagination; 6493 let { 6494 el 6495 } = swiper.pagination; 6496 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6497 el.forEach(subEl => { 6498 subEl.classList.remove(params.horizontalClass, params.verticalClass); 6499 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 6500 }); 6501 }); 6502 on('init', () => { 6503 if (swiper.params.pagination.enabled === false) { 6504 // eslint-disable-next-line 6505 disable(); 6506 } else { 6507 init(); 6508 render(); 6509 update(); 6510 } 6511 }); 6512 on('activeIndexChange', () => { 6513 if (typeof swiper.snapIndex === 'undefined') { 6514 update(); 6515 } 6516 }); 6517 on('snapIndexChange', () => { 6518 update(); 6519 }); 6520 on('snapGridLengthChange', () => { 6521 render(); 6522 update(); 6523 }); 6524 on('destroy', () => { 6525 destroy(); 6526 }); 6527 on('enable disable', () => { 6528 let { 6529 el 6530 } = swiper.pagination; 6531 if (el) { 6532 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6533 el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); 6534 } 6535 }); 6536 on('lock unlock', () => { 6537 update(); 6538 }); 6539 on('click', (_s, e) => { 6540 const targetEl = e.target; 6541 const el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(swiper.pagination.el); 6542 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { 6543 if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; 6544 const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); 6545 if (isHidden === true) { 6546 emit('paginationShow'); 6547 } else { 6548 emit('paginationHide'); 6549 } 6550 el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); 6551 } 6552 }); 6553 const enable = () => { 6554 swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); 6555 let { 6556 el 6557 } = swiper.pagination; 6558 if (el) { 6559 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6560 el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); 6561 } 6562 init(); 6563 render(); 6564 update(); 6565 }; 6566 const disable = () => { 6567 swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); 6568 let { 6569 el 6570 } = swiper.pagination; 6571 if (el) { 6572 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_2__.m)(el); 6573 el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); 6574 } 6575 destroy(); 6576 }; 6577 Object.assign(swiper.pagination, { 6578 enable, 6579 disable, 6580 render, 6581 update, 6582 init, 6583 destroy 6584 }); 6585} 6586 6587 6588 6589 6590/***/ }), 6591
vendor: 4,718 bytes, lines 6592-6731
6592/***/ "./node_modules/swiper/modules/parallax.mjs": 6593/*!**************************************************!*\ 6594 !*** ./node_modules/swiper/modules/parallax.mjs ***! 6595 \**************************************************/ 6596/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6597 6598"use strict"; 6599__webpack_require__.r(__webpack_exports__); 6600/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6601/* harmony export */ "default": function() { return /* binding */ Parallax; } 6602/* harmony export */ }); 6603/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6604 6605 6606function Parallax(_ref) { 6607 let { 6608 swiper, 6609 extendParams, 6610 on 6611 } = _ref; 6612 extendParams({ 6613 parallax: { 6614 enabled: false 6615 } 6616 }); 6617 const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; 6618 const setTransform = (el, progress) => { 6619 const { 6620 rtl 6621 } = swiper; 6622 const rtlFactor = rtl ? -1 : 1; 6623 const p = el.getAttribute('data-swiper-parallax') || '0'; 6624 let x = el.getAttribute('data-swiper-parallax-x'); 6625 let y = el.getAttribute('data-swiper-parallax-y'); 6626 const scale = el.getAttribute('data-swiper-parallax-scale'); 6627 const opacity = el.getAttribute('data-swiper-parallax-opacity'); 6628 const rotate = el.getAttribute('data-swiper-parallax-rotate'); 6629 if (x || y) { 6630 x = x || '0'; 6631 y = y || '0'; 6632 } else if (swiper.isHorizontal()) { 6633 x = p; 6634 y = '0'; 6635 } else { 6636 y = p; 6637 x = '0'; 6638 } 6639 if (x.indexOf('%') >= 0) { 6640 x = `${parseInt(x, 10) * progress * rtlFactor}%`; 6641 } else { 6642 x = `${x * progress * rtlFactor}px`; 6643 } 6644 if (y.indexOf('%') >= 0) { 6645 y = `${parseInt(y, 10) * progress}%`; 6646 } else { 6647 y = `${y * progress}px`; 6648 } 6649 if (typeof opacity !== 'undefined' && opacity !== null) { 6650 const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); 6651 el.style.opacity = currentOpacity; 6652 } 6653 let transform = `translate3d(${x}, ${y}, 0px)`; 6654 if (typeof scale !== 'undefined' && scale !== null) { 6655 const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); 6656 transform += ` scale(${currentScale})`; 6657 } 6658 if (rotate && typeof rotate !== 'undefined' && rotate !== null) { 6659 const currentRotate = rotate * progress * -1; 6660 transform += ` rotate(${currentRotate}deg)`; 6661 } 6662 el.style.transform = transform; 6663 }; 6664 const setTranslate = () => { 6665 const { 6666 el, 6667 slides, 6668 progress, 6669 snapGrid, 6670 isElement 6671 } = swiper; 6672 const elements = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(el, elementsSelector); 6673 if (swiper.isElement) { 6674 elements.push(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.hostEl, elementsSelector)); 6675 } 6676 elements.forEach(subEl => { 6677 setTransform(subEl, progress); 6678 }); 6679 slides.forEach((slideEl, slideIndex) => { 6680 let slideProgress = slideEl.progress; 6681 if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { 6682 slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); 6683 } 6684 slideProgress = Math.min(Math.max(slideProgress, -1), 1); 6685 slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { 6686 setTransform(subEl, slideProgress); 6687 }); 6688 }); 6689 }; 6690 const setTransition = function (duration) { 6691 if (duration === void 0) { 6692 duration = swiper.params.speed; 6693 } 6694 const { 6695 el, 6696 hostEl 6697 } = swiper; 6698 const elements = [...el.querySelectorAll(elementsSelector)]; 6699 if (swiper.isElement) { 6700 elements.push(...hostEl.querySelectorAll(elementsSelector)); 6701 } 6702 elements.forEach(parallaxEl => { 6703 let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; 6704 if (duration === 0) parallaxDuration = 0; 6705 parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; 6706 }); 6707 }; 6708 on('beforeInit', () => { 6709 if (!swiper.params.parallax.enabled) return; 6710 swiper.params.watchSlidesProgress = true; 6711 swiper.originalParams.watchSlidesProgress = true; 6712 }); 6713 on('init', () => { 6714 if (!swiper.params.parallax.enabled) return; 6715 setTranslate(); 6716 }); 6717 on('setTranslate', () => { 6718 if (!swiper.params.parallax.enabled) return; 6719 setTranslate(); 6720 }); 6721 on('setTransition', (_swiper, duration) => { 6722 if (!swiper.params.parallax.enabled) return; 6723 setTransition(duration); 6724 }); 6725} 6726 6727 6728 6729 6730/***/ }), 6731
vendor: 12,551 bytes, lines 6732-7116
6732/***/ "./node_modules/swiper/modules/scrollbar.mjs": 6733/*!***************************************************!*\ 6734 !*** ./node_modules/swiper/modules/scrollbar.mjs ***! 6735 \***************************************************/ 6736/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 6737 6738"use strict"; 6739__webpack_require__.r(__webpack_exports__); 6740/* harmony export */ __webpack_require__.d(__webpack_exports__, { 6741/* harmony export */ "default": function() { return /* binding */ Scrollbar; } 6742/* harmony export */ }); 6743/* 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"); 6744/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 6745/* 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"); 6746/* 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"); 6747 6748 6749 6750 6751 6752function Scrollbar(_ref) { 6753 let { 6754 swiper, 6755 extendParams, 6756 on, 6757 emit 6758 } = _ref; 6759 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 6760 let isTouched = false; 6761 let timeout = null; 6762 let dragTimeout = null; 6763 let dragStartPos; 6764 let dragSize; 6765 let trackSize; 6766 let divider; 6767 extendParams({ 6768 scrollbar: { 6769 el: null, 6770 dragSize: 'auto', 6771 hide: false, 6772 draggable: false, 6773 snapOnRelease: true, 6774 lockClass: 'swiper-scrollbar-lock', 6775 dragClass: 'swiper-scrollbar-drag', 6776 scrollbarDisabledClass: 'swiper-scrollbar-disabled', 6777 horizontalClass: `swiper-scrollbar-horizontal`, 6778 verticalClass: `swiper-scrollbar-vertical` 6779 } 6780 }); 6781 swiper.scrollbar = { 6782 el: null, 6783 dragEl: null 6784 }; 6785 function setTranslate() { 6786 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 6787 const { 6788 scrollbar, 6789 rtlTranslate: rtl 6790 } = swiper; 6791 const { 6792 dragEl, 6793 el 6794 } = scrollbar; 6795 const params = swiper.params.scrollbar; 6796 const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; 6797 let newSize = dragSize; 6798 let newPos = (trackSize - dragSize) * progress; 6799 if (rtl) { 6800 newPos = -newPos; 6801 if (newPos > 0) { 6802 newSize = dragSize - newPos; 6803 newPos = 0; 6804 } else if (-newPos + dragSize > trackSize) { 6805 newSize = trackSize + newPos; 6806 } 6807 } else if (newPos < 0) { 6808 newSize = dragSize + newPos; 6809 newPos = 0; 6810 } else if (newPos + dragSize > trackSize) { 6811 newSize = trackSize - newPos; 6812 } 6813 if (swiper.isHorizontal()) { 6814 dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; 6815 dragEl.style.width = `${newSize}px`; 6816 } else { 6817 dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; 6818 dragEl.style.height = `${newSize}px`; 6819 } 6820 if (params.hide) { 6821 clearTimeout(timeout); 6822 el.style.opacity = 1; 6823 timeout = setTimeout(() => { 6824 el.style.opacity = 0; 6825 el.style.transitionDuration = '400ms'; 6826 }, 1000); 6827 } 6828 } 6829 function setTransition(duration) { 6830 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 6831 swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; 6832 } 6833 function updateSize() { 6834 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 6835 const { 6836 scrollbar 6837 } = swiper; 6838 const { 6839 dragEl, 6840 el 6841 } = scrollbar; 6842 dragEl.style.width = ''; 6843 dragEl.style.height = ''; 6844 trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; 6845 divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); 6846 if (swiper.params.scrollbar.dragSize === 'auto') { 6847 dragSize = trackSize * divider; 6848 } else { 6849 dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); 6850 } 6851 if (swiper.isHorizontal()) { 6852 dragEl.style.width = `${dragSize}px`; 6853 } else { 6854 dragEl.style.height = `${dragSize}px`; 6855 } 6856 if (divider >= 1) { 6857 el.style.display = 'none'; 6858 } else { 6859 el.style.display = ''; 6860 } 6861 if (swiper.params.scrollbar.hide) { 6862 el.style.opacity = 0; 6863 } 6864 if (swiper.params.watchOverflow && swiper.enabled) { 6865 scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); 6866 } 6867 } 6868 function getPointerPosition(e) { 6869 return swiper.isHorizontal() ? e.clientX : e.clientY; 6870 } 6871 function setDragPosition(e) { 6872 const { 6873 scrollbar, 6874 rtlTranslate: rtl 6875 } = swiper; 6876 const { 6877 el 6878 } = scrollbar; 6879 let positionRatio; 6880 positionRatio = (getPointerPosition(e) - (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); 6881 positionRatio = Math.max(Math.min(positionRatio, 1), 0); 6882 if (rtl) { 6883 positionRatio = 1 - positionRatio; 6884 } 6885 const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; 6886 swiper.updateProgress(position); 6887 swiper.setTranslate(position); 6888 swiper.updateActiveIndex(); 6889 swiper.updateSlidesClasses(); 6890 } 6891 function onDragStart(e) { 6892 const params = swiper.params.scrollbar; 6893 const { 6894 scrollbar, 6895 wrapperEl 6896 } = swiper; 6897 const { 6898 el, 6899 dragEl 6900 } = scrollbar; 6901 isTouched = true; 6902 dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; 6903 e.preventDefault(); 6904 e.stopPropagation(); 6905 wrapperEl.style.transitionDuration = '100ms'; 6906 dragEl.style.transitionDuration = '100ms'; 6907 setDragPosition(e); 6908 clearTimeout(dragTimeout); 6909 el.style.transitionDuration = '0ms'; 6910 if (params.hide) { 6911 el.style.opacity = 1; 6912 } 6913 if (swiper.params.cssMode) { 6914 swiper.wrapperEl.style['scroll-snap-type'] = 'none'; 6915 } 6916 emit('scrollbarDragStart', e); 6917 } 6918 function onDragMove(e) { 6919 const { 6920 scrollbar, 6921 wrapperEl 6922 } = swiper; 6923 const { 6924 el, 6925 dragEl 6926 } = scrollbar; 6927 if (!isTouched) return; 6928 if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; 6929 setDragPosition(e); 6930 wrapperEl.style.transitionDuration = '0ms'; 6931 el.style.transitionDuration = '0ms'; 6932 dragEl.style.transitionDuration = '0ms'; 6933 emit('scrollbarDragMove', e); 6934 } 6935 function onDragEnd(e) { 6936 const params = swiper.params.scrollbar; 6937 const { 6938 scrollbar, 6939 wrapperEl 6940 } = swiper; 6941 const { 6942 el 6943 } = scrollbar; 6944 if (!isTouched) return; 6945 isTouched = false; 6946 if (swiper.params.cssMode) { 6947 swiper.wrapperEl.style['scroll-snap-type'] = ''; 6948 wrapperEl.style.transitionDuration = ''; 6949 } 6950 if (params.hide) { 6951 clearTimeout(dragTimeout); 6952 dragTimeout = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 6953 el.style.opacity = 0; 6954 el.style.transitionDuration = '400ms'; 6955 }, 1000); 6956 } 6957 emit('scrollbarDragEnd', e); 6958 if (params.snapOnRelease) { 6959 swiper.slideToClosest(); 6960 } 6961 } 6962 function events(method) { 6963 const { 6964 scrollbar, 6965 params 6966 } = swiper; 6967 const el = scrollbar.el; 6968 if (!el) return; 6969 const target = el; 6970 const activeListener = params.passiveListeners ? { 6971 passive: false, 6972 capture: false 6973 } : false; 6974 const passiveListener = params.passiveListeners ? { 6975 passive: true, 6976 capture: false 6977 } : false; 6978 if (!target) return; 6979 const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 6980 target[eventMethod]('pointerdown', onDragStart, activeListener); 6981 document[eventMethod]('pointermove', onDragMove, activeListener); 6982 document[eventMethod]('pointerup', onDragEnd, passiveListener); 6983 } 6984 function enableDraggable() { 6985 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 6986 events('on'); 6987 } 6988 function disableDraggable() { 6989 if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; 6990 events('off'); 6991 } 6992 function init() { 6993 const { 6994 scrollbar, 6995 el: swiperEl 6996 } = swiper; 6997 swiper.params.scrollbar = (0,_shared_create_element_if_not_defined_mjs__WEBPACK_IMPORTED_MODULE_2__.c)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { 6998 el: 'swiper-scrollbar' 6999 }); 7000 const params = swiper.params.scrollbar; 7001 if (!params.el) return; 7002 let el; 7003 if (typeof params.el === 'string' && swiper.isElement) { 7004 el = swiper.el.querySelector(params.el); 7005 } 7006 if (!el && typeof params.el === 'string') { 7007 el = document.querySelectorAll(params.el); 7008 if (!el.length) return; 7009 } else if (!el) { 7010 el = params.el; 7011 } 7012 if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { 7013 el = swiperEl.querySelector(params.el); 7014 } 7015 if (el.length > 0) el = el[0]; 7016 el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 7017 let dragEl; 7018 if (el) { 7019 dragEl = el.querySelector((0,_shared_classes_to_selector_mjs__WEBPACK_IMPORTED_MODULE_3__.c)(swiper.params.scrollbar.dragClass)); 7020 if (!dragEl) { 7021 dragEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.scrollbar.dragClass); 7022 el.append(dragEl); 7023 } 7024 } 7025 Object.assign(scrollbar, { 7026 el, 7027 dragEl 7028 }); 7029 if (params.draggable) { 7030 enableDraggable(); 7031 } 7032 if (el) { 7033 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 7034 } 7035 } 7036 function destroy() { 7037 const params = swiper.params.scrollbar; 7038 const el = swiper.scrollbar.el; 7039 if (el) { 7040 el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); 7041 } 7042 disableDraggable(); 7043 } 7044 on('changeDirection', () => { 7045 if (!swiper.scrollbar || !swiper.scrollbar.el) return; 7046 const params = swiper.params.scrollbar; 7047 let { 7048 el 7049 } = swiper.scrollbar; 7050 el = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.m)(el); 7051 el.forEach(subEl => { 7052 subEl.classList.remove(params.horizontalClass, params.verticalClass); 7053 subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); 7054 }); 7055 }); 7056 on('init', () => { 7057 if (swiper.params.scrollbar.enabled === false) { 7058 // eslint-disable-next-line 7059 disable(); 7060 } else { 7061 init(); 7062 updateSize(); 7063 setTranslate(); 7064 } 7065 }); 7066 on('update resize observerUpdate lock unlock changeDirection', () => { 7067 updateSize(); 7068 }); 7069 on('setTranslate', () => { 7070 setTranslate(); 7071 }); 7072 on('setTransition', (_s, duration) => { 7073 setTransition(duration); 7074 }); 7075 on('enable disable', () => { 7076 const { 7077 el 7078 } = swiper.scrollbar; 7079 if (el) { 7080 el.classList[swiper.enabled ? 'remove' : 'add'](...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.lockClass)); 7081 } 7082 }); 7083 on('destroy', () => { 7084 destroy(); 7085 }); 7086 const enable = () => { 7087 swiper.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 7088 if (swiper.scrollbar.el) { 7089 swiper.scrollbar.el.classList.remove(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 7090 } 7091 init(); 7092 updateSize(); 7093 setTranslate(); 7094 }; 7095 const disable = () => { 7096 swiper.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 7097 if (swiper.scrollbar.el) { 7098 swiper.scrollbar.el.classList.add(...(0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.i)(swiper.params.scrollbar.scrollbarDisabledClass)); 7099 } 7100 destroy(); 7101 }; 7102 Object.assign(swiper.scrollbar, { 7103 enable, 7104 disable, 7105 updateSize, 7106 setTranslate, 7107 init, 7108 destroy 7109 }); 7110} 7111 7112 7113 7114 7115/***/ }), 7116
vendor: 8,116 bytes, lines 7117-7326
7117/***/ "./node_modules/swiper/modules/thumbs.mjs": 7118/*!************************************************!*\ 7119 !*** ./node_modules/swiper/modules/thumbs.mjs ***! 7120 \************************************************/ 7121/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 7122 7123"use strict"; 7124__webpack_require__.r(__webpack_exports__); 7125/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7126/* harmony export */ "default": function() { return /* binding */ Thumb; } 7127/* harmony export */ }); 7128/* 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"); 7129/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 7130 7131 7132 7133function Thumb(_ref) { 7134 let { 7135 swiper, 7136 extendParams, 7137 on 7138 } = _ref; 7139 extendParams({ 7140 thumbs: { 7141 swiper: null, 7142 multipleActiveThumbs: true, 7143 autoScrollOffset: 0, 7144 slideThumbActiveClass: 'swiper-slide-thumb-active', 7145 thumbsContainerClass: 'swiper-thumbs' 7146 } 7147 }); 7148 let initialized = false; 7149 let swiperCreated = false; 7150 swiper.thumbs = { 7151 swiper: null 7152 }; 7153 function onThumbClick() { 7154 const thumbsSwiper = swiper.thumbs.swiper; 7155 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 7156 const clickedIndex = thumbsSwiper.clickedIndex; 7157 const clickedSlide = thumbsSwiper.clickedSlide; 7158 if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; 7159 if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; 7160 let slideToIndex; 7161 if (thumbsSwiper.params.loop) { 7162 slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 7163 } else { 7164 slideToIndex = clickedIndex; 7165 } 7166 if (swiper.params.loop) { 7167 swiper.slideToLoop(slideToIndex); 7168 } else { 7169 swiper.slideTo(slideToIndex); 7170 } 7171 } 7172 function init() { 7173 const { 7174 thumbs: thumbsParams 7175 } = swiper.params; 7176 if (initialized) return false; 7177 initialized = true; 7178 const SwiperClass = swiper.constructor; 7179 if (thumbsParams.swiper instanceof SwiperClass) { 7180 swiper.thumbs.swiper = thumbsParams.swiper; 7181 Object.assign(swiper.thumbs.swiper.originalParams, { 7182 watchSlidesProgress: true, 7183 slideToClickedSlide: false 7184 }); 7185 Object.assign(swiper.thumbs.swiper.params, { 7186 watchSlidesProgress: true, 7187 slideToClickedSlide: false 7188 }); 7189 swiper.thumbs.swiper.update(); 7190 } else if ((0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.l)(thumbsParams.swiper)) { 7191 const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); 7192 Object.assign(thumbsSwiperParams, { 7193 watchSlidesProgress: true, 7194 slideToClickedSlide: false 7195 }); 7196 swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); 7197 swiperCreated = true; 7198 } 7199 swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); 7200 swiper.thumbs.swiper.on('tap', onThumbClick); 7201 return true; 7202 } 7203 function update(initial) { 7204 const thumbsSwiper = swiper.thumbs.swiper; 7205 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 7206 const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; 7207 7208 // Activate thumbs 7209 let thumbsToActivate = 1; 7210 const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; 7211 if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { 7212 thumbsToActivate = swiper.params.slidesPerView; 7213 } 7214 if (!swiper.params.thumbs.multipleActiveThumbs) { 7215 thumbsToActivate = 1; 7216 } 7217 thumbsToActivate = Math.floor(thumbsToActivate); 7218 thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); 7219 if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { 7220 for (let i = 0; i < thumbsToActivate; i += 1) { 7221 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { 7222 slideEl.classList.add(thumbActiveClass); 7223 }); 7224 } 7225 } else { 7226 for (let i = 0; i < thumbsToActivate; i += 1) { 7227 if (thumbsSwiper.slides[swiper.realIndex + i]) { 7228 thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); 7229 } 7230 } 7231 } 7232 const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; 7233 const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; 7234 if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { 7235 const currentThumbsIndex = thumbsSwiper.activeIndex; 7236 let newThumbsIndex; 7237 let direction; 7238 if (thumbsSwiper.params.loop) { 7239 const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; 7240 newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); 7241 direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; 7242 } else { 7243 newThumbsIndex = swiper.realIndex; 7244 direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; 7245 } 7246 if (useOffset) { 7247 newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; 7248 } 7249 if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { 7250 if (thumbsSwiper.params.centeredSlides) { 7251 if (newThumbsIndex > currentThumbsIndex) { 7252 newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; 7253 } else { 7254 newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; 7255 } 7256 } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; 7257 thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); 7258 } 7259 } 7260 } 7261 on('beforeInit', () => { 7262 const { 7263 thumbs 7264 } = swiper.params; 7265 if (!thumbs || !thumbs.swiper) return; 7266 if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { 7267 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 7268 const getThumbsElementAndInit = () => { 7269 const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; 7270 if (thumbsElement && thumbsElement.swiper) { 7271 thumbs.swiper = thumbsElement.swiper; 7272 init(); 7273 update(true); 7274 } else if (thumbsElement) { 7275 const eventName = `${swiper.params.eventsPrefix}init`; 7276 const onThumbsSwiper = e => { 7277 thumbs.swiper = e.detail[0]; 7278 thumbsElement.removeEventListener(eventName, onThumbsSwiper); 7279 init(); 7280 update(true); 7281 thumbs.swiper.update(); 7282 swiper.update(); 7283 }; 7284 thumbsElement.addEventListener(eventName, onThumbsSwiper); 7285 } 7286 return thumbsElement; 7287 }; 7288 const watchForThumbsToAppear = () => { 7289 if (swiper.destroyed) return; 7290 const thumbsElement = getThumbsElementAndInit(); 7291 if (!thumbsElement) { 7292 requestAnimationFrame(watchForThumbsToAppear); 7293 } 7294 }; 7295 requestAnimationFrame(watchForThumbsToAppear); 7296 } else { 7297 init(); 7298 update(true); 7299 } 7300 }); 7301 on('slideChange update resize observerUpdate', () => { 7302 update(); 7303 }); 7304 on('setTransition', (_s, duration) => { 7305 const thumbsSwiper = swiper.thumbs.swiper; 7306 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 7307 thumbsSwiper.setTransition(duration); 7308 }); 7309 on('beforeDestroy', () => { 7310 const thumbsSwiper = swiper.thumbs.swiper; 7311 if (!thumbsSwiper || thumbsSwiper.destroyed) return; 7312 if (swiperCreated) { 7313 thumbsSwiper.destroy(); 7314 } 7315 }); 7316 Object.assign(swiper.thumbs, { 7317 init, 7318 update 7319 }); 7320} 7321 7322 7323 7324 7325/***/ }), 7326
vendor: 12,423 bytes, lines 7327-7692
7327/***/ "./node_modules/swiper/modules/virtual.mjs": 7328/*!*************************************************!*\ 7329 !*** ./node_modules/swiper/modules/virtual.mjs ***! 7330 \*************************************************/ 7331/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 7332 7333"use strict"; 7334__webpack_require__.r(__webpack_exports__); 7335/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7336/* harmony export */ "default": function() { return /* binding */ Virtual; } 7337/* harmony export */ }); 7338/* 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"); 7339/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 7340 7341 7342 7343function Virtual(_ref) { 7344 let { 7345 swiper, 7346 extendParams, 7347 on, 7348 emit 7349 } = _ref; 7350 extendParams({ 7351 virtual: { 7352 enabled: false, 7353 slides: [], 7354 cache: true, 7355 renderSlide: null, 7356 renderExternal: null, 7357 renderExternalUpdate: true, 7358 addSlidesBefore: 0, 7359 addSlidesAfter: 0 7360 } 7361 }); 7362 let cssModeTimeout; 7363 const document = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 7364 swiper.virtual = { 7365 cache: {}, 7366 from: undefined, 7367 to: undefined, 7368 slides: [], 7369 offset: 0, 7370 slidesGrid: [] 7371 }; 7372 const tempDOM = document.createElement('div'); 7373 function renderSlide(slide, index) { 7374 const params = swiper.params.virtual; 7375 if (params.cache && swiper.virtual.cache[index]) { 7376 return swiper.virtual.cache[index]; 7377 } 7378 // eslint-disable-next-line 7379 let slideEl; 7380 if (params.renderSlide) { 7381 slideEl = params.renderSlide.call(swiper, slide, index); 7382 if (typeof slideEl === 'string') { 7383 tempDOM.innerHTML = slideEl; 7384 slideEl = tempDOM.children[0]; 7385 } 7386 } else if (swiper.isElement) { 7387 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('swiper-slide'); 7388 } else { 7389 slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.slideClass); 7390 } 7391 slideEl.setAttribute('data-swiper-slide-index', index); 7392 if (!params.renderSlide) { 7393 slideEl.innerHTML = slide; 7394 } 7395 if (params.cache) { 7396 swiper.virtual.cache[index] = slideEl; 7397 } 7398 return slideEl; 7399 } 7400 function update(force, beforeInit) { 7401 const { 7402 slidesPerView, 7403 slidesPerGroup, 7404 centeredSlides, 7405 loop: isLoop, 7406 initialSlide 7407 } = swiper.params; 7408 if (beforeInit && !isLoop && initialSlide > 0) { 7409 return; 7410 } 7411 const { 7412 addSlidesBefore, 7413 addSlidesAfter 7414 } = swiper.params.virtual; 7415 const { 7416 from: previousFrom, 7417 to: previousTo, 7418 slides, 7419 slidesGrid: previousSlidesGrid, 7420 offset: previousOffset 7421 } = swiper.virtual; 7422 if (!swiper.params.cssMode) { 7423 swiper.updateActiveIndex(); 7424 } 7425 const activeIndex = swiper.activeIndex || 0; 7426 let offsetProp; 7427 if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; 7428 let slidesAfter; 7429 let slidesBefore; 7430 if (centeredSlides) { 7431 slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; 7432 slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; 7433 } else { 7434 slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; 7435 slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; 7436 } 7437 let from = activeIndex - slidesBefore; 7438 let to = activeIndex + slidesAfter; 7439 if (!isLoop) { 7440 from = Math.max(from, 0); 7441 to = Math.min(to, slides.length - 1); 7442 } 7443 let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); 7444 if (isLoop && activeIndex >= slidesBefore) { 7445 from -= slidesBefore; 7446 if (!centeredSlides) offset += swiper.slidesGrid[0]; 7447 } else if (isLoop && activeIndex < slidesBefore) { 7448 from = -slidesBefore; 7449 if (centeredSlides) offset += swiper.slidesGrid[0]; 7450 } 7451 Object.assign(swiper.virtual, { 7452 from, 7453 to, 7454 offset, 7455 slidesGrid: swiper.slidesGrid, 7456 slidesBefore, 7457 slidesAfter 7458 }); 7459 function onRendered() { 7460 swiper.updateSlides(); 7461 swiper.updateProgress(); 7462 swiper.updateSlidesClasses(); 7463 emit('virtualUpdate'); 7464 } 7465 if (previousFrom === from && previousTo === to && !force) { 7466 if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { 7467 swiper.slides.forEach(slideEl => { 7468 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 7469 }); 7470 } 7471 swiper.updateProgress(); 7472 emit('virtualUpdate'); 7473 return; 7474 } 7475 if (swiper.params.virtual.renderExternal) { 7476 swiper.params.virtual.renderExternal.call(swiper, { 7477 offset, 7478 from, 7479 to, 7480 slides: function getSlides() { 7481 const slidesToRender = []; 7482 for (let i = from; i <= to; i += 1) { 7483 slidesToRender.push(slides[i]); 7484 } 7485 return slidesToRender; 7486 }() 7487 }); 7488 if (swiper.params.virtual.renderExternalUpdate) { 7489 onRendered(); 7490 } else { 7491 emit('virtualUpdate'); 7492 } 7493 return; 7494 } 7495 const prependIndexes = []; 7496 const appendIndexes = []; 7497 const getSlideIndex = index => { 7498 let slideIndex = index; 7499 if (index < 0) { 7500 slideIndex = slides.length + index; 7501 } else if (slideIndex >= slides.length) { 7502 // eslint-disable-next-line 7503 slideIndex = slideIndex - slides.length; 7504 } 7505 return slideIndex; 7506 }; 7507 if (force) { 7508 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { 7509 slideEl.remove(); 7510 }); 7511 } else { 7512 for (let i = previousFrom; i <= previousTo; i += 1) { 7513 if (i < from || i > to) { 7514 const slideIndex = getSlideIndex(i); 7515 swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { 7516 slideEl.remove(); 7517 }); 7518 } 7519 } 7520 } 7521 const loopFrom = isLoop ? -slides.length : 0; 7522 const loopTo = isLoop ? slides.length * 2 : slides.length; 7523 for (let i = loopFrom; i < loopTo; i += 1) { 7524 if (i >= from && i <= to) { 7525 const slideIndex = getSlideIndex(i); 7526 if (typeof previousTo === 'undefined' || force) { 7527 appendIndexes.push(slideIndex); 7528 } else { 7529 if (i > previousTo) appendIndexes.push(slideIndex); 7530 if (i < previousFrom) prependIndexes.push(slideIndex); 7531 } 7532 } 7533 } 7534 appendIndexes.forEach(index => { 7535 swiper.slidesEl.append(renderSlide(slides[index], index)); 7536 }); 7537 if (isLoop) { 7538 for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { 7539 const index = prependIndexes[i]; 7540 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 7541 } 7542 } else { 7543 prependIndexes.sort((a, b) => b - a); 7544 prependIndexes.forEach(index => { 7545 swiper.slidesEl.prepend(renderSlide(slides[index], index)); 7546 }); 7547 } 7548 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { 7549 slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; 7550 }); 7551 onRendered(); 7552 } 7553 function appendSlide(slides) { 7554 if (typeof slides === 'object' && 'length' in slides) { 7555 for (let i = 0; i < slides.length; i += 1) { 7556 if (slides[i]) swiper.virtual.slides.push(slides[i]); 7557 } 7558 } else { 7559 swiper.virtual.slides.push(slides); 7560 } 7561 update(true); 7562 } 7563 function prependSlide(slides) { 7564 const activeIndex = swiper.activeIndex; 7565 let newActiveIndex = activeIndex + 1; 7566 let numberOfNewSlides = 1; 7567 if (Array.isArray(slides)) { 7568 for (let i = 0; i < slides.length; i += 1) { 7569 if (slides[i]) swiper.virtual.slides.unshift(slides[i]); 7570 } 7571 newActiveIndex = activeIndex + slides.length; 7572 numberOfNewSlides = slides.length; 7573 } else { 7574 swiper.virtual.slides.unshift(slides); 7575 } 7576 if (swiper.params.virtual.cache) { 7577 const cache = swiper.virtual.cache; 7578 const newCache = {}; 7579 Object.keys(cache).forEach(cachedIndex => { 7580 const cachedEl = cache[cachedIndex]; 7581 const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); 7582 if (cachedElIndex) { 7583 cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); 7584 } 7585 newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; 7586 }); 7587 swiper.virtual.cache = newCache; 7588 } 7589 update(true); 7590 swiper.slideTo(newActiveIndex, 0); 7591 } 7592 function removeSlide(slidesIndexes) { 7593 if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; 7594 let activeIndex = swiper.activeIndex; 7595 if (Array.isArray(slidesIndexes)) { 7596 for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { 7597 if (swiper.params.virtual.cache) { 7598 delete swiper.virtual.cache[slidesIndexes[i]]; 7599 // shift cache indexes 7600 Object.keys(swiper.virtual.cache).forEach(key => { 7601 if (key > slidesIndexes) { 7602 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 7603 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 7604 delete swiper.virtual.cache[key]; 7605 } 7606 }); 7607 } 7608 swiper.virtual.slides.splice(slidesIndexes[i], 1); 7609 if (slidesIndexes[i] < activeIndex) activeIndex -= 1; 7610 activeIndex = Math.max(activeIndex, 0); 7611 } 7612 } else { 7613 if (swiper.params.virtual.cache) { 7614 delete swiper.virtual.cache[slidesIndexes]; 7615 // shift cache indexes 7616 Object.keys(swiper.virtual.cache).forEach(key => { 7617 if (key > slidesIndexes) { 7618 swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; 7619 swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); 7620 delete swiper.virtual.cache[key]; 7621 } 7622 }); 7623 } 7624 swiper.virtual.slides.splice(slidesIndexes, 1); 7625 if (slidesIndexes < activeIndex) activeIndex -= 1; 7626 activeIndex = Math.max(activeIndex, 0); 7627 } 7628 update(true); 7629 swiper.slideTo(activeIndex, 0); 7630 } 7631 function removeAllSlides() { 7632 swiper.virtual.slides = []; 7633 if (swiper.params.virtual.cache) { 7634 swiper.virtual.cache = {}; 7635 } 7636 update(true); 7637 swiper.slideTo(0, 0); 7638 } 7639 on('beforeInit', () => { 7640 if (!swiper.params.virtual.enabled) return; 7641 let domSlidesAssigned; 7642 if (typeof swiper.passedParams.virtual.slides === 'undefined') { 7643 const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); 7644 if (slides && slides.length) { 7645 swiper.virtual.slides = [...slides]; 7646 domSlidesAssigned = true; 7647 slides.forEach((slideEl, slideIndex) => { 7648 slideEl.setAttribute('data-swiper-slide-index', slideIndex); 7649 swiper.virtual.cache[slideIndex] = slideEl; 7650 slideEl.remove(); 7651 }); 7652 } 7653 } 7654 if (!domSlidesAssigned) { 7655 swiper.virtual.slides = swiper.params.virtual.slides; 7656 } 7657 swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); 7658 swiper.params.watchSlidesProgress = true; 7659 swiper.originalParams.watchSlidesProgress = true; 7660 update(false, true); 7661 }); 7662 on('setTranslate', () => { 7663 if (!swiper.params.virtual.enabled) return; 7664 if (swiper.params.cssMode && !swiper._immediateVirtual) { 7665 clearTimeout(cssModeTimeout); 7666 cssModeTimeout = setTimeout(() => { 7667 update(); 7668 }, 100); 7669 } else { 7670 update(); 7671 } 7672 }); 7673 on('init update resize', () => { 7674 if (!swiper.params.virtual.enabled) return; 7675 if (swiper.params.cssMode) { 7676 (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); 7677 } 7678 }); 7679 Object.assign(swiper.virtual, { 7680 appendSlide, 7681 prependSlide, 7682 removeSlide, 7683 removeAllSlides, 7684 update 7685 }); 7686} 7687 7688 7689 7690 7691/***/ }), 7692
vendor: 23,585 bytes, lines 7693-8335
7693/***/ "./node_modules/swiper/modules/zoom.mjs": 7694/*!**********************************************!*\ 7695 !*** ./node_modules/swiper/modules/zoom.mjs ***! 7696 \**********************************************/ 7697/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 7698 7699"use strict"; 7700__webpack_require__.r(__webpack_exports__); 7701/* harmony export */ __webpack_require__.d(__webpack_exports__, { 7702/* harmony export */ "default": function() { return /* binding */ Zoom; } 7703/* harmony export */ }); 7704/* 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"); 7705/* harmony import */ var _shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../shared/utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 7706 7707 7708 7709function Zoom(_ref) { 7710 let { 7711 swiper, 7712 extendParams, 7713 on, 7714 emit 7715 } = _ref; 7716 const window = (0,_shared_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 7717 extendParams({ 7718 zoom: { 7719 enabled: false, 7720 limitToOriginalSize: false, 7721 maxRatio: 3, 7722 minRatio: 1, 7723 toggle: true, 7724 containerClass: 'swiper-zoom-container', 7725 zoomedSlideClass: 'swiper-slide-zoomed' 7726 } 7727 }); 7728 swiper.zoom = { 7729 enabled: false 7730 }; 7731 let currentScale = 1; 7732 let isScaling = false; 7733 let fakeGestureTouched; 7734 let fakeGestureMoved; 7735 const evCache = []; 7736 const gesture = { 7737 originX: 0, 7738 originY: 0, 7739 slideEl: undefined, 7740 slideWidth: undefined, 7741 slideHeight: undefined, 7742 imageEl: undefined, 7743 imageWrapEl: undefined, 7744 maxRatio: 3 7745 }; 7746 const image = { 7747 isTouched: undefined, 7748 isMoved: undefined, 7749 currentX: undefined, 7750 currentY: undefined, 7751 minX: undefined, 7752 minY: undefined, 7753 maxX: undefined, 7754 maxY: undefined, 7755 width: undefined, 7756 height: undefined, 7757 startX: undefined, 7758 startY: undefined, 7759 touchesStart: {}, 7760 touchesCurrent: {} 7761 }; 7762 const velocity = { 7763 x: undefined, 7764 y: undefined, 7765 prevPositionX: undefined, 7766 prevPositionY: undefined, 7767 prevTime: undefined 7768 }; 7769 let scale = 1; 7770 Object.defineProperty(swiper.zoom, 'scale', { 7771 get() { 7772 return scale; 7773 }, 7774 set(value) { 7775 if (scale !== value) { 7776 const imageEl = gesture.imageEl; 7777 const slideEl = gesture.slideEl; 7778 emit('zoomChange', value, imageEl, slideEl); 7779 } 7780 scale = value; 7781 } 7782 }); 7783 function getDistanceBetweenTouches() { 7784 if (evCache.length < 2) return 1; 7785 const x1 = evCache[0].pageX; 7786 const y1 = evCache[0].pageY; 7787 const x2 = evCache[1].pageX; 7788 const y2 = evCache[1].pageY; 7789 const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); 7790 return distance; 7791 } 7792 function getMaxRatio() { 7793 const params = swiper.params.zoom; 7794 const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; 7795 if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { 7796 const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; 7797 return Math.min(imageMaxRatio, maxRatio); 7798 } 7799 return maxRatio; 7800 } 7801 function getScaleOrigin() { 7802 if (evCache.length < 2) return { 7803 x: null, 7804 y: null 7805 }; 7806 const box = gesture.imageEl.getBoundingClientRect(); 7807 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]; 7808 } 7809 function getSlideSelector() { 7810 return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 7811 } 7812 function eventWithinSlide(e) { 7813 const slideSelector = getSlideSelector(); 7814 if (e.target.matches(slideSelector)) return true; 7815 if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; 7816 return false; 7817 } 7818 function eventWithinZoomContainer(e) { 7819 const selector = `.${swiper.params.zoom.containerClass}`; 7820 if (e.target.matches(selector)) return true; 7821 if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; 7822 return false; 7823 } 7824 7825 // Events 7826 function onGestureStart(e) { 7827 if (e.pointerType === 'mouse') { 7828 evCache.splice(0, evCache.length); 7829 } 7830 if (!eventWithinSlide(e)) return; 7831 const params = swiper.params.zoom; 7832 fakeGestureTouched = false; 7833 fakeGestureMoved = false; 7834 evCache.push(e); 7835 if (evCache.length < 2) { 7836 return; 7837 } 7838 fakeGestureTouched = true; 7839 gesture.scaleStart = getDistanceBetweenTouches(); 7840 if (!gesture.slideEl) { 7841 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 7842 if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; 7843 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 7844 if (imageEl) { 7845 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 7846 } 7847 gesture.imageEl = imageEl; 7848 if (imageEl) { 7849 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 7850 } else { 7851 gesture.imageWrapEl = undefined; 7852 } 7853 if (!gesture.imageWrapEl) { 7854 gesture.imageEl = undefined; 7855 return; 7856 } 7857 gesture.maxRatio = getMaxRatio(); 7858 } 7859 if (gesture.imageEl) { 7860 const [originX, originY] = getScaleOrigin(); 7861 gesture.originX = originX; 7862 gesture.originY = originY; 7863 gesture.imageEl.style.transitionDuration = '0ms'; 7864 } 7865 isScaling = true; 7866 } 7867 function onGestureChange(e) { 7868 if (!eventWithinSlide(e)) return; 7869 const params = swiper.params.zoom; 7870 const zoom = swiper.zoom; 7871 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 7872 if (pointerIndex >= 0) evCache[pointerIndex] = e; 7873 if (evCache.length < 2) { 7874 return; 7875 } 7876 fakeGestureMoved = true; 7877 gesture.scaleMove = getDistanceBetweenTouches(); 7878 if (!gesture.imageEl) { 7879 return; 7880 } 7881 zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; 7882 if (zoom.scale > gesture.maxRatio) { 7883 zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; 7884 } 7885 if (zoom.scale < params.minRatio) { 7886 zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; 7887 } 7888 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 7889 } 7890 function onGestureEnd(e) { 7891 if (!eventWithinSlide(e)) return; 7892 if (e.pointerType === 'mouse' && e.type === 'pointerout') return; 7893 const params = swiper.params.zoom; 7894 const zoom = swiper.zoom; 7895 const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); 7896 if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); 7897 if (!fakeGestureTouched || !fakeGestureMoved) { 7898 return; 7899 } 7900 fakeGestureTouched = false; 7901 fakeGestureMoved = false; 7902 if (!gesture.imageEl) return; 7903 zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); 7904 gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; 7905 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 7906 currentScale = zoom.scale; 7907 isScaling = false; 7908 if (zoom.scale > 1 && gesture.slideEl) { 7909 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 7910 } else if (zoom.scale <= 1 && gesture.slideEl) { 7911 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 7912 } 7913 if (zoom.scale === 1) { 7914 gesture.originX = 0; 7915 gesture.originY = 0; 7916 gesture.slideEl = undefined; 7917 } 7918 } 7919 let allowTouchMoveTimeout; 7920 function allowTouchMove() { 7921 swiper.touchEventsData.preventTouchMoveFromPointerMove = false; 7922 } 7923 function preventTouchMove() { 7924 clearTimeout(allowTouchMoveTimeout); 7925 swiper.touchEventsData.preventTouchMoveFromPointerMove = true; 7926 allowTouchMoveTimeout = setTimeout(() => { 7927 if (swiper.destroyed) return; 7928 allowTouchMove(); 7929 }); 7930 } 7931 function onTouchStart(e) { 7932 const device = swiper.device; 7933 if (!gesture.imageEl) return; 7934 if (image.isTouched) return; 7935 if (device.android && e.cancelable) e.preventDefault(); 7936 image.isTouched = true; 7937 const event = evCache.length > 0 ? evCache[0] : e; 7938 image.touchesStart.x = event.pageX; 7939 image.touchesStart.y = event.pageY; 7940 } 7941 function onTouchMove(e) { 7942 if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { 7943 return; 7944 } 7945 const zoom = swiper.zoom; 7946 if (!gesture.imageEl) { 7947 return; 7948 } 7949 if (!image.isTouched || !gesture.slideEl) { 7950 return; 7951 } 7952 if (!image.isMoved) { 7953 image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 7954 image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 7955 image.startX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'x') || 0; 7956 image.startY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(gesture.imageWrapEl, 'y') || 0; 7957 gesture.slideWidth = gesture.slideEl.offsetWidth; 7958 gesture.slideHeight = gesture.slideEl.offsetHeight; 7959 gesture.imageWrapEl.style.transitionDuration = '0ms'; 7960 } 7961 // Define if we need image drag 7962 const scaledWidth = image.width * zoom.scale; 7963 const scaledHeight = image.height * zoom.scale; 7964 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 7965 image.maxX = -image.minX; 7966 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 7967 image.maxY = -image.minY; 7968 image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; 7969 image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; 7970 const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); 7971 if (touchesDiff > 5) { 7972 swiper.allowClick = false; 7973 } 7974 if (!image.isMoved && !isScaling) { 7975 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)) { 7976 image.isTouched = false; 7977 allowTouchMove(); 7978 return; 7979 } 7980 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)) { 7981 image.isTouched = false; 7982 allowTouchMove(); 7983 return; 7984 } 7985 } 7986 if (e.cancelable) { 7987 e.preventDefault(); 7988 } 7989 e.stopPropagation(); 7990 preventTouchMove(); 7991 image.isMoved = true; 7992 const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); 7993 const { 7994 originX, 7995 originY 7996 } = gesture; 7997 image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); 7998 image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); 7999 if (image.currentX < image.minX) { 8000 image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; 8001 } 8002 if (image.currentX > image.maxX) { 8003 image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; 8004 } 8005 if (image.currentY < image.minY) { 8006 image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; 8007 } 8008 if (image.currentY > image.maxY) { 8009 image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; 8010 } 8011 8012 // Velocity 8013 if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; 8014 if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; 8015 if (!velocity.prevTime) velocity.prevTime = Date.now(); 8016 velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; 8017 velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; 8018 if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; 8019 if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; 8020 velocity.prevPositionX = image.touchesCurrent.x; 8021 velocity.prevPositionY = image.touchesCurrent.y; 8022 velocity.prevTime = Date.now(); 8023 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 8024 } 8025 function onTouchEnd() { 8026 const zoom = swiper.zoom; 8027 if (!gesture.imageEl) return; 8028 if (!image.isTouched || !image.isMoved) { 8029 image.isTouched = false; 8030 image.isMoved = false; 8031 return; 8032 } 8033 image.isTouched = false; 8034 image.isMoved = false; 8035 let momentumDurationX = 300; 8036 let momentumDurationY = 300; 8037 const momentumDistanceX = velocity.x * momentumDurationX; 8038 const newPositionX = image.currentX + momentumDistanceX; 8039 const momentumDistanceY = velocity.y * momentumDurationY; 8040 const newPositionY = image.currentY + momentumDistanceY; 8041 8042 // Fix duration 8043 if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); 8044 if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); 8045 const momentumDuration = Math.max(momentumDurationX, momentumDurationY); 8046 image.currentX = newPositionX; 8047 image.currentY = newPositionY; 8048 // Define if we need image drag 8049 const scaledWidth = image.width * zoom.scale; 8050 const scaledHeight = image.height * zoom.scale; 8051 image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); 8052 image.maxX = -image.minX; 8053 image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); 8054 image.maxY = -image.minY; 8055 image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); 8056 image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); 8057 gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; 8058 gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; 8059 } 8060 function onTransitionEnd() { 8061 const zoom = swiper.zoom; 8062 if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { 8063 if (gesture.imageEl) { 8064 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 8065 } 8066 if (gesture.imageWrapEl) { 8067 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 8068 } 8069 gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); 8070 zoom.scale = 1; 8071 currentScale = 1; 8072 gesture.slideEl = undefined; 8073 gesture.imageEl = undefined; 8074 gesture.imageWrapEl = undefined; 8075 gesture.originX = 0; 8076 gesture.originY = 0; 8077 } 8078 } 8079 function zoomIn(e) { 8080 const zoom = swiper.zoom; 8081 const params = swiper.params.zoom; 8082 if (!gesture.slideEl) { 8083 if (e && e.target) { 8084 gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); 8085 } 8086 if (!gesture.slideEl) { 8087 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 8088 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 8089 } else { 8090 gesture.slideEl = swiper.slides[swiper.activeIndex]; 8091 } 8092 } 8093 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 8094 if (imageEl) { 8095 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 8096 } 8097 gesture.imageEl = imageEl; 8098 if (imageEl) { 8099 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 8100 } else { 8101 gesture.imageWrapEl = undefined; 8102 } 8103 } 8104 if (!gesture.imageEl || !gesture.imageWrapEl) return; 8105 if (swiper.params.cssMode) { 8106 swiper.wrapperEl.style.overflow = 'hidden'; 8107 swiper.wrapperEl.style.touchAction = 'none'; 8108 } 8109 gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); 8110 let touchX; 8111 let touchY; 8112 let offsetX; 8113 let offsetY; 8114 let diffX; 8115 let diffY; 8116 let translateX; 8117 let translateY; 8118 let imageWidth; 8119 let imageHeight; 8120 let scaledWidth; 8121 let scaledHeight; 8122 let translateMinX; 8123 let translateMinY; 8124 let translateMaxX; 8125 let translateMaxY; 8126 let slideWidth; 8127 let slideHeight; 8128 if (typeof image.touchesStart.x === 'undefined' && e) { 8129 touchX = e.pageX; 8130 touchY = e.pageY; 8131 } else { 8132 touchX = image.touchesStart.x; 8133 touchY = image.touchesStart.y; 8134 } 8135 const forceZoomRatio = typeof e === 'number' ? e : null; 8136 if (currentScale === 1 && forceZoomRatio) { 8137 touchX = undefined; 8138 touchY = undefined; 8139 image.touchesStart.x = undefined; 8140 image.touchesStart.y = undefined; 8141 } 8142 const maxRatio = getMaxRatio(); 8143 zoom.scale = forceZoomRatio || maxRatio; 8144 currentScale = forceZoomRatio || maxRatio; 8145 if (e && !(currentScale === 1 && forceZoomRatio)) { 8146 slideWidth = gesture.slideEl.offsetWidth; 8147 slideHeight = gesture.slideEl.offsetHeight; 8148 offsetX = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).left + window.scrollX; 8149 offsetY = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.b)(gesture.slideEl).top + window.scrollY; 8150 diffX = offsetX + slideWidth / 2 - touchX; 8151 diffY = offsetY + slideHeight / 2 - touchY; 8152 imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; 8153 imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; 8154 scaledWidth = imageWidth * zoom.scale; 8155 scaledHeight = imageHeight * zoom.scale; 8156 translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); 8157 translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); 8158 translateMaxX = -translateMinX; 8159 translateMaxY = -translateMinY; 8160 translateX = diffX * zoom.scale; 8161 translateY = diffY * zoom.scale; 8162 if (translateX < translateMinX) { 8163 translateX = translateMinX; 8164 } 8165 if (translateX > translateMaxX) { 8166 translateX = translateMaxX; 8167 } 8168 if (translateY < translateMinY) { 8169 translateY = translateMinY; 8170 } 8171 if (translateY > translateMaxY) { 8172 translateY = translateMaxY; 8173 } 8174 } else { 8175 translateX = 0; 8176 translateY = 0; 8177 } 8178 if (forceZoomRatio && zoom.scale === 1) { 8179 gesture.originX = 0; 8180 gesture.originY = 0; 8181 } 8182 gesture.imageWrapEl.style.transitionDuration = '300ms'; 8183 gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; 8184 gesture.imageEl.style.transitionDuration = '300ms'; 8185 gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; 8186 } 8187 function zoomOut() { 8188 const zoom = swiper.zoom; 8189 const params = swiper.params.zoom; 8190 if (!gesture.slideEl) { 8191 if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { 8192 gesture.slideEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; 8193 } else { 8194 gesture.slideEl = swiper.slides[swiper.activeIndex]; 8195 } 8196 let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); 8197 if (imageEl) { 8198 imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; 8199 } 8200 gesture.imageEl = imageEl; 8201 if (imageEl) { 8202 gesture.imageWrapEl = (0,_shared_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(gesture.imageEl, `.${params.containerClass}`)[0]; 8203 } else { 8204 gesture.imageWrapEl = undefined; 8205 } 8206 } 8207 if (!gesture.imageEl || !gesture.imageWrapEl) return; 8208 if (swiper.params.cssMode) { 8209 swiper.wrapperEl.style.overflow = ''; 8210 swiper.wrapperEl.style.touchAction = ''; 8211 } 8212 zoom.scale = 1; 8213 currentScale = 1; 8214 image.touchesStart.x = undefined; 8215 image.touchesStart.y = undefined; 8216 gesture.imageWrapEl.style.transitionDuration = '300ms'; 8217 gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; 8218 gesture.imageEl.style.transitionDuration = '300ms'; 8219 gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; 8220 gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); 8221 gesture.slideEl = undefined; 8222 gesture.originX = 0; 8223 gesture.originY = 0; 8224 } 8225 8226 // Toggle Zoom 8227 function zoomToggle(e) { 8228 const zoom = swiper.zoom; 8229 if (zoom.scale && zoom.scale !== 1) { 8230 // Zoom Out 8231 zoomOut(); 8232 } else { 8233 // Zoom In 8234 zoomIn(e); 8235 } 8236 } 8237 function getListeners() { 8238 const passiveListener = swiper.params.passiveListeners ? { 8239 passive: true, 8240 capture: false 8241 } : false; 8242 const activeListenerWithCapture = swiper.params.passiveListeners ? { 8243 passive: false, 8244 capture: true 8245 } : true; 8246 return { 8247 passiveListener, 8248 activeListenerWithCapture 8249 }; 8250 } 8251 8252 // Attach/Detach Events 8253 function enable() { 8254 const zoom = swiper.zoom; 8255 if (zoom.enabled) return; 8256 zoom.enabled = true; 8257 const { 8258 passiveListener, 8259 activeListenerWithCapture 8260 } = getListeners(); 8261 8262 // Scale image 8263 swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); 8264 swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); 8265 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 8266 swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); 8267 }); 8268 8269 // Move image 8270 swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); 8271 } 8272 function disable() { 8273 const zoom = swiper.zoom; 8274 if (!zoom.enabled) return; 8275 zoom.enabled = false; 8276 const { 8277 passiveListener, 8278 activeListenerWithCapture 8279 } = getListeners(); 8280 8281 // Scale image 8282 swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); 8283 swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); 8284 ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { 8285 swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); 8286 }); 8287 8288 // Move image 8289 swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); 8290 } 8291 on('init', () => { 8292 if (swiper.params.zoom.enabled) { 8293 enable(); 8294 } 8295 }); 8296 on('destroy', () => { 8297 disable(); 8298 }); 8299 on('touchStart', (_s, e) => { 8300 if (!swiper.zoom.enabled) return; 8301 onTouchStart(e); 8302 }); 8303 on('touchEnd', (_s, e) => { 8304 if (!swiper.zoom.enabled) return; 8305 onTouchEnd(); 8306 }); 8307 on('doubleTap', (_s, e) => { 8308 if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { 8309 zoomToggle(e); 8310 } 8311 }); 8312 on('transitionEnd', () => { 8313 if (swiper.zoom.enabled && swiper.params.zoom.enabled) { 8314 onTransitionEnd(); 8315 } 8316 }); 8317 on('slideChange', () => { 8318 if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { 8319 onTransitionEnd(); 8320 } 8321 }); 8322 Object.assign(swiper.zoom, { 8323 enable, 8324 disable, 8325 in: zoomIn, 8326 out: zoomOut, 8327 toggle: zoomToggle 8328 }); 8329} 8330 8331 8332 8333 8334/***/ }), 8335
vendor: 800 bytes, lines 8336-8359
8336/***/ "./node_modules/swiper/shared/classes-to-selector.mjs": 8337/*!************************************************************!*\ 8338 !*** ./node_modules/swiper/shared/classes-to-selector.mjs ***! 8339 \************************************************************/ 8340/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8341 8342"use strict"; 8343__webpack_require__.r(__webpack_exports__); 8344/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8345/* harmony export */ c: function() { return /* binding */ classesToSelector; } 8346/* harmony export */ }); 8347function classesToSelector(classes) { 8348 if (classes === void 0) { 8349 classes = ''; 8350 } 8351 return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line 8352 .replace(/ /g, '.')}`; 8353} 8354 8355 8356 8357 8358/***/ }), 8359
vendor: 1,439 bytes, lines 8360-8396
8360/***/ "./node_modules/swiper/shared/create-element-if-not-defined.mjs": 8361/*!**********************************************************************!*\ 8362 !*** ./node_modules/swiper/shared/create-element-if-not-defined.mjs ***! 8363 \**********************************************************************/ 8364/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8365 8366"use strict"; 8367__webpack_require__.r(__webpack_exports__); 8368/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8369/* harmony export */ c: function() { return /* binding */ createElementIfNotDefined; } 8370/* harmony export */ }); 8371/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 8372 8373 8374function createElementIfNotDefined(swiper, originalParams, params, checkProps) { 8375 if (swiper.params.createElements) { 8376 Object.keys(checkProps).forEach(key => { 8377 if (!params[key] && params.auto === true) { 8378 let element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.e)(swiper.el, `.${checkProps[key]}`)[0]; 8379 if (!element) { 8380 element = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', checkProps[key]); 8381 element.className = checkProps[key]; 8382 swiper.el.append(element); 8383 } 8384 params[key] = element; 8385 originalParams[key] = element; 8386 } 8387 }); 8388 } 8389 return params; 8390} 8391 8392 8393 8394 8395/***/ }), 8396
vendor: 1,235 bytes, lines 8397-8426
8397/***/ "./node_modules/swiper/shared/create-shadow.mjs": 8398/*!******************************************************!*\ 8399 !*** ./node_modules/swiper/shared/create-shadow.mjs ***! 8400 \******************************************************/ 8401/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8402 8403"use strict"; 8404__webpack_require__.r(__webpack_exports__); 8405/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8406/* harmony export */ c: function() { return /* binding */ createShadow; } 8407/* harmony export */ }); 8408/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 8409 8410 8411function createShadow(suffix, slideEl, side) { 8412 const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; 8413 const shadowContainer = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 8414 let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); 8415 if (!shadowEl) { 8416 shadowEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.c)('div', shadowClass.split(' ')); 8417 shadowContainer.append(shadowEl); 8418 } 8419 return shadowEl; 8420} 8421 8422 8423 8424 8425/***/ }), 8426
vendor: 2,358 bytes, lines 8427-8499
8427/***/ "./node_modules/swiper/shared/effect-init.mjs": 8428/*!****************************************************!*\ 8429 !*** ./node_modules/swiper/shared/effect-init.mjs ***! 8430 \****************************************************/ 8431/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8432 8433"use strict"; 8434__webpack_require__.r(__webpack_exports__); 8435/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8436/* harmony export */ e: function() { return /* binding */ effectInit; } 8437/* harmony export */ }); 8438function effectInit(params) { 8439 const { 8440 effect, 8441 swiper, 8442 on, 8443 setTranslate, 8444 setTransition, 8445 overwriteParams, 8446 perspective, 8447 recreateShadows, 8448 getEffectParams 8449 } = params; 8450 on('beforeInit', () => { 8451 if (swiper.params.effect !== effect) return; 8452 swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); 8453 if (perspective && perspective()) { 8454 swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); 8455 } 8456 const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; 8457 Object.assign(swiper.params, overwriteParamsResult); 8458 Object.assign(swiper.originalParams, overwriteParamsResult); 8459 }); 8460 on('setTranslate', () => { 8461 if (swiper.params.effect !== effect) return; 8462 setTranslate(); 8463 }); 8464 on('setTransition', (_s, duration) => { 8465 if (swiper.params.effect !== effect) return; 8466 setTransition(duration); 8467 }); 8468 on('transitionEnd', () => { 8469 if (swiper.params.effect !== effect) return; 8470 if (recreateShadows) { 8471 if (!getEffectParams || !getEffectParams().slideShadows) return; 8472 // remove shadows 8473 swiper.slides.forEach(slideEl => { 8474 slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); 8475 }); 8476 // create new one 8477 recreateShadows(); 8478 } 8479 }); 8480 let requireUpdateOnVirtual; 8481 on('virtualUpdate', () => { 8482 if (swiper.params.effect !== effect) return; 8483 if (!swiper.slides.length) { 8484 requireUpdateOnVirtual = true; 8485 } 8486 requestAnimationFrame(() => { 8487 if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { 8488 setTranslate(); 8489 requireUpdateOnVirtual = false; 8490 } 8491 }); 8492 }); 8493} 8494 8495 8496 8497 8498/***/ }), 8499
vendor: 1,028 bytes, lines 8500-8527
8500/***/ "./node_modules/swiper/shared/effect-target.mjs": 8501/*!******************************************************!*\ 8502 !*** ./node_modules/swiper/shared/effect-target.mjs ***! 8503 \******************************************************/ 8504/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8505 8506"use strict"; 8507__webpack_require__.r(__webpack_exports__); 8508/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8509/* harmony export */ e: function() { return /* binding */ effectTarget; } 8510/* harmony export */ }); 8511/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 8512 8513 8514function effectTarget(effectParams, slideEl) { 8515 const transformEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(slideEl); 8516 if (transformEl !== slideEl) { 8517 transformEl.style.backfaceVisibility = 'hidden'; 8518 transformEl.style['-webkit-backface-visibility'] = 'hidden'; 8519 } 8520 return transformEl; 8521} 8522 8523 8524 8525 8526/***/ }), 8527
vendor: 2,136 bytes, lines 8528-8591
8528/***/ "./node_modules/swiper/shared/effect-virtual-transition-end.mjs": 8529/*!**********************************************************************!*\ 8530 !*** ./node_modules/swiper/shared/effect-virtual-transition-end.mjs ***! 8531 \**********************************************************************/ 8532/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8533 8534"use strict"; 8535__webpack_require__.r(__webpack_exports__); 8536/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8537/* harmony export */ e: function() { return /* binding */ effectVirtualTransitionEnd; } 8538/* harmony export */ }); 8539/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 8540 8541 8542function effectVirtualTransitionEnd(_ref) { 8543 let { 8544 swiper, 8545 duration, 8546 transformElements, 8547 allSlides 8548 } = _ref; 8549 const { 8550 activeIndex 8551 } = swiper; 8552 const getSlide = el => { 8553 if (!el.parentElement) { 8554 // assume shadow root 8555 const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; 8556 return slide; 8557 } 8558 return el.parentElement; 8559 }; 8560 if (swiper.params.virtualTranslate && duration !== 0) { 8561 let eventTriggered = false; 8562 let transitionEndTarget; 8563 if (allSlides) { 8564 transitionEndTarget = transformElements; 8565 } else { 8566 transitionEndTarget = transformElements.filter(transformEl => { 8567 const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; 8568 return swiper.getSlideIndex(el) === activeIndex; 8569 }); 8570 } 8571 transitionEndTarget.forEach(el => { 8572 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_0__.k)(el, () => { 8573 if (eventTriggered) return; 8574 if (!swiper || swiper.destroyed) return; 8575 eventTriggered = true; 8576 swiper.animating = false; 8577 const evt = new window.CustomEvent('transitionend', { 8578 bubbles: true, 8579 cancelable: true 8580 }); 8581 swiper.wrapperEl.dispatchEvent(evt); 8582 }); 8583 }); 8584 } 8585} 8586 8587 8588 8589 8590/***/ }), 8591
vendor: 3,369 bytes, lines 8592-8752
8592/***/ "./node_modules/swiper/shared/ssr-window.esm.mjs": 8593/*!*******************************************************!*\ 8594 !*** ./node_modules/swiper/shared/ssr-window.esm.mjs ***! 8595 \*******************************************************/ 8596/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8597 8598"use strict"; 8599__webpack_require__.r(__webpack_exports__); 8600/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8601/* harmony export */ a: function() { return /* binding */ getWindow; }, 8602/* harmony export */ g: function() { return /* binding */ getDocument; } 8603/* harmony export */ }); 8604/** 8605 * SSR Window 4.0.2 8606 * Better handling for window object in SSR environment 8607 * https://github.com/nolimits4web/ssr-window 8608 * 8609 * Copyright 2021, Vladimir Kharlampidi 8610 * 8611 * Licensed under MIT 8612 * 8613 * Released on: December 13, 2021 8614 */ 8615/* eslint-disable no-param-reassign */ 8616function isObject(obj) { 8617 return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; 8618} 8619function extend(target, src) { 8620 if (target === void 0) { 8621 target = {}; 8622 } 8623 if (src === void 0) { 8624 src = {}; 8625 } 8626 Object.keys(src).forEach(key => { 8627 if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 8628 extend(target[key], src[key]); 8629 } 8630 }); 8631} 8632const ssrDocument = { 8633 body: {}, 8634 addEventListener() {}, 8635 removeEventListener() {}, 8636 activeElement: { 8637 blur() {}, 8638 nodeName: '' 8639 }, 8640 querySelector() { 8641 return null; 8642 }, 8643 querySelectorAll() { 8644 return []; 8645 }, 8646 getElementById() { 8647 return null; 8648 }, 8649 createEvent() { 8650 return { 8651 initEvent() {} 8652 }; 8653 }, 8654 createElement() { 8655 return { 8656 children: [], 8657 childNodes: [], 8658 style: {}, 8659 setAttribute() {}, 8660 getElementsByTagName() { 8661 return []; 8662 } 8663 }; 8664 }, 8665 createElementNS() { 8666 return {}; 8667 }, 8668 importNode() { 8669 return null; 8670 }, 8671 location: { 8672 hash: '', 8673 host: '', 8674 hostname: '', 8675 href: '', 8676 origin: '', 8677 pathname: '', 8678 protocol: '', 8679 search: '' 8680 } 8681}; 8682function getDocument() { 8683 const doc = typeof document !== 'undefined' ? document : {}; 8684 extend(doc, ssrDocument); 8685 return doc; 8686} 8687const ssrWindow = { 8688 document: ssrDocument, 8689 navigator: { 8690 userAgent: '' 8691 }, 8692 location: { 8693 hash: '', 8694 host: '', 8695 hostname: '', 8696 href: '', 8697 origin: '', 8698 pathname: '', 8699 protocol: '', 8700 search: '' 8701 }, 8702 history: { 8703 replaceState() {}, 8704 pushState() {}, 8705 go() {}, 8706 back() {} 8707 }, 8708 CustomEvent: function CustomEvent() { 8709 return this; 8710 }, 8711 addEventListener() {}, 8712 removeEventListener() {}, 8713 getComputedStyle() { 8714 return { 8715 getPropertyValue() { 8716 return ''; 8717 } 8718 }; 8719 }, 8720 Image() {}, 8721 Date() {}, 8722 screen: {}, 8723 setTimeout() {}, 8724 clearTimeout() {}, 8725 matchMedia() { 8726 return {}; 8727 }, 8728 requestAnimationFrame(callback) { 8729 if (typeof setTimeout === 'undefined') { 8730 callback(); 8731 return null; 8732 } 8733 return setTimeout(callback, 0); 8734 }, 8735 cancelAnimationFrame(id) { 8736 if (typeof setTimeout === 'undefined') { 8737 return; 8738 } 8739 clearTimeout(id); 8740 } 8741}; 8742function getWindow() { 8743 const win = typeof window !== 'undefined' ? window : {}; 8744 extend(win, ssrWindow); 8745 return win; 8746} 8747 8748 8749 8750 8751/***/ }), 8752
vendor: 132,818 bytes, lines 8753-12682
8753/***/ "./node_modules/swiper/shared/swiper-core.mjs": 8754/*!****************************************************!*\ 8755 !*** ./node_modules/swiper/shared/swiper-core.mjs ***! 8756 \****************************************************/ 8757/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 8758 8759"use strict"; 8760__webpack_require__.r(__webpack_exports__); 8761/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8762/* harmony export */ S: function() { return /* binding */ Swiper; }, 8763/* harmony export */ d: function() { return /* binding */ defaults; } 8764/* harmony export */ }); 8765/* 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"); 8766/* harmony import */ var _utils_mjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.mjs */ "./node_modules/swiper/shared/utils.mjs"); 8767 8768 8769 8770let support; 8771function calcSupport() { 8772 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8773 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 8774 return { 8775 smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, 8776 touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) 8777 }; 8778} 8779function getSupport() { 8780 if (!support) { 8781 support = calcSupport(); 8782 } 8783 return support; 8784} 8785 8786let deviceCached; 8787function calcDevice(_temp) { 8788 let { 8789 userAgent 8790 } = _temp === void 0 ? {} : _temp; 8791 const support = getSupport(); 8792 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8793 const platform = window.navigator.platform; 8794 const ua = userAgent || window.navigator.userAgent; 8795 const device = { 8796 ios: false, 8797 android: false 8798 }; 8799 const screenWidth = window.screen.width; 8800 const screenHeight = window.screen.height; 8801 const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line 8802 let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 8803 const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 8804 const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 8805 const windows = platform === 'Win32'; 8806 let macos = platform === 'MacIntel'; 8807 8808 // iPadOs 13 fix 8809 const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; 8810 if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { 8811 ipad = ua.match(/(Version)\/([\d.]+)/); 8812 if (!ipad) ipad = [0, 1, '13_0_0']; 8813 macos = false; 8814 } 8815 8816 // Android 8817 if (android && !windows) { 8818 device.os = 'android'; 8819 device.android = true; 8820 } 8821 if (ipad || iphone || ipod) { 8822 device.os = 'ios'; 8823 device.ios = true; 8824 } 8825 8826 // Export object 8827 return device; 8828} 8829function getDevice(overrides) { 8830 if (overrides === void 0) { 8831 overrides = {}; 8832 } 8833 if (!deviceCached) { 8834 deviceCached = calcDevice(overrides); 8835 } 8836 return deviceCached; 8837} 8838 8839let browser; 8840function calcBrowser() { 8841 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8842 const device = getDevice(); 8843 let needPerspectiveFix = false; 8844 function isSafari() { 8845 const ua = window.navigator.userAgent.toLowerCase(); 8846 return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; 8847 } 8848 if (isSafari()) { 8849 const ua = String(window.navigator.userAgent); 8850 if (ua.includes('Version/')) { 8851 const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); 8852 needPerspectiveFix = major < 16 || major === 16 && minor < 2; 8853 } 8854 } 8855 const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); 8856 const isSafariBrowser = isSafari(); 8857 const need3dFix = isSafariBrowser || isWebView && device.ios; 8858 return { 8859 isSafari: needPerspectiveFix || isSafariBrowser, 8860 needPerspectiveFix, 8861 need3dFix, 8862 isWebView 8863 }; 8864} 8865function getBrowser() { 8866 if (!browser) { 8867 browser = calcBrowser(); 8868 } 8869 return browser; 8870} 8871 8872function Resize(_ref) { 8873 let { 8874 swiper, 8875 on, 8876 emit 8877 } = _ref; 8878 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8879 let observer = null; 8880 let animationFrame = null; 8881 const resizeHandler = () => { 8882 if (!swiper || swiper.destroyed || !swiper.initialized) return; 8883 emit('beforeResize'); 8884 emit('resize'); 8885 }; 8886 const createObserver = () => { 8887 if (!swiper || swiper.destroyed || !swiper.initialized) return; 8888 observer = new ResizeObserver(entries => { 8889 animationFrame = window.requestAnimationFrame(() => { 8890 const { 8891 width, 8892 height 8893 } = swiper; 8894 let newWidth = width; 8895 let newHeight = height; 8896 entries.forEach(_ref2 => { 8897 let { 8898 contentBoxSize, 8899 contentRect, 8900 target 8901 } = _ref2; 8902 if (target && target !== swiper.el) return; 8903 newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; 8904 newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; 8905 }); 8906 if (newWidth !== width || newHeight !== height) { 8907 resizeHandler(); 8908 } 8909 }); 8910 }); 8911 observer.observe(swiper.el); 8912 }; 8913 const removeObserver = () => { 8914 if (animationFrame) { 8915 window.cancelAnimationFrame(animationFrame); 8916 } 8917 if (observer && observer.unobserve && swiper.el) { 8918 observer.unobserve(swiper.el); 8919 observer = null; 8920 } 8921 }; 8922 const orientationChangeHandler = () => { 8923 if (!swiper || swiper.destroyed || !swiper.initialized) return; 8924 emit('orientationchange'); 8925 }; 8926 on('init', () => { 8927 if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { 8928 createObserver(); 8929 return; 8930 } 8931 window.addEventListener('resize', resizeHandler); 8932 window.addEventListener('orientationchange', orientationChangeHandler); 8933 }); 8934 on('destroy', () => { 8935 removeObserver(); 8936 window.removeEventListener('resize', resizeHandler); 8937 window.removeEventListener('orientationchange', orientationChangeHandler); 8938 }); 8939} 8940 8941function Observer(_ref) { 8942 let { 8943 swiper, 8944 extendParams, 8945 on, 8946 emit 8947 } = _ref; 8948 const observers = []; 8949 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 8950 const attach = function (target, options) { 8951 if (options === void 0) { 8952 options = {}; 8953 } 8954 const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 8955 const observer = new ObserverFunc(mutations => { 8956 // The observerUpdate event should only be triggered 8957 // once despite the number of mutations. Additional 8958 // triggers are redundant and are very costly 8959 if (swiper.__preventObserver__) return; 8960 if (mutations.length === 1) { 8961 emit('observerUpdate', mutations[0]); 8962 return; 8963 } 8964 const observerUpdate = function observerUpdate() { 8965 emit('observerUpdate', mutations[0]); 8966 }; 8967 if (window.requestAnimationFrame) { 8968 window.requestAnimationFrame(observerUpdate); 8969 } else { 8970 window.setTimeout(observerUpdate, 0); 8971 } 8972 }); 8973 observer.observe(target, { 8974 attributes: typeof options.attributes === 'undefined' ? true : options.attributes, 8975 childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, 8976 characterData: typeof options.characterData === 'undefined' ? true : options.characterData 8977 }); 8978 observers.push(observer); 8979 }; 8980 const init = () => { 8981 if (!swiper.params.observer) return; 8982 if (swiper.params.observeParents) { 8983 const containerParents = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.a)(swiper.hostEl); 8984 for (let i = 0; i < containerParents.length; i += 1) { 8985 attach(containerParents[i]); 8986 } 8987 } 8988 // Observe container 8989 attach(swiper.hostEl, { 8990 childList: swiper.params.observeSlideChildren 8991 }); 8992 8993 // Observe wrapper 8994 attach(swiper.wrapperEl, { 8995 attributes: false 8996 }); 8997 }; 8998 const destroy = () => { 8999 observers.forEach(observer => { 9000 observer.disconnect(); 9001 }); 9002 observers.splice(0, observers.length); 9003 }; 9004 extendParams({ 9005 observer: false, 9006 observeParents: false, 9007 observeSlideChildren: false 9008 }); 9009 on('init', init); 9010 on('destroy', destroy); 9011} 9012 9013/* eslint-disable no-underscore-dangle */ 9014 9015var eventsEmitter = { 9016 on(events, handler, priority) { 9017 const self = this; 9018 if (!self.eventsListeners || self.destroyed) return self; 9019 if (typeof handler !== 'function') return self; 9020 const method = priority ? 'unshift' : 'push'; 9021 events.split(' ').forEach(event => { 9022 if (!self.eventsListeners[event]) self.eventsListeners[event] = []; 9023 self.eventsListeners[event][method](handler); 9024 }); 9025 return self; 9026 }, 9027 once(events, handler, priority) { 9028 const self = this; 9029 if (!self.eventsListeners || self.destroyed) return self; 9030 if (typeof handler !== 'function') return self; 9031 function onceHandler() { 9032 self.off(events, onceHandler); 9033 if (onceHandler.__emitterProxy) { 9034 delete onceHandler.__emitterProxy; 9035 } 9036 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 9037 args[_key] = arguments[_key]; 9038 } 9039 handler.apply(self, args); 9040 } 9041 onceHandler.__emitterProxy = handler; 9042 return self.on(events, onceHandler, priority); 9043 }, 9044 onAny(handler, priority) { 9045 const self = this; 9046 if (!self.eventsListeners || self.destroyed) return self; 9047 if (typeof handler !== 'function') return self; 9048 const method = priority ? 'unshift' : 'push'; 9049 if (self.eventsAnyListeners.indexOf(handler) < 0) { 9050 self.eventsAnyListeners[method](handler); 9051 } 9052 return self; 9053 }, 9054 offAny(handler) { 9055 const self = this; 9056 if (!self.eventsListeners || self.destroyed) return self; 9057 if (!self.eventsAnyListeners) return self; 9058 const index = self.eventsAnyListeners.indexOf(handler); 9059 if (index >= 0) { 9060 self.eventsAnyListeners.splice(index, 1); 9061 } 9062 return self; 9063 }, 9064 off(events, handler) { 9065 const self = this; 9066 if (!self.eventsListeners || self.destroyed) return self; 9067 if (!self.eventsListeners) return self; 9068 events.split(' ').forEach(event => { 9069 if (typeof handler === 'undefined') { 9070 self.eventsListeners[event] = []; 9071 } else if (self.eventsListeners[event]) { 9072 self.eventsListeners[event].forEach((eventHandler, index) => { 9073 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 9074 self.eventsListeners[event].splice(index, 1); 9075 } 9076 }); 9077 } 9078 }); 9079 return self; 9080 }, 9081 emit() { 9082 const self = this; 9083 if (!self.eventsListeners || self.destroyed) return self; 9084 if (!self.eventsListeners) return self; 9085 let events; 9086 let data; 9087 let context; 9088 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 9089 args[_key2] = arguments[_key2]; 9090 } 9091 if (typeof args[0] === 'string' || Array.isArray(args[0])) { 9092 events = args[0]; 9093 data = args.slice(1, args.length); 9094 context = self; 9095 } else { 9096 events = args[0].events; 9097 data = args[0].data; 9098 context = args[0].context || self; 9099 } 9100 data.unshift(context); 9101 const eventsArray = Array.isArray(events) ? events : events.split(' '); 9102 eventsArray.forEach(event => { 9103 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 9104 self.eventsAnyListeners.forEach(eventHandler => { 9105 eventHandler.apply(context, [event, ...data]); 9106 }); 9107 } 9108 if (self.eventsListeners && self.eventsListeners[event]) { 9109 self.eventsListeners[event].forEach(eventHandler => { 9110 eventHandler.apply(context, data); 9111 }); 9112 } 9113 }); 9114 return self; 9115 } 9116}; 9117 9118function updateSize() { 9119 const swiper = this; 9120 let width; 9121 let height; 9122 const el = swiper.el; 9123 if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { 9124 width = swiper.params.width; 9125 } else { 9126 width = el.clientWidth; 9127 } 9128 if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { 9129 height = swiper.params.height; 9130 } else { 9131 height = el.clientHeight; 9132 } 9133 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 9134 return; 9135 } 9136 9137 // Subtract paddings 9138 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); 9139 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); 9140 if (Number.isNaN(width)) width = 0; 9141 if (Number.isNaN(height)) height = 0; 9142 Object.assign(swiper, { 9143 width, 9144 height, 9145 size: swiper.isHorizontal() ? width : height 9146 }); 9147} 9148 9149function updateSlides() { 9150 const swiper = this; 9151 function getDirectionPropertyValue(node, label) { 9152 return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); 9153 } 9154 const params = swiper.params; 9155 const { 9156 wrapperEl, 9157 slidesEl, 9158 size: swiperSize, 9159 rtlTranslate: rtl, 9160 wrongRTL 9161 } = swiper; 9162 const isVirtual = swiper.virtual && params.virtual.enabled; 9163 const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 9164 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); 9165 const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 9166 let snapGrid = []; 9167 const slidesGrid = []; 9168 const slidesSizesGrid = []; 9169 let offsetBefore = params.slidesOffsetBefore; 9170 if (typeof offsetBefore === 'function') { 9171 offsetBefore = params.slidesOffsetBefore.call(swiper); 9172 } 9173 let offsetAfter = params.slidesOffsetAfter; 9174 if (typeof offsetAfter === 'function') { 9175 offsetAfter = params.slidesOffsetAfter.call(swiper); 9176 } 9177 const previousSnapGridLength = swiper.snapGrid.length; 9178 const previousSlidesGridLength = swiper.slidesGrid.length; 9179 let spaceBetween = params.spaceBetween; 9180 let slidePosition = -offsetBefore; 9181 let prevSlideSize = 0; 9182 let index = 0; 9183 if (typeof swiperSize === 'undefined') { 9184 return; 9185 } 9186 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 9187 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; 9188 } else if (typeof spaceBetween === 'string') { 9189 spaceBetween = parseFloat(spaceBetween); 9190 } 9191 swiper.virtualSize = -spaceBetween; 9192 9193 // reset margins 9194 slides.forEach(slideEl => { 9195 if (rtl) { 9196 slideEl.style.marginLeft = ''; 9197 } else { 9198 slideEl.style.marginRight = ''; 9199 } 9200 slideEl.style.marginBottom = ''; 9201 slideEl.style.marginTop = ''; 9202 }); 9203 9204 // reset cssMode offsets 9205 if (params.centeredSlides && params.cssMode) { 9206 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', ''); 9207 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', ''); 9208 } 9209 const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; 9210 if (gridEnabled) { 9211 swiper.grid.initSlides(slides); 9212 } else if (swiper.grid) { 9213 swiper.grid.unsetSlides(); 9214 } 9215 9216 // Calc slides 9217 let slideSize; 9218 const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { 9219 return typeof params.breakpoints[key].slidesPerView !== 'undefined'; 9220 }).length > 0; 9221 for (let i = 0; i < slidesLength; i += 1) { 9222 slideSize = 0; 9223 let slide; 9224 if (slides[i]) slide = slides[i]; 9225 if (gridEnabled) { 9226 swiper.grid.updateSlide(i, slide, slides); 9227 } 9228 if (slides[i] && (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(slide, 'display') === 'none') continue; // eslint-disable-line 9229 9230 if (params.slidesPerView === 'auto') { 9231 if (shouldResetSlideSize) { 9232 slides[i].style[swiper.getDirectionLabel('width')] = ``; 9233 } 9234 const slideStyles = getComputedStyle(slide); 9235 const currentTransform = slide.style.transform; 9236 const currentWebKitTransform = slide.style.webkitTransform; 9237 if (currentTransform) { 9238 slide.style.transform = 'none'; 9239 } 9240 if (currentWebKitTransform) { 9241 slide.style.webkitTransform = 'none'; 9242 } 9243 if (params.roundLengths) { 9244 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); 9245 } else { 9246 // eslint-disable-next-line 9247 const width = getDirectionPropertyValue(slideStyles, 'width'); 9248 const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); 9249 const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); 9250 const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); 9251 const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); 9252 const boxSizing = slideStyles.getPropertyValue('box-sizing'); 9253 if (boxSizing && boxSizing === 'border-box') { 9254 slideSize = width + marginLeft + marginRight; 9255 } else { 9256 const { 9257 clientWidth, 9258 offsetWidth 9259 } = slide; 9260 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); 9261 } 9262 } 9263 if (currentTransform) { 9264 slide.style.transform = currentTransform; 9265 } 9266 if (currentWebKitTransform) { 9267 slide.style.webkitTransform = currentWebKitTransform; 9268 } 9269 if (params.roundLengths) slideSize = Math.floor(slideSize); 9270 } else { 9271 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 9272 if (params.roundLengths) slideSize = Math.floor(slideSize); 9273 if (slides[i]) { 9274 slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; 9275 } 9276 } 9277 if (slides[i]) { 9278 slides[i].swiperSlideSize = slideSize; 9279 } 9280 slidesSizesGrid.push(slideSize); 9281 if (params.centeredSlides) { 9282 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 9283 if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 9284 if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; 9285 if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; 9286 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 9287 if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); 9288 slidesGrid.push(slidePosition); 9289 } else { 9290 if (params.roundLengths) slidePosition = Math.floor(slidePosition); 9291 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); 9292 slidesGrid.push(slidePosition); 9293 slidePosition = slidePosition + slideSize + spaceBetween; 9294 } 9295 swiper.virtualSize += slideSize + spaceBetween; 9296 prevSlideSize = slideSize; 9297 index += 1; 9298 } 9299 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 9300 if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { 9301 wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; 9302 } 9303 if (params.setWrapperSize) { 9304 wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; 9305 } 9306 if (gridEnabled) { 9307 swiper.grid.updateWrapperSize(slideSize, snapGrid); 9308 } 9309 9310 // Remove last grid elements depending on width 9311 if (!params.centeredSlides) { 9312 const newSlidesGrid = []; 9313 for (let i = 0; i < snapGrid.length; i += 1) { 9314 let slidesGridItem = snapGrid[i]; 9315 if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); 9316 if (snapGrid[i] <= swiper.virtualSize - swiperSize) { 9317 newSlidesGrid.push(slidesGridItem); 9318 } 9319 } 9320 snapGrid = newSlidesGrid; 9321 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 9322 snapGrid.push(swiper.virtualSize - swiperSize); 9323 } 9324 } 9325 if (isVirtual && params.loop) { 9326 const size = slidesSizesGrid[0] + spaceBetween; 9327 if (params.slidesPerGroup > 1) { 9328 const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); 9329 const groupSize = size * params.slidesPerGroup; 9330 for (let i = 0; i < groups; i += 1) { 9331 snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); 9332 } 9333 } 9334 for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { 9335 if (params.slidesPerGroup === 1) { 9336 snapGrid.push(snapGrid[snapGrid.length - 1] + size); 9337 } 9338 slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); 9339 swiper.virtualSize += size; 9340 } 9341 } 9342 if (snapGrid.length === 0) snapGrid = [0]; 9343 if (spaceBetween !== 0) { 9344 const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); 9345 slides.filter((_, slideIndex) => { 9346 if (!params.cssMode || params.loop) return true; 9347 if (slideIndex === slides.length - 1) { 9348 return false; 9349 } 9350 return true; 9351 }).forEach(slideEl => { 9352 slideEl.style[key] = `${spaceBetween}px`; 9353 }); 9354 } 9355 if (params.centeredSlides && params.centeredSlidesBounds) { 9356 let allSlidesSize = 0; 9357 slidesSizesGrid.forEach(slideSizeValue => { 9358 allSlidesSize += slideSizeValue + (spaceBetween || 0); 9359 }); 9360 allSlidesSize -= spaceBetween; 9361 const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0; 9362 snapGrid = snapGrid.map(snap => { 9363 if (snap <= 0) return -offsetBefore; 9364 if (snap > maxSnap) return maxSnap + offsetAfter; 9365 return snap; 9366 }); 9367 } 9368 if (params.centerInsufficientSlides) { 9369 let allSlidesSize = 0; 9370 slidesSizesGrid.forEach(slideSizeValue => { 9371 allSlidesSize += slideSizeValue + (spaceBetween || 0); 9372 }); 9373 allSlidesSize -= spaceBetween; 9374 const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); 9375 if (allSlidesSize + offsetSize < swiperSize) { 9376 const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; 9377 snapGrid.forEach((snap, snapIndex) => { 9378 snapGrid[snapIndex] = snap - allSlidesOffset; 9379 }); 9380 slidesGrid.forEach((snap, snapIndex) => { 9381 slidesGrid[snapIndex] = snap + allSlidesOffset; 9382 }); 9383 } 9384 } 9385 Object.assign(swiper, { 9386 slides, 9387 snapGrid, 9388 slidesGrid, 9389 slidesSizesGrid 9390 }); 9391 if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { 9392 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); 9393 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.s)(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); 9394 const addToSnapGrid = -swiper.snapGrid[0]; 9395 const addToSlidesGrid = -swiper.slidesGrid[0]; 9396 swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); 9397 swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); 9398 } 9399 if (slidesLength !== previousSlidesLength) { 9400 swiper.emit('slidesLengthChange'); 9401 } 9402 if (snapGrid.length !== previousSnapGridLength) { 9403 if (swiper.params.watchOverflow) swiper.checkOverflow(); 9404 swiper.emit('snapGridLengthChange'); 9405 } 9406 if (slidesGrid.length !== previousSlidesGridLength) { 9407 swiper.emit('slidesGridLengthChange'); 9408 } 9409 if (params.watchSlidesProgress) { 9410 swiper.updateSlidesOffset(); 9411 } 9412 swiper.emit('slidesUpdated'); 9413 if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { 9414 const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; 9415 const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); 9416 if (slidesLength <= params.maxBackfaceHiddenSlides) { 9417 if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); 9418 } else if (hasClassBackfaceClassAdded) { 9419 swiper.el.classList.remove(backFaceHiddenClass); 9420 } 9421 } 9422} 9423 9424function updateAutoHeight(speed) { 9425 const swiper = this; 9426 const activeSlides = []; 9427 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 9428 let newHeight = 0; 9429 let i; 9430 if (typeof speed === 'number') { 9431 swiper.setTransition(speed); 9432 } else if (speed === true) { 9433 swiper.setTransition(swiper.params.speed); 9434 } 9435 const getSlideByIndex = index => { 9436 if (isVirtual) { 9437 return swiper.slides[swiper.getSlideIndexByData(index)]; 9438 } 9439 return swiper.slides[index]; 9440 }; 9441 // Find slides currently in view 9442 if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { 9443 if (swiper.params.centeredSlides) { 9444 (swiper.visibleSlides || []).forEach(slide => { 9445 activeSlides.push(slide); 9446 }); 9447 } else { 9448 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { 9449 const index = swiper.activeIndex + i; 9450 if (index > swiper.slides.length && !isVirtual) break; 9451 activeSlides.push(getSlideByIndex(index)); 9452 } 9453 } 9454 } else { 9455 activeSlides.push(getSlideByIndex(swiper.activeIndex)); 9456 } 9457 9458 // Find new height from highest slide in view 9459 for (i = 0; i < activeSlides.length; i += 1) { 9460 if (typeof activeSlides[i] !== 'undefined') { 9461 const height = activeSlides[i].offsetHeight; 9462 newHeight = height > newHeight ? height : newHeight; 9463 } 9464 } 9465 9466 // Update Height 9467 if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; 9468} 9469 9470function updateSlidesOffset() { 9471 const swiper = this; 9472 const slides = swiper.slides; 9473 // eslint-disable-next-line 9474 const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; 9475 for (let i = 0; i < slides.length; i += 1) { 9476 slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); 9477 } 9478} 9479 9480const toggleSlideClasses$1 = (slideEl, condition, className) => { 9481 if (condition && !slideEl.classList.contains(className)) { 9482 slideEl.classList.add(className); 9483 } else if (!condition && slideEl.classList.contains(className)) { 9484 slideEl.classList.remove(className); 9485 } 9486}; 9487function updateSlidesProgress(translate) { 9488 if (translate === void 0) { 9489 translate = this && this.translate || 0; 9490 } 9491 const swiper = this; 9492 const params = swiper.params; 9493 const { 9494 slides, 9495 rtlTranslate: rtl, 9496 snapGrid 9497 } = swiper; 9498 if (slides.length === 0) return; 9499 if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); 9500 let offsetCenter = -translate; 9501 if (rtl) offsetCenter = translate; 9502 swiper.visibleSlidesIndexes = []; 9503 swiper.visibleSlides = []; 9504 let spaceBetween = params.spaceBetween; 9505 if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { 9506 spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; 9507 } else if (typeof spaceBetween === 'string') { 9508 spaceBetween = parseFloat(spaceBetween); 9509 } 9510 for (let i = 0; i < slides.length; i += 1) { 9511 const slide = slides[i]; 9512 let slideOffset = slide.swiperSlideOffset; 9513 if (params.cssMode && params.centeredSlides) { 9514 slideOffset -= slides[0].swiperSlideOffset; 9515 } 9516 const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 9517 const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); 9518 const slideBefore = -(offsetCenter - slideOffset); 9519 const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 9520 const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; 9521 const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 9522 if (isVisible) { 9523 swiper.visibleSlides.push(slide); 9524 swiper.visibleSlidesIndexes.push(i); 9525 } 9526 toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); 9527 toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); 9528 slide.progress = rtl ? -slideProgress : slideProgress; 9529 slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; 9530 } 9531} 9532 9533function updateProgress(translate) { 9534 const swiper = this; 9535 if (typeof translate === 'undefined') { 9536 const multiplier = swiper.rtlTranslate ? -1 : 1; 9537 // eslint-disable-next-line 9538 translate = swiper && swiper.translate && swiper.translate * multiplier || 0; 9539 } 9540 const params = swiper.params; 9541 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 9542 let { 9543 progress, 9544 isBeginning, 9545 isEnd, 9546 progressLoop 9547 } = swiper; 9548 const wasBeginning = isBeginning; 9549 const wasEnd = isEnd; 9550 if (translatesDiff === 0) { 9551 progress = 0; 9552 isBeginning = true; 9553 isEnd = true; 9554 } else { 9555 progress = (translate - swiper.minTranslate()) / translatesDiff; 9556 const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; 9557 const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; 9558 isBeginning = isBeginningRounded || progress <= 0; 9559 isEnd = isEndRounded || progress >= 1; 9560 if (isBeginningRounded) progress = 0; 9561 if (isEndRounded) progress = 1; 9562 } 9563 if (params.loop) { 9564 const firstSlideIndex = swiper.getSlideIndexByData(0); 9565 const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); 9566 const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; 9567 const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; 9568 const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; 9569 const translateAbs = Math.abs(translate); 9570 if (translateAbs >= firstSlideTranslate) { 9571 progressLoop = (translateAbs - firstSlideTranslate) / translateMax; 9572 } else { 9573 progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; 9574 } 9575 if (progressLoop > 1) progressLoop -= 1; 9576 } 9577 Object.assign(swiper, { 9578 progress, 9579 progressLoop, 9580 isBeginning, 9581 isEnd 9582 }); 9583 if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); 9584 if (isBeginning && !wasBeginning) { 9585 swiper.emit('reachBeginning toEdge'); 9586 } 9587 if (isEnd && !wasEnd) { 9588 swiper.emit('reachEnd toEdge'); 9589 } 9590 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 9591 swiper.emit('fromEdge'); 9592 } 9593 swiper.emit('progress', progress); 9594} 9595 9596const toggleSlideClasses = (slideEl, condition, className) => { 9597 if (condition && !slideEl.classList.contains(className)) { 9598 slideEl.classList.add(className); 9599 } else if (!condition && slideEl.classList.contains(className)) { 9600 slideEl.classList.remove(className); 9601 } 9602}; 9603function updateSlidesClasses() { 9604 const swiper = this; 9605 const { 9606 slides, 9607 params, 9608 slidesEl, 9609 activeIndex 9610 } = swiper; 9611 const isVirtual = swiper.virtual && params.virtual.enabled; 9612 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 9613 const getFilteredSlide = selector => { 9614 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; 9615 }; 9616 let activeSlide; 9617 let prevSlide; 9618 let nextSlide; 9619 if (isVirtual) { 9620 if (params.loop) { 9621 let slideIndex = activeIndex - swiper.virtual.slidesBefore; 9622 if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; 9623 if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; 9624 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); 9625 } else { 9626 activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); 9627 } 9628 } else { 9629 if (gridEnabled) { 9630 activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; 9631 nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; 9632 prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; 9633 } else { 9634 activeSlide = slides[activeIndex]; 9635 } 9636 } 9637 if (activeSlide) { 9638 if (!gridEnabled) { 9639 // Next Slide 9640 nextSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.q)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 9641 if (params.loop && !nextSlide) { 9642 nextSlide = slides[0]; 9643 } 9644 9645 // Prev Slide 9646 prevSlide = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.r)(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; 9647 if (params.loop && !prevSlide === 0) { 9648 prevSlide = slides[slides.length - 1]; 9649 } 9650 } 9651 } 9652 slides.forEach(slideEl => { 9653 toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); 9654 toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); 9655 toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); 9656 }); 9657 swiper.emitSlidesClasses(); 9658} 9659 9660const processLazyPreloader = (swiper, imageEl) => { 9661 if (!swiper || swiper.destroyed || !swiper.params) return; 9662 const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; 9663 const slideEl = imageEl.closest(slideSelector()); 9664 if (slideEl) { 9665 let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); 9666 if (!lazyEl && swiper.isElement) { 9667 if (slideEl.shadowRoot) { 9668 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 9669 } else { 9670 // init later 9671 requestAnimationFrame(() => { 9672 if (slideEl.shadowRoot) { 9673 lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); 9674 if (lazyEl) lazyEl.remove(); 9675 } 9676 }); 9677 } 9678 } 9679 if (lazyEl) lazyEl.remove(); 9680 } 9681}; 9682const unlazy = (swiper, index) => { 9683 if (!swiper.slides[index]) return; 9684 const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); 9685 if (imageEl) imageEl.removeAttribute('loading'); 9686}; 9687const preload = swiper => { 9688 if (!swiper || swiper.destroyed || !swiper.params) return; 9689 let amount = swiper.params.lazyPreloadPrevNext; 9690 const len = swiper.slides.length; 9691 if (!len || !amount || amount < 0) return; 9692 amount = Math.min(amount, len); 9693 const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); 9694 const activeIndex = swiper.activeIndex; 9695 if (swiper.params.grid && swiper.params.grid.rows > 1) { 9696 const activeColumn = activeIndex; 9697 const preloadColumns = [activeColumn - amount]; 9698 preloadColumns.push(...Array.from({ 9699 length: amount 9700 }).map((_, i) => { 9701 return activeColumn + slidesPerView + i; 9702 })); 9703 swiper.slides.forEach((slideEl, i) => { 9704 if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); 9705 }); 9706 return; 9707 } 9708 const slideIndexLastInView = activeIndex + slidesPerView - 1; 9709 if (swiper.params.rewind || swiper.params.loop) { 9710 for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { 9711 const realIndex = (i % len + len) % len; 9712 if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); 9713 } 9714 } else { 9715 for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { 9716 if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { 9717 unlazy(swiper, i); 9718 } 9719 } 9720 } 9721}; 9722 9723function getActiveIndexByTranslate(swiper) { 9724 const { 9725 slidesGrid, 9726 params 9727 } = swiper; 9728 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 9729 let activeIndex; 9730 for (let i = 0; i < slidesGrid.length; i += 1) { 9731 if (typeof slidesGrid[i + 1] !== 'undefined') { 9732 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 9733 activeIndex = i; 9734 } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 9735 activeIndex = i + 1; 9736 } 9737 } else if (translate >= slidesGrid[i]) { 9738 activeIndex = i; 9739 } 9740 } 9741 // Normalize slideIndex 9742 if (params.normalizeSlideIndex) { 9743 if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; 9744 } 9745 return activeIndex; 9746} 9747function updateActiveIndex(newActiveIndex) { 9748 const swiper = this; 9749 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 9750 const { 9751 snapGrid, 9752 params, 9753 activeIndex: previousIndex, 9754 realIndex: previousRealIndex, 9755 snapIndex: previousSnapIndex 9756 } = swiper; 9757 let activeIndex = newActiveIndex; 9758 let snapIndex; 9759 const getVirtualRealIndex = aIndex => { 9760 let realIndex = aIndex - swiper.virtual.slidesBefore; 9761 if (realIndex < 0) { 9762 realIndex = swiper.virtual.slides.length + realIndex; 9763 } 9764 if (realIndex >= swiper.virtual.slides.length) { 9765 realIndex -= swiper.virtual.slides.length; 9766 } 9767 return realIndex; 9768 }; 9769 if (typeof activeIndex === 'undefined') { 9770 activeIndex = getActiveIndexByTranslate(swiper); 9771 } 9772 if (snapGrid.indexOf(translate) >= 0) { 9773 snapIndex = snapGrid.indexOf(translate); 9774 } else { 9775 const skip = Math.min(params.slidesPerGroupSkip, activeIndex); 9776 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); 9777 } 9778 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 9779 if (activeIndex === previousIndex && !swiper.params.loop) { 9780 if (snapIndex !== previousSnapIndex) { 9781 swiper.snapIndex = snapIndex; 9782 swiper.emit('snapIndexChange'); 9783 } 9784 return; 9785 } 9786 if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 9787 swiper.realIndex = getVirtualRealIndex(activeIndex); 9788 return; 9789 } 9790 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 9791 9792 // Get real index 9793 let realIndex; 9794 if (swiper.virtual && params.virtual.enabled && params.loop) { 9795 realIndex = getVirtualRealIndex(activeIndex); 9796 } else if (gridEnabled) { 9797 const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; 9798 let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); 9799 if (Number.isNaN(activeSlideIndex)) { 9800 activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); 9801 } 9802 realIndex = Math.floor(activeSlideIndex / params.grid.rows); 9803 } else if (swiper.slides[activeIndex]) { 9804 const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); 9805 if (slideIndex) { 9806 realIndex = parseInt(slideIndex, 10); 9807 } else { 9808 realIndex = activeIndex; 9809 } 9810 } else { 9811 realIndex = activeIndex; 9812 } 9813 Object.assign(swiper, { 9814 previousSnapIndex, 9815 snapIndex, 9816 previousRealIndex, 9817 realIndex, 9818 previousIndex, 9819 activeIndex 9820 }); 9821 if (swiper.initialized) { 9822 preload(swiper); 9823 } 9824 swiper.emit('activeIndexChange'); 9825 swiper.emit('snapIndexChange'); 9826 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 9827 if (previousRealIndex !== realIndex) { 9828 swiper.emit('realIndexChange'); 9829 } 9830 swiper.emit('slideChange'); 9831 } 9832} 9833 9834function updateClickedSlide(el, path) { 9835 const swiper = this; 9836 const params = swiper.params; 9837 let slide = el.closest(`.${params.slideClass}, swiper-slide`); 9838 if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { 9839 [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { 9840 if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { 9841 slide = pathEl; 9842 } 9843 }); 9844 } 9845 let slideFound = false; 9846 let slideIndex; 9847 if (slide) { 9848 for (let i = 0; i < swiper.slides.length; i += 1) { 9849 if (swiper.slides[i] === slide) { 9850 slideFound = true; 9851 slideIndex = i; 9852 break; 9853 } 9854 } 9855 } 9856 if (slide && slideFound) { 9857 swiper.clickedSlide = slide; 9858 if (swiper.virtual && swiper.params.virtual.enabled) { 9859 swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); 9860 } else { 9861 swiper.clickedIndex = slideIndex; 9862 } 9863 } else { 9864 swiper.clickedSlide = undefined; 9865 swiper.clickedIndex = undefined; 9866 return; 9867 } 9868 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 9869 swiper.slideToClickedSlide(); 9870 } 9871} 9872 9873var update = { 9874 updateSize, 9875 updateSlides, 9876 updateAutoHeight, 9877 updateSlidesOffset, 9878 updateSlidesProgress, 9879 updateProgress, 9880 updateSlidesClasses, 9881 updateActiveIndex, 9882 updateClickedSlide 9883}; 9884 9885function getSwiperTranslate(axis) { 9886 if (axis === void 0) { 9887 axis = this.isHorizontal() ? 'x' : 'y'; 9888 } 9889 const swiper = this; 9890 const { 9891 params, 9892 rtlTranslate: rtl, 9893 translate, 9894 wrapperEl 9895 } = swiper; 9896 if (params.virtualTranslate) { 9897 return rtl ? -translate : translate; 9898 } 9899 if (params.cssMode) { 9900 return translate; 9901 } 9902 let currentTranslate = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.j)(wrapperEl, axis); 9903 currentTranslate += swiper.cssOverflowAdjustment(); 9904 if (rtl) currentTranslate = -currentTranslate; 9905 return currentTranslate || 0; 9906} 9907 9908function setTranslate(translate, byController) { 9909 const swiper = this; 9910 const { 9911 rtlTranslate: rtl, 9912 params, 9913 wrapperEl, 9914 progress 9915 } = swiper; 9916 let x = 0; 9917 let y = 0; 9918 const z = 0; 9919 if (swiper.isHorizontal()) { 9920 x = rtl ? -translate : translate; 9921 } else { 9922 y = translate; 9923 } 9924 if (params.roundLengths) { 9925 x = Math.floor(x); 9926 y = Math.floor(y); 9927 } 9928 swiper.previousTranslate = swiper.translate; 9929 swiper.translate = swiper.isHorizontal() ? x : y; 9930 if (params.cssMode) { 9931 wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; 9932 } else if (!params.virtualTranslate) { 9933 if (swiper.isHorizontal()) { 9934 x -= swiper.cssOverflowAdjustment(); 9935 } else { 9936 y -= swiper.cssOverflowAdjustment(); 9937 } 9938 wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; 9939 } 9940 9941 // Check if we need to update progress 9942 let newProgress; 9943 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 9944 if (translatesDiff === 0) { 9945 newProgress = 0; 9946 } else { 9947 newProgress = (translate - swiper.minTranslate()) / translatesDiff; 9948 } 9949 if (newProgress !== progress) { 9950 swiper.updateProgress(translate); 9951 } 9952 swiper.emit('setTranslate', swiper.translate, byController); 9953} 9954 9955function minTranslate() { 9956 return -this.snapGrid[0]; 9957} 9958 9959function maxTranslate() { 9960 return -this.snapGrid[this.snapGrid.length - 1]; 9961} 9962 9963function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 9964 if (translate === void 0) { 9965 translate = 0; 9966 } 9967 if (speed === void 0) { 9968 speed = this.params.speed; 9969 } 9970 if (runCallbacks === void 0) { 9971 runCallbacks = true; 9972 } 9973 if (translateBounds === void 0) { 9974 translateBounds = true; 9975 } 9976 const swiper = this; 9977 const { 9978 params, 9979 wrapperEl 9980 } = swiper; 9981 if (swiper.animating && params.preventInteractionOnTransition) { 9982 return false; 9983 } 9984 const minTranslate = swiper.minTranslate(); 9985 const maxTranslate = swiper.maxTranslate(); 9986 let newTranslate; 9987 if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; 9988 9989 // Update progress 9990 swiper.updateProgress(newTranslate); 9991 if (params.cssMode) { 9992 const isH = swiper.isHorizontal(); 9993 if (speed === 0) { 9994 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; 9995 } else { 9996 if (!swiper.support.smoothScroll) { 9997 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 9998 swiper, 9999 targetPosition: -newTranslate, 10000 side: isH ? 'left' : 'top' 10001 }); 10002 return true; 10003 } 10004 wrapperEl.scrollTo({ 10005 [isH ? 'left' : 'top']: -newTranslate, 10006 behavior: 'smooth' 10007 }); 10008 } 10009 return true; 10010 } 10011 if (speed === 0) { 10012 swiper.setTransition(0); 10013 swiper.setTranslate(newTranslate); 10014 if (runCallbacks) { 10015 swiper.emit('beforeTransitionStart', speed, internal); 10016 swiper.emit('transitionEnd'); 10017 } 10018 } else { 10019 swiper.setTransition(speed); 10020 swiper.setTranslate(newTranslate); 10021 if (runCallbacks) { 10022 swiper.emit('beforeTransitionStart', speed, internal); 10023 swiper.emit('transitionStart'); 10024 } 10025 if (!swiper.animating) { 10026 swiper.animating = true; 10027 if (!swiper.onTranslateToWrapperTransitionEnd) { 10028 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 10029 if (!swiper || swiper.destroyed) return; 10030 if (e.target !== this) return; 10031 swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 10032 swiper.onTranslateToWrapperTransitionEnd = null; 10033 delete swiper.onTranslateToWrapperTransitionEnd; 10034 swiper.animating = false; 10035 if (runCallbacks) { 10036 swiper.emit('transitionEnd'); 10037 } 10038 }; 10039 } 10040 swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); 10041 } 10042 } 10043 return true; 10044} 10045 10046var translate = { 10047 getTranslate: getSwiperTranslate, 10048 setTranslate, 10049 minTranslate, 10050 maxTranslate, 10051 translateTo 10052}; 10053 10054function setTransition(duration, byController) { 10055 const swiper = this; 10056 if (!swiper.params.cssMode) { 10057 swiper.wrapperEl.style.transitionDuration = `${duration}ms`; 10058 swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; 10059 } 10060 swiper.emit('setTransition', duration, byController); 10061} 10062 10063function transitionEmit(_ref) { 10064 let { 10065 swiper, 10066 runCallbacks, 10067 direction, 10068 step 10069 } = _ref; 10070 const { 10071 activeIndex, 10072 previousIndex 10073 } = swiper; 10074 let dir = direction; 10075 if (!dir) { 10076 if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; 10077 } 10078 swiper.emit(`transition${step}`); 10079 if (runCallbacks && activeIndex !== previousIndex) { 10080 if (dir === 'reset') { 10081 swiper.emit(`slideResetTransition${step}`); 10082 return; 10083 } 10084 swiper.emit(`slideChangeTransition${step}`); 10085 if (dir === 'next') { 10086 swiper.emit(`slideNextTransition${step}`); 10087 } else { 10088 swiper.emit(`slidePrevTransition${step}`); 10089 } 10090 } 10091} 10092 10093function transitionStart(runCallbacks, direction) { 10094 if (runCallbacks === void 0) { 10095 runCallbacks = true; 10096 } 10097 const swiper = this; 10098 const { 10099 params 10100 } = swiper; 10101 if (params.cssMode) return; 10102 if (params.autoHeight) { 10103 swiper.updateAutoHeight(); 10104 } 10105 transitionEmit({ 10106 swiper, 10107 runCallbacks, 10108 direction, 10109 step: 'Start' 10110 }); 10111} 10112 10113function transitionEnd(runCallbacks, direction) { 10114 if (runCallbacks === void 0) { 10115 runCallbacks = true; 10116 } 10117 const swiper = this; 10118 const { 10119 params 10120 } = swiper; 10121 swiper.animating = false; 10122 if (params.cssMode) return; 10123 swiper.setTransition(0); 10124 transitionEmit({ 10125 swiper, 10126 runCallbacks, 10127 direction, 10128 step: 'End' 10129 }); 10130} 10131 10132var transition = { 10133 setTransition, 10134 transitionStart, 10135 transitionEnd 10136}; 10137 10138function slideTo(index, speed, runCallbacks, internal, initial) { 10139 if (index === void 0) { 10140 index = 0; 10141 } 10142 if (runCallbacks === void 0) { 10143 runCallbacks = true; 10144 } 10145 if (typeof index === 'string') { 10146 index = parseInt(index, 10); 10147 } 10148 const swiper = this; 10149 let slideIndex = index; 10150 if (slideIndex < 0) slideIndex = 0; 10151 const { 10152 params, 10153 snapGrid, 10154 slidesGrid, 10155 previousIndex, 10156 activeIndex, 10157 rtlTranslate: rtl, 10158 wrapperEl, 10159 enabled 10160 } = swiper; 10161 if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { 10162 return false; 10163 } 10164 if (typeof speed === 'undefined') { 10165 speed = swiper.params.speed; 10166 } 10167 const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 10168 let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 10169 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; 10170 const translate = -snapGrid[snapIndex]; 10171 // Normalize slideIndex 10172 if (params.normalizeSlideIndex) { 10173 for (let i = 0; i < slidesGrid.length; i += 1) { 10174 const normalizedTranslate = -Math.floor(translate * 100); 10175 const normalizedGrid = Math.floor(slidesGrid[i] * 100); 10176 const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); 10177 if (typeof slidesGrid[i + 1] !== 'undefined') { 10178 if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { 10179 slideIndex = i; 10180 } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { 10181 slideIndex = i + 1; 10182 } 10183 } else if (normalizedTranslate >= normalizedGrid) { 10184 slideIndex = i; 10185 } 10186 } 10187 } 10188 // Directions locks 10189 if (swiper.initialized && slideIndex !== activeIndex) { 10190 if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { 10191 return false; 10192 } 10193 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 10194 if ((activeIndex || 0) !== slideIndex) { 10195 return false; 10196 } 10197 } 10198 } 10199 if (slideIndex !== (previousIndex || 0) && runCallbacks) { 10200 swiper.emit('beforeSlideChangeStart'); 10201 } 10202 10203 // Update progress 10204 swiper.updateProgress(translate); 10205 let direction; 10206 if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; 10207 10208 // initial virtual 10209 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 10210 const isInitialVirtual = isVirtual && initial; 10211 // Update Index 10212 if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) { 10213 swiper.updateActiveIndex(slideIndex); 10214 // Update Height 10215 if (params.autoHeight) { 10216 swiper.updateAutoHeight(); 10217 } 10218 swiper.updateSlidesClasses(); 10219 if (params.effect !== 'slide') { 10220 swiper.setTranslate(translate); 10221 } 10222 if (direction !== 'reset') { 10223 swiper.transitionStart(runCallbacks, direction); 10224 swiper.transitionEnd(runCallbacks, direction); 10225 } 10226 return false; 10227 } 10228 if (params.cssMode) { 10229 const isH = swiper.isHorizontal(); 10230 const t = rtl ? translate : -translate; 10231 if (speed === 0) { 10232 if (isVirtual) { 10233 swiper.wrapperEl.style.scrollSnapType = 'none'; 10234 swiper._immediateVirtual = true; 10235 } 10236 if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { 10237 swiper._cssModeVirtualInitialSet = true; 10238 requestAnimationFrame(() => { 10239 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 10240 }); 10241 } else { 10242 wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; 10243 } 10244 if (isVirtual) { 10245 requestAnimationFrame(() => { 10246 swiper.wrapperEl.style.scrollSnapType = ''; 10247 swiper._immediateVirtual = false; 10248 }); 10249 } 10250 } else { 10251 if (!swiper.support.smoothScroll) { 10252 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.t)({ 10253 swiper, 10254 targetPosition: t, 10255 side: isH ? 'left' : 'top' 10256 }); 10257 return true; 10258 } 10259 wrapperEl.scrollTo({ 10260 [isH ? 'left' : 'top']: t, 10261 behavior: 'smooth' 10262 }); 10263 } 10264 return true; 10265 } 10266 swiper.setTransition(speed); 10267 swiper.setTranslate(translate); 10268 swiper.updateActiveIndex(slideIndex); 10269 swiper.updateSlidesClasses(); 10270 swiper.emit('beforeTransitionStart', speed, internal); 10271 swiper.transitionStart(runCallbacks, direction); 10272 if (speed === 0) { 10273 swiper.transitionEnd(runCallbacks, direction); 10274 } else if (!swiper.animating) { 10275 swiper.animating = true; 10276 if (!swiper.onSlideToWrapperTransitionEnd) { 10277 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 10278 if (!swiper || swiper.destroyed) return; 10279 if (e.target !== this) return; 10280 swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 10281 swiper.onSlideToWrapperTransitionEnd = null; 10282 delete swiper.onSlideToWrapperTransitionEnd; 10283 swiper.transitionEnd(runCallbacks, direction); 10284 }; 10285 } 10286 swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); 10287 } 10288 return true; 10289} 10290 10291function slideToLoop(index, speed, runCallbacks, internal) { 10292 if (index === void 0) { 10293 index = 0; 10294 } 10295 if (runCallbacks === void 0) { 10296 runCallbacks = true; 10297 } 10298 if (typeof index === 'string') { 10299 const indexAsNumber = parseInt(index, 10); 10300 index = indexAsNumber; 10301 } 10302 const swiper = this; 10303 if (swiper.destroyed) return; 10304 if (typeof speed === 'undefined') { 10305 speed = swiper.params.speed; 10306 } 10307 const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; 10308 let newIndex = index; 10309 if (swiper.params.loop) { 10310 if (swiper.virtual && swiper.params.virtual.enabled) { 10311 // eslint-disable-next-line 10312 newIndex = newIndex + swiper.virtual.slidesBefore; 10313 } else { 10314 let targetSlideIndex; 10315 if (gridEnabled) { 10316 const slideIndex = newIndex * swiper.params.grid.rows; 10317 targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; 10318 } else { 10319 targetSlideIndex = swiper.getSlideIndexByData(newIndex); 10320 } 10321 const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; 10322 const { 10323 centeredSlides 10324 } = swiper.params; 10325 let slidesPerView = swiper.params.slidesPerView; 10326 if (slidesPerView === 'auto') { 10327 slidesPerView = swiper.slidesPerViewDynamic(); 10328 } else { 10329 slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); 10330 if (centeredSlides && slidesPerView % 2 === 0) { 10331 slidesPerView = slidesPerView + 1; 10332 } 10333 } 10334 let needLoopFix = cols - targetSlideIndex < slidesPerView; 10335 if (centeredSlides) { 10336 needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); 10337 } 10338 if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { 10339 needLoopFix = false; 10340 } 10341 if (needLoopFix) { 10342 const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; 10343 swiper.loopFix({ 10344 direction, 10345 slideTo: true, 10346 activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, 10347 slideRealIndex: direction === 'next' ? swiper.realIndex : undefined 10348 }); 10349 } 10350 if (gridEnabled) { 10351 const slideIndex = newIndex * swiper.params.grid.rows; 10352 newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; 10353 } else { 10354 newIndex = swiper.getSlideIndexByData(newIndex); 10355 } 10356 } 10357 } 10358 requestAnimationFrame(() => { 10359 swiper.slideTo(newIndex, speed, runCallbacks, internal); 10360 }); 10361 return swiper; 10362} 10363 10364/* eslint no-unused-vars: "off" */ 10365function slideNext(speed, runCallbacks, internal) { 10366 if (runCallbacks === void 0) { 10367 runCallbacks = true; 10368 } 10369 const swiper = this; 10370 const { 10371 enabled, 10372 params, 10373 animating 10374 } = swiper; 10375 if (!enabled || swiper.destroyed) return swiper; 10376 if (typeof speed === 'undefined') { 10377 speed = swiper.params.speed; 10378 } 10379 let perGroup = params.slidesPerGroup; 10380 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 10381 perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); 10382 } 10383 const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; 10384 const isVirtual = swiper.virtual && params.virtual.enabled; 10385 if (params.loop) { 10386 if (animating && !isVirtual && params.loopPreventsSliding) return false; 10387 swiper.loopFix({ 10388 direction: 'next' 10389 }); 10390 // eslint-disable-next-line 10391 swiper._clientLeft = swiper.wrapperEl.clientLeft; 10392 if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { 10393 requestAnimationFrame(() => { 10394 swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 10395 }); 10396 return true; 10397 } 10398 } 10399 if (params.rewind && swiper.isEnd) { 10400 return swiper.slideTo(0, speed, runCallbacks, internal); 10401 } 10402 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); 10403} 10404 10405/* eslint no-unused-vars: "off" */ 10406function slidePrev(speed, runCallbacks, internal) { 10407 if (runCallbacks === void 0) { 10408 runCallbacks = true; 10409 } 10410 const swiper = this; 10411 const { 10412 params, 10413 snapGrid, 10414 slidesGrid, 10415 rtlTranslate, 10416 enabled, 10417 animating 10418 } = swiper; 10419 if (!enabled || swiper.destroyed) return swiper; 10420 if (typeof speed === 'undefined') { 10421 speed = swiper.params.speed; 10422 } 10423 const isVirtual = swiper.virtual && params.virtual.enabled; 10424 if (params.loop) { 10425 if (animating && !isVirtual && params.loopPreventsSliding) return false; 10426 swiper.loopFix({ 10427 direction: 'prev' 10428 }); 10429 // eslint-disable-next-line 10430 swiper._clientLeft = swiper.wrapperEl.clientLeft; 10431 } 10432 const translate = rtlTranslate ? swiper.translate : -swiper.translate; 10433 function normalize(val) { 10434 if (val < 0) return -Math.floor(Math.abs(val)); 10435 return Math.floor(val); 10436 } 10437 const normalizedTranslate = normalize(translate); 10438 const normalizedSnapGrid = snapGrid.map(val => normalize(val)); 10439 let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 10440 if (typeof prevSnap === 'undefined' && params.cssMode) { 10441 let prevSnapIndex; 10442 snapGrid.forEach((snap, snapIndex) => { 10443 if (normalizedTranslate >= snap) { 10444 // prevSnap = snap; 10445 prevSnapIndex = snapIndex; 10446 } 10447 }); 10448 if (typeof prevSnapIndex !== 'undefined') { 10449 prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; 10450 } 10451 } 10452 let prevIndex = 0; 10453 if (typeof prevSnap !== 'undefined') { 10454 prevIndex = slidesGrid.indexOf(prevSnap); 10455 if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; 10456 if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { 10457 prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; 10458 prevIndex = Math.max(prevIndex, 0); 10459 } 10460 } 10461 if (params.rewind && swiper.isBeginning) { 10462 const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 10463 return swiper.slideTo(lastIndex, speed, runCallbacks, internal); 10464 } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { 10465 requestAnimationFrame(() => { 10466 swiper.slideTo(prevIndex, speed, runCallbacks, internal); 10467 }); 10468 return true; 10469 } 10470 return swiper.slideTo(prevIndex, speed, runCallbacks, internal); 10471} 10472 10473/* eslint no-unused-vars: "off" */ 10474function slideReset(speed, runCallbacks, internal) { 10475 if (runCallbacks === void 0) { 10476 runCallbacks = true; 10477 } 10478 const swiper = this; 10479 if (swiper.destroyed) return; 10480 if (typeof speed === 'undefined') { 10481 speed = swiper.params.speed; 10482 } 10483 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); 10484} 10485 10486/* eslint no-unused-vars: "off" */ 10487function slideToClosest(speed, runCallbacks, internal, threshold) { 10488 if (runCallbacks === void 0) { 10489 runCallbacks = true; 10490 } 10491 if (threshold === void 0) { 10492 threshold = 0.5; 10493 } 10494 const swiper = this; 10495 if (swiper.destroyed) return; 10496 if (typeof speed === 'undefined') { 10497 speed = swiper.params.speed; 10498 } 10499 let index = swiper.activeIndex; 10500 const skip = Math.min(swiper.params.slidesPerGroupSkip, index); 10501 const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 10502 const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 10503 if (translate >= swiper.snapGrid[snapIndex]) { 10504 // The current translate is on or after the current snap index, so the choice 10505 // is between the current index and the one after it. 10506 const currentSnap = swiper.snapGrid[snapIndex]; 10507 const nextSnap = swiper.snapGrid[snapIndex + 1]; 10508 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 10509 index += swiper.params.slidesPerGroup; 10510 } 10511 } else { 10512 // The current translate is before the current snap index, so the choice 10513 // is between the current index and the one before it. 10514 const prevSnap = swiper.snapGrid[snapIndex - 1]; 10515 const currentSnap = swiper.snapGrid[snapIndex]; 10516 if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { 10517 index -= swiper.params.slidesPerGroup; 10518 } 10519 } 10520 index = Math.max(index, 0); 10521 index = Math.min(index, swiper.slidesGrid.length - 1); 10522 return swiper.slideTo(index, speed, runCallbacks, internal); 10523} 10524 10525function slideToClickedSlide() { 10526 const swiper = this; 10527 if (swiper.destroyed) return; 10528 const { 10529 params, 10530 slidesEl 10531 } = swiper; 10532 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; 10533 let slideToIndex = swiper.clickedIndex; 10534 let realIndex; 10535 const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; 10536 if (params.loop) { 10537 if (swiper.animating) return; 10538 realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); 10539 if (params.centeredSlides) { 10540 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 10541 swiper.loopFix(); 10542 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 10543 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 10544 swiper.slideTo(slideToIndex); 10545 }); 10546 } else { 10547 swiper.slideTo(slideToIndex); 10548 } 10549 } else if (slideToIndex > swiper.slides.length - slidesPerView) { 10550 swiper.loopFix(); 10551 slideToIndex = swiper.getSlideIndex((0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); 10552 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 10553 swiper.slideTo(slideToIndex); 10554 }); 10555 } else { 10556 swiper.slideTo(slideToIndex); 10557 } 10558 } else { 10559 swiper.slideTo(slideToIndex); 10560 } 10561} 10562 10563var slide = { 10564 slideTo, 10565 slideToLoop, 10566 slideNext, 10567 slidePrev, 10568 slideReset, 10569 slideToClosest, 10570 slideToClickedSlide 10571}; 10572 10573function loopCreate(slideRealIndex) { 10574 const swiper = this; 10575 const { 10576 params, 10577 slidesEl 10578 } = swiper; 10579 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 10580 const initSlides = () => { 10581 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 10582 slides.forEach((el, index) => { 10583 el.setAttribute('data-swiper-slide-index', index); 10584 }); 10585 }; 10586 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 10587 const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); 10588 const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; 10589 const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; 10590 const addBlankSlides = amountOfSlides => { 10591 for (let i = 0; i < amountOfSlides; i += 1) { 10592 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]); 10593 swiper.slidesEl.append(slideEl); 10594 } 10595 }; 10596 if (shouldFillGroup) { 10597 if (params.loopAddBlankSlides) { 10598 const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; 10599 addBlankSlides(slidesToAdd); 10600 swiper.recalcSlides(); 10601 swiper.updateSlides(); 10602 } else { 10603 (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)'); 10604 } 10605 initSlides(); 10606 } else if (shouldFillGrid) { 10607 if (params.loopAddBlankSlides) { 10608 const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; 10609 addBlankSlides(slidesToAdd); 10610 swiper.recalcSlides(); 10611 swiper.updateSlides(); 10612 } else { 10613 (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)'); 10614 } 10615 initSlides(); 10616 } else { 10617 initSlides(); 10618 } 10619 swiper.loopFix({ 10620 slideRealIndex, 10621 direction: params.centeredSlides ? undefined : 'next' 10622 }); 10623} 10624 10625function loopFix(_temp) { 10626 let { 10627 slideRealIndex, 10628 slideTo = true, 10629 direction, 10630 setTranslate, 10631 activeSlideIndex, 10632 byController, 10633 byMousewheel 10634 } = _temp === void 0 ? {} : _temp; 10635 const swiper = this; 10636 if (!swiper.params.loop) return; 10637 swiper.emit('beforeLoopFix'); 10638 const { 10639 slides, 10640 allowSlidePrev, 10641 allowSlideNext, 10642 slidesEl, 10643 params 10644 } = swiper; 10645 const { 10646 centeredSlides 10647 } = params; 10648 swiper.allowSlidePrev = true; 10649 swiper.allowSlideNext = true; 10650 if (swiper.virtual && params.virtual.enabled) { 10651 if (slideTo) { 10652 if (!params.centeredSlides && swiper.snapIndex === 0) { 10653 swiper.slideTo(swiper.virtual.slides.length, 0, false, true); 10654 } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { 10655 swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); 10656 } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { 10657 swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); 10658 } 10659 } 10660 swiper.allowSlidePrev = allowSlidePrev; 10661 swiper.allowSlideNext = allowSlideNext; 10662 swiper.emit('loopFix'); 10663 return; 10664 } 10665 let slidesPerView = params.slidesPerView; 10666 if (slidesPerView === 'auto') { 10667 slidesPerView = swiper.slidesPerViewDynamic(); 10668 } else { 10669 slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); 10670 if (centeredSlides && slidesPerView % 2 === 0) { 10671 slidesPerView = slidesPerView + 1; 10672 } 10673 } 10674 const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; 10675 let loopedSlides = slidesPerGroup; 10676 if (loopedSlides % slidesPerGroup !== 0) { 10677 loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; 10678 } 10679 loopedSlides += params.loopAdditionalSlides; 10680 swiper.loopedSlides = loopedSlides; 10681 const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; 10682 if (slides.length < slidesPerView + loopedSlides) { 10683 (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'); 10684 } else if (gridEnabled && params.grid.fill === 'row') { 10685 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.u)('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); 10686 } 10687 const prependSlidesIndexes = []; 10688 const appendSlidesIndexes = []; 10689 let activeIndex = swiper.activeIndex; 10690 if (typeof activeSlideIndex === 'undefined') { 10691 activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); 10692 } else { 10693 activeIndex = activeSlideIndex; 10694 } 10695 const isNext = direction === 'next' || !direction; 10696 const isPrev = direction === 'prev' || !direction; 10697 let slidesPrepended = 0; 10698 let slidesAppended = 0; 10699 const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; 10700 const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; 10701 const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); 10702 // prepend last slides before start 10703 if (activeColIndexWithShift < loopedSlides) { 10704 slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); 10705 for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { 10706 const index = i - Math.floor(i / cols) * cols; 10707 if (gridEnabled) { 10708 const colIndexToPrepend = cols - index - 1; 10709 for (let i = slides.length - 1; i >= 0; i -= 1) { 10710 if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); 10711 } 10712 // slides.forEach((slide, slideIndex) => { 10713 // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); 10714 // }); 10715 } else { 10716 prependSlidesIndexes.push(cols - index - 1); 10717 } 10718 } 10719 } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { 10720 slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); 10721 for (let i = 0; i < slidesAppended; i += 1) { 10722 const index = i - Math.floor(i / cols) * cols; 10723 if (gridEnabled) { 10724 slides.forEach((slide, slideIndex) => { 10725 if (slide.column === index) appendSlidesIndexes.push(slideIndex); 10726 }); 10727 } else { 10728 appendSlidesIndexes.push(index); 10729 } 10730 } 10731 } 10732 swiper.__preventObserver__ = true; 10733 requestAnimationFrame(() => { 10734 swiper.__preventObserver__ = false; 10735 }); 10736 if (isPrev) { 10737 prependSlidesIndexes.forEach(index => { 10738 slides[index].swiperLoopMoveDOM = true; 10739 slidesEl.prepend(slides[index]); 10740 slides[index].swiperLoopMoveDOM = false; 10741 }); 10742 } 10743 if (isNext) { 10744 appendSlidesIndexes.forEach(index => { 10745 slides[index].swiperLoopMoveDOM = true; 10746 slidesEl.append(slides[index]); 10747 slides[index].swiperLoopMoveDOM = false; 10748 }); 10749 } 10750 swiper.recalcSlides(); 10751 if (params.slidesPerView === 'auto') { 10752 swiper.updateSlides(); 10753 } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { 10754 swiper.slides.forEach((slide, slideIndex) => { 10755 swiper.grid.updateSlide(slideIndex, slide, swiper.slides); 10756 }); 10757 } 10758 if (params.watchSlidesProgress) { 10759 swiper.updateSlidesOffset(); 10760 } 10761 if (slideTo) { 10762 if (prependSlidesIndexes.length > 0 && isPrev) { 10763 if (typeof slideRealIndex === 'undefined') { 10764 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 10765 const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; 10766 const diff = newSlideTranslate - currentSlideTranslate; 10767 if (byMousewheel) { 10768 swiper.setTranslate(swiper.translate - diff); 10769 } else { 10770 swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); 10771 if (setTranslate) { 10772 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 10773 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 10774 } 10775 } 10776 } else { 10777 if (setTranslate) { 10778 const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; 10779 swiper.slideTo(swiper.activeIndex + shift, 0, false, true); 10780 swiper.touchEventsData.currentTranslate = swiper.translate; 10781 } 10782 } 10783 } else if (appendSlidesIndexes.length > 0 && isNext) { 10784 if (typeof slideRealIndex === 'undefined') { 10785 const currentSlideTranslate = swiper.slidesGrid[activeIndex]; 10786 const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; 10787 const diff = newSlideTranslate - currentSlideTranslate; 10788 if (byMousewheel) { 10789 swiper.setTranslate(swiper.translate - diff); 10790 } else { 10791 swiper.slideTo(activeIndex - slidesAppended, 0, false, true); 10792 if (setTranslate) { 10793 swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; 10794 swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; 10795 } 10796 } 10797 } else { 10798 const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; 10799 swiper.slideTo(swiper.activeIndex - shift, 0, false, true); 10800 } 10801 } 10802 } 10803 swiper.allowSlidePrev = allowSlidePrev; 10804 swiper.allowSlideNext = allowSlideNext; 10805 if (swiper.controller && swiper.controller.control && !byController) { 10806 const loopParams = { 10807 slideRealIndex, 10808 direction, 10809 setTranslate, 10810 activeSlideIndex, 10811 byController: true 10812 }; 10813 if (Array.isArray(swiper.controller.control)) { 10814 swiper.controller.control.forEach(c => { 10815 if (!c.destroyed && c.params.loop) c.loopFix({ 10816 ...loopParams, 10817 slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false 10818 }); 10819 }); 10820 } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { 10821 swiper.controller.control.loopFix({ 10822 ...loopParams, 10823 slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false 10824 }); 10825 } 10826 } 10827 swiper.emit('loopFix'); 10828} 10829 10830function loopDestroy() { 10831 const swiper = this; 10832 const { 10833 params, 10834 slidesEl 10835 } = swiper; 10836 if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; 10837 swiper.recalcSlides(); 10838 const newSlidesOrder = []; 10839 swiper.slides.forEach(slideEl => { 10840 const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; 10841 newSlidesOrder[index] = slideEl; 10842 }); 10843 swiper.slides.forEach(slideEl => { 10844 slideEl.removeAttribute('data-swiper-slide-index'); 10845 }); 10846 newSlidesOrder.forEach(slideEl => { 10847 slidesEl.append(slideEl); 10848 }); 10849 swiper.recalcSlides(); 10850 swiper.slideTo(swiper.realIndex, 0); 10851} 10852 10853var loop = { 10854 loopCreate, 10855 loopFix, 10856 loopDestroy 10857}; 10858 10859function setGrabCursor(moving) { 10860 const swiper = this; 10861 if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; 10862 const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; 10863 if (swiper.isElement) { 10864 swiper.__preventObserver__ = true; 10865 } 10866 el.style.cursor = 'move'; 10867 el.style.cursor = moving ? 'grabbing' : 'grab'; 10868 if (swiper.isElement) { 10869 requestAnimationFrame(() => { 10870 swiper.__preventObserver__ = false; 10871 }); 10872 } 10873} 10874 10875function unsetGrabCursor() { 10876 const swiper = this; 10877 if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 10878 return; 10879 } 10880 if (swiper.isElement) { 10881 swiper.__preventObserver__ = true; 10882 } 10883 swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; 10884 if (swiper.isElement) { 10885 requestAnimationFrame(() => { 10886 swiper.__preventObserver__ = false; 10887 }); 10888 } 10889} 10890 10891var grabCursor = { 10892 setGrabCursor, 10893 unsetGrabCursor 10894}; 10895 10896// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd 10897function closestElement(selector, base) { 10898 if (base === void 0) { 10899 base = this; 10900 } 10901 function __closestFrom(el) { 10902 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; 10903 if (el.assignedSlot) el = el.assignedSlot; 10904 const found = el.closest(selector); 10905 if (!found && !el.getRootNode) { 10906 return null; 10907 } 10908 return found || __closestFrom(el.getRootNode().host); 10909 } 10910 return __closestFrom(base); 10911} 10912function preventEdgeSwipe(swiper, event, startX) { 10913 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 10914 const { 10915 params 10916 } = swiper; 10917 const edgeSwipeDetection = params.edgeSwipeDetection; 10918 const edgeSwipeThreshold = params.edgeSwipeThreshold; 10919 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 10920 if (edgeSwipeDetection === 'prevent') { 10921 event.preventDefault(); 10922 return true; 10923 } 10924 return false; 10925 } 10926 return true; 10927} 10928function onTouchStart(event) { 10929 const swiper = this; 10930 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 10931 let e = event; 10932 if (e.originalEvent) e = e.originalEvent; 10933 const data = swiper.touchEventsData; 10934 if (e.type === 'pointerdown') { 10935 if (data.pointerId !== null && data.pointerId !== e.pointerId) { 10936 return; 10937 } 10938 data.pointerId = e.pointerId; 10939 } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { 10940 data.touchId = e.targetTouches[0].identifier; 10941 } 10942 if (e.type === 'touchstart') { 10943 // don't proceed touch event 10944 preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); 10945 return; 10946 } 10947 const { 10948 params, 10949 touches, 10950 enabled 10951 } = swiper; 10952 if (!enabled) return; 10953 if (!params.simulateTouch && e.pointerType === 'mouse') return; 10954 if (swiper.animating && params.preventInteractionOnTransition) { 10955 return; 10956 } 10957 if (!swiper.animating && params.cssMode && params.loop) { 10958 swiper.loopFix(); 10959 } 10960 let targetEl = e.target; 10961 if (params.touchEventsTarget === 'wrapper') { 10962 if (!(0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.v)(targetEl, swiper.wrapperEl)) return; 10963 } 10964 if ('which' in e && e.which === 3) return; 10965 if ('button' in e && e.button > 0) return; 10966 if (data.isTouched && data.isMoved) return; 10967 10968 // change target el for shadow root component 10969 const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; 10970 // eslint-disable-next-line 10971 const eventPath = e.composedPath ? e.composedPath() : e.path; 10972 if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { 10973 targetEl = eventPath[0]; 10974 } 10975 const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; 10976 const isTargetShadow = !!(e.target && e.target.shadowRoot); 10977 10978 // use closestElement for shadow root element to get the actual closest for nested shadow root element 10979 if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { 10980 swiper.allowClick = true; 10981 return; 10982 } 10983 if (params.swipeHandler) { 10984 if (!targetEl.closest(params.swipeHandler)) return; 10985 } 10986 touches.currentX = e.pageX; 10987 touches.currentY = e.pageY; 10988 const startX = touches.currentX; 10989 const startY = touches.currentY; 10990 10991 // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore 10992 10993 if (!preventEdgeSwipe(swiper, e, startX)) { 10994 return; 10995 } 10996 Object.assign(data, { 10997 isTouched: true, 10998 isMoved: false, 10999 allowTouchCallbacks: true, 11000 isScrolling: undefined, 11001 startMoving: undefined 11002 }); 11003 touches.startX = startX; 11004 touches.startY = startY; 11005 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 11006 swiper.allowClick = true; 11007 swiper.updateSize(); 11008 swiper.swipeDirection = undefined; 11009 if (params.threshold > 0) data.allowThresholdMove = false; 11010 let preventDefault = true; 11011 if (targetEl.matches(data.focusableElements)) { 11012 preventDefault = false; 11013 if (targetEl.nodeName === 'SELECT') { 11014 data.isTouched = false; 11015 } 11016 } 11017 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) { 11018 document.activeElement.blur(); 11019 } 11020 const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 11021 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { 11022 e.preventDefault(); 11023 } 11024 if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { 11025 swiper.freeMode.onTouchStart(); 11026 } 11027 swiper.emit('touchStart', e); 11028} 11029 11030function onTouchMove(event) { 11031 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 11032 const swiper = this; 11033 const data = swiper.touchEventsData; 11034 const { 11035 params, 11036 touches, 11037 rtlTranslate: rtl, 11038 enabled 11039 } = swiper; 11040 if (!enabled) return; 11041 if (!params.simulateTouch && event.pointerType === 'mouse') return; 11042 let e = event; 11043 if (e.originalEvent) e = e.originalEvent; 11044 if (e.type === 'pointermove') { 11045 if (data.touchId !== null) return; // return from pointer if we use touch 11046 const id = e.pointerId; 11047 if (id !== data.pointerId) return; 11048 } 11049 let targetTouch; 11050 if (e.type === 'touchmove') { 11051 targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; 11052 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 11053 } else { 11054 targetTouch = e; 11055 } 11056 if (!data.isTouched) { 11057 if (data.startMoving && data.isScrolling) { 11058 swiper.emit('touchMoveOpposite', e); 11059 } 11060 return; 11061 } 11062 const pageX = targetTouch.pageX; 11063 const pageY = targetTouch.pageY; 11064 if (e.preventedByNestedSwiper) { 11065 touches.startX = pageX; 11066 touches.startY = pageY; 11067 return; 11068 } 11069 if (!swiper.allowTouchMove) { 11070 if (!e.target.matches(data.focusableElements)) { 11071 swiper.allowClick = false; 11072 } 11073 if (data.isTouched) { 11074 Object.assign(touches, { 11075 startX: pageX, 11076 startY: pageY, 11077 currentX: pageX, 11078 currentY: pageY 11079 }); 11080 data.touchStartTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 11081 } 11082 return; 11083 } 11084 if (params.touchReleaseOnEdges && !params.loop) { 11085 if (swiper.isVertical()) { 11086 // Vertical 11087 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 11088 data.isTouched = false; 11089 data.isMoved = false; 11090 return; 11091 } 11092 } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { 11093 return; 11094 } 11095 } 11096 if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') { 11097 document.activeElement.blur(); 11098 } 11099 if (document.activeElement) { 11100 if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { 11101 data.isMoved = true; 11102 swiper.allowClick = false; 11103 return; 11104 } 11105 } 11106 if (data.allowTouchCallbacks) { 11107 swiper.emit('touchMove', e); 11108 } 11109 touches.previousX = touches.currentX; 11110 touches.previousY = touches.currentY; 11111 touches.currentX = pageX; 11112 touches.currentY = pageY; 11113 const diffX = touches.currentX - touches.startX; 11114 const diffY = touches.currentY - touches.startY; 11115 if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; 11116 if (typeof data.isScrolling === 'undefined') { 11117 let touchAngle; 11118 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 11119 data.isScrolling = false; 11120 } else { 11121 // eslint-disable-next-line 11122 if (diffX * diffX + diffY * diffY >= 25) { 11123 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 11124 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; 11125 } 11126 } 11127 } 11128 if (data.isScrolling) { 11129 swiper.emit('touchMoveOpposite', e); 11130 } 11131 if (typeof data.startMoving === 'undefined') { 11132 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 11133 data.startMoving = true; 11134 } 11135 } 11136 if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { 11137 data.isTouched = false; 11138 return; 11139 } 11140 if (!data.startMoving) { 11141 return; 11142 } 11143 swiper.allowClick = false; 11144 if (!params.cssMode && e.cancelable) { 11145 e.preventDefault(); 11146 } 11147 if (params.touchMoveStopPropagation && !params.nested) { 11148 e.stopPropagation(); 11149 } 11150 let diff = swiper.isHorizontal() ? diffX : diffY; 11151 let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; 11152 if (params.oneWayMovement) { 11153 diff = Math.abs(diff) * (rtl ? 1 : -1); 11154 touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); 11155 } 11156 touches.diff = diff; 11157 diff *= params.touchRatio; 11158 if (rtl) { 11159 diff = -diff; 11160 touchesDiff = -touchesDiff; 11161 } 11162 const prevTouchesDirection = swiper.touchesDirection; 11163 swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; 11164 swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; 11165 const isLoop = swiper.params.loop && !params.cssMode; 11166 const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; 11167 if (!data.isMoved) { 11168 if (isLoop && allowLoopFix) { 11169 swiper.loopFix({ 11170 direction: swiper.swipeDirection 11171 }); 11172 } 11173 data.startTranslate = swiper.getTranslate(); 11174 swiper.setTransition(0); 11175 if (swiper.animating) { 11176 const evt = new window.CustomEvent('transitionend', { 11177 bubbles: true, 11178 cancelable: true, 11179 detail: { 11180 bySwiperTouchMove: true 11181 } 11182 }); 11183 swiper.wrapperEl.dispatchEvent(evt); 11184 } 11185 data.allowMomentumBounce = false; 11186 // Grab Cursor 11187 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 11188 swiper.setGrabCursor(true); 11189 } 11190 swiper.emit('sliderFirstMove', e); 11191 } 11192 let loopFixed; 11193 new Date().getTime(); 11194 if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { 11195 Object.assign(touches, { 11196 startX: pageX, 11197 startY: pageY, 11198 currentX: pageX, 11199 currentY: pageY, 11200 startTranslate: data.currentTranslate 11201 }); 11202 data.loopSwapReset = true; 11203 data.startTranslate = data.currentTranslate; 11204 return; 11205 } 11206 swiper.emit('sliderMove', e); 11207 data.isMoved = true; 11208 data.currentTranslate = diff + data.startTranslate; 11209 let disableParentSwiper = true; 11210 let resistanceRatio = params.resistanceRatio; 11211 if (params.touchReleaseOnEdges) { 11212 resistanceRatio = 0; 11213 } 11214 if (diff > 0) { 11215 if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) { 11216 swiper.loopFix({ 11217 direction: 'prev', 11218 setTranslate: true, 11219 activeSlideIndex: 0 11220 }); 11221 } 11222 if (data.currentTranslate > swiper.minTranslate()) { 11223 disableParentSwiper = false; 11224 if (params.resistance) { 11225 data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; 11226 } 11227 } 11228 } else if (diff < 0) { 11229 if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) { 11230 swiper.loopFix({ 11231 direction: 'next', 11232 setTranslate: true, 11233 activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) 11234 }); 11235 } 11236 if (data.currentTranslate < swiper.maxTranslate()) { 11237 disableParentSwiper = false; 11238 if (params.resistance) { 11239 data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; 11240 } 11241 } 11242 } 11243 if (disableParentSwiper) { 11244 e.preventedByNestedSwiper = true; 11245 } 11246 11247 // Directions locks 11248 if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { 11249 data.currentTranslate = data.startTranslate; 11250 } 11251 if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { 11252 data.currentTranslate = data.startTranslate; 11253 } 11254 if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { 11255 data.currentTranslate = data.startTranslate; 11256 } 11257 11258 // Threshold 11259 if (params.threshold > 0) { 11260 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 11261 if (!data.allowThresholdMove) { 11262 data.allowThresholdMove = true; 11263 touches.startX = touches.currentX; 11264 touches.startY = touches.currentY; 11265 data.currentTranslate = data.startTranslate; 11266 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 11267 return; 11268 } 11269 } else { 11270 data.currentTranslate = data.startTranslate; 11271 return; 11272 } 11273 } 11274 if (!params.followFinger || params.cssMode) return; 11275 11276 // Update active index in free mode 11277 if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { 11278 swiper.updateActiveIndex(); 11279 swiper.updateSlidesClasses(); 11280 } 11281 if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { 11282 swiper.freeMode.onTouchMove(); 11283 } 11284 // Update progress 11285 swiper.updateProgress(data.currentTranslate); 11286 // Update translate 11287 swiper.setTranslate(data.currentTranslate); 11288} 11289 11290function onTouchEnd(event) { 11291 const swiper = this; 11292 const data = swiper.touchEventsData; 11293 let e = event; 11294 if (e.originalEvent) e = e.originalEvent; 11295 let targetTouch; 11296 const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; 11297 if (!isTouchEvent) { 11298 if (data.touchId !== null) return; // return from pointer if we use touch 11299 if (e.pointerId !== data.pointerId) return; 11300 targetTouch = e; 11301 } else { 11302 targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; 11303 if (!targetTouch || targetTouch.identifier !== data.touchId) return; 11304 } 11305 if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { 11306 const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); 11307 if (!proceed) { 11308 return; 11309 } 11310 } 11311 data.pointerId = null; 11312 data.touchId = null; 11313 const { 11314 params, 11315 touches, 11316 rtlTranslate: rtl, 11317 slidesGrid, 11318 enabled 11319 } = swiper; 11320 if (!enabled) return; 11321 if (!params.simulateTouch && e.pointerType === 'mouse') return; 11322 if (data.allowTouchCallbacks) { 11323 swiper.emit('touchEnd', e); 11324 } 11325 data.allowTouchCallbacks = false; 11326 if (!data.isTouched) { 11327 if (data.isMoved && params.grabCursor) { 11328 swiper.setGrabCursor(false); 11329 } 11330 data.isMoved = false; 11331 data.startMoving = false; 11332 return; 11333 } 11334 11335 // Return Grab Cursor 11336 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 11337 swiper.setGrabCursor(false); 11338 } 11339 11340 // Time diff 11341 const touchEndTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 11342 const timeDiff = touchEndTime - data.touchStartTime; 11343 11344 // Tap, doubleTap, Click 11345 if (swiper.allowClick) { 11346 const pathTree = e.path || e.composedPath && e.composedPath(); 11347 swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); 11348 swiper.emit('tap click', e); 11349 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 11350 swiper.emit('doubleTap doubleClick', e); 11351 } 11352 } 11353 data.lastClickTime = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.d)(); 11354 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.n)(() => { 11355 if (!swiper.destroyed) swiper.allowClick = true; 11356 }); 11357 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { 11358 data.isTouched = false; 11359 data.isMoved = false; 11360 data.startMoving = false; 11361 return; 11362 } 11363 data.isTouched = false; 11364 data.isMoved = false; 11365 data.startMoving = false; 11366 let currentPos; 11367 if (params.followFinger) { 11368 currentPos = rtl ? swiper.translate : -swiper.translate; 11369 } else { 11370 currentPos = -data.currentTranslate; 11371 } 11372 if (params.cssMode) { 11373 return; 11374 } 11375 if (params.freeMode && params.freeMode.enabled) { 11376 swiper.freeMode.onTouchEnd({ 11377 currentPos 11378 }); 11379 return; 11380 } 11381 11382 // Find current slide 11383 const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; 11384 let stopIndex = 0; 11385 let groupSize = swiper.slidesSizesGrid[0]; 11386 for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 11387 const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 11388 if (typeof slidesGrid[i + increment] !== 'undefined') { 11389 if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { 11390 stopIndex = i; 11391 groupSize = slidesGrid[i + increment] - slidesGrid[i]; 11392 } 11393 } else if (swipeToLast || currentPos >= slidesGrid[i]) { 11394 stopIndex = i; 11395 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; 11396 } 11397 } 11398 let rewindFirstIndex = null; 11399 let rewindLastIndex = null; 11400 if (params.rewind) { 11401 if (swiper.isBeginning) { 11402 rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; 11403 } else if (swiper.isEnd) { 11404 rewindFirstIndex = 0; 11405 } 11406 } 11407 // Find current slide size 11408 const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 11409 const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 11410 if (timeDiff > params.longSwipesMs) { 11411 // Long touches 11412 if (!params.longSwipes) { 11413 swiper.slideTo(swiper.activeIndex); 11414 return; 11415 } 11416 if (swiper.swipeDirection === 'next') { 11417 if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); 11418 } 11419 if (swiper.swipeDirection === 'prev') { 11420 if (ratio > 1 - params.longSwipesRatio) { 11421 swiper.slideTo(stopIndex + increment); 11422 } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { 11423 swiper.slideTo(rewindLastIndex); 11424 } else { 11425 swiper.slideTo(stopIndex); 11426 } 11427 } 11428 } else { 11429 // Short swipes 11430 if (!params.shortSwipes) { 11431 swiper.slideTo(swiper.activeIndex); 11432 return; 11433 } 11434 const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 11435 if (!isNavButtonTarget) { 11436 if (swiper.swipeDirection === 'next') { 11437 swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); 11438 } 11439 if (swiper.swipeDirection === 'prev') { 11440 swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); 11441 } 11442 } else if (e.target === swiper.navigation.nextEl) { 11443 swiper.slideTo(stopIndex + increment); 11444 } else { 11445 swiper.slideTo(stopIndex); 11446 } 11447 } 11448} 11449 11450function onResize() { 11451 const swiper = this; 11452 const { 11453 params, 11454 el 11455 } = swiper; 11456 if (el && el.offsetWidth === 0) return; 11457 11458 // Breakpoints 11459 if (params.breakpoints) { 11460 swiper.setBreakpoint(); 11461 } 11462 11463 // Save locks 11464 const { 11465 allowSlideNext, 11466 allowSlidePrev, 11467 snapGrid 11468 } = swiper; 11469 const isVirtual = swiper.virtual && swiper.params.virtual.enabled; 11470 11471 // Disable locks on resize 11472 swiper.allowSlideNext = true; 11473 swiper.allowSlidePrev = true; 11474 swiper.updateSize(); 11475 swiper.updateSlides(); 11476 swiper.updateSlidesClasses(); 11477 const isVirtualLoop = isVirtual && params.loop; 11478 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { 11479 swiper.slideTo(swiper.slides.length - 1, 0, false, true); 11480 } else { 11481 if (swiper.params.loop && !isVirtual) { 11482 swiper.slideToLoop(swiper.realIndex, 0, false, true); 11483 } else { 11484 swiper.slideTo(swiper.activeIndex, 0, false, true); 11485 } 11486 } 11487 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 11488 clearTimeout(swiper.autoplay.resizeTimeout); 11489 swiper.autoplay.resizeTimeout = setTimeout(() => { 11490 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 11491 swiper.autoplay.resume(); 11492 } 11493 }, 500); 11494 } 11495 // Return locks after resize 11496 swiper.allowSlidePrev = allowSlidePrev; 11497 swiper.allowSlideNext = allowSlideNext; 11498 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 11499 swiper.checkOverflow(); 11500 } 11501} 11502 11503function onClick(e) { 11504 const swiper = this; 11505 if (!swiper.enabled) return; 11506 if (!swiper.allowClick) { 11507 if (swiper.params.preventClicks) e.preventDefault(); 11508 if (swiper.params.preventClicksPropagation && swiper.animating) { 11509 e.stopPropagation(); 11510 e.stopImmediatePropagation(); 11511 } 11512 } 11513} 11514 11515function onScroll() { 11516 const swiper = this; 11517 const { 11518 wrapperEl, 11519 rtlTranslate, 11520 enabled 11521 } = swiper; 11522 if (!enabled) return; 11523 swiper.previousTranslate = swiper.translate; 11524 if (swiper.isHorizontal()) { 11525 swiper.translate = -wrapperEl.scrollLeft; 11526 } else { 11527 swiper.translate = -wrapperEl.scrollTop; 11528 } 11529 // eslint-disable-next-line 11530 if (swiper.translate === 0) swiper.translate = 0; 11531 swiper.updateActiveIndex(); 11532 swiper.updateSlidesClasses(); 11533 let newProgress; 11534 const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 11535 if (translatesDiff === 0) { 11536 newProgress = 0; 11537 } else { 11538 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; 11539 } 11540 if (newProgress !== swiper.progress) { 11541 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); 11542 } 11543 swiper.emit('setTranslate', swiper.translate, false); 11544} 11545 11546function onLoad(e) { 11547 const swiper = this; 11548 processLazyPreloader(swiper, e.target); 11549 if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { 11550 return; 11551 } 11552 swiper.update(); 11553} 11554 11555function onDocumentTouchStart() { 11556 const swiper = this; 11557 if (swiper.documentTouchHandlerProceeded) return; 11558 swiper.documentTouchHandlerProceeded = true; 11559 if (swiper.params.touchReleaseOnEdges) { 11560 swiper.el.style.touchAction = 'auto'; 11561 } 11562} 11563 11564const events = (swiper, method) => { 11565 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 11566 const { 11567 params, 11568 el, 11569 wrapperEl, 11570 device 11571 } = swiper; 11572 const capture = !!params.nested; 11573 const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; 11574 const swiperMethod = method; 11575 if (!el || typeof el === 'string') return; 11576 11577 // Touch Events 11578 document[domMethod]('touchstart', swiper.onDocumentTouchStart, { 11579 passive: false, 11580 capture 11581 }); 11582 el[domMethod]('touchstart', swiper.onTouchStart, { 11583 passive: false 11584 }); 11585 el[domMethod]('pointerdown', swiper.onTouchStart, { 11586 passive: false 11587 }); 11588 document[domMethod]('touchmove', swiper.onTouchMove, { 11589 passive: false, 11590 capture 11591 }); 11592 document[domMethod]('pointermove', swiper.onTouchMove, { 11593 passive: false, 11594 capture 11595 }); 11596 document[domMethod]('touchend', swiper.onTouchEnd, { 11597 passive: true 11598 }); 11599 document[domMethod]('pointerup', swiper.onTouchEnd, { 11600 passive: true 11601 }); 11602 document[domMethod]('pointercancel', swiper.onTouchEnd, { 11603 passive: true 11604 }); 11605 document[domMethod]('touchcancel', swiper.onTouchEnd, { 11606 passive: true 11607 }); 11608 document[domMethod]('pointerout', swiper.onTouchEnd, { 11609 passive: true 11610 }); 11611 document[domMethod]('pointerleave', swiper.onTouchEnd, { 11612 passive: true 11613 }); 11614 document[domMethod]('contextmenu', swiper.onTouchEnd, { 11615 passive: true 11616 }); 11617 11618 // Prevent Links Clicks 11619 if (params.preventClicks || params.preventClicksPropagation) { 11620 el[domMethod]('click', swiper.onClick, true); 11621 } 11622 if (params.cssMode) { 11623 wrapperEl[domMethod]('scroll', swiper.onScroll); 11624 } 11625 11626 // Resize handler 11627 if (params.updateOnWindowResize) { 11628 swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); 11629 } else { 11630 swiper[swiperMethod]('observerUpdate', onResize, true); 11631 } 11632 11633 // Images loader 11634 el[domMethod]('load', swiper.onLoad, { 11635 capture: true 11636 }); 11637}; 11638function attachEvents() { 11639 const swiper = this; 11640 const { 11641 params 11642 } = swiper; 11643 swiper.onTouchStart = onTouchStart.bind(swiper); 11644 swiper.onTouchMove = onTouchMove.bind(swiper); 11645 swiper.onTouchEnd = onTouchEnd.bind(swiper); 11646 swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); 11647 if (params.cssMode) { 11648 swiper.onScroll = onScroll.bind(swiper); 11649 } 11650 swiper.onClick = onClick.bind(swiper); 11651 swiper.onLoad = onLoad.bind(swiper); 11652 events(swiper, 'on'); 11653} 11654function detachEvents() { 11655 const swiper = this; 11656 events(swiper, 'off'); 11657} 11658var events$1 = { 11659 attachEvents, 11660 detachEvents 11661}; 11662 11663const isGridEnabled = (swiper, params) => { 11664 return swiper.grid && params.grid && params.grid.rows > 1; 11665}; 11666function setBreakpoint() { 11667 const swiper = this; 11668 const { 11669 realIndex, 11670 initialized, 11671 params, 11672 el 11673 } = swiper; 11674 const breakpoints = params.breakpoints; 11675 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; 11676 11677 // Get breakpoint for window width and update parameters 11678 const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); 11679 if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; 11680 const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 11681 const breakpointParams = breakpointOnlyParams || swiper.originalParams; 11682 const wasMultiRow = isGridEnabled(swiper, params); 11683 const isMultiRow = isGridEnabled(swiper, breakpointParams); 11684 const wasGrabCursor = swiper.params.grabCursor; 11685 const isGrabCursor = breakpointParams.grabCursor; 11686 const wasEnabled = params.enabled; 11687 if (wasMultiRow && !isMultiRow) { 11688 el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); 11689 swiper.emitContainerClasses(); 11690 } else if (!wasMultiRow && isMultiRow) { 11691 el.classList.add(`${params.containerModifierClass}grid`); 11692 if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { 11693 el.classList.add(`${params.containerModifierClass}grid-column`); 11694 } 11695 swiper.emitContainerClasses(); 11696 } 11697 if (wasGrabCursor && !isGrabCursor) { 11698 swiper.unsetGrabCursor(); 11699 } else if (!wasGrabCursor && isGrabCursor) { 11700 swiper.setGrabCursor(); 11701 } 11702 11703 // Toggle navigation, pagination, scrollbar 11704 ['navigation', 'pagination', 'scrollbar'].forEach(prop => { 11705 if (typeof breakpointParams[prop] === 'undefined') return; 11706 const wasModuleEnabled = params[prop] && params[prop].enabled; 11707 const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; 11708 if (wasModuleEnabled && !isModuleEnabled) { 11709 swiper[prop].disable(); 11710 } 11711 if (!wasModuleEnabled && isModuleEnabled) { 11712 swiper[prop].enable(); 11713 } 11714 }); 11715 const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 11716 const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 11717 const wasLoop = params.loop; 11718 if (directionChanged && initialized) { 11719 swiper.changeDirection(); 11720 } 11721 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(swiper.params, breakpointParams); 11722 const isEnabled = swiper.params.enabled; 11723 const hasLoop = swiper.params.loop; 11724 Object.assign(swiper, { 11725 allowTouchMove: swiper.params.allowTouchMove, 11726 allowSlideNext: swiper.params.allowSlideNext, 11727 allowSlidePrev: swiper.params.allowSlidePrev 11728 }); 11729 if (wasEnabled && !isEnabled) { 11730 swiper.disable(); 11731 } else if (!wasEnabled && isEnabled) { 11732 swiper.enable(); 11733 } 11734 swiper.currentBreakpoint = breakpoint; 11735 swiper.emit('_beforeBreakpoint', breakpointParams); 11736 if (initialized) { 11737 if (needsReLoop) { 11738 swiper.loopDestroy(); 11739 swiper.loopCreate(realIndex); 11740 swiper.updateSlides(); 11741 } else if (!wasLoop && hasLoop) { 11742 swiper.loopCreate(realIndex); 11743 swiper.updateSlides(); 11744 } else if (wasLoop && !hasLoop) { 11745 swiper.loopDestroy(); 11746 } 11747 } 11748 swiper.emit('breakpoint', breakpointParams); 11749} 11750 11751function getBreakpoint(breakpoints, base, containerEl) { 11752 if (base === void 0) { 11753 base = 'window'; 11754 } 11755 if (!breakpoints || base === 'container' && !containerEl) return undefined; 11756 let breakpoint = false; 11757 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 11758 const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; 11759 const points = Object.keys(breakpoints).map(point => { 11760 if (typeof point === 'string' && point.indexOf('@') === 0) { 11761 const minRatio = parseFloat(point.substr(1)); 11762 const value = currentHeight * minRatio; 11763 return { 11764 value, 11765 point 11766 }; 11767 } 11768 return { 11769 value: point, 11770 point 11771 }; 11772 }); 11773 points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); 11774 for (let i = 0; i < points.length; i += 1) { 11775 const { 11776 point, 11777 value 11778 } = points[i]; 11779 if (base === 'window') { 11780 if (window.matchMedia(`(min-width: ${value}px)`).matches) { 11781 breakpoint = point; 11782 } 11783 } else if (value <= containerEl.clientWidth) { 11784 breakpoint = point; 11785 } 11786 } 11787 return breakpoint || 'max'; 11788} 11789 11790var breakpoints = { 11791 setBreakpoint, 11792 getBreakpoint 11793}; 11794 11795function prepareClasses(entries, prefix) { 11796 const resultClasses = []; 11797 entries.forEach(item => { 11798 if (typeof item === 'object') { 11799 Object.keys(item).forEach(classNames => { 11800 if (item[classNames]) { 11801 resultClasses.push(prefix + classNames); 11802 } 11803 }); 11804 } else if (typeof item === 'string') { 11805 resultClasses.push(prefix + item); 11806 } 11807 }); 11808 return resultClasses; 11809} 11810function addClasses() { 11811 const swiper = this; 11812 const { 11813 classNames, 11814 params, 11815 rtl, 11816 el, 11817 device 11818 } = swiper; 11819 // prettier-ignore 11820 const suffixes = prepareClasses(['initialized', params.direction, { 11821 'free-mode': swiper.params.freeMode && params.freeMode.enabled 11822 }, { 11823 'autoheight': params.autoHeight 11824 }, { 11825 'rtl': rtl 11826 }, { 11827 'grid': params.grid && params.grid.rows > 1 11828 }, { 11829 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' 11830 }, { 11831 'android': device.android 11832 }, { 11833 'ios': device.ios 11834 }, { 11835 'css-mode': params.cssMode 11836 }, { 11837 'centered': params.cssMode && params.centeredSlides 11838 }, { 11839 'watch-progress': params.watchSlidesProgress 11840 }], params.containerModifierClass); 11841 classNames.push(...suffixes); 11842 el.classList.add(...classNames); 11843 swiper.emitContainerClasses(); 11844} 11845 11846function removeClasses() { 11847 const swiper = this; 11848 const { 11849 el, 11850 classNames 11851 } = swiper; 11852 if (!el || typeof el === 'string') return; 11853 el.classList.remove(...classNames); 11854 swiper.emitContainerClasses(); 11855} 11856 11857var classes = { 11858 addClasses, 11859 removeClasses 11860}; 11861 11862function checkOverflow() { 11863 const swiper = this; 11864 const { 11865 isLocked: wasLocked, 11866 params 11867 } = swiper; 11868 const { 11869 slidesOffsetBefore 11870 } = params; 11871 if (slidesOffsetBefore) { 11872 const lastSlideIndex = swiper.slides.length - 1; 11873 const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; 11874 swiper.isLocked = swiper.size > lastSlideRightEdge; 11875 } else { 11876 swiper.isLocked = swiper.snapGrid.length === 1; 11877 } 11878 if (params.allowSlideNext === true) { 11879 swiper.allowSlideNext = !swiper.isLocked; 11880 } 11881 if (params.allowSlidePrev === true) { 11882 swiper.allowSlidePrev = !swiper.isLocked; 11883 } 11884 if (wasLocked && wasLocked !== swiper.isLocked) { 11885 swiper.isEnd = false; 11886 } 11887 if (wasLocked !== swiper.isLocked) { 11888 swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); 11889 } 11890} 11891var checkOverflow$1 = { 11892 checkOverflow 11893}; 11894 11895var defaults = { 11896 init: true, 11897 direction: 'horizontal', 11898 oneWayMovement: false, 11899 swiperElementNodeName: 'SWIPER-CONTAINER', 11900 touchEventsTarget: 'wrapper', 11901 initialSlide: 0, 11902 speed: 300, 11903 cssMode: false, 11904 updateOnWindowResize: true, 11905 resizeObserver: true, 11906 nested: false, 11907 createElements: false, 11908 eventsPrefix: 'swiper', 11909 enabled: true, 11910 focusableElements: 'input, select, option, textarea, button, video, label', 11911 // Overrides 11912 width: null, 11913 height: null, 11914 // 11915 preventInteractionOnTransition: false, 11916 // ssr 11917 userAgent: null, 11918 url: null, 11919 // To support iOS's swipe-to-go-back gesture (when being used in-app). 11920 edgeSwipeDetection: false, 11921 edgeSwipeThreshold: 20, 11922 // Autoheight 11923 autoHeight: false, 11924 // Set wrapper width 11925 setWrapperSize: false, 11926 // Virtual Translate 11927 virtualTranslate: false, 11928 // Effects 11929 effect: 'slide', 11930 // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' 11931 11932 // Breakpoints 11933 breakpoints: undefined, 11934 breakpointsBase: 'window', 11935 // Slides grid 11936 spaceBetween: 0, 11937 slidesPerView: 1, 11938 slidesPerGroup: 1, 11939 slidesPerGroupSkip: 0, 11940 slidesPerGroupAuto: false, 11941 centeredSlides: false, 11942 centeredSlidesBounds: false, 11943 slidesOffsetBefore: 0, 11944 // in px 11945 slidesOffsetAfter: 0, 11946 // in px 11947 normalizeSlideIndex: true, 11948 centerInsufficientSlides: false, 11949 // Disable swiper and hide navigation when container not overflow 11950 watchOverflow: true, 11951 // Round length 11952 roundLengths: false, 11953 // Touches 11954 touchRatio: 1, 11955 touchAngle: 45, 11956 simulateTouch: true, 11957 shortSwipes: true, 11958 longSwipes: true, 11959 longSwipesRatio: 0.5, 11960 longSwipesMs: 300, 11961 followFinger: true, 11962 allowTouchMove: true, 11963 threshold: 5, 11964 touchMoveStopPropagation: false, 11965 touchStartPreventDefault: true, 11966 touchStartForcePreventDefault: false, 11967 touchReleaseOnEdges: false, 11968 // Unique Navigation Elements 11969 uniqueNavElements: true, 11970 // Resistance 11971 resistance: true, 11972 resistanceRatio: 0.85, 11973 // Progress 11974 watchSlidesProgress: false, 11975 // Cursor 11976 grabCursor: false, 11977 // Clicks 11978 preventClicks: true, 11979 preventClicksPropagation: true, 11980 slideToClickedSlide: false, 11981 // loop 11982 loop: false, 11983 loopAddBlankSlides: true, 11984 loopAdditionalSlides: 0, 11985 loopPreventsSliding: true, 11986 // rewind 11987 rewind: false, 11988 // Swiping/no swiping 11989 allowSlidePrev: true, 11990 allowSlideNext: true, 11991 swipeHandler: null, 11992 // '.swipe-handler', 11993 noSwiping: true, 11994 noSwipingClass: 'swiper-no-swiping', 11995 noSwipingSelector: null, 11996 // Passive Listeners 11997 passiveListeners: true, 11998 maxBackfaceHiddenSlides: 10, 11999 // NS 12000 containerModifierClass: 'swiper-', 12001 // NEW 12002 slideClass: 'swiper-slide', 12003 slideBlankClass: 'swiper-slide-blank', 12004 slideActiveClass: 'swiper-slide-active', 12005 slideVisibleClass: 'swiper-slide-visible', 12006 slideFullyVisibleClass: 'swiper-slide-fully-visible', 12007 slideNextClass: 'swiper-slide-next', 12008 slidePrevClass: 'swiper-slide-prev', 12009 wrapperClass: 'swiper-wrapper', 12010 lazyPreloaderClass: 'swiper-lazy-preloader', 12011 lazyPreloadPrevNext: 0, 12012 // Callbacks 12013 runCallbacksOnInit: true, 12014 // Internals 12015 _emitClasses: false 12016}; 12017 12018function moduleExtendParams(params, allModulesParams) { 12019 return function extendParams(obj) { 12020 if (obj === void 0) { 12021 obj = {}; 12022 } 12023 const moduleParamName = Object.keys(obj)[0]; 12024 const moduleParams = obj[moduleParamName]; 12025 if (typeof moduleParams !== 'object' || moduleParams === null) { 12026 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 12027 return; 12028 } 12029 if (params[moduleParamName] === true) { 12030 params[moduleParamName] = { 12031 enabled: true 12032 }; 12033 } 12034 if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { 12035 params[moduleParamName].auto = true; 12036 } 12037 if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { 12038 params[moduleParamName].auto = true; 12039 } 12040 if (!(moduleParamName in params && 'enabled' in moduleParams)) { 12041 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 12042 return; 12043 } 12044 if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { 12045 params[moduleParamName].enabled = true; 12046 } 12047 if (!params[moduleParamName]) params[moduleParamName] = { 12048 enabled: false 12049 }; 12050 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(allModulesParams, obj); 12051 }; 12052} 12053 12054/* eslint no-param-reassign: "off" */ 12055const prototypes = { 12056 eventsEmitter, 12057 update, 12058 translate, 12059 transition, 12060 slide, 12061 loop, 12062 grabCursor, 12063 events: events$1, 12064 breakpoints, 12065 checkOverflow: checkOverflow$1, 12066 classes 12067}; 12068const extendedDefaults = {}; 12069class Swiper { 12070 constructor() { 12071 let el; 12072 let params; 12073 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 12074 args[_key] = arguments[_key]; 12075 } 12076 if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { 12077 params = args[0]; 12078 } else { 12079 [el, params] = args; 12080 } 12081 if (!params) params = {}; 12082 params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 12083 if (el && !params.el) params.el = el; 12084 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 12085 if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { 12086 const swipers = []; 12087 document.querySelectorAll(params.el).forEach(containerEl => { 12088 const newParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params, { 12089 el: containerEl 12090 }); 12091 swipers.push(new Swiper(newParams)); 12092 }); 12093 // eslint-disable-next-line no-constructor-return 12094 return swipers; 12095 } 12096 12097 // Swiper Instance 12098 const swiper = this; 12099 swiper.__swiper__ = true; 12100 swiper.support = getSupport(); 12101 swiper.device = getDevice({ 12102 userAgent: params.userAgent 12103 }); 12104 swiper.browser = getBrowser(); 12105 swiper.eventsListeners = {}; 12106 swiper.eventsAnyListeners = []; 12107 swiper.modules = [...swiper.__modules__]; 12108 if (params.modules && Array.isArray(params.modules)) { 12109 swiper.modules.push(...params.modules); 12110 } 12111 const allModulesParams = {}; 12112 swiper.modules.forEach(mod => { 12113 mod({ 12114 params, 12115 swiper, 12116 extendParams: moduleExtendParams(params, allModulesParams), 12117 on: swiper.on.bind(swiper), 12118 once: swiper.once.bind(swiper), 12119 off: swiper.off.bind(swiper), 12120 emit: swiper.emit.bind(swiper) 12121 }); 12122 }); 12123 12124 // Extend defaults with modules params 12125 const swiperParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, defaults, allModulesParams); 12126 12127 // Extend defaults with passed params 12128 swiper.params = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiperParams, extendedDefaults, params); 12129 swiper.originalParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, swiper.params); 12130 swiper.passedParams = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)({}, params); 12131 12132 // add event listeners 12133 if (swiper.params && swiper.params.on) { 12134 Object.keys(swiper.params.on).forEach(eventName => { 12135 swiper.on(eventName, swiper.params.on[eventName]); 12136 }); 12137 } 12138 if (swiper.params && swiper.params.onAny) { 12139 swiper.onAny(swiper.params.onAny); 12140 } 12141 12142 // Extend Swiper 12143 Object.assign(swiper, { 12144 enabled: swiper.params.enabled, 12145 el, 12146 // Classes 12147 classNames: [], 12148 // Slides 12149 slides: [], 12150 slidesGrid: [], 12151 snapGrid: [], 12152 slidesSizesGrid: [], 12153 // isDirection 12154 isHorizontal() { 12155 return swiper.params.direction === 'horizontal'; 12156 }, 12157 isVertical() { 12158 return swiper.params.direction === 'vertical'; 12159 }, 12160 // Indexes 12161 activeIndex: 0, 12162 realIndex: 0, 12163 // 12164 isBeginning: true, 12165 isEnd: false, 12166 // Props 12167 translate: 0, 12168 previousTranslate: 0, 12169 progress: 0, 12170 velocity: 0, 12171 animating: false, 12172 cssOverflowAdjustment() { 12173 // Returns 0 unless `translate` is > 2**23 12174 // Should be subtracted from css values to prevent overflow 12175 return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; 12176 }, 12177 // Locks 12178 allowSlideNext: swiper.params.allowSlideNext, 12179 allowSlidePrev: swiper.params.allowSlidePrev, 12180 // Touch Events 12181 touchEventsData: { 12182 isTouched: undefined, 12183 isMoved: undefined, 12184 allowTouchCallbacks: undefined, 12185 touchStartTime: undefined, 12186 isScrolling: undefined, 12187 currentTranslate: undefined, 12188 startTranslate: undefined, 12189 allowThresholdMove: undefined, 12190 // Form elements to match 12191 focusableElements: swiper.params.focusableElements, 12192 // Last click time 12193 lastClickTime: 0, 12194 clickTimeout: undefined, 12195 // Velocities 12196 velocities: [], 12197 allowMomentumBounce: undefined, 12198 startMoving: undefined, 12199 pointerId: null, 12200 touchId: null 12201 }, 12202 // Clicks 12203 allowClick: true, 12204 // Touches 12205 allowTouchMove: swiper.params.allowTouchMove, 12206 touches: { 12207 startX: 0, 12208 startY: 0, 12209 currentX: 0, 12210 currentY: 0, 12211 diff: 0 12212 }, 12213 // Images 12214 imagesToLoad: [], 12215 imagesLoaded: 0 12216 }); 12217 swiper.emit('_swiper'); 12218 12219 // Init 12220 if (swiper.params.init) { 12221 swiper.init(); 12222 } 12223 12224 // Return app instance 12225 // eslint-disable-next-line no-constructor-return 12226 return swiper; 12227 } 12228 getDirectionLabel(property) { 12229 if (this.isHorizontal()) { 12230 return property; 12231 } 12232 // prettier-ignore 12233 return { 12234 'width': 'height', 12235 'margin-top': 'margin-left', 12236 'margin-bottom ': 'margin-right', 12237 'margin-left': 'margin-top', 12238 'margin-right': 'margin-bottom', 12239 'padding-left': 'padding-top', 12240 'padding-right': 'padding-bottom', 12241 'marginRight': 'marginBottom' 12242 }[property]; 12243 } 12244 getSlideIndex(slideEl) { 12245 const { 12246 slidesEl, 12247 params 12248 } = this; 12249 const slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 12250 const firstSlideIndex = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slides[0]); 12251 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.h)(slideEl) - firstSlideIndex; 12252 } 12253 getSlideIndexByData(index) { 12254 return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); 12255 } 12256 recalcSlides() { 12257 const swiper = this; 12258 const { 12259 slidesEl, 12260 params 12261 } = swiper; 12262 swiper.slides = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(slidesEl, `.${params.slideClass}, swiper-slide`); 12263 } 12264 enable() { 12265 const swiper = this; 12266 if (swiper.enabled) return; 12267 swiper.enabled = true; 12268 if (swiper.params.grabCursor) { 12269 swiper.setGrabCursor(); 12270 } 12271 swiper.emit('enable'); 12272 } 12273 disable() { 12274 const swiper = this; 12275 if (!swiper.enabled) return; 12276 swiper.enabled = false; 12277 if (swiper.params.grabCursor) { 12278 swiper.unsetGrabCursor(); 12279 } 12280 swiper.emit('disable'); 12281 } 12282 setProgress(progress, speed) { 12283 const swiper = this; 12284 progress = Math.min(Math.max(progress, 0), 1); 12285 const min = swiper.minTranslate(); 12286 const max = swiper.maxTranslate(); 12287 const current = (max - min) * progress + min; 12288 swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); 12289 swiper.updateActiveIndex(); 12290 swiper.updateSlidesClasses(); 12291 } 12292 emitContainerClasses() { 12293 const swiper = this; 12294 if (!swiper.params._emitClasses || !swiper.el) return; 12295 const cls = swiper.el.className.split(' ').filter(className => { 12296 return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; 12297 }); 12298 swiper.emit('_containerClasses', cls.join(' ')); 12299 } 12300 getSlideClasses(slideEl) { 12301 const swiper = this; 12302 if (swiper.destroyed) return ''; 12303 return slideEl.className.split(' ').filter(className => { 12304 return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; 12305 }).join(' '); 12306 } 12307 emitSlidesClasses() { 12308 const swiper = this; 12309 if (!swiper.params._emitClasses || !swiper.el) return; 12310 const updates = []; 12311 swiper.slides.forEach(slideEl => { 12312 const classNames = swiper.getSlideClasses(slideEl); 12313 updates.push({ 12314 slideEl, 12315 classNames 12316 }); 12317 swiper.emit('_slideClass', slideEl, classNames); 12318 }); 12319 swiper.emit('_slideClasses', updates); 12320 } 12321 slidesPerViewDynamic(view, exact) { 12322 if (view === void 0) { 12323 view = 'current'; 12324 } 12325 if (exact === void 0) { 12326 exact = false; 12327 } 12328 const swiper = this; 12329 const { 12330 params, 12331 slides, 12332 slidesGrid, 12333 slidesSizesGrid, 12334 size: swiperSize, 12335 activeIndex 12336 } = swiper; 12337 let spv = 1; 12338 if (typeof params.slidesPerView === 'number') return params.slidesPerView; 12339 if (params.centeredSlides) { 12340 let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; 12341 let breakLoop; 12342 for (let i = activeIndex + 1; i < slides.length; i += 1) { 12343 if (slides[i] && !breakLoop) { 12344 slideSize += Math.ceil(slides[i].swiperSlideSize); 12345 spv += 1; 12346 if (slideSize > swiperSize) breakLoop = true; 12347 } 12348 } 12349 for (let i = activeIndex - 1; i >= 0; i -= 1) { 12350 if (slides[i] && !breakLoop) { 12351 slideSize += slides[i].swiperSlideSize; 12352 spv += 1; 12353 if (slideSize > swiperSize) breakLoop = true; 12354 } 12355 } 12356 } else { 12357 // eslint-disable-next-line 12358 if (view === 'current') { 12359 for (let i = activeIndex + 1; i < slides.length; i += 1) { 12360 const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; 12361 if (slideInView) { 12362 spv += 1; 12363 } 12364 } 12365 } else { 12366 // previous 12367 for (let i = activeIndex - 1; i >= 0; i -= 1) { 12368 const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; 12369 if (slideInView) { 12370 spv += 1; 12371 } 12372 } 12373 } 12374 } 12375 return spv; 12376 } 12377 update() { 12378 const swiper = this; 12379 if (!swiper || swiper.destroyed) return; 12380 const { 12381 snapGrid, 12382 params 12383 } = swiper; 12384 // Breakpoints 12385 if (params.breakpoints) { 12386 swiper.setBreakpoint(); 12387 } 12388 [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { 12389 if (imageEl.complete) { 12390 processLazyPreloader(swiper, imageEl); 12391 } 12392 }); 12393 swiper.updateSize(); 12394 swiper.updateSlides(); 12395 swiper.updateProgress(); 12396 swiper.updateSlidesClasses(); 12397 function setTranslate() { 12398 const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 12399 const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 12400 swiper.setTranslate(newTranslate); 12401 swiper.updateActiveIndex(); 12402 swiper.updateSlidesClasses(); 12403 } 12404 let translated; 12405 if (params.freeMode && params.freeMode.enabled && !params.cssMode) { 12406 setTranslate(); 12407 if (params.autoHeight) { 12408 swiper.updateAutoHeight(); 12409 } 12410 } else { 12411 if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { 12412 const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; 12413 translated = swiper.slideTo(slides.length - 1, 0, false, true); 12414 } else { 12415 translated = swiper.slideTo(swiper.activeIndex, 0, false, true); 12416 } 12417 if (!translated) { 12418 setTranslate(); 12419 } 12420 } 12421 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 12422 swiper.checkOverflow(); 12423 } 12424 swiper.emit('update'); 12425 } 12426 changeDirection(newDirection, needUpdate) { 12427 if (needUpdate === void 0) { 12428 needUpdate = true; 12429 } 12430 const swiper = this; 12431 const currentDirection = swiper.params.direction; 12432 if (!newDirection) { 12433 // eslint-disable-next-line 12434 newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; 12435 } 12436 if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { 12437 return swiper; 12438 } 12439 swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); 12440 swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); 12441 swiper.emitContainerClasses(); 12442 swiper.params.direction = newDirection; 12443 swiper.slides.forEach(slideEl => { 12444 if (newDirection === 'vertical') { 12445 slideEl.style.width = ''; 12446 } else { 12447 slideEl.style.height = ''; 12448 } 12449 }); 12450 swiper.emit('changeDirection'); 12451 if (needUpdate) swiper.update(); 12452 return swiper; 12453 } 12454 changeLanguageDirection(direction) { 12455 const swiper = this; 12456 if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; 12457 swiper.rtl = direction === 'rtl'; 12458 swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; 12459 if (swiper.rtl) { 12460 swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); 12461 swiper.el.dir = 'rtl'; 12462 } else { 12463 swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); 12464 swiper.el.dir = 'ltr'; 12465 } 12466 swiper.update(); 12467 } 12468 mount(element) { 12469 const swiper = this; 12470 if (swiper.mounted) return true; 12471 12472 // Find el 12473 let el = element || swiper.params.el; 12474 if (typeof el === 'string') { 12475 el = document.querySelector(el); 12476 } 12477 if (!el) { 12478 return false; 12479 } 12480 el.swiper = swiper; 12481 if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { 12482 swiper.isElement = true; 12483 } 12484 const getWrapperSelector = () => { 12485 return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; 12486 }; 12487 const getWrapper = () => { 12488 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 12489 const res = el.shadowRoot.querySelector(getWrapperSelector()); 12490 // Children needs to return slot items 12491 return res; 12492 } 12493 return (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, getWrapperSelector())[0]; 12494 }; 12495 // Find Wrapper 12496 let wrapperEl = getWrapper(); 12497 if (!wrapperEl && swiper.params.createElements) { 12498 wrapperEl = (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.c)('div', swiper.params.wrapperClass); 12499 el.append(wrapperEl); 12500 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.e)(el, `.${swiper.params.slideClass}`).forEach(slideEl => { 12501 wrapperEl.append(slideEl); 12502 }); 12503 } 12504 Object.assign(swiper, { 12505 el, 12506 wrapperEl, 12507 slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, 12508 hostEl: swiper.isElement ? el.parentNode.host : el, 12509 mounted: true, 12510 // RTL 12511 rtl: el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl', 12512 rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(el, 'direction') === 'rtl'), 12513 wrongRTL: (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.p)(wrapperEl, 'display') === '-webkit-box' 12514 }); 12515 return true; 12516 } 12517 init(el) { 12518 const swiper = this; 12519 if (swiper.initialized) return swiper; 12520 const mounted = swiper.mount(el); 12521 if (mounted === false) return swiper; 12522 swiper.emit('beforeInit'); 12523 12524 // Set breakpoint 12525 if (swiper.params.breakpoints) { 12526 swiper.setBreakpoint(); 12527 } 12528 12529 // Add Classes 12530 swiper.addClasses(); 12531 12532 // Update size 12533 swiper.updateSize(); 12534 12535 // Update slides 12536 swiper.updateSlides(); 12537 if (swiper.params.watchOverflow) { 12538 swiper.checkOverflow(); 12539 } 12540 12541 // Set Grab Cursor 12542 if (swiper.params.grabCursor && swiper.enabled) { 12543 swiper.setGrabCursor(); 12544 } 12545 12546 // Slide To Initial Slide 12547 if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { 12548 swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); 12549 } else { 12550 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); 12551 } 12552 12553 // Create loop 12554 if (swiper.params.loop) { 12555 swiper.loopCreate(); 12556 } 12557 12558 // Attach events 12559 swiper.attachEvents(); 12560 const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; 12561 if (swiper.isElement) { 12562 lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); 12563 } 12564 lazyElements.forEach(imageEl => { 12565 if (imageEl.complete) { 12566 processLazyPreloader(swiper, imageEl); 12567 } else { 12568 imageEl.addEventListener('load', e => { 12569 processLazyPreloader(swiper, e.target); 12570 }); 12571 } 12572 }); 12573 preload(swiper); 12574 12575 // Init Flag 12576 swiper.initialized = true; 12577 preload(swiper); 12578 12579 // Emit 12580 swiper.emit('init'); 12581 swiper.emit('afterInit'); 12582 return swiper; 12583 } 12584 destroy(deleteInstance, cleanStyles) { 12585 if (deleteInstance === void 0) { 12586 deleteInstance = true; 12587 } 12588 if (cleanStyles === void 0) { 12589 cleanStyles = true; 12590 } 12591 const swiper = this; 12592 const { 12593 params, 12594 el, 12595 wrapperEl, 12596 slides 12597 } = swiper; 12598 if (typeof swiper.params === 'undefined' || swiper.destroyed) { 12599 return null; 12600 } 12601 swiper.emit('beforeDestroy'); 12602 12603 // Init Flag 12604 swiper.initialized = false; 12605 12606 // Detach events 12607 swiper.detachEvents(); 12608 12609 // Destroy loop 12610 if (params.loop) { 12611 swiper.loopDestroy(); 12612 } 12613 12614 // Cleanup styles 12615 if (cleanStyles) { 12616 swiper.removeClasses(); 12617 if (el && typeof el !== 'string') { 12618 el.removeAttribute('style'); 12619 } 12620 if (wrapperEl) { 12621 wrapperEl.removeAttribute('style'); 12622 } 12623 if (slides && slides.length) { 12624 slides.forEach(slideEl => { 12625 slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); 12626 slideEl.removeAttribute('style'); 12627 slideEl.removeAttribute('data-swiper-slide-index'); 12628 }); 12629 } 12630 } 12631 swiper.emit('destroy'); 12632 12633 // Detach emitter events 12634 Object.keys(swiper.eventsListeners).forEach(eventName => { 12635 swiper.off(eventName); 12636 }); 12637 if (deleteInstance !== false) { 12638 if (swiper.el && typeof swiper.el !== 'string') { 12639 swiper.el.swiper = null; 12640 } 12641 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.x)(swiper); 12642 } 12643 swiper.destroyed = true; 12644 return null; 12645 } 12646 static extendDefaults(newDefaults) { 12647 (0,_utils_mjs__WEBPACK_IMPORTED_MODULE_1__.w)(extendedDefaults, newDefaults); 12648 } 12649 static get extendedDefaults() { 12650 return extendedDefaults; 12651 } 12652 static get defaults() { 12653 return defaults; 12654 } 12655 static installModule(mod) { 12656 if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; 12657 const modules = Swiper.prototype.__modules__; 12658 if (typeof mod === 'function' && modules.indexOf(mod) < 0) { 12659 modules.push(mod); 12660 } 12661 } 12662 static use(module) { 12663 if (Array.isArray(module)) { 12664 module.forEach(m => Swiper.installModule(m)); 12665 return Swiper; 12666 } 12667 Swiper.installModule(module); 12668 return Swiper; 12669 } 12670} 12671Object.keys(prototypes).forEach(prototypeGroup => { 12672 Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { 12673 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; 12674 }); 12675}); 12676Swiper.use([Resize, Observer]); 12677 12678 12679 12680 12681/***/ }), 12682
vendor: 12,739 bytes, lines 12683-13036
12683/***/ "./node_modules/swiper/shared/utils.mjs": 12684/*!**********************************************!*\ 12685 !*** ./node_modules/swiper/shared/utils.mjs ***! 12686 \**********************************************/ 12687/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 12688 12689"use strict"; 12690__webpack_require__.r(__webpack_exports__); 12691/* harmony export */ __webpack_require__.d(__webpack_exports__, { 12692/* harmony export */ a: function() { return /* binding */ elementParents; }, 12693/* harmony export */ b: function() { return /* binding */ elementOffset; }, 12694/* harmony export */ c: function() { return /* binding */ createElement; }, 12695/* harmony export */ d: function() { return /* binding */ now; }, 12696/* harmony export */ e: function() { return /* binding */ elementChildren; }, 12697/* harmony export */ f: function() { return /* binding */ elementOuterSize; }, 12698/* harmony export */ g: function() { return /* binding */ getSlideTransformEl; }, 12699/* harmony export */ h: function() { return /* binding */ elementIndex; }, 12700/* harmony export */ i: function() { return /* binding */ classesToTokens; }, 12701/* harmony export */ j: function() { return /* binding */ getTranslate; }, 12702/* harmony export */ k: function() { return /* binding */ elementTransitionEnd; }, 12703/* harmony export */ l: function() { return /* binding */ isObject; }, 12704/* harmony export */ m: function() { return /* binding */ makeElementsArray; }, 12705/* harmony export */ n: function() { return /* binding */ nextTick; }, 12706/* harmony export */ o: function() { return /* binding */ getRotateFix; }, 12707/* harmony export */ p: function() { return /* binding */ elementStyle; }, 12708/* harmony export */ q: function() { return /* binding */ elementNextAll; }, 12709/* harmony export */ r: function() { return /* binding */ elementPrevAll; }, 12710/* harmony export */ s: function() { return /* binding */ setCSSProperty; }, 12711/* harmony export */ t: function() { return /* binding */ animateCSSModeScroll; }, 12712/* harmony export */ u: function() { return /* binding */ showWarning; }, 12713/* harmony export */ v: function() { return /* binding */ elementIsChildOf; }, 12714/* harmony export */ w: function() { return /* binding */ extend; }, 12715/* harmony export */ x: function() { return /* binding */ deleteProps; } 12716/* harmony export */ }); 12717/* 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"); 12718 12719 12720function classesToTokens(classes) { 12721 if (classes === void 0) { 12722 classes = ''; 12723 } 12724 return classes.trim().split(' ').filter(c => !!c.trim()); 12725} 12726 12727function deleteProps(obj) { 12728 const object = obj; 12729 Object.keys(object).forEach(key => { 12730 try { 12731 object[key] = null; 12732 } catch (e) { 12733 // no getter for object 12734 } 12735 try { 12736 delete object[key]; 12737 } catch (e) { 12738 // something got wrong 12739 } 12740 }); 12741} 12742function nextTick(callback, delay) { 12743 if (delay === void 0) { 12744 delay = 0; 12745 } 12746 return setTimeout(callback, delay); 12747} 12748function now() { 12749 return Date.now(); 12750} 12751function getComputedStyle(el) { 12752 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 12753 let style; 12754 if (window.getComputedStyle) { 12755 style = window.getComputedStyle(el, null); 12756 } 12757 if (!style && el.currentStyle) { 12758 style = el.currentStyle; 12759 } 12760 if (!style) { 12761 style = el.style; 12762 } 12763 return style; 12764} 12765function getTranslate(el, axis) { 12766 if (axis === void 0) { 12767 axis = 'x'; 12768 } 12769 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 12770 let matrix; 12771 let curTransform; 12772 let transformMatrix; 12773 const curStyle = getComputedStyle(el); 12774 if (window.WebKitCSSMatrix) { 12775 curTransform = curStyle.transform || curStyle.webkitTransform; 12776 if (curTransform.split(',').length > 6) { 12777 curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); 12778 } 12779 // Some old versions of Webkit choke when 'none' is passed; pass 12780 // empty string instead in this case 12781 transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); 12782 } else { 12783 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); 12784 matrix = transformMatrix.toString().split(','); 12785 } 12786 if (axis === 'x') { 12787 // Latest Chrome and webkits Fix 12788 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; 12789 // Crazy IE10 Matrix 12790 else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); 12791 // Normal Browsers 12792 else curTransform = parseFloat(matrix[4]); 12793 } 12794 if (axis === 'y') { 12795 // Latest Chrome and webkits Fix 12796 if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; 12797 // Crazy IE10 Matrix 12798 else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); 12799 // Normal Browsers 12800 else curTransform = parseFloat(matrix[5]); 12801 } 12802 return curTransform || 0; 12803} 12804function isObject(o) { 12805 return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; 12806} 12807function isNode(node) { 12808 // eslint-disable-next-line 12809 if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { 12810 return node instanceof HTMLElement; 12811 } 12812 return node && (node.nodeType === 1 || node.nodeType === 11); 12813} 12814function extend() { 12815 const to = Object(arguments.length <= 0 ? undefined : arguments[0]); 12816 const noExtend = ['__proto__', 'constructor', 'prototype']; 12817 for (let i = 1; i < arguments.length; i += 1) { 12818 const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 12819 if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { 12820 const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); 12821 for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 12822 const nextKey = keysArray[nextIndex]; 12823 const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 12824 if (desc !== undefined && desc.enumerable) { 12825 if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 12826 if (nextSource[nextKey].__swiper__) { 12827 to[nextKey] = nextSource[nextKey]; 12828 } else { 12829 extend(to[nextKey], nextSource[nextKey]); 12830 } 12831 } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { 12832 to[nextKey] = {}; 12833 if (nextSource[nextKey].__swiper__) { 12834 to[nextKey] = nextSource[nextKey]; 12835 } else { 12836 extend(to[nextKey], nextSource[nextKey]); 12837 } 12838 } else { 12839 to[nextKey] = nextSource[nextKey]; 12840 } 12841 } 12842 } 12843 } 12844 } 12845 return to; 12846} 12847function setCSSProperty(el, varName, varValue) { 12848 el.style.setProperty(varName, varValue); 12849} 12850function animateCSSModeScroll(_ref) { 12851 let { 12852 swiper, 12853 targetPosition, 12854 side 12855 } = _ref; 12856 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 12857 const startPosition = -swiper.translate; 12858 let startTime = null; 12859 let time; 12860 const duration = swiper.params.speed; 12861 swiper.wrapperEl.style.scrollSnapType = 'none'; 12862 window.cancelAnimationFrame(swiper.cssModeFrameID); 12863 const dir = targetPosition > startPosition ? 'next' : 'prev'; 12864 const isOutOfBound = (current, target) => { 12865 return dir === 'next' && current >= target || dir === 'prev' && current <= target; 12866 }; 12867 const animate = () => { 12868 time = new Date().getTime(); 12869 if (startTime === null) { 12870 startTime = time; 12871 } 12872 const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); 12873 const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; 12874 let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); 12875 if (isOutOfBound(currentPosition, targetPosition)) { 12876 currentPosition = targetPosition; 12877 } 12878 swiper.wrapperEl.scrollTo({ 12879 [side]: currentPosition 12880 }); 12881 if (isOutOfBound(currentPosition, targetPosition)) { 12882 swiper.wrapperEl.style.overflow = 'hidden'; 12883 swiper.wrapperEl.style.scrollSnapType = ''; 12884 setTimeout(() => { 12885 swiper.wrapperEl.style.overflow = ''; 12886 swiper.wrapperEl.scrollTo({ 12887 [side]: currentPosition 12888 }); 12889 }); 12890 window.cancelAnimationFrame(swiper.cssModeFrameID); 12891 return; 12892 } 12893 swiper.cssModeFrameID = window.requestAnimationFrame(animate); 12894 }; 12895 animate(); 12896} 12897function getSlideTransformEl(slideEl) { 12898 return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; 12899} 12900function elementChildren(element, selector) { 12901 if (selector === void 0) { 12902 selector = ''; 12903 } 12904 const children = [...element.children]; 12905 if (element instanceof HTMLSlotElement) { 12906 children.push(...element.assignedElements()); 12907 } 12908 if (!selector) { 12909 return children; 12910 } 12911 return children.filter(el => el.matches(selector)); 12912} 12913function elementIsChildOf(el, parent) { 12914 const isChild = parent.contains(el); 12915 if (!isChild && parent instanceof HTMLSlotElement) { 12916 const children = [...parent.assignedElements()]; 12917 return children.includes(el); 12918 } 12919 return isChild; 12920} 12921function showWarning(text) { 12922 try { 12923 console.warn(text); 12924 return; 12925 } catch (err) { 12926 // err 12927 } 12928} 12929function createElement(tag, classes) { 12930 if (classes === void 0) { 12931 classes = []; 12932 } 12933 const el = document.createElement(tag); 12934 el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); 12935 return el; 12936} 12937function elementOffset(el) { 12938 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 12939 const document = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.g)(); 12940 const box = el.getBoundingClientRect(); 12941 const body = document.body; 12942 const clientTop = el.clientTop || body.clientTop || 0; 12943 const clientLeft = el.clientLeft || body.clientLeft || 0; 12944 const scrollTop = el === window ? window.scrollY : el.scrollTop; 12945 const scrollLeft = el === window ? window.scrollX : el.scrollLeft; 12946 return { 12947 top: box.top + scrollTop - clientTop, 12948 left: box.left + scrollLeft - clientLeft 12949 }; 12950} 12951function elementPrevAll(el, selector) { 12952 const prevEls = []; 12953 while (el.previousElementSibling) { 12954 const prev = el.previousElementSibling; // eslint-disable-line 12955 if (selector) { 12956 if (prev.matches(selector)) prevEls.push(prev); 12957 } else prevEls.push(prev); 12958 el = prev; 12959 } 12960 return prevEls; 12961} 12962function elementNextAll(el, selector) { 12963 const nextEls = []; 12964 while (el.nextElementSibling) { 12965 const next = el.nextElementSibling; // eslint-disable-line 12966 if (selector) { 12967 if (next.matches(selector)) nextEls.push(next); 12968 } else nextEls.push(next); 12969 el = next; 12970 } 12971 return nextEls; 12972} 12973function elementStyle(el, prop) { 12974 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 12975 return window.getComputedStyle(el, null).getPropertyValue(prop); 12976} 12977function elementIndex(el) { 12978 let child = el; 12979 let i; 12980 if (child) { 12981 i = 0; 12982 // eslint-disable-next-line 12983 while ((child = child.previousSibling) !== null) { 12984 if (child.nodeType === 1) i += 1; 12985 } 12986 return i; 12987 } 12988 return undefined; 12989} 12990function elementParents(el, selector) { 12991 const parents = []; // eslint-disable-line 12992 let parent = el.parentElement; // eslint-disable-line 12993 while (parent) { 12994 if (selector) { 12995 if (parent.matches(selector)) parents.push(parent); 12996 } else { 12997 parents.push(parent); 12998 } 12999 parent = parent.parentElement; 13000 } 13001 return parents; 13002} 13003function elementTransitionEnd(el, callback) { 13004 function fireCallBack(e) { 13005 if (e.target !== el) return; 13006 callback.call(el, e); 13007 el.removeEventListener('transitionend', fireCallBack); 13008 } 13009 if (callback) { 13010 el.addEventListener('transitionend', fireCallBack); 13011 } 13012} 13013function elementOuterSize(el, size, includeMargins) { 13014 const window = (0,_ssr_window_esm_mjs__WEBPACK_IMPORTED_MODULE_0__.a)(); 13015 if (includeMargins) { 13016 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')); 13017 } 13018 return el.offsetWidth; 13019} 13020function makeElementsArray(el) { 13021 return (Array.isArray(el) ? el : [el]).filter(e => !!e); 13022} 13023function getRotateFix(swiper) { 13024 return v => { 13025 if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { 13026 return v + 0.001; 13027 } 13028 return v; 13029 }; 13030} 13031 13032 13033 13034 13035/***/ }), 13036
vendor: 1,140 bytes, lines 13037-13065
13037/***/ "./node_modules/swiper/swiper.mjs": 13038/*!****************************************!*\ 13039 !*** ./node_modules/swiper/swiper.mjs ***! 13040 \****************************************/ 13041/***/ (function(__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) { 13042 13043"use strict"; 13044__webpack_require__.r(__webpack_exports__); 13045/* harmony export */ __webpack_require__.d(__webpack_exports__, { 13046/* harmony export */ Swiper: function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; }, 13047/* harmony export */ "default": function() { return /* reexport safe */ _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__.S; } 13048/* harmony export */ }); 13049/* harmony import */ var _shared_swiper_core_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shared/swiper-core.mjs */ "./node_modules/swiper/shared/swiper-core.mjs"); 13050/** 13051 * Swiper 11.1.14 13052 * Most modern mobile touch slider and framework with hardware accelerated transitions 13053 * https://swiperjs.com 13054 * 13055 * Copyright 2014-2024 Vladimir Kharlampidi 13056 * 13057 * Released under the MIT License 13058 * 13059 * Released on: September 12, 2024 13060 */ 13061 13062 13063 13064 13065/***/ })
vendor: 4,783 bytes, lines 13065-13162
13065 13066 13067/******/ }); 13068/************************************************************************/ 13069/******/ // The module cache 13070/******/ var __webpack_module_cache__ = {}; 13071/******/ 13072/******/ // The require function 13073/******/ function __webpack_require__(moduleId) { 13074/******/ // Check if module is in cache 13075/******/ var cachedModule = __webpack_module_cache__[moduleId]; 13076/******/ if (cachedModule !== undefined) { 13077/******/ return cachedModule.exports; 13078/******/ } 13079/******/ // Create a new module (and put it into the cache) 13080/******/ var module = __webpack_module_cache__[moduleId] = { 13081/******/ // no module.id needed 13082/******/ // no module.loaded needed 13083/******/ exports: {} 13084/******/ }; 13085/******/ 13086/******/ // Execute the module function 13087/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); 13088/******/ 13089/******/ // Return the exports of the module 13090/******/ return module.exports; 13091/******/ } 13092/******/ 13093/************************************************************************/ 13094/******/ /* webpack/runtime/compat get default export */ 13095/******/ !function() { 13096/******/ // getDefaultExport function for compatibility with non-harmony modules 13097/******/ __webpack_require__.n = function(module) { 13098/******/ var getter = module && module.__esModule ? 13099/******/ function() { return module['default']; } : 13100/******/ function() { return module; }; 13101/******/ __webpack_require__.d(getter, { a: getter }); 13102/******/ return getter; 13103/******/ }; 13104/******/ }(); 13105/******/ 13106/******/ /* webpack/runtime/define property getters */ 13107/******/ !function() { 13108/******/ // define getter functions for harmony exports 13109/******/ __webpack_require__.d = function(exports, definition) { 13110/******/ for(var key in definition) { 13111/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { 13112/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); 13113/******/ } 13114/******/ } 13115/******/ }; 13116/******/ }(); 13117/******/ 13118/******/ /* webpack/runtime/global */ 13119/******/ !function() { 13120/******/ __webpack_require__.g = (function() { 13121/******/ if (typeof globalThis === 'object') return globalThis; 13122/******/ try { 13123/******/ return this || new Function('return this')(); 13124/******/ } catch (e) { 13125/******/ if (typeof window === 'object') return window; 13126/******/ } 13127/******/ })(); 13128/******/ }(); 13129/******/ 13130/******/ /* webpack/runtime/hasOwnProperty shorthand */ 13131/******/ !function() { 13132/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } 13133/******/ }(); 13134/******/ 13135/******/ /* webpack/runtime/make namespace object */ 13136/******/ !function() { 13137/******/ // define __esModule on exports 13138/******/ __webpack_require__.r = function(exports) { 13139/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 13140/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 13141/******/ } 13142/******/ Object.defineProperty(exports, '__esModule', { value: true }); 13143/******/ }; 13144/******/ }(); 13145/******/ 13146/************************************************************************/ 13147var __webpack_exports__ = {}; 13148// This entry need to be wrapped in an IIFE because it need to be in strict mode. 13149!function() { 13150"use strict"; 13151/*!************************!*\ 13152 !*** ./src/js/main.js ***! 13153 \************************/ 13154__webpack_require__.r(__webpack_exports__); 13155/* harmony import */ var _sass_main_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../sass/main.scss */ "./src/sass/main.scss"); 13156/* harmony import */ var _helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/activeTrigger */ "./src/js/helpers/activeTrigger.js"); 13157/* harmony import */ var _components_siteNav__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/siteNav */ "./src/js/components/siteNav/index.js"); 13158/* harmony import */ var _components_customSelect__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/customSelect */ "./src/js/components/customSelect/index.js"); 13159/* harmony import */ var _components_pathways__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/pathways */ "./src/js/components/pathways/index.js"); 13160/* harmony import */ var _components_teaserTabs__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/teaserTabs */ "./src/js/components/teaserTabs/index.js"); 13161/* harmony import */ var _components_profilePopup__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/profilePopup */ "./src/js/components/profilePopup/index.js"); 13162/* harmony import */ var _components_alerts__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/
13162alerts */ "./src/js/components/alerts/index.js"); 13163/* harmony import */ var _components_loadMore__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/loadMore */ "./src/js/components/loadMore/index.js"); 13164/* harmony import */ var _components_programFinder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/programFinder */ "./src/js/components/programFinder/index.js"); 13165/* harmony import */ var _components_swiper__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/swiper */ "./src/js/components/swiper/index.js"); 13166/* harmony import */ var _components_acalog_acalog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/acalog/acalog */ "./src/js/components/acalog/acalog.js"); 13167/* harmony import */ var _components_videos__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/videos */ "./src/js/components/videos/index.js"); 13168/* harmony import */ var _components_filters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/filters */ "./src/js/components/filters/index.js"); 13169/* harmony import */ var _components_officeFilters__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./components/officeFilters */ "./src/js/components/officeFilters/index.js"); 13170/* harmony import */ var _components_firstSection__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./components/firstSection */ "./src/js/components/firstSection/index.js"); 13171/* harmony import */ var _components_utilities_radioUncheck__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./components/utilities/radioUncheck */ "./src/js/components/utilities/radioUncheck.js"); 13172// Import scripts 13173// Styles 13174 13175 13176// Import asset images 13177// import './images'; 13178 13179// Import javascript 13180// import debounce from './helpers/debounce'; 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197jQuery(document).ready(function () { 13198 window.addEventListener('resize', () => { 13199 let vh = window.innerHeight * 0.01; 13200 document.documentElement.style.setProperty('--vh', `${vh}px`); 13201 }); 13202 (0,_helpers_activeTrigger__WEBPACK_IMPORTED_MODULE_1__["default"])(); 13203 (0,_components_siteNav__WEBPACK_IMPORTED_MODULE_2__["default"])(jQuery); 13204 (0,_components_customSelect__WEBPACK_IMPORTED_MODULE_3__["default"])(jQuery); 13205 (0,_components_pathways__WEBPACK_IMPORTED_MODULE_4__["default"])(jQuery); 13206 (0,_components_teaserTabs__WEBPACK_IMPORTED_MODULE_5__["default"])(jQuery); 13207 (0,_components_profilePopup__WEBPACK_IMPORTED_MODULE_6__["default"])(jQuery); 13208 (0,_components_alerts__WEBPACK_IMPORTED_MODULE_7__["default"])(jQuery); 13209 (0,_components_loadMore__WEBPACK_IMPORTED_MODULE_8__["default"])(jQuery); 13210 (0,_components_programFinder__WEBPACK_IMPORTED_MODULE_9__["default"])(jQuery); 13211 (0,_components_swiper__WEBPACK_IMPORTED_MODULE_10__["default"])(); 13212 (0,_components_videos__WEBPACK_IMPORTED_MODULE_12__["default"])(); 13213 (0,_components_filters__WEBPACK_IMPORTED_MODULE_13__["default"])(jQuery); 13214 (0,_components_officeFilters__WEBPACK_IMPORTED_MODULE_14__["default"])(jQuery); 13215 (0,_components_firstSection__WEBPACK_IMPORTED_MODULE_15__["default"])(jQuery); 13216 (0,_components_utilities_radioUncheck__WEBPACK_IMPORTED_MODULE_16__.initializeRadioButtons)(); 13217}); 13218}(); 13219/******/ })() 13220; 13221//# sourceMappingURL=main.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.