1var body = document.getElementsByTagName("body")[0], style = document.createElement("link"); 2 3var selectedColor = new Array(); 4selectedColor = []; 5var newColor = 0; 6var selectedColorPRICE = new Array(); 7selectedColorPRICE = []; 8var selectedColorPRICE1; 9style.type = "text/css"; 10style.rel = "stylesheet"; 11style.href = "https://core.robotint.ru/s.css"; 12body.appendChild(style); 13window.obColorer = {}; 14(function (a, c) { 15 window.obColorer = { 16 options: {}, 17 object: false, 18 draggingColors: false, 19 gridWidth: 39, 20 startLeftOffset: 0, 21 limit: 100, 22 allItems: [], 23 searchClone: false, 24 bNoUpdate: false, 25 selectedSKUID: 0, 26 selectedElementID: 0, 27 selectedBasketID: 0, 28 selectedColorID: false, 29 selectedBaseTypeInt: false, 30 selectedColorHEX: "", 31 selectedColorPrice: 0, 32 selectedColorPricePerCan: 0, 33 selectedColorPricePerLitr: 0, 34 selectedCollectionID: 0, 35 selectedCollectionName: "", 36 currentCollectionId: "", 37 currentCollectionVendorId: "", 38 productData: {}, 39 images: 0, 40 testMode: false, 41 baseFilter: false, 42 iBaseType: 0, 43 selectedColorName: false, 44 saParent: false, 45 cookieName: "robotint-user", 46 domain: "https://core.robotint.ru", 47 url: "/exchange/", 48 thumbs: "/upload/colorate-small/", 49 actions: [], 50 spinnerUrl: "/exchange/spinner.gif", 51 siteSettings: {basketURL: "/personal/cart/", bgZindex: 1000, colorSelect: false, processPrice: false}, 52 copyOnly: function (f, d) { 53 var d = d || window.event; 54 var i = d.keyCode; 55 var h = d.ctrlKey || d.metaKey; 56 if (h && d.altKey) { 57 return false 58 } else { 59 if (h && i == 67) { 60 return true 61 } 62 } 63 return false 64 }, 65 getHash: function (f) { 66 let result = ""; 67 const d = "ABCDEF0123456789"; 68 const h = d.length; 69 let counter = 0; 70 while (counter < f) { 71 result += d.charAt(Math.floor(Math.random() * h)); 72 counter += 1 73 } 74 return result 75 }, 76 getWidgetId: function () { 77 let attrKey = "data-tint-widget-id", $parent = a("[" + attrKey + "]"), 78 widgetId = $parent.length ? $parent.attr(attrKey) : ""; 79 if (!widgetId.length && $parent.length) { 80 widgetId = this.getHash(15); 81 $parent.attr(attrKey, widgetId) 82 } 83 return widgetId 84 }, 85 pushAction: function (k, d) { 86 var m; 87 if (window.navigator.languages) { 88 m = window.navigator.languages[0] 89 } else { 90 m = window.navigator.userLanguage || window.navigator.language 91 } 92 var j = a(window).width(); 93 var h = "mobile"; 94 if (j > 700) { 95 h = "tablet" 96 } 97 if (j > 850) { 98 h = "desktop" 99 } 100 var l = { 101 CLIENT_ID: obColorer.options.CLIENT_ID, 102 DOMAIN: window.location.host, 103 HREF: window.location.href, 104 BROWSER: navigator.userAgent, 105 LANG: m, 106 RESOLUTION: a(window).width() + " x " + a(window).height(), 107 RESOLUTION_MODE: h, 108 USER_ID: this.getCookie(this.cookieName), 109 WIDGET_ID: this.getWidgetId(), 110 REQUEST_TIME: "", 111 RESPONSE_TIME: "", 112 ERROR_CODE: "", 113 ERROR_MESSAGE: "", 114 PRODUCT_ID: "", 115 TINT_PRODUCT_ID: "", 116 EXT_ID: "", 117 COLLECTION_ID: "", 118 BARCODE: this.productData.BARCODE ? this.productData.BARCODE : "" 119 }; 120 if (obColorer.productData.EXT_ID) { 121 l.EXT_ID = obColorer.productData.EXT_ID 122 } 123 if (obColorer.productData.PRODUCT_ID) { 124 l.PRODUCT_ID = obColorer.productData.PRODUCT_ID 125 } 126 if (obColorer.currentCollectionId) { 127 l.COLLECTION_ID = obColorer.currentCollectionId 128 } 129 if (!!k) { 130 for (var f in k) { 131 l[f] = k[f] 132 } 133 } 134 this.actions.push(l); 135 if (!d) { 136 this.tryActions() 137 } 138 }, 139 tryActions: function () { 140 a("body").stopTime("analytics"); 141 a("body").oneTime("1s", "analytics", function () { 142 if (obColorer.actions.length) { 143 var d = JSON.stringify(obColorer.actions); 144 var f = {action: "analytics", data: btoa(unescape(encodeURIComponent(d)))};
145 a.ajax({ 146 type: "post", data: f, url: obColorer.url, success: function () { 147 obColorer.actions = [] 148 } 149 }) 150 } 151 }) 152 }, 153 checkUserCookie: function () { 154 var h = this.getCookie(this.cookieName); 155 if (!h) { 156 var d = {action: "get_cookie"}; 157 a.extend(d, obColorer.options); 158 a.extend(d, a.extend(d, obColorer.productData)); 159 if (!d.CLIENT_ID) { 160 var f = {type: "warning", message: "RoboTint: ClientID is not specified"}; 161 obColorer.processError(f); 162 return false 163 } 164 a.ajax({ 165 type: "post", 166 data: d, 167 url: obColorer.url, 168 dataType: "json", 169 crossDomain: true, 170 xhrFields: {withCredentials: true}, 171 success: function (i) { 172 obColorer.setCookie(obColorer.cookieName, i.cookie) 173 } 174 }) 175 } 176 }, 177 propagation: function () { 178 try { 179 event.stopPropagation(); 180 event.preventDefault() 181 } catch (d) { 182 } 183 }, 184 searchButtonClick: function (d) { 185 this.propagation(); 186 var k = a(d); 187 var i = k.parent(); 188 i.toggleClass("tint-active"); 189 var j = 1; 190 if (j) { 191 this.searchFixWidth() 192 } 193 var f = this.parent.find(".tint-collections-title"); 194 var m = f.data("collection-origin-title"); 195 if (i.hasClass("tint-active")) { 196 m = f.data("collection-search-title") 197 } 198 f.text(m); 199 if (!i.hasClass("tint-active")) { 200 var l = this.parent.find("[data-search-input]"); 201 if (parseInt(i.attr("data-was-searched"))) { 202 l.val(""); 203 var h = {action: "get-colors"}; 204 i.attr("data-was-searched", 0); 205 this.ajax(h, "[data-main-part]", {clearSearch: 1}) 206 } 207 } 208 k.prev().focus() 209 }, 210 searchFixWidth: function () { 211 var h = this.parent.find(".tint-cp-search"); 212 var d = this.parent.find(".tint-select-title"); 213 var f = 40; 214 if (h.hasClass("tint-active")) { 215 f += d.outerWidth() + 20 216 } 217 h.css({width: f}) 218 }, 219 setSearchTitle: function () { 220 var f = this.parent.find("[data-search-input]"); 221 var d = this.parent.find(".tint-select-title") 222 }, 223 collectionsShow: function (d) { 224 this.propagation(); 225 var h = a(d).parents("[data-parent]"); 226 var f = h.find("[data-drop-down]"); 227 if (f.is(":visible")) { 228 f.hide() 229 } else { 230 f.show() 231 } 232 }, 233 collectionSelect: function (m) { 234 this.propagation(); 235 var j = a(m); 236 var h = j.parents("[data-parent]"); 237 var n = h.find("[data-drop-down]"); 238 n.hide(); 239 var l = h.find("[data-selected-name]"); 240 var k = j.data("name-replace") ? j.data("name-replace") : j.text(); 241 n.find(".tint-selected").removeClass("tint-selected"); 242 j.addClass("tint-selected"); 243 l.text(k); 244 var i = j.data("value"); 245 var f = j.text().trim(); 246 var d = {TYPE: "select_collection", PARAMS: {iCollectionID: i, sCollectionName: f}}; 247 obColorer.pushAction(d); 248 obColorer.selectSection(m) 249 }, 250 rgb2hsl: function (o) { 251 r = parseInt(o.substring(0, 2), 16) / 255; 252 g = parseInt(o.substring(2, 4), 16) / 255;
253 b = parseInt(o.substring(4, 6), 16) / 255; 254 var f = Math.max(r, g, b), j = Math.min(r, g, b); 255 var m, k, i = (f + j) / 2; 256 if (f == j) { 257 m = k = 0 258 } else { 259 var n = f - j; 260 k = i > 0.5 ? n / (2 - f - j) : n / (f + j); 261 switch (f) { 262 case r: 263 m = (g - b) / n + (g < b ? 6 : 0); 264 break; 265 case g: 266 m = (b - r) / n + 2; 267 break; 268 case b: 269 m = (r - g) / n + 4; 270 break 271 } 272 m /= 6 273 } 274 return [m, k, i] 275 }, 276 getTextColor: function (d) { 277 d = d.substr(1, 6); 278 e = this.rgb2hsl(d); 279 if ((e[0] < 0.55 && e[2] >= 0.5) || (e[0] >= 0.55 && e[2] >= 0.75)) { 280 return 0 281 } 282 return 1 283 }, 284 showFavorites: function () { 285 this.propagation(); 286 var h = obColorer.parent; 287 var d = h.find("[data-tint-show-favorites]"); 288 if (!d.hasClass("tint-active")) { 289 return false 290 } 291 var f = {action: "get-colors", FAVORITES: 1}; 292 this.ajax(f, "[data-main-part]", {clearSearch: 1}) 293 }, 294 selectType: function (h) { 295 this.propagation(); 296 var k = obColorer.parent; 297 var j = k.find("[data-tabs]"); 298 var f = j.find(".tint-switch-item"); 299 var d = j.find(".tint-tab"); 300 d.removeClass("tint-active").filter("[data-type='" + h + "']").addClass("tint-active"); 301 f.animate({top: h == "all" ? 0 : 15}, 100); 302 var i = {action: "get-colors"}; 303 this.ajax(i, "[data-main-part]") 304 }, 305 switchType: function () { 306 var d = this.currentType(); 307 this.selectType(d == "all" ? "avail" : "all") 308 }, 309 currentType: function () { 310 var f = a("[data-colorate-parent]"); 311 var d = f.find("[data-tabs]"); 312 var h = d.find(".tint-tab.tint-active"); 313 return h.data("type") 314 }, 315 toggleSections: function (d) { 316 var i = a(d); 317 var h = i.parents("[data-parent]:first"); 318 var f = h.find("[data-list]"); 319 f.slideToggle(300, function () { 320 i.toggleClass("open") 321 }) 322 }, 323 ajax: function (m, f, t, h) { 324 var s = {TYPE: "get_colors", PARAMS: {}, REQUEST_TIME: Date.now()}; 325 if (!t) { 326 t = {} 327 } 328 var o = a(f); 329 if (o.hasClass("tint-loading")) { 330 return 331 } 332 a.extend(m, obColorer.options); 333 a.extend(m, a.extend(m, obColorer.productData)); 334 var q = obColorer.parent.find("[data-drop-down] .tint-selected:first"); 335 if (q.length) { 336 var n = parseInt(q.data("value")); 337 if (n) { 338 obColorer.currentCollectionId = m.COLLECTION_ID = n 339 } 340 } 341 if (obColorer.currentType() == "avail") { 342 if (obColorer.iBaseType) { 343 m.BASE_TYPE_INT = obColorer.iBaseType 344 } 345 } 346 if (!m.CLIENT_ID) { 347 var p = {type: "critical", message: "RoboTint: ClientID is not specified"}; 348 obColorer.processError(p); 349 return false 350 } 351 var j = a("[data-main-part]"); 352 var k = ["EXT_ID", "COLLECTION_ID", "BASE_TYPE_INT"]; 353 for (var l in k) { 354 var d = k[l]; 355 if (!!m[d]) { 356 s.PARAMS[d] = m[d] 357 } 358 } 359 a.ajax({ 360 type: "post", 361 data: m, 362 url: obColorer.url, 363 crossDomain: true, 364 xhrFields: {withCredentials: true}, 365 beforeSend: function () { 366 obColorer.parent.find("[data-colorate]").css("background", "#fff"); 367 obColorer.parent.find("[data-tint-left]").removeClass("tint-selected-color"); 368 var u = obColorer.parent.find("[data-tint-submit]"); 369 u.addClass("tint-inactive"); 370 u.find("[data-color-name]").text(""); 371 var i = obColorer.parent.find("[data-favorite-block]"); 372 i.removeClass("tint-active"); 373 j.addClass("tint-loading") 374 }, 375 success: function (v) { 376 obColorer.searchClone = false;
377 if (!!t.clearSearch) { 378 obColorer.clearSearch() 379 } 380 var w = a(v).find(f); 381 j.removeClass("tint-loading"); 382 o.replaceWith(w); 383 obColorer.initColorswipe(); 384 obColorer.snapToGrid(); 385 if (!!t.setTop) { 386 w.css("top", a(window).scrollTop()) 387 } 388 s.RESPONSE_TIME = Date.now(); 389 obColorer.pushAction(s); 390 obColorer.checkArrows(); 391 if (!!h) { 392 h.resolve(v) 393 } 394 var i = "[data-tint-swiper]"; 395 var u = a(v).find(i); 396 if (u.length) { 397 obColorer.parent.find(i).replaceWith(u); 398 obColorer.initCarousel() 399 } 400 } 401 }) 402 }, 403 selectSection: function (d) { 404 var f = {action: "get-colors"}; 405 this.ajax(f, "[data-main-part]", {clearSearch: 1}) 406 }, 407 urlParam: function () { 408 var d = {}; 409 window.location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (i, f, h) { 410 d[f] = h 411 }); 412 return d 413 }, 414 formUrl: function (j) { 415 var d = window.location.href; 416 var h = "robotint-share"; 417 h = encodeURIComponent(h); 418 j = encodeURIComponent(j); 419 var l = this.urlParam(); 420 if (l[h]) { 421 delete (l[h]) 422 } 423 if (j) { 424 l[h] = j 425 } 426 d = window.location.origin + window.location.pathname; 427 if (!a.isEmptyObject(l)) { 428 d += "?"; 429 var k = []; 430 for (var f in l) { 431 k.push(f + "=" + l[f]) 432 } 433 d += k.join("&") 434 } 435 return d 436 }, 437 copyShareUrl: function (f) { 438 this.propagation(); 439 var i = this.parent.find(".tint-share-popup"); 440 var k = i.find("input"); 441 k.trigger("click"); 442 var d = document.createRange(); 443 d.selectNode(k[0]); 444 window.getSelection().addRange(d); 445 try { 446 document.execCommand("copy"); 447 if (!!f) { 448 var j = a(f); 449 j.addClass("tint-share-copied"); 450 j.text(j.attr("data-copied-text")); 451 j.oneTime("1s", function () { 452 j.removeClass("tint-share-copied"); 453 j.text(j.attr("data-copy-text")) 454 }) 455 } 456 } catch (h) { 457 } 458 }, 459 share: function (d) { 460 this.propagation(); 461 var k = a(d); 462 var h = this.parent.find(".tint-share-popup"); 463 if (h.hasClass("tint-active")) { 464 h.removeClass("tint-active"); 465 return false 466 } 467 var i = { 468 action: "make-url", 469 PARAMS: { 470 COLOR_ID: this.selectedColorID, 471 COLLECTION_ID: this.selectedCollectionID, 472 FAVORITES: 0, 473 URL: this.formUrl("TINT_HASH") 474 } 475 }; 476 var f = this.parent.find(".tint-images-bullet.tint-active"); 477 if (f.length) { 478 i.PARAMS.IMAGE = f.data("index") 479 } 480 if (obColorer.currentType() == "avail") { 481 if (obColorer.iBaseType) { 482 i.PARAMS.BASE_TYPE_INT = obColorer.iBaseType 483 } 484 } 485 a.extend(i, obColorer.options); 486 i.PARAMS.PRODUCT_DATA = obColorer.productData; 487 var j = btoa(a.param(i.PARAMS)); 488 if (h.data("share-data") == j) { 489 h.addClass("tint-active"); 490 return false 491 }
492 a.ajax({ 493 type: "post", 494 data: i, 495 dataType: "json", 496 url: obColorer.url, 497 crossDomain: true, 498 xhrFields: {withCredentials: true}, 499 beforeSend: function () { 500 k.addClass("tint-share-loading") 501 }, 502 success: function (l) { 503 k.removeClass("tint-share-loading"); 504 h.addClass("tint-active"); 505 k.data("color-id", obColorer.selectedColorID); 506 h.find("input").val(l.shareUrl); 507 h.data("share-data", j) 508 } 509 }) 510 }, 511 hideShare: function () { 512 this.propagation(); 513 var d = this.parent.find(".tint-share-popup"); 514 d.removeClass("tint-active") 515 }, 516 toggleFavoriteItem: function (d) { 517 this.propagation(); 518 var h = a(d); 519 var i = this.selectedColorID; 520 if (!h.hasClass("tint-active")) { 521 return false 522 } 523 if (!h.hasClass("tint-favorite-loading")) { 524 var f = {COLOR_ID: i, action: "toggle-favorite-item"}; 525 a.extend(f, obColorer.options); 526 a.extend(f, a.extend(f, obColorer.productData)); 527 a.ajax({ 528 type: "post", 529 data: f, 530 url: obColorer.url, 531 crossDomain: true, 532 xhrFields: {withCredentials: true}, 533 beforeSend: function () { 534 h.addClass("tint-favorite-loading") 535 }, 536 success: function (k) { 537 h.removeClass("tint-favorite-loading"); 538 var j = "[data-tint-show-favorites]"; 539 obColorer.parent.find(j).replaceWith(a(k).find(j)); 540 h.toggleClass("tint-selected"); 541 if (!h.hasClass("tint-selected")) { 542 obColorer.showFavorites() 543 } 544 } 545 }) 546 } 547 }, 548 getPrice: function (o) { 549 var n = a(o); 550 var f = n.data("base-paint-id"); 551 var l = n.data("id"); 552 var k = n.data("name"); 553 var j = n.data("collection-id"); 554 var h = n.data("collection-name"); 555 var m = { 556 TYPE: "price_query", 557 REQUEST_TIME: Date.now(), 558 PARAMS: {iColorID: l, sColorName: k, iCollectionID: j, sCollectioName: h} 559 }; 560 if (parseInt(this.options.WITH_PRICE)) { 561 var i = {COLOR_ID: l, BASE_PAINT_ID: f, action: "get-color-price"}; 562 a.extend(i, obColorer.options); 563 a.extend(i, a.extend(i, obColorer.productData)); 564 var d = this.parent.find("[data-tint-submit]"); 565 a.ajax({ 566 type: "post", 567 data: i, 568 url: obColorer.url, 569 crossDomain: true, 570 xhrFields: {withCredentials: true}, 571 beforeSend: function () { 572 d.find("[data-color-price]").addClass("tint-price-loading"); 573 d.addClass("tint-with-price") 574 }, 575 success: function (s) { 576 var t = a(s).find("[data-color-price]"), q = a(s).find("[data-tint-submit]"); 577 d.find("[data-color-price]").replaceWith(t); 578 obColorer.selectedColorPrice = t.data("price"); 579 obColorer.selectedColorPricePerCan = t.data("price-per-can"); 580 obColorer.selectedColorPricePerLitr = t.data("price-per-litr"); 581 if (q.length && !obColorer.selectedColorPricePerLitr) { 582 q.find("[data-color-name]").text(obColorer.selectedColorName); 583 d.replaceWith(q) 584 } 585 if (typeof obColorer.siteSettings.processPrice === "function") { 586 var p = obColorer.getSelectedData(); 587 obColorer.siteSettings.processPrice(t, p) 588 } 589 m.RESPONSE_TIME = Date.now(); 590 m.PARAMS.dColoringPrice = (Math.round(t.data("price") * 100) / 100).toString(); 591 if (!!obColorer.productData.PRODUCT_PRICE) { 592 m.PARAMS.dBaseProductPrice = (Math.round(obColorer.productData.PRODUCT_PRICE) / 100).toString() 593 } 594 obColorer.pushAction(m) 595 } 596 }) 597 } 598 }, 599 setSnapTo: function (h) { 600 var k = a(h); 601 var l = k.data("id"); 602 var d = a(h).parent(); 603 var j = a("[data-color-slider]"); 604 var f = a("[data-active-items]"); 605 var i = d.position().left + j.position().left; 606 f.css("left", i);
607 this.snapToGrid(l) 608 }, 609 setCookie: function (f, i, d, k, h, j) { 610 document.cookie = f + "=" + escape(i) + ((d) ? "; expires=" + d : "") + ((k) ? "; path=" + k : "") + ((h) ? "; domain=" + h : "") + ((j) ? "; secure" : "") 611 }, 612 getCookie: function (d) { 613 var f = document.cookie.match(new RegExp("(?:^|; )" + d.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1") + "=([^;]*)")); 614 return f ? decodeURIComponent(f[1]) : c 615 }, 616 close: function (d) { 617 this.propagation(); 618 if (!this.parent || typeof this.parent.find !== "function") { 619 var j = a(".tint-popup"); 620 if (j) { 621 j.remove(); 622 this.hideBG() 623 } 624 return false 625 } 626 var f = this.parent.find(".tint-disclaimer-full"); 627 if (f.is(":visible")) { 628 f.removeClass("tint-visible"); 629 return false 630 } 631 var h = a(".tint-popup"); 632 if (h) { 633 h.remove(); 634 this.hideBG() 635 } 636 }, 637 snapToGrid: function (l) { 638 var j = a("[data-color-slider]"); 639 var i = j.parents("[data-parent]:first"); 640 var d = a("[data-active-items]"); 641 var k = d.touching("[data-grid]:visible"); 642 if (!k.length) { 643 k = d.nearest("[data-grid]:visible") 644 } 645 if (!k.length) { 646 return 647 } 648 var h = k.length <= 3 ? a(k[0]) : a(k[1]); 649 if ((!h.next().length) && (h.prev().length)) { 650 h = h.prev() 651 } 652 var f = h.position().left + j.position().left; 653 if (f + obColorer.gridWidth >= i.width()) { 654 h = h.prev(); 655 f = h.position().left + j.position().left 656 } 657 d.css("left", f); 658 d.stopTime(); 659 d.oneTime("100ms", function () { 660 var s = [h.data("index")]; 661 var u = h.next(); 662 if (u.length) { 663 s.push(u.data("index")) 664 } 665 var p = a("[data-colors-big-parent]"); 666 p.empty(); 667 for (var o in s) { 668 var q = s[o]; 669 j.find("[data-index='" + q + "'] tint-div").each(function () { 670 var v = a(this.outerHTML); 671 v[0].removeAttribute("ontouchend"); 672 v.bind("touchstart", function () { 673 a(this).data("touchStartTime", Date.now()) 674 }).bind("touchend", function () { 675 let time = Date.now() - a(this).data("touchStartTime"); 676 if (time < 200) { 677 obColorer.selectColor(a(this)) 678 } 679 }); 680 v.text(v.data("name")); 681 v.attr("onclick", "obColorer.selectColor(this)"); 682 p.append(v) 683 }) 684 } 685 if (!!l) { 686 var n = p.find("[data-id='" + l + "']"); 687 if (n.length) { 688 n.trigger("click") 689 } 690 } 691 var t = p.find("[data-id]"); 692 if (t.length == 1) { 693 var m = t.get(0); 694 obColorer.selectColor(m) 695 } 696 }) 697 }, 698 checkArrows: function () { 699 return 700 }, 701 slideArrow: function (p) { 702 var n = {TYPE: "arrow_click", PARAMS: {sDirection: p}}; 703 var o = obColorer.parent.find("[data-color-slider]"); 704 var j = o.parents("[data-parent]:first"); 705 var f = o.find("[data-grid]"); 706 var q = f.length; 707 var t = q * obColorer.gridWidth; 708 var h = j.width(); 709 var d = o.position().left - obColorer.startLeftOffset;
710 var l = Math.ceil(-d / obColorer.gridWidth); 711 if (l < 0) { 712 l = 0 713 } 714 var i = Math.ceil((t - h + d) / obColorer.gridWidth); 715 if (i < 0) { 716 i = 0 717 } 718 var k = Math.ceil(h / obColorer.gridWidth); 719 var s = Math.ceil(k / 2); 720 var m = 0; 721 switch (p) { 722 case"left": 723 if (s < l) { 724 m = "+=" + (s * obColorer.gridWidth) + "px" 725 } 726 break; 727 case"right": 728 if (s <= i) { 729 m = "-=" + (s * obColorer.gridWidth) + "px" 730 } else { 731 m = "-=" + (i * obColorer.gridWidth) + "px" 732 } 733 break 734 } 735 o.animate({left: m}, 300, function () { 736 a(this).data("offset-left", parseInt(o.css("left"))); 737 obColorer.checkArrows(); 738 obColorer.snapToGrid(); 739 obColorer.pushAction(n) 740 }) 741 }, 742 checkSliderLimits: function (j) { 743 var s = j.parents("[data-parent]:first"); 744 var n = j.find("[data-grid]"); 745 var d = n.length; 746 var p = d * obColorer.gridWidth; 747 var u = s.width(); 748 var o = j.position().left - obColorer.startLeftOffset; 749 var m = Math.ceil(-o / obColorer.gridWidth); 750 if (m < 0) { 751 m = 0 752 } 753 var l = Math.ceil((p - u + o) / obColorer.gridWidth); 754 if (l < 0) { 755 l = 0 756 } 757 var x = Math.ceil(u / obColorer.gridWidth); 758 var t = a(n[0]); 759 var f = t.data("index"); 760 var y = a(n[n.length - 1]); 761 var k = y.data("index"); 762 if (m > obColorer.limit) { 763 var h = m - obColorer.limit; 764 for (var v = 0; v < h; v++) { 765 a(n[v]).remove(); 766 o += obColorer.gridWidth 767 } 768 } else { 769 if (m < obColorer.limit) { 770 var w = obColorer.limit - m; 771 while ((f > 0) && (w > 0)) { 772 f--; 773 if ($div = obColorer.createObject(f)) { 774 j.prepend($div); 775 o -= obColorer.gridWidth 776 } 777 w-- 778 } 779 } 780 } 781 if (l < obColorer.limit) { 782 var q = Object.keys(obColorer.allItems).length - 1; 783 var w = obColorer.limit - l; 784 while ((k < q) && (w > 0)) { 785 k++; 786 if ($div = obColorer.createObject(k)) { 787 j.append($div) 788 } 789 w-- 790 } 791 } 792 if (o > 0) { 793 o = 0 794 } 795 j.css("left", o); 796 this.checkPosition(j) 797 }, 798 showFullDisclaimer: function () { 799 var f = this.parent; 800 var d = f.find(".tint-disclaimer-full"); 801 d.addClass("tint-visible") 802 }, 803 checkPosition: function (k) { 804 var j = k.parents("[data-parent]:first"); 805 var l = k.find("[data-grid]"); 806 var h = l.length; 807 var i = h * obColorer.gridWidth; 808 var d = j.width(); 809 var f = k.position().left - obColorer.startLeftOffset; 810 if (i < d) { 811 return false 812 } 813 if (d - f > i) { 814 k.animate({left: -(i - d - 2)}, 300); 815 return false 816 } 817 if (f > 0) { 818 k.animate({left: 0}, 300); 819 return false 820 } 821 return true 822 }, 823 mobile: function () { 824 return (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())) 825 }, 826 getSelectedData: function () { 827 var d = { 828 BASKET_ID: this.selectedBasketID, 829 PRODUCT_ID: this.selectedElementID, 830 HEX: this.selectedColorHEX, 831 COLOR_ID: this.selectedColorID, 832 BASE_TYPE_INT: this.selectedBaseTypeInt, 833 COLOR_NAME: this.selectedColorName, 834 COLOR_PRICE: this.selectedColorPrice, 835 PRICE_PER_CAN: this.selectedColorPricePerCan, 836 PRICE_PER_LITER: this.selectedColorPricePerLitr, 837 COLLECTION_ID: this.selectedCollectionID, 838 COLLECTION_VENDOR_ID: this.selectedCollectionVen
838dorID, 839 COLLECTION_NAME: this.selectedCollectionName 840 }; 841 if (obColorer.productData.PRODUCT_ID) { 842 d.PRODUCT_ID = obColorer.productData.PRODUCT_ID 843 } 844 if (obColorer.productData.VOLUME) { 845 d.VOLUME = obColorer.productData.VOLUME 846 } 847 if (obColorer.productData.BASKET_ID) { 848 d.BASKET_ID = obColorer.productData.BASKET_ID 849 } 850 if (obColorer.productData.COLOR_SKU_ID) { 851 d.COLOR_SKU_ID = obColorer.productData.COLOR_SKU_ID 852 } 853 return d 854 }, 855 submit: function (d) { 856 tobasket = 0; 857 this.propagation(); 858 var j = {TYPE: "submit_color", PARAMS: {}}; 859 var h = a(d); 860 var show = false; 861 if(window.location.pathname == '/personal/cart/' || window.location.pathname == '/color_collections/566/23490/'){ 862 show = true; 863 } 864 if (h.hasClass("tint-inactive")) { 865 return false 866 } 867 var k = this.parent.find("[data-tint-over]"); 868 this.parent.addClass("tint-was-selected"); 869 var i = a("[data-colors-big-parent]"); 870 var f = obColorer.getSelectedData(); 871 // console.log(f); 872 // console.log(123); 873 if (!!f.COLLECTION_NAME) { 874 k.find("[data-collection-name]").text(f.COLLECTION_NAME) 875 } 876 if (!!f.COLOR_NAME) { 877 k.find("[data-color-name]").text(f.COLOR_NAME) 878 } 879 k.find("[data-color-bg]").css("background-color", f.HEX); 880 k.find("[data-basket-link]").attr("href", obColorer.siteSettings.basketURL); 881 j.PARAMS = f; 882 if (!!j.PARAMS.COLOR_PRICE) { 883 j.PARAMS.COLOR_PRICE = (Math.round(j.PARAMS.COLOR_PRICE * 100) / 100).toString() 884 } 885 obColorer.pushAction(j); 886 887 $('.buy-button-box .add-to-cart').show(); 888 $('.buy-button-box .product-cart-control').hide(); 889 if (typeof obColorer.siteSettings.colorSelect === "function") { 890 if(!show){ 891 var MF_COLOR = $('.MF_COLOR .property-filter-value.__active:first').index(); 892 selectedColor[MF_COLOR] = f 893 selectedColorPRICE[MF_COLOR] = Math.round(parseInt($('.tint-color-price').attr('data-price-shop'))/parseInt($('.tint-color-price').attr('data-price-ref_can_volume'))) 894 // console.log(selectedColor) 895 obColorer.showcolor(); 896 obColorer.close(this); 897 // console.log('showcolor'); 898 // console.log(JSON.stringify(selectedColor)); 899 $('.calc-comp .active.calc-comp__layer-btn').click(); 900 }else{ 901 obColorer.siteSettings.colorSelect(f) 902 } 903 } 904 if (!!obColorer.options.CLIENT_DOMAIN) { 905 k.find("tint-domain").text(obColorer.options.CLIENT_DOMAIN) 906 } 907 if(show){ 908 k.fadeIn(); 909 } 910 return true 911 }, 912 showcolor: function (){ 913 obColorer.hidecolor(); 914 var MF_COLOR = $('.MF_COLOR .property-filter-value.__active:first').index(); 915 $('.pic.cl').remove() 916 $('.title-tint-select').remove() 917 $('.color-block-title--rect').text(selectedColor[MF_COLOR].COLOR_NAME) 918 $('.color-block-img').hide(); 919 $('.--gtm-btn_buy').removeClass('new-btn-text') 920 $('.--gtm-btn_buy').addClass('new-btn-text-color') 921 newColor = 1; 922 if(selectedColorPRICE[MF_COLOR]>0){ 923 var price = selectedColorPRICE[MF_COLOR] 924 }else{ 925 var price = selectedColorPRICE1; 926 } 927 928 /* ÐÐ ÐÐÐÐ mirkrasok (24.08.2026). Ð¦ÐµÐ½Ñ Ð·Ð° лиÑÑ Ð¸ за м² ÑÑиÑалиÑÑ Ð¾Ñ 929 обÑÑма банки, коÑоÑÑй вÑÑиÑÑвалÑÑ Ð¸Ð· ÑекÑÑа блока «РаÑÑ Ð¾Ð´Â»: 930 Ñам бÑл оÑделÑнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ .obiem Ñ Ð¾Ð±ÑÑмом («9л»). ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð· 931 каÑÑоÑки ÑбÑали (Ñм. detail_claude/include/template_all_vue.php), 932 клаÑÑ obiem пеÑÐµÐµÑ Ð°Ð» на ÑÑÑÐ¾ÐºÑ Â«1л = 5-11ÐÐ.Ð.», и Number('1л') 933 ÑÑал даваÑÑ NaN. ÐапаÑÐ½Ð°Ñ Ð²ÐµÑка его Ð
933½Ðµ ловила (NaN==0 â ложÑ), 934 а number_format пеÑаÑÐ°ÐµÑ NaN как 0 â обе колонки обнÑлÑлиÑÑ. 935 ТепеÑÑ Ð±ÐµÑÑм гоÑовÑе ÑÐµÐ½Ñ Ð¸Ð· ÑÑÑоки ÐÐРколеÑовки и Ñмножаем на 936 Ñо, во ÑколÑко Ñаз подоÑожала банка: ни обÑÑм, ни ÑаÑÑ Ð¾Ð´ из 937 ÑазмеÑки ÑиÑаÑÑ Ð½Ðµ нÑжно, и Ð½Ð°Ð±Ð¾Ñ ÐºÐ¾Ð»Ð¾Ð½Ð¾Ðº ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð¾Ñновной 938 ÑÑÑокой. ÐÑÐ°Ð²ÐºÑ ÐÐÐТÐÐ ÐТЬ поÑле пеÑекаÑки s.js Ñ core.robotint.ru. */ 939 var mkPriceNum = function (t) { 940 var n = parseInt(String(t).replace(/[^0-9]/g, ''), 10); 941 return isFinite(n) ? n : 0; 942 }; 943 var baseCells = $('.right-sidebar-price-row.--price-box .right-sidebar-price-title'); 944 var oldprice = mkPriceNum(baseCells.eq(0).text()); 945 var newprice = oldprice + price * selectedColor[MF_COLOR].VOLUME; 946 var kolerRatio = oldprice > 0 ? newprice / oldprice : 0; 947 948 var priceL = baseCells.length > 1 ? Math.round(mkPriceNum(baseCells.eq(1).text()) * kolerRatio) : ''; 949 var priceR = baseCells.length > 2 ? Math.round(mkPriceNum(baseCells.eq(2).text()) * kolerRatio) : ''; 950 951 $('.right-sidebar-price-row.--price-box').hide(); 952 $( '.color-block-title--rect' ).after('<div class="pic cl" data-price="'+price+'" style="background-color:'+selectedColor[MF_COLOR].HEX+'"> </div><div class="title-tint-select">'+selectedColor[MF_COLOR].COLLECTION_NAME+' '+selectedColor[MF_COLOR].COLOR_NAME+'</div>') 953 954 $( '.color-box--rect' ).after('<div class="del_color" onclick="obColorer.delete(this)" > </div>') 955 $( '.right-sidebar-price-row.--price-box' ).after('<div class="right-sidebar-price-row new-price" data-unit-price="'+newprice+'"><div class="right-sidebar-price-title --price-value">'+number_format(newprice, 0, ".", " ")+' â½</div>'+(priceL === '' ? '' : '<div class="right-sidebar-price-title">'+number_format(priceL, 0, ".", " ")+' â½</div>')+(priceR === '' ? '' : '<div class="right-sidebar-price-title">'+number_format(priceR, 0, ".", " ")+' â½</div>')+'</div>') 956 $('.mk-cartbar-price').text(number_format(newprice, 0, ".", " ") + ' â½'); 957 958 $('.calc-comp__tins-sum-title.note.selectedcolor').html('<div><span class="title-tint-left">'+selectedColor[MF_COLOR].COLOR_NAME+' </span><span class="pic cl" style="background-color:'+selectedColor[MF_COLOR].HEX+'"> </span><span class="title-tint">'+$('.title-tint-select').text()+'</span></div>'); 959 }, 960 delete: function (f) { 961 tobasket = 0; 962 var MF_COLOR = $('.MF_COLOR .property-filter-value.__active span').text(); 963 selectedColor = new Array(); 964 selectedColorPRICE = new Array(); 965 $('.calc-comp__tins-sum-title.note.selectedcolor').html('<span></span>'); 966 obColorer.hidecolor(); 967 $('.color-block-img').show(); 968 $('.calc-comp .active.calc-comp__layer-btn').click(); 969 //$('.new-btn .new-btn-text').remove(); 970 //$('.new-btn .input-box').after('<div class="new-btn-text --gtm-btn_buy">РкоÑзинÑ</div>'); 971 }, 972 hidecolor: function(){ 973 974 $('.right-sidebar-price-row.--price-box').show(); 975 $('.mk-cartbar-price').html($('.right-sidebar-price-row.--price-box .right-sidebar-price-title.--price-value').html()); 976 $('.pic.cl').remove(); 977 $('.title-tint-select').remove(); 978 $('.right-sidebar-price-row.new-price').remove(); 979 $('.del_color').remove(); 980 $('.color-block-title--rect').text('ÐÑбÑаÑÑ ÑвеÑ'); 981 $('.new-btn-text-color.--gtm-btn_buy').addClass('new-btn-text') 982 $('.--gtm-btn_buy').removeClass('new-btn-text-color') 983 984 }, 985 chooseColor: function (d, i, k, m) { 986 this.selectedSKUID = i; 987 this.selectedElementID = d; 988 this.selectedBasketID = 0; 989 this.testMode = !!m; 990 newColor = 1; 991 if (!!k) { 992 this.selectedBasketID = k 993 } 994 var l = {ELEMENT_ID: d, SKU_ID: i}; 995 var f = a('<div data-colorer-parent="1" class="tint_empty"></div>'); 996 f.appendTo("body"); 997 var j = "[data-colorer-parent]"; 998 var h = {setTop: true}; 999 1000 this.ajax(l, j, h) 1001 }, 1002 compareNames: function (f, d) { 1003 f = a.trim(f).toLocaleLowerCase(); 1004 d = a.trim(d).toLocaleLowerCase(); 1005 return (f.search(d) >= 0) 1006 }, 1007 searchKeyup: function (d, h) { 1008 if (h.keyCode == 13) { 1009 var f = a(d).parents("[data-parent]:first"); 1010 this.findByCode(f) 1011 } 1012 }, 1013 clearSearch: function () { 1014 var d = this.parent.find(".tint-cp-search"); 1015 d.removeClass("tint-loading"); 1016 d.removeClass("tint-found"); 1017 d.removeClass("tint-notfound"); 1018 d.find("[data-search-input]").val("") 1019 }, 1020 findByCode: function (h) { 1021 var t = {TYPE: "search"}; 1022 var j = Date.now(); 1023 var p = a(h); 1024 var n = true; 1025 var f = p.find("[data-search-input]"); 1026 var v = a.trim(f.prop("value")); 1027 var s = p.find("[data-error]"); 1028 f.val(v); 1029 var w = false;
1030 var x = false; 1031 var F = false; 1032 if (1 || v.length) { 1033 p.addClass("tint-loading"); 1034 p.removeClass("tint-found"); 1035 p.removeClass("tint-notfound"); 1036 if (v.length) { 1037 if (!n) { 1038 var z = obColorer.parent.find("[data-color-slider]"); 1039 if (obColorer.searchClone === false) { 1040 obColorer.searchClone = z.clone() 1041 } 1042 var k = obColorer.searchClone.find("[data-id]").clone(); 1043 var A = k.filter(function () { 1044 var i = a(this).attr("data-name").toLowerCase().indexOf(v.toLowerCase()); 1045 return i >= 0 1046 }); 1047 if (A.length) { 1048 z.empty(); 1049 var o = 0; 1050 var u = false; 1051 for (var y = 0; y < A.length; y++) { 1052 if (!u) { 1053 u = a('<tint-div class="tint-col" data-grid="1" data-index="' + o + '"/>') 1054 } 1055 var d = a(A[y]); 1056 d.appendTo(u); 1057 if (!((y + 1) % 6)) { 1058 u.appendTo(z); 1059 var u = false; 1060 o++ 1061 } 1062 } 1063 if (u) { 1064 u.appendTo(z) 1065 } 1066 w = true 1067 } 1068 if (!w) { 1069 p.addClass("tint-notfound"); 1070 z.html(obColorer.searchClone.html()) 1071 } else { 1072 p.addClass("tint-found"); 1073 obColorer.initColorswipe(); 1074 var B = z.find("[data-id]:first"); 1075 var m = B.parent(); 1076 var q = a("[data-color-slider]"); 1077 var D = a("[data-active-items]"); 1078 var l = m.position().left + q.position().left; 1079 D.css("left", l); 1080 obColorer.snapToGrid() 1081 } 1082 t.PARAMS = {sTextQuery: v}; 1083 t.REQUEST_TIME = j; 1084 t.RESPONSE_TIME = Date.now(); 1085 obColorer.pushAction(t) 1086 } else { 1087 var C = {action: "get-colors", SEARCH: v}; 1088 var E = a.Deferred(); 1089 this.ajax(C, "[data-main-part]", {}, E); 1090 E.done(function (H) { 1091 t.PARAMS = {sTextQuery: v}; 1092 t.REQUEST_TIME = j; 1093 t.RESPONSE_TIME = Date.now(); 1094 obColorer.pushAction(t); 1095 obColorer.setSearchTitle(); 1096 var i = obColorer.parent.find("[data-grid]").length; 1097 var G = obColorer.parent.find(".tint-cp-search"); 1098 var I = obColorer.parent.find("[data-color-slider]"); 1099 G.attr("data-was-searched", 1); 1100 if (i) { 1101 G.addClass("tint-found") 1102 } else { 1103 G.addClass("tint-notfound") 1104 } 1105 }) 1106 } 1107 } else { 1108 } 1109 p.removeClass("tint-loading") 1110 } 1111 return false 1112 }, 1113 disableSearch: function () { 1114 var f = obColorer.parent.find("[data-color-slider]"); 1115 if (obColorer.searchClone !== false) { 1116 f.html(obColorer.searchClone.html()) 1117 } 1118 var d = f.find("[data-id]:first"); 1119 obColorer.initColorswipe(); 1120 obColorer.checkArrows(); 1121 obColorer.setSnapTo(d) 1122 }, 1123 scrollToGrid: function (v, o) { 1124 var p = obColorer.parent.find("[data-color-slider]"); 1125 var j = p.parents("[data-parent]:first"); 1126 var h = p.find("[data-grid]"); 1127 var k = h.filter("[data-index='" + v + "']"); 1128 if (!k.length) { 1129 return 1130 } 1131 var q = h.length; 1132 var u = q * obColorer.gridWidth; 1133 var f = j.width(); 1134 var d = p.position().left - obColorer.startLeftOffset;
1135 var m = Math.ceil(-d / obColorer.gridWidth); 1136 if (m < 0) { 1137 m = 0 1138 } 1139 var i = Math.ceil((u - f + d) / obColorer.gridWidth); 1140 if (i < 0) { 1141 i = 0 1142 } 1143 var l = Math.ceil(f / obColorer.gridWidth); 1144 var t = Math.ceil(l / 2); 1145 var n = 0; 1146 if (m + t < v) { 1147 n = d - ((v - m - t) * obColorer.gridWidth); 1148 var s = u - f; 1149 if (Math.abs(n) > Math.abs(s)) { 1150 n = -Math.abs(s) 1151 } 1152 } else { 1153 if (v > t) { 1154 n = -((v - t) * obColorer.gridWidth) 1155 } else { 1156 n = 0 1157 } 1158 } 1159 p.animate({left: n}, 300, function () { 1160 a(this).data("offset-left", parseInt(p.css("left"))); 1161 obColorer.checkArrows(); 1162 if (!o) { 1163 o = k.find("[data-id]:first").data("id") 1164 } 1165 var w = p.find("[data-id='" + o + "']"); 1166 if (w.length) { 1167 w.oneTime("100ms", function () { 1168 w.click() 1169 }) 1170 } 1171 }) 1172 }, 1173 checkInFavorites: function (j) { 1174 var f = this.parent.find("[data-favorite-items]"); 1175 if (f.length) { 1176 var d = f.data("favorite-items"); 1177 for (var h in d) { 1178 if (d[h] == j) { 1179 return true 1180 } 1181 } 1182 } 1183 return false 1184 }, 1185 selectColor: function (u) { 1186 var q = a(u); 1187 var t = q.parents("[data-colors-big-parent]:first"); 1188 t.find("[data-id]").removeClass("tint-active"); 1189 q.addClass("tint-active"); 1190 var p = a("[data-color-info]"); 1191 this.selectedColorID = q.data("id"); 1192 var h = false; 1193 var k = q.data("collection-name"); 1194 var j = q.data("collection-id"); 1195 var d = obColorer.parent.find("[data-tint-submit]"); 1196 var s = obColorer.parent.find("[data-favorite-block]"); 1197 if (h = this.getColorByID(this.selectedColorID)) { 1198 if (d.hasClass("tint-inactive")) { 1199 d.find(".tint-color-sname").html(obColorer.buttonTexts.not_empty) 1200 } 1201 p.find("[data-collection-name]").text(h.SECTION_NAME); 1202 p.find("[data-color-name]").text(h.name); 1203 p.find("[data-base-type-int]").text(h.BASE_TYPE_INT); 1204 p.removeClass("hidden"); 1205 s.addClass("tint-active"); 1206 if (this.checkInFavorites(this.selectedColorID)) { 1207 s.addClass("tint-selected") 1208 } else { 1209 s.removeClass("tint-selected") 1210 } 1211 d.removeClass("tint-inactive"); 1212 d.find("[data-color-name]").text(h.name); 1213 if (h.price) { 1214 d.addClass("tint-with-price"); 1215 d.find("[data-color-price]").text(h.price) 1216 } else { 1217 d.removeClass("tint-with-price") 1218 } 1219 d.removeClass("tint-inactive"); 1220 obColorer.hideShare() 1221 } 1222 this.selectedBaseTypeInt = q.data("base-type-int"); 1223 this.selectedColorHEX = q.data("hex"); 1224 this.selectedColorName = q.text(); 1225 a("[data-colorate]").css("background", q.data("hex")); 1226 a("[data-item-color]").css("background", q.data("hex")).addClass("tint-active"); 1227 a("[data-sku-color-text]").text(this.selectedColorName); 1228 a("[data-tint-left]").addClass("tint-selected-color"); 1229 p.css("background-color", this.selectedColorHEX); 1230 this.selectedCollectionName = k; 1231 this.selectedCollectionVendorID = q.data("collection-vendor-id"); 1232 this.selectedCollectionID = j; 1233 p.find("[data-collection-name]").text(k); 1234 var n = this.getTextColor(this.selectedColorHEX); 1235 if (n) { 1236 p.addClass("tint-white") 1237 } else { 1238 p.removeClass("tint-white") 1239 } 1240 var o = q.data("id"); 1241 var m = q.data("name"); 1242 var l = q.data("collection-id"); 1243 var i = q.data("collection-name"); 1244 var f = {TYPE: "select_color", PARAMS: {iColorID: o, sColorName: m, iCollectionID: l, sCollectioName: i}}; 1245 obColorer.pushAction(f); 1246 obColorer.getPrice(u) 1247 }, 1248 getColorByID: function (h) { 1249 if (!!h) { 1250 var f = a("[data-color-slider]"); 1251 var d = a("[data-id='" + h + "']"); 1252 if (d.length) { 1253 // console.log(d.data()); 1254 // console.log(123456); 1255 return d.data() 1256 } 1257 } 1258 return false 1259 }, 1260 bind: function () { 1261 }, 1262 hideBG: function () { 1263 var d = a("body").find("tint-bg"); 1264 if (d.length) { 1265 d.hide() 1266 } 1267 }, 1268 getBG: function () { 1269 var d = a("body").find("tint-bg"); 1270 if (d.length) { 1271 return d 1272 } 1273 return false 1274 }, 1275 showBG: function () { 1276 var d = a("body").find("tint-bg"); 1277 if (!d.length) { 1278 d = a("<tint-bg/>"); 1279 var f = { 1280 position: "fixed", 1281 top: 0, 1282 left: 0, 1283 zIndex: obColorer.siteSettings.bgZindex, 1284 width: "100%", 1285 height: "100%", 1286 display: "none", 1287 opacity: 0.5, 1288 background: "#000 url('" + obColorer.spinnerUrl + "') no-repeat scroll 50% 50%" 1289 }; 1290 d.css(f); 1291 d.appendTo(a("body")) 1292 } 1293 obColorer.bg = d; 1294 d.removeClass("tint-no-spinner"); 1295 d.fadeIn(300) 1296 }, 1297 show: function (f, m) { 1298 var d = {TYPE: "open_widget", PARAMS: {}}; 1299 var l = (!!f) ? a(f) : false;
1300 1301 if (obColorer.saParent) { 1302 obColorer.options.STAND_ALONE = 1 1303 } 1304 if (l) { 1305 obColorer.object = l; 1306 if (l[0].hasAttribute("disabled")) { 1307 return false 1308 } 1309 obColorer.selectedElementID = parseInt(l.data("product-id")); 1310 if (l.data("basket-id")) { 1311 obColorer.selectedBasketID = parseInt(l.data("basket-id")) 1312 } 1313 } 1314 var i = {action: "init"}; 1315 if (l) { 1316 obColorer.productData =JSON.parse(l.attr("data-tint-data")) 1317 //obColorer.productData = l.data("tint-data") 1318 1319 } 1320 a.extend(i, obColorer.productData); 1321 if (!!obColorer.productData.FROM) { 1322 d.PARAMS.FROM = obColorer.productData.FROM 1323 } 1324 if (l) { 1325 this.iBaseType = parseInt(l.data("tint-bt")) 1326 } 1327 a.extend(i, obColorer.options); 1328 if (!i.CLIENT_ID) { 1329 var j = {type: "critical", message: "RoboTint: ClientID is not specified"}; 1330 obColorer.processError(j); 1331 return false 1332 } 1333 if (this.iBaseType) { 1334 if (typeof i.USE_SWITCHER == "undefined") { 1335 i.USE_SWITCHER = 1 1336 } 1337 } else { 1338 i.USE_SWITCHER = 0 1339 } 1340 if (m) { 1341 var h = obColorer.urlParam(); 1342 i.SHARE_ID = h["robotint-share"] 1343 } 1344 var k = ""; 1345 a.ajax({ 1346 url: obColorer.url, 1347 data: i, 1348 type: "post", 1349 crossDomain: true, 1350 xhrFields: {withCredentials: true}, 1351 beforeSend: function () { 1352 if (!obColorer.saParent) { 1353 obColorer.showBG() 1354 } else { 1355 obColorer.saParent.css({ 1356 width: "100%", 1357 minHeight: 130, 1358 display: "flex", 1359 "justify-content": "center", 1360 "align-items": "center" 1361 }); 1362 a("<img src='" + obColorer.domain + "/spinner.svg' style='width:80px; height:80px;'/>").appendTo(obColorer.saParent) 1363 } 1364 k = Date.now() 1365 }, 1366 success: function (n) { 1367 d.REQUEST_TIME = k; 1368 d.RESPONSE_TIME = Date.now(); 1369 obColorer.pushAction(d); 1370 var o = {TYPE: "dom_construct", REQUEST_TIME: Date.now()}; 1371 if (obColorer.saParent) { 1372 obColorer.appendSA(n) 1373 } else { 1374 obColorer.appendPopup(n) 1375 } 1376 obColorer.init(); 1377 o.RESPONSE_TIME = Date.now(); 1378 obColorer.pushAction(o) 1379 }, 1380 error: function (n) { 1381 var o = {type: "critical", message: "RoboTint: " + n.statusText + ". " + n.responseText}; 1382 obColorer.processError(o) 1383 } 1384 }) 1385 }, 1386 processError: function (h) { 1387 var d = !!obColorer.options.IFRAME; 1388 switch (h.type) { 1389 case"warning": 1390 console.warn(h.message); 1391 break; 1392 case"critical": 1393 if (d) { 1394 try { 1395 if (typeof obRobotint != "undefined") { 1396 if (obRobotint.lastMessage) { 1397 let response = {action: "undefined", data: {}, type: "error", message: h.message}; 1398 obRobotint.sendResponse(obRobotint.lastMessage.ports[0], response) 1399 } 1400 } 1401 } catch (f) { 1402 console.trace(f) 1403 } 1404 obColorer.hideBG() 1405 } else { 1406 console.warn(h.message); 1407 obColorer.hideBG() 1408 } 1409 break 1410 } 1411 }, 1412 sizeGridWidth: function () { 1413 var d = obColorer.saParent.find(".tint-right"); 1414 var i = obColorer.saParent.find(".tint-blured"); 1415 var h = i.width(); 1416 var f = parseInt(d.css("padding-right")); 1417 var k = Math.ceil(h / this.gridWidth); 1418 var j = k * this.gridWidth - h + 5; 1419 if (j > 0) { 1420 if (j <= 10) { 1421 f -= j 1422 } else { 1423 f += this.gridWidth - j 1424 } 1425 d.css("padding-right", f) 1426 } 1427 }, 1428 appendSA: function (d) { 1429 var f = obColorer.saParent; 1430 f[0].removeAttribute("style"); 1431 f.empty().append(a(d)); 1432 obColorer.sizeGridWidth() 1433 }, 1434 appendPopup: function (h) { 1435 var f = a(h); 1436 f.addClass("tint-popup"); 1437 if (!!this.options.IFRAME) { 1438 f.addClass("tint-iframe") 1439 } 1440 f.appendTo(a("body")); 1441 f.css({top: a(window).scrollTop() + 100, zIndex: obColorer.siteSettings.bgZindex + 1}); 1442 var d = obColorer.getBG(); 1443 if (d) { 1444 d.addClass("tint-no-spinner") 1445 } 1446 }, 1447 initCarousel: function () { 1448 if (this.parent) { 1449 var d = this.parent.find(".tint-images-swipe"); 1450 if (d.find(".tint-image").length > 1) { 1451 var h = this.parent.data("tint-share"); 1452 var f = {rolledElements: 1}; 1453 if (h) { 1454 if (parseInt(h.IMAGE)) { 1455 f.initItem = parseInt(h.IMAGE) 1456 } 1457 } 1458 new RTSwiper(d.get(0), { 1459 containerModifierClass: "tint-swiper-container-", 1460 slideClass: "tint-swiper-slide", 1461 slideActiveClass: "tint-swiper-slide-active", 1462 slideDuplicateActiveClass: "tint-swiper-slide-duplicate-active", 1463 slideVisibleClass: "tint-swiper-slide-visible", 1464 slideDuplicateClass: "tint-swiper-slide-duplicate", 1465 slideNextClass: "tint-swiper-slide-next", 1466 slideDuplicateNextClass: "tint-swiper-slide-duplicate-next", 1467 slidePrevClass: "tint-swiper-slide-prev", 1468 slideDuplicatePrevClass: "tint-swiper-slide-duplicate-prev", 1469 slideBlankClass: "tint-swiper-slide-invisible-blank", 1470 wrapperClass: "tint-swiper-wrapper", 1471 loop: true, 1472 touchStartForcePreventDefault: true, 1473 touchMoveStopPropagation: true, 1474 touchReleaseOnEdges: true, 1475 navigation: { 1476 nextEl: d.find(".tint-image-arrow-right").get(0), 1477 prevEl: d.find(".tint-image-arrow-left").get(0) 1478 }, 1479 pagination: { 1480 el: d.find(".tint-images-bullets").get(0), 1481 bulletElement: "tint-div", 1482 bulletClass: "tint-images-bullet", 1483 bulletActiveClass: "tint-active", 1484 clickable: true 1485 } 1486 }) 1487 } 1488 } 1489 }, 1490 paginate: function (d) { 1491 return 1492 }, 1493 initColorswipe: function () { 1494 if (this.parent) { 1495 var f = this.parent.find("[data-tinting-parent]"); 1496 if (f.length) { 1497 var d = new RTSwiper(f.find(".tint-cp-wrapper").get(0), { 1498 containerModifierClass: "tint-swiper-container-", 1499 slideClass: "tint-col", 1500 slideActiveClass: "tint-swiper-slide-active", 1501 slideDuplicateActiveClass: "tint-swiper-slide-duplicate-active", 1502 slideVisibleClass: "tint-swiper-slide-visible", 1503 slideDuplicateClass: "tint-swiper-slide-duplicate", 1504 slideNextClass: "tint-swiper-slide-next", 1505 slideDuplicateNextClass: "tint-swiper-slide-duplicate-next", 1506 slidePrevClass: "tint-swiper-slide-prev", 1507 slideDuplicatePrevClass: "tint-swiper-slide-duplicate-prev", 1508 slideBlankClass: "tint-swiper-slide-invisible-blank", 1509 wrapperClass: "tint-cp-scrollable", 1510 slidesPerGroup: 6, 1511 slidesPerView: 13, 1512 threshold: 20, 1513 touchStartForcePreventDefault: true, 1514 touchMoveStopPropagation: true, 1515 touchReleaseOnEdges: true, 1516 navigation: { 1517 disabledClass: "tint-inactive", 1518 nextEl: f.find(".tint-cp-arrow-next").get(0), 1519 prevEl: f.find(".tint-cp-arrow-prev").get(0) 1520 }, 1521 breakpoints: { 1522 850: {slidesPerGroup: 6, slidesPerView: 13}, 1523 700: {slidesPerView: 9, slidesPerGroup: 4}, 1524 420: {slidesPerView: 10, slidesPerGroup: 5}, 1525 320: {slidesPerView: 8, slidesPerGroup: 4} 1526 } 1527 }).on("touchStart", function (h, i) { 1528 obColorer.draggingColors = true; 1529 obColorer.propagation() 1530 }).on("sliderMove", function (h, i) { 1531 obColorer.draggingColors = true; 1532 obColorer.propagation() 1533 }).on("touchEnd", function (h, i) { 1534 obColorer.draggingColors = false;
1535 obColorer.propagation() 1536 }).on("transitionEnd", function (h, i) { 1537 obColorer.snapToGrid() 1538 }) 1539 } 1540 } 1541 }, 1542 initSwitcher: function () { 1543 if (0 && this.parent) { 1544 this.parent.find(".tint-switch-item").drag(function (f, d) { 1545 var h = d.offsetY - d.originalY; 1546 if (h > 15) { 1547 h = 15 1548 } 1549 if (h < 0) { 1550 h = 0 1551 } 1552 a(this).css({top: h}) 1553 }).drag("end", function (h, d) { 1554 var i = d.offsetY - d.originalY; 1555 var f = a(this); 1556 if (i != 0 && i != 15) { 1557 i = (i < 7) ? 0 : 15; 1558 f.css({top: i}) 1559 } 1560 obColorer.selectType(i ? "avail" : "all") 1561 }) 1562 } 1563 }, 1564 setOptions: function (d) { 1565 if (!!d.tintSettings) { 1566 this.options = d.tintSettings 1567 } 1568 if (!!d.siteSettings) { 1569 a.extend(obColorer.siteSettings, d.siteSettings) 1570 } 1571 if (!!this.options.DOMAIN) { 1572 this.domain = this.options.DOMAIN 1573 } 1574 if (this.url.indexOf(this.domain) == -1) { 1575 this.url = this.domain + this.url 1576 } 1577 if (this.spinnerUrl.indexOf(this.domain) == -1) { 1578 this.spinnerUrl = this.domain + this.spinnerUrl 1579 } 1580 }, 1581 changeImg: function (d) { 1582 var h = a(d); 1583 var f = h.parent(); 1584 f.removeClass("tint-image-loading"); 1585 f.css("background-image", "url('" + h.attr("src") + "')") 1586 }, 1587 init: function () { 1588 var i = a("[data-colorate-parent]"); 1589 this.parent = false; 1590 if (i.length) { 1591 this.parent = i; 1592 this.initCarousel(); 1593 if (this.parent.find("[data-tabs]").length) { 1594 this.initSwitcher() 1595 } 1596 if (this.parent.find("[data-color-slider]").length) { 1597 this.initColorswipe(); 1598 this.checkArrows(); 1599 var h = this.parent.data("tint-share"); 1600 if (!!h.PRODUCT_DATA) { 1601 obColorer.productData = h.PRODUCT_DATA 1602 } 1603 var k = parseInt(h.COLOR_ID); 1604 if (k) { 1605 var j = this.parent.find("[data-color-slider] [data-id='" + k + "']"); 1606 if (j.length) { 1607 var d = j.parents("[data-grid]:first"); 1608 var f = d.data("index"); 1609 this.scrollToGrid(f, k) 1610 } else { 1611 this.snapToGrid() 1612 } 1613 } else { 1614 this.snapToGrid() 1615 } 1616 } 1617 this.selectedColorID = false; 1618 this.selectedColorHEX = "" 1619 } 1620 }, 1621 enableButtons: function () { 1622 /* ÐÐ ÐÐÐÐ mirkrasok (21.08.2026). Родной код ÑиÑÐ°ÐµÑ data-tint-data Ñ 1623 каждого [data-tint-button] без пÑовеÑок, и на ÑлеменÑе без Ð½ÐµÑ 1624 (кÑÑжок вÑбоÑа ÑвеÑа на плиÑке ÑоваÑа его полÑÑÐ°ÐµÑ ÑолÑко по кликÑ) 1625 иÑклÑÑение ÑонÑÐµÑ Ð²ÑÑ Ð¾ÑеÑÐµÐ´Ñ Ð³Ð¾ÑовноÑÑи докÑменÑа: в коÑзине 1626 пеÑеÑÑавали ÑабоÑаÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво и Ñдаление. ÐÑÑекаем ÑÑжие кнопки 1627 ÑÑазÑ. ÐÑÐ°Ð²ÐºÑ ÐÐÐТÐÐ ÐТЬ поÑле пеÑекаÑки s.js Ñ core.robotint.ru. */
1628 var d = a("[data-tint-button]:not([data-processed])").filter(function () { 1629 var t = a(this).data("tint-data"); 1630 return !!t && typeof t === "object"; 1631 }); 1632 var f = {action: "ping", TITLE: document.title, REFERER: window.location.href, BARCODES: []}; 1633 d.each(function () { 1634 var j = a(this); 1635 var i = j.data("tint-data"); 1636 if (i.hasOwnProperty("BARCODE")) { 1637 f.BARCODES.push(i.BARCODE) 1638 } 1639 }); 1640 a.extend(f, obColorer.options); 1641 if (d.length) { 1642 if (!obColorer.options.CLIENT_ID) { 1643 var h = {type: "warning", message: "RoboTint: ClientID is not specified"}; 1644 obColorer.processError(h); 1645 return false 1646 } 1647 a.ajax({ 1648 url: obColorer.url, data: f, type: "post", dataType: "json", success: function (k) { 1649 d.attr("data-processed", "1"); 1650 if (parseInt(k.ACTIVE)) { 1651 var j = f.BARCODES.length ? 1 : 0; 1652 var i = k.BARCODES; 1653 var l = false; 1654 d.each(function () { 1655 var p = a(this); 1656 var o = p.data("tint-data"); 1657 if (j) { 1658 if (!!o.BARCODE) { 1659 var n = o.BARCODE; 1660 if (i.indexOf(n) > -1) { 1661 p[0].removeAttribute("disabled"); 1662 l = true 1663 } else { 1664 p.attr("disabled", true) 1665 } 1666 } 1667 } else { 1668 if (!o.hasOwnProperty("BARCODE")) { 1669 p[0].removeAttribute("disabled"); 1670 l = true 1671 } 1672 } 1673 }); 1674 if (l) { 1675 var m = {TYPE: "enable_buttons", PARAMS: {COUNT: d.length}}; 1676 obColorer.pushAction(m) 1677 } 1678 } 1679 }, error: function (i) { 1680 var j = {type: "critical", message: "RoboTint: " + i.statusText + ". " + i.responseText}; 1681 obColorer.processError(j) 1682 } 1683 }) 1684 } 1685 }, 1686 load: (function () { 1687 a(function () { 1688 var k = a("script[src*='robotint']"); 1689 if (k.length) { 1690 var l = k.data("params"); 1691 if (l) { 1692 obColorer.setOptions(l) 1693 } 1694 } 1695 obColorer.checkUserCookie(); 1696 var f = a("<img/>"); 1697 f.attr({src: obColorer.spinnerUrl, alt: ""}).css({width: 0, height: 0}).appendTo(a("body")); 1698 obColorer.enableButtons(); 1699 if (obColorer.images > 0) { 1700 for (var d = 1; d <= obColorer.images; d++) { 1701 var f = a("<img/>"); 1702 f.attr("src", obColorer.domain + obColorer.thumbs + d.toString() + ".png"); 1703 f.css({width: 0, height: 0}).appendTo(a("body")) 1704 } 1705 } 1706 var j = a("#tint-standalone"); 1707 var h = obColorer.urlParam(); 1708 if (j.length) { 1709 obColorer.saParent = j; 1710 if (!!h["robotint-share"]) { 1711 obColorer.show(false, true) 1712 } else { 1713 obColorer.show(obColorer.saParent) 1714 } 1715 } else { 1716 if (!!h["robotint-share"]) { 1717 obColorer.show(false, true) 1718 } 1719 } 1720 a(document).ajaxSuccess(function () { 1721 obColorer.enableButtons() 1722 }) 1723 }) 1724 })() 1725 } 1726})(jQuery); 1727(function (c, d) { 1728 typeof exports === "object" && typeof module !== "undefined" ? module.exports = d() : typeof define === "function" && define.amd ? define(d) : (c = c || self, c.RTSwiper = d()) 1729}(this, (function () { 1730 function _defineProperties(target, props) { 1731 for (var i = 0; i < props.length; i++) { 1732 var descriptor = props[i]; 1733 descriptor.enumerable = descriptor.enumerable || false; 1734 descriptor.configurable = true; 1735 if ("value" in descriptor) { 1736 descriptor.writable = true 1737 } 1738 Object.defineProperty(target, descriptor.key, descriptor) 1739 } 1740 } 1741 1742 function _createClass(Constructor, protoProps, staticProps) { 1743 if (protoProps) { 1744 _defineProperties(Constructor.prototype, protoProps) 1745 } 1746 if (staticProps) { 1747 _defineProperties(Constructor, staticProps) 1748 } 1749 return Constructor 1750 } 1751 1752 function _extends() { 1753 _extends = Object.assign || function (target) { 1754 for (var i = 1; i < arguments.length; i++) { 1755 var source = arguments[i]; 1756 for (var key in source) { 1757 if (Object.prototype.hasOwnProperty.call(source, key)) { 1758 target[key] = source[key] 1759 } 1760 } 1761 } 1762 return target 1763 }; 1764 return _extends.apply(this, arguments) 1765 } 1766 1767 function isObject(obj) { 1768 return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object 1769 } 1770
1771 function extend(target, src) { 1772 if (target === void 0) { 1773 target = {} 1774 } 1775 if (src === void 0) { 1776 src = {} 1777 } 1778 Object.keys(src).forEach(function (key) { 1779 if (typeof target[key] === "undefined") { 1780 target[key] = src[key] 1781 } else { 1782 if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { 1783 extend(target[key], src[key]) 1784 } 1785 } 1786 }) 1787 } 1788 1789 var ssrDocument = { 1790 body: {}, addEventListener: function addEventListener() { 1791 }, removeEventListener: function removeEventListener() { 1792 }, activeElement: { 1793 blur: function blur() { 1794 }, nodeName: "" 1795 }, querySelector: function querySelector() { 1796 return null 1797 }, querySelectorAll: function querySelectorAll() { 1798 return [] 1799 }, getElementById: function getElementById() { 1800 return null 1801 }, createEvent: function createEvent() { 1802 return { 1803 initEvent: function initEvent() { 1804 } 1805 } 1806 }, createElement: function createElement() { 1807 return { 1808 children: [], childNodes: [], style: {}, setAttribute: function setAttribute() { 1809 }, getElementsByTagName: function getElementsByTagName() { 1810 return [] 1811 } 1812 } 1813 }, createElementNS: function createElementNS() { 1814 return {} 1815 }, importNode: function importNode() { 1816 return null 1817 }, location: {hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: ""} 1818 }; 1819 1820 function getDocument() { 1821 var doc = typeof document !== "undefined" ? document : {}; 1822 extend(doc, ssrDocument); 1823 return doc 1824 } 1825 1826 var ssrWindow = { 1827 document: ssrDocument, 1828 navigator: {userAgent: ""}, 1829 location: {hash: "", host: "", hostname: "", href: "", origin: "", pathname: "", protocol: "", search: ""}, 1830 history: { 1831 replaceState: function replaceState() { 1832 }, pushState: function pushState() { 1833 }, go: function go() { 1834 }, back: function back() { 1835 } 1836 }, 1837 CustomEvent: function CustomEvent() { 1838 return this 1839 }, 1840 addEventListener: function addEventListener() { 1841 }, 1842 removeEventListener: function removeEventListener() { 1843 }, 1844 getComputedStyle: function getComputedStyle() { 1845 return { 1846 getPropertyValue: function getPropertyValue() { 1847 return "" 1848 } 1849 } 1850 }, 1851 Image: function Image() { 1852 }, 1853 Date: function Date() { 1854 }, 1855 screen: {}, 1856 setTimeout: function setTimeout() { 1857 }, 1858 clearTimeout: function clearTimeout() { 1859 }, 1860 matchMedia: function matchMedia() { 1861 return {} 1862 }, 1863 requestAnimationFrame: function requestAnimationFrame(callback) { 1864 if (typeof setTimeout === "undefined") { 1865 callback(); 1866 return null 1867 } 1868 return setTimeout(callback, 0) 1869 }, 1870 cancelAnimationFrame: function cancelAnimationFrame(id) { 1871 if (typeof setTimeout === "undefined") { 1872 return 1873 } 1874 clearTimeout(id) 1875 } 1876 }; 1877 1878 function getWindow() { 1879 var win = typeof window !== "undefined" ? window : {}; 1880 extend(win, ssrWindow); 1881 return win 1882 } 1883 1884 function _inheritsLoose(subClass, superClass) { 1885 subClass.prototype = Object.create(superClass.prototype); 1886 subClass.prototype.constructor = subClass; 1887 subClass.__proto__ = superClass 1888 } 1889 1890 function _getPrototypeOf(o) { 1891 _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { 1892 return o.__proto__ || Object.getPrototypeOf(o) 1893 };
1894 return _getPrototypeOf(o) 1895 } 1896 1897 function _setPrototypeOf(o, p) { 1898 _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { 1899 o.__proto__ = p; 1900 return o 1901 }; 1902 return _setPrototypeOf(o, p) 1903 } 1904 1905 function _isNativeReflectConstruct() { 1906 if (typeof Reflect === "undefined" || !Reflect.construct) { 1907 return false 1908 } 1909 if (Reflect.construct.sham) { 1910 return false 1911 } 1912 if (typeof Proxy === "function") { 1913 return true 1914 } 1915 try { 1916 Date.prototype.toString.call(Reflect.construct(Date, [], function () { 1917 })); 1918 return true 1919 } catch (e) { 1920 return false 1921 } 1922 } 1923 1924 function _construct(Parent, args, Class) { 1925 if (_isNativeReflectConstruct()) { 1926 _construct = Reflect.construct 1927 } else { 1928 _construct = function _construct(Parent, args, Class) { 1929 var a = [null]; 1930 a.push.apply(a, args); 1931 var Constructor = Function.bind.apply(Parent, a); 1932 var instance = new Constructor(); 1933 if (Class) { 1934 _setPrototypeOf(instance, Class.prototype) 1935 } 1936 return instance 1937 } 1938 } 1939 return _construct.apply(null, arguments) 1940 } 1941 1942 function _isNativeFunction(fn) { 1943 return Function.toString.call(fn).indexOf("[native code]") !== -1 1944 } 1945 1946 function _wrapNativeSuper(Class) { 1947 var _cache = typeof Map === "function" ? new Map() : undefined; 1948 _wrapNativeSuper = function _wrapNativeSuper(Class) { 1949 if (Class === null || !_isNativeFunction(Class)) { 1950 return Class 1951 } 1952 if (typeof Class !== "function") { 1953 throw new TypeError("Super expression must either be null or a function") 1954 } 1955 if (typeof _cache !== "undefined") { 1956 if (_cache.has(Class)) { 1957 return _cache.get(Class) 1958 } 1959 _cache.set(Class, Wrapper) 1960 } 1961 1962 function Wrapper() { 1963 return _construct(Class, arguments, _getPrototypeOf(this).constructor) 1964 } 1965 1966 Wrapper.prototype = Object.create(Class.prototype, { 1967 constructor: { 1968 value: Wrapper, 1969 enumerable: false, 1970 writable: true, 1971 configurable: true 1972 } 1973 }); 1974 return _setPrototypeOf(Wrapper, Class) 1975 }; 1976 return _wrapNativeSuper(Class) 1977 } 1978 1979 function _assertThisInitialized(self) { 1980 if (self === void 0) { 1981 throw new ReferenceError("this hasn't been initialised - super() hasn't been called") 1982 } 1983 return self 1984 } 1985 1986 function makeReactive(obj) { 1987 var proto = obj.__proto__; 1988 Object.defineProperty(obj, "__proto__", { 1989 get: function get() { 1990 return proto 1991 }, set: function set(value) { 1992 proto.__proto__ = value 1993 } 1994 }) 1995 } 1996 1997 var Dom7 = function (_Array) { 1998 _inheritsLoose(Dom7, _Array); 1999 2000 function Dom7(items) { 2001 var _this; 2002 _this = _Array.call.apply(_Array, [this].concat(items)) || this; 2003 makeReactive(_assertThisInitialized(_this)); 2004 return _this 2005 } 2006 2007 return Dom7 2008 }(_wrapNativeSuper(Array)); 2009 2010 function arrayFlat(arr) { 2011 if (arr === void 0) { 2012 arr = [] 2013 } 2014 var res = []; 2015 arr.forEach(function (el) { 2016 if (Array.isArray(el)) { 2017 res.push.apply(res, arrayFlat(el)) 2018 } else { 2019 res.push(el) 2020 } 2021 }); 2022 return res 2023 } 2024 2025 function arrayFilter(arr, callback) { 2026 return Array.prototype.filter.call(arr, callback) 2027 } 2028 2029 function arrayUnique(arr) { 2030 var uniqueArray = []; 2031 for (var i = 0; i < arr.length; i += 1) {
2032 if (uniqueArray.indexOf(arr[i]) === -1) { 2033 uniqueArray.push(arr[i]) 2034 } 2035 } 2036 return uniqueArray 2037 } 2038 2039 function qsa(selector, context) { 2040 if (typeof selector !== "string") { 2041 return [selector] 2042 } 2043 var a = []; 2044 var res = context.querySelectorAll(selector); 2045 for (var i = 0; i < res.length; i += 1) { 2046 a.push(res[i]) 2047 } 2048 return a 2049 } 2050 2051 function $(selector, context) { 2052 var window = getWindow(); 2053 var document = getDocument(); 2054 var arr = []; 2055 if (!context && selector instanceof Dom7) { 2056 return selector 2057 } 2058 if (!selector) { 2059 return new Dom7(arr) 2060 } 2061 if (typeof selector === "string") { 2062 var html = selector.trim(); 2063 if (html.indexOf("<") >= 0 && html.indexOf(">") >= 0) { 2064 var toCreate = "div"; 2065 if (html.indexOf("<li") === 0) { 2066 toCreate = "ul" 2067 } 2068 if (html.indexOf("<tr") === 0) { 2069 toCreate = "tbody" 2070 } 2071 if (html.indexOf("<td") === 0 || html.indexOf("<th") === 0) { 2072 toCreate = "tr" 2073 } 2074 if (html.indexOf("<tbody") === 0) { 2075 toCreate = "table" 2076 } 2077 if (html.indexOf("<option") === 0) { 2078 toCreate = "select" 2079 } 2080 var tempParent = document.createElement(toCreate); 2081 tempParent.innerHTML = html; 2082 for (var i = 0; i < tempParent.childNodes.length; i += 1) { 2083 arr.push(tempParent.childNodes[i]) 2084 } 2085 } else { 2086 arr = qsa(selector.trim(), context || document) 2087 } 2088 } else { 2089 if (selector.nodeType || selector === window || selector === document) { 2090 arr.push(selector) 2091 } else { 2092 if (Array.isArray(selector)) { 2093 if (selector instanceof Dom7) { 2094 return selector 2095 } 2096 arr = selector 2097 } 2098 } 2099 } 2100 return new Dom7(arrayUnique(arr)) 2101 } 2102 2103 $.fn = Dom7.prototype; 2104 2105 function addClass() { 2106 for (var _len = arguments.length, classes = new Array(_len), _key = 0; _key < _len; _key++) { 2107 classes[_key] = arguments[_key] 2108 } 2109 var classNames = arrayFlat(classes.map(function (c) { 2110 return c.split(" ") 2111 })); 2112 this.forEach(function (el) { 2113 var _el$classList; 2114 (_el$classList = el.classList).add.apply(_el$classList, classNames) 2115 }); 2116 return this 2117 } 2118 2119 function removeClass() { 2120 for (var _len2 = arguments.length, classes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 2121 classes[_key2] = arguments[_key2] 2122 } 2123 var classNames = arrayFlat(classes.map(function (c) { 2124 return c.split(" ") 2125 })); 2126 this.forEach(function (el) { 2127 var _el$classList2; 2128 (_el$classList2 = el.classList).remove.apply(_el$classList2, classNames) 2129 }); 2130 return this 2131 } 2132 2133 function toggleClass() { 2134 for (var _len3 = arguments.length, classes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { 2135 classes[_key3] = arguments[_key3] 2136 } 2137 var classNames = arrayFlat(classes.map(function (c) { 2138 return c.split(" ") 2139 })); 2140 this.forEach(function (el) { 2141 classNames.forEach(function (className) { 2142 el.classList.toggle(className) 2143 }) 2144 }) 2145 } 2146 2147 function hasClass() { 2148 for (var _len4 = arguments.length, classes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { 2149 classes[_key4] = arguments[_key4] 2150 } 2151 var classNames = arrayFlat(classes.map(function (c) { 2152 return c.split(" ") 2153 })); 2154 return arrayFilter(this, function (el) { 2155 return classNames.filter(function (className) { 2156 return el.classList.contains(className) 2157 }).length > 0 2158 }).length > 0 2159 } 2160 2161 function attr(attrs, value) { 2162 if (arguments.length === 1 && typeof attrs === "string") { 2163 if (this[0]) { 2164 return this[0].getAttribute(attrs) 2165 } 2166 return undefined 2167 } 2168 for (var i = 0; i < this.length; i += 1) { 2169 if (arguments.length === 2) { 2170 this[i].setAttribute(attrs, value) 2171 } else { 2172 for (var attrName in attrs) { 2173 this[i][attrName] = attrs[attrName]; 2174 this[i].setAttribute(attrName, attrs[attrName]) 2175 } 2176 } 2177 } 2178 return this 2179 } 2180 2181 function removeAttr(attr) { 2182 for (var i = 0; i < this.length; i += 1) { 2183 this[i].removeAttribute(attr) 2184 } 2185 return this 2186 } 2187 2188 function transform(transform) { 2189 for (var i = 0; i < this.length; i += 1) { 2190 this[i].style.transform = transform 2191 } 2192 return this 2193 } 2194 2195 function transition(duration) { 2196 for (var i = 0; i < this.length; i += 1) { 2197 this[i].style.transitionDuration = typeof duration !== "string" ? duration + "ms" : duration 2198 } 2199 return this 2200 } 2201 2202 function on() { 2203 for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { 2204 args[_key5] = arguments[_key5] 2205 } 2206 var eventType = args[0], targetSelector = args[1], listener = args[2], capture = args[3]; 2207 if (typeof args[1] === "function") { 2208 eventType = args[0]; 2209 listener = args[1]; 2210 capture = args[2]; 2211 targetSelector = undefined 2212 } 2213 if (!capture) { 2214 capture = false 2215 } 2216 2217 function handleLiveEvent(e) { 2218 var target = e.target; 2219 if (!target) { 2220 return 2221 } 2222 var eventData = e.target.dom7EventData || []; 2223 if (eventData.indexOf(e) < 0) { 2224 eventData.unshift(e) 2225 } 2226 if ($(target).is(targetSelector)) { 2227 listener.apply(target, eventData) 2228 } else { 2229 var _parents = $(target).parents(); 2230 for (var k = 0; k < _parents.length; k += 1) { 2231 if ($(_parents[k]).is(targetSelector)) { 2232 listener.apply(_parents[k], eventData) 2233 } 2234 } 2235 } 2236 } 2237 2238 function handleEvent(e) { 2239 var eventData = e && e.target ? e.target.dom7EventData || [] : []; 2240 if (eventData.indexOf(e) < 0) { 2241 eventData.unshift(e) 2242 } 2243 listener.apply(this, eventData) 2244 } 2245 2246 var events = eventType.split(" "); 2247 var j; 2248 for (var i = 0; i < this.length; i += 1) { 2249 var el = this[i]; 2250 if (!targetSelector) { 2251 for (j = 0; j < events.length; j += 1) { 2252 var event = events[j]; 2253 if (!el.dom7Listeners) { 2254 el.dom7Listeners = {} 2255 } 2256 if (!el.dom7Listeners[event]) { 2257 el.dom7Listeners[event] = [] 2258 } 2259 el.dom7Listeners[event].push({listener: listener, proxyListener: handleEvent}); 2260 el.addEventListener(event, handleEvent, capture) 2261 } 2262 } else { 2263 for (j = 0; j < events.length; j += 1) { 2264 var _event = events[j]; 2265 if (!el.dom7LiveListeners) { 2266 el.dom7LiveListeners = {} 2267 } 2268 if (!el.dom7LiveListeners[_event]) { 2269 el.dom7LiveListeners[_event] = [] 2270 } 2271 el.dom7LiveListeners[_event].push({listener: listener, proxyListener: handleLiveEvent}); 2272 el.addEventListener(_event, handleLiveEvent, capture) 2273 } 2274 } 2275 } 2276 return this 2277 } 2278 2279 function off() { 2280 for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { 2281 args[_key6] = arguments[_key6] 2282 } 2283 var eventType = args[0], targetSelector = args[1], listener = args[2], capture = args[3]; 2284 if (typeof args[1] === "function") { 2285 eventType = args[0]; 2286 listener = args[1]; 2287 capture = args[2]; 2288 targetSelector = undefined 2289 } 2290 if (!capture) { 2291 capture = false 2292 } 2293 var events = eventType.split(" "); 2294 for (var i = 0; i < events.length; i += 1) { 2295 var event = events[i]; 2296 for (var j = 0; j < this.length; j += 1) { 2297 var el = this[j]; 2298 var handlers = void 0; 2299 if (!targetSelector && el.dom7Listeners) { 2300 handlers = el.dom7Listeners[event] 2301 } else {
2302 if (targetSelector && el.dom7LiveListeners) { 2303 handlers = el.dom7LiveListeners[event] 2304 } 2305 } 2306 if (handlers && handlers.length) { 2307 for (var k = handlers.length - 1; k >= 0; k -= 1) { 2308 var handler = handlers[k]; 2309 if (listener && handler.listener === listener) { 2310 el.removeEventListener(event, handler.proxyListener, capture); 2311 handlers.splice(k, 1) 2312 } else { 2313 if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) { 2314 el.removeEventListener(event, handler.proxyListener, capture); 2315 handlers.splice(k, 1) 2316 } else { 2317 if (!listener) { 2318 el.removeEventListener(event, handler.proxyListener, capture); 2319 handlers.splice(k, 1) 2320 } 2321 } 2322 } 2323 } 2324 } 2325 } 2326 } 2327 return this 2328 } 2329 2330 function trigger() { 2331 var window = getWindow(); 2332 for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) { 2333 args[_key9] = arguments[_key9] 2334 } 2335 var events = args[0].split(" "); 2336 var eventData = args[1]; 2337 for (var i = 0; i < events.length; i += 1) { 2338 var event = events[i]; 2339 for (var j = 0; j < this.length; j += 1) { 2340 var el = this[j]; 2341 if (window.CustomEvent) { 2342 var evt = new window.CustomEvent(event, {detail: eventData, bubbles: true, cancelable: true}); 2343 el.dom7EventData = args.filter(function (data, dataIndex) { 2344 return dataIndex > 0 2345 }); 2346 el.dispatchEvent(evt); 2347 el.dom7EventData = []; 2348 delete el.dom7EventData 2349 } 2350 } 2351 } 2352 return this 2353 } 2354 2355 function transitionEnd(callback) { 2356 var dom = this; 2357 2358 function fireCallBack(e) { 2359 if (e.target !== this) { 2360 return 2361 } 2362 callback.call(this, e); 2363 dom.off("transitionend", fireCallBack) 2364 } 2365 2366 if (callback) { 2367 dom.on("transitionend", fireCallBack) 2368 } 2369 return this 2370 } 2371 2372 function outerWidth(includeMargins) { 2373 if (this.length > 0) { 2374 if (includeMargins) { 2375 var _styles = this.styles(); 2376 return this[0].offsetWidth + parseFloat(_styles.getPropertyValue("margin-right")) + parseFloat(_styles.getPropertyValue("margin-left")) 2377 } 2378 return this[0].offsetWidth 2379 } 2380 return null 2381 } 2382 2383 function outerHeight(includeMargins) { 2384 if (this.length > 0) { 2385 if (includeMargins) { 2386 var _styles2 = this.styles(); 2387 return this[0].offsetHeight + parseFloat(_styles2.getPropertyValue("margin-top")) + parseFloat(_styles2.getPropertyValue("margin-bottom")) 2388 } 2389 return this[0].offsetHeight 2390 } 2391 return null 2392 } 2393 2394 function offset() { 2395 if (this.length > 0) { 2396 var window = getWindow(); 2397 var document = getDocument(); 2398 var el = this[0]; 2399 var box = el.getBoundingClientRect(); 2400 var body = document.body; 2401 var clientTop = el.clientTop || body.clientTop || 0; 2402 var clientLeft = el.clientLeft || body.clientLeft || 0; 2403 var scrollTop = el === window ? window.scrollY : el.scrollTop; 2404 var scrollLeft = el === window ? window.scrollX : el.scrollLeft; 2405 return {top: box.top + scrollTop - clientTop, left: box.left + scrollLeft - clientLeft} 2406 } 2407 return null 2408 } 2409 2410 function styles() { 2411 var window = getWindow(); 2412 if (this[0]) { 2413 return window.getComputedStyle(this[0], null) 2414 } 2415 return {} 2416 } 2417 2418 function css(props, value) { 2419 var window = getWindow(); 2420 var i; 2421 if (arguments.length === 1) { 2422 if (typeof props === "string") { 2423 if (this[0]) { 2424 return window.getComputedStyle(this[0], null).getPropertyValue(props) 2425 } 2426 } else { 2427 for (i = 0; i < this.length; i += 1) { 2428 for (var _prop in props) { 2429 this[i].style[_prop] = props[_prop] 2430 } 2431 } 2432 return this 2433 } 2434 } 2435 if (arguments.length === 2 && typeof props === "string") { 2436 for (i = 0; i < this.length; i += 1) { 2437 this[i].style[props] = value 2438 } 2439 return this 2440 } 2441 return this 2442 } 2443 2444 function each(callback) { 2445 if (!callback) { 2446 return this 2447 } 2448 this.forEach(function (el, index) { 2449 callback.apply(el, [el, index]) 2450 }); 2451 return this 2452 } 2453 2454 function filter(callback) { 2455 var result = arrayFilter(this, callback); 2456 return $(result) 2457 } 2458 2459 function html(html) { 2460 if (typeof html === "undefined") { 2461 return this[0] ? this[0].innerHTML : null 2462 } 2463 for (var i = 0; i < this.length; i += 1) { 2464 this[i].innerHTML = html 2465 } 2466 return this 2467 } 2468 2469 function text(text) { 2470 if (typeof text === "undefined") { 2471 return this[0] ? this[0].textContent.trim() : null 2472 } 2473 for (var i = 0; i < this.length; i += 1) { 2474 this[i].textContent = text 2475 } 2476 return this 2477 } 2478 2479 function is(selector) { 2480 var window = getWindow(); 2481 var document = getDocument(); 2482 var el = this[0]; 2483 var compareWith; 2484 var i; 2485 if (!el || typeof selector === "undefined") { 2486 return false 2487 } 2488 if (typeof selector === "string") { 2489 if (el.matches) { 2490 return el.matches(selector) 2491 } 2492 if (el.webkitMatchesSelector) { 2493 return el.webkitMatchesSelector(selector) 2494 }
2495 if (el.msMatchesSelector) { 2496 return el.msMatchesSelector(selector) 2497 } 2498 compareWith = $(selector); 2499 for (i = 0; i < compareWith.length; i += 1) { 2500 if (compareWith[i] === el) { 2501 return true 2502 } 2503 } 2504 return false 2505 } 2506 if (selector === document) { 2507 return el === document 2508 } 2509 if (selector === window) { 2510 return el === window 2511 } 2512 if (selector.nodeType || selector instanceof Dom7) { 2513 compareWith = selector.nodeType ? [selector] : selector; 2514 for (i = 0; i < compareWith.length; i += 1) { 2515 if (compareWith[i] === el) { 2516 return true 2517 } 2518 } 2519 return false 2520 } 2521 return false 2522 } 2523 2524 function index() { 2525 var child = this[0]; 2526 var i; 2527 if (child) { 2528 i = 0; 2529 while ((child = child.previousSibling) !== null) { 2530 if (child.nodeType === 1) { 2531 i += 1 2532 } 2533 } 2534 return i 2535 } 2536 return undefined 2537 } 2538 2539 function eq(index) { 2540 if (typeof index === "undefined") { 2541 return this 2542 } 2543 var length = this.length; 2544 if (index > length - 1) { 2545 return $([]) 2546 } 2547 if (index < 0) { 2548 var returnIndex = length + index; 2549 if (returnIndex < 0) { 2550 return $([]) 2551 } 2552 return $([this[returnIndex]]) 2553 } 2554 return $([this[index]]) 2555 } 2556 2557 function append() { 2558 var newChild; 2559 var document = getDocument(); 2560 for (var k = 0; k < arguments.length; k += 1) { 2561 newChild = k < 0 || arguments.length <= k ? undefined : arguments[k]; 2562 for (var i = 0; i < this.length; i += 1) { 2563 if (typeof newChild === "string") { 2564 var tempDiv = document.createElement("div"); 2565 tempDiv.innerHTML = newChild; 2566 while (tempDiv.firstChild) { 2567 this[i].appendChild(tempDiv.firstChild) 2568 } 2569 } else { 2570 if (newChild instanceof Dom7) { 2571 for (var j = 0; j < newChild.length; j += 1) { 2572 this[i].appendChild(newChild[j]) 2573 } 2574 } else { 2575 this[i].appendChild(newChild) 2576 } 2577 } 2578 } 2579 } 2580 return this 2581 } 2582 2583 function prepend(newChild) { 2584 var document = getDocument(); 2585 var i; 2586 var j; 2587 for (i = 0; i < this.length; i += 1) { 2588 if (typeof newChild === "string") { 2589 var tempDiv = document.createElement("div"); 2590 tempDiv.innerHTML = newChild; 2591 for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) { 2592 this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]) 2593 } 2594 } else { 2595 if (newChild instanceof Dom7) { 2596 for (j = 0; j < newChild.length; j += 1) { 2597 this[i].insertBefore(newChild[j], this[i].childNodes[0]) 2598 } 2599 } else { 2600 this[i].insertBefore(newChild, this[i].childNodes[0]) 2601 } 2602 } 2603 } 2604 return this 2605 } 2606 2607 function next(selector) { 2608 if (this.length > 0) { 2609 if (selector) { 2610 if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) { 2611 return $([this[0].nextElementSibling]) 2612 } 2613 return $([]) 2614 } 2615 if (this[0].nextElementSibling) { 2616 return $([this[0].nextElementSibling]) 2617 } 2618 return $([]) 2619 } 2620 return $([]) 2621 } 2622 2623 function nextAll(selector) { 2624 var nextEls = []; 2625 var el = this[0]; 2626 if (!el) { 2627 return $([]) 2628 } 2629 while (el.nextElementSibling) { 2630 var _next = el.nextElementSibling; 2631 if (selector) { 2632 if ($(_next).is(selector)) { 2633 nextEls.push(_next) 2634 } 2635 } else { 2636 nextEls.push(_next) 2637 } 2638 el = _next 2639 } 2640 return $(nextEls) 2641 } 2642 2643 function prev(selector) { 2644 if (this.length > 0) { 2645 var el = this[0]; 2646 if (selector) { 2647 if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) { 2648 return $([el.previousElementSibling]) 2649 } 2650 return $([]) 2651 } 2652 if (el.previousElementSibling) { 2653 return $([el.previousElementSibling]) 2654 } 2655 return $([]) 2656 } 2657 return $([]) 2658 } 2659 2660 function prevAll(selector) { 2661 var prevEls = []; 2662 var el = this[0]; 2663 if (!el) { 2664 return $([]) 2665 } 2666 while (el.previousElementSibling) { 2667 var _prev = el.previousElementSibling; 2668 if (selector) { 2669 if ($(_prev).is(selector)) { 2670 prevEls.push(_prev) 2671 } 2672 } else { 2673 prevEls.push(_prev) 2674 } 2675 el = _prev 2676 } 2677 return $(prevEls) 2678 } 2679 2680 function parent(selector) { 2681 var parents = []; 2682 for (var i = 0; i < this.length; i += 1) { 2683 if (this[i].parentNode !== null) { 2684 if (selector) { 2685 if ($(this[i].parentNode).is(selector)) { 2686 parents.push(this[i].parentNode) 2687 } 2688 } else { 2689 parents.push(this[i].parentNode) 2690 } 2691 } 2692 } 2693 return $(parents) 2694 } 2695 2696 function parents(selector) { 2697 var parents = []; 2698 for (var i = 0; i < this.length; i += 1) { 2699 var _parent = this[i].parentNode; 2700 while (_parent) { 2701 if (selector) { 2702 if ($(_parent).is(selector)) { 2703 parents.push(_parent) 2704 } 2705 } else { 2706 parents.push(_parent) 2707 } 2708 _parent = _parent.parentNode 2709 } 2710 } 2711 return $(parents) 2712 } 2713 2714 function closest(selector) { 2715 var closest = this; 2716 if (typeof selector === "undefined") { 2717 return $([]) 2718 }
2719 if (!closest.is(selector)) { 2720 closest = closest.parents(selector).eq(0) 2721 } 2722 return closest 2723 } 2724 2725 function find(selector) { 2726 var foundElements = []; 2727 for (var i = 0; i < this.length; i += 1) { 2728 var found = this[i].querySelectorAll(selector); 2729 for (var j = 0; j < found.length; j += 1) { 2730 foundElements.push(found[j]) 2731 } 2732 } 2733 return $(foundElements) 2734 } 2735 2736 function children(selector) { 2737 var children = []; 2738 for (var i = 0; i < this.length; i += 1) { 2739 var childNodes = this[i].children; 2740 for (var j = 0; j < childNodes.length; j += 1) { 2741 if (!selector || $(childNodes[j]).is(selector)) { 2742 children.push(childNodes[j]) 2743 } 2744 } 2745 } 2746 return $(children) 2747 } 2748 2749 function remove() { 2750 for (var i = 0; i < this.length; i += 1) { 2751 if (this[i].parentNode) { 2752 this[i].parentNode.removeChild(this[i]) 2753 } 2754 } 2755 return this 2756 } 2757 2758 var Methods = { 2759 addClass: addClass, 2760 removeClass: removeClass, 2761 hasClass: hasClass, 2762 toggleClass: toggleClass, 2763 attr: attr, 2764 removeAttr: removeAttr, 2765 transform: transform, 2766 transition: transition, 2767 on: on, 2768 off: off, 2769 trigger: trigger, 2770 transitionEnd: transitionEnd, 2771 outerWidth: outerWidth, 2772 outerHeight: outerHeight, 2773 styles: styles, 2774 offset: offset, 2775 css: css, 2776 each: each, 2777 html: html, 2778 text: text, 2779 is: is, 2780 index: index, 2781 eq: eq, 2782 append: append, 2783 prepend: prepend, 2784 next: next, 2785 nextAll: nextAll, 2786 prev: prev, 2787 prevAll: prevAll, 2788 parent: parent, 2789 parents: parents, 2790 closest: closest, 2791 find: find, 2792 children: children, 2793 filter: filter, 2794 remove: remove 2795 }; 2796 Object.keys(Methods).forEach(function (methodName) { 2797 $.fn[methodName] = Methods[methodName] 2798 }); 2799 2800 function deleteProps(obj) { 2801 var object = obj; 2802 Object.keys(object).forEach(function (key) { 2803 try { 2804 object[key] = null 2805 } catch (e) { 2806 } 2807 try { 2808 delete object[key] 2809 } catch (e) { 2810 } 2811 }) 2812 } 2813 2814 function nextTick(callback, delay) { 2815 if (delay === void 0) { 2816 delay = 0 2817 } 2818 return setTimeout(callback, delay) 2819 } 2820 2821 function now() { 2822 return eval("Date.now()") 2823 } 2824 2825 function getTranslate(el, axis) { 2826 if (axis === void 0) { 2827 axis = "x" 2828 } 2829 var window = getWindow(); 2830 var matrix; 2831 var curTransform; 2832 var transformMatrix; 2833 var curStyle = window.getComputedStyle(el, null); 2834 if (window.WebKitCSSMatrix) { 2835 curTransform = curStyle.transform || curStyle.webkitTransform; 2836 if (curTransform.split(",").length > 6) { 2837 curTransform = curTransform.split(", ").map(function (a) { 2838 return a.replace(",", ".") 2839 }).join(", ") 2840 } 2841 transformMatrix = new window.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform) 2842 } else { 2843 transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,"); 2844 matrix = transformMatrix.toString().split(",") 2845 } 2846 if (axis === "x") { 2847 if (window.WebKitCSSMatrix) { 2848 curTransform = transformMatrix.m41 2849 } else { 2850 if (matrix.length === 16) { 2851 curTransform = parseFloat(matrix[12]) 2852 } else { 2853 curTransform = parseFloat(matrix[4]) 2854 } 2855 } 2856 } 2857 if (axis === "y") { 2858 if (window.WebKitCSSMatrix) { 2859 curTransform = transformMatrix.m42 2860 } else { 2861 if (matrix.length === 16) { 2862 curTransform = parseFloat(matrix[13]) 2863 } else { 2864 curTransform = parseFloat(matrix[5]) 2865 } 2866 } 2867 } 2868 return curTransform || 0 2869 } 2870 2871 function isObject$1(o) { 2872 return typeof o === "object" && o !== null && o.constructor && o.constructor === Object 2873 } 2874 2875 function extend$1() { 2876 var to = Object(arguments.length <= 0 ? undefined : arguments[0]); 2877 for (var i = 1; i < arguments.length; i += 1) { 2878 var nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; 2879 if (nextSource !== undefined && nextSource !== null) { 2880 var keysArray = Object.keys(Object(nextSource)); 2881 for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { 2882 var nextKey = keysArray[nextIndex]; 2883 var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); 2884 if (desc !== undefined && desc.enumerable) { 2885 if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { 2886 extend$1(to[nextKey], nextSource[nextKey]) 2887 } else { 2888 if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { 2889 to[nextKey] = {}; 2890 extend$1(to[nextKey], nextSource[nextKey]) 2891 } else { 2892 to[nextKey] = nextSource[nextKey] 2893 } 2894 } 2895 } 2896 } 2897 } 2898 } 2899 return to 2900 } 2901 2902 function bindModuleMethods(instance, obj) {
2903 Object.keys(obj).forEach(function (key) { 2904 if (isObject$1(obj[key])) { 2905 Object.keys(obj[key]).forEach(function (subKey) { 2906 if (typeof obj[key][subKey] === "function") { 2907 obj[key][subKey] = obj[key][subKey].bind(instance) 2908 } 2909 }) 2910 } 2911 instance[key] = obj[key] 2912 }) 2913 } 2914 2915 var support; 2916 2917 function calcSupport() { 2918 var window = getWindow(); 2919 var document = getDocument(); 2920 return { 2921 touch: !!("ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch), 2922 pointerEvents: !!window.PointerEvent && "maxTouchPoints" in window.navigator && window.navigator.maxTouchPoints >= 0, 2923 observer: function checkObserver() { 2924 return "MutationObserver" in window || "WebkitMutationObserver" in window 2925 }(), 2926 passiveListener: function checkPassiveListener() { 2927 var supportsPassive = false; 2928 try { 2929 var opts = Object.defineProperty({}, "passive", { 2930 get: function get() { 2931 supportsPassive = true 2932 } 2933 }); 2934 window.addEventListener("testPassiveListener", null, opts) 2935 } catch (e) { 2936 } 2937 return supportsPassive 2938 }(), 2939 gestures: function checkGestures() { 2940 return "ongesturestart" in window 2941 }() 2942 } 2943 } 2944 2945 function getSupport() { 2946 if (!support) { 2947 support = calcSupport() 2948 } 2949 return support 2950 } 2951 2952 var device; 2953 2954 function calcDevice(_temp) { 2955 var _ref = _temp === void 0 ? {} : _temp, userAgent = _ref.userAgent;
2956 var support = getSupport(); 2957 var window = getWindow(); 2958 var platform = window.navigator.platform; 2959 var ua = userAgent || window.navigator.userAgent; 2960 var device = {ios: false, android: false}; 2961 var screenWidth = window.screen.width; 2962 var screenHeight = window.screen.height; 2963 var android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); 2964 var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); 2965 var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); 2966 var iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); 2967 var windows = platform === "Win32"; 2968 var macos = platform === "MacIntel"; 2969 var iPadScreens = ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810"]; 2970 if (!ipad && macos && support.touch && iPadScreens.indexOf(screenWidth + "x" + screenHeight) >= 0) { 2971 ipad = ua.match(/(Version)\/([\d.]+)/); 2972 if (!ipad) { 2973 ipad = [0, 1, "13_0_0"] 2974 } 2975 macos = false 2976 } 2977 if (android && !windows) { 2978 device.os = "android"; 2979 device.android = true 2980 } 2981 if (ipad || iphone || ipod) { 2982 device.os = "ios"; 2983 device.ios = true 2984 } 2985 return device 2986 } 2987 2988 function getDevice(overrides) { 2989 if (overrides === void 0) { 2990 overrides = {} 2991 } 2992 if (!device) { 2993 device = calcDevice(overrides) 2994 } 2995 return device 2996 } 2997 2998 var browser; 2999 3000 function calcBrowser() { 3001 var window = getWindow(); 3002 3003 function isSafari() { 3004 var ua = window.navigator.userAgent.toLowerCase(); 3005 return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0 3006 } 3007 3008 return { 3009 isEdge: !!window.navigator.userAgent.match(/Edge/g), 3010 isSafari: isSafari(), 3011 isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent) 3012 } 3013 } 3014 3015 function getBrowser() { 3016 if (!browser) { 3017 browser = calcBrowser() 3018 } 3019 return browser 3020 } 3021 3022 var Resize = { 3023 name: "resize", create: function create() { 3024 var swiper = this; 3025 extend$1(swiper, { 3026 resize: { 3027 resizeHandler: function resizeHandler() { 3028 if (!swiper || swiper.destroyed || !swiper.initialized) { 3029 return 3030 } 3031 swiper.emit("beforeResize"); 3032 swiper.emit("resize") 3033 }, orientationChangeHandler: function orientationChangeHandler() { 3034 if (!swiper || swiper.destroyed || !swiper.initialized) { 3035 return 3036 } 3037 swiper.emit("orientationchange") 3038 } 3039 } 3040 }) 3041 }, on: { 3042 init: function init(swiper) { 3043 var window = getWindow(); 3044 window.addEventListener("resize", swiper.resize.resizeHandler); 3045 window.addEventListener("orientationchange", swiper.resize.orientationChangeHandler) 3046 }, destroy: function destroy(swiper) { 3047 var window = getWindow(); 3048 window.removeEventListener("resize", swiper.resize.resizeHandler); 3049 window.removeEventListener("orientationchange", swiper.resize.orientationChangeHandler) 3050 } 3051 } 3052 }; 3053 var Observer = { 3054 attach: function attach(target, options) { 3055 if (options === void 0) { 3056 options = {} 3057 } 3058 var window = getWindow(); 3059 var swiper = this; 3060 var ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; 3061 var observer = new ObserverFunc(function (mutations) { 3062 if (mutations.length === 1) { 3063 swiper.emit("observerUpdate", mutations[0]); 3064 return 3065 } 3066 var observerUpdate = function observerUpdate() { 3067 swiper.emit("observerUpdate", mutations[0]) 3068 }; 3069 if (window.requestAnimationFrame) { 3070 window.requestAnimationFrame(observerUpdate) 3071 } else { 3072 window.setTimeout(observerUpdate, 0) 3073 } 3074 }); 3075 observer.observe(target, { 3076 attributes: typeof options.attributes === "undefined" ? true : options.attributes, 3077 childList: typeof options.childList === "undefined" ? true : options.childList, 3078 characterData: typeof options.characterData === "undefined" ? true : options.characterData 3079 }); 3080 swiper.observer.observers.push(observer) 3081 }
3081, init: function init() { 3082 var swiper = this; 3083 if (!swiper.support.observer || !swiper.params.observer) { 3084 return 3085 } 3086 if (swiper.params.observeParents) { 3087 var containerParents = swiper.$el.parents(); 3088 for (var i = 0; i < containerParents.length; i += 1) { 3089 swiper.observer.attach(containerParents[i]) 3090 } 3091 } 3092 swiper.observer.attach(swiper.$el[0], {childList: swiper.params.observeSlideChildren}); 3093 swiper.observer.attach(swiper.$wrapperEl[0], {attributes: false}) 3094 }, destroy: function destroy() { 3095 var swiper = this; 3096 swiper.observer.observers.forEach(function (observer) { 3097 observer.disconnect() 3098 }); 3099 swiper.observer.observers = [] 3100 } 3101 }; 3102 var Observer$1 = { 3103 name: "observer", 3104 params: {observer: false, observeParents: false, observeSlideChildren: false}, 3105 create: function create() { 3106 var swiper = this; 3107 bindModuleMethods(swiper, {observer: _extends(_extends({}, Observer), {}, {observers: []})}) 3108 }, 3109 on: { 3110 init: function init(swiper) { 3111 swiper.observer.init() 3112 }, destroy: function destroy(swiper) { 3113 swiper.observer.destroy() 3114 } 3115 } 3116 }; 3117 var modular = { 3118 useParams: function useParams(instanceParams) { 3119 var instance = this; 3120 if (!instance.modules) { 3121 return 3122 } 3123 Object.keys(instance.modules).forEach(function (moduleName) { 3124 var module = instance.modules[moduleName]; 3125 if (module.params) { 3126 extend$1(instanceParams, module.params) 3127 } 3128 }) 3129 }, useModules: function useModules(modulesParams) { 3130 if (modulesParams === void 0) { 3131 modulesParams = {} 3132 } 3133 var instance = this; 3134 if (!instance.modules) { 3135 return 3136 } 3137 Object.keys(instance.modules).forEach(function (moduleName) { 3138 var module = instance.modules[moduleName]; 3139 var moduleParams = modulesParams[moduleName] || {}; 3140 if (module.on && instance.on) { 3141 Object.keys(module.on).forEach(function (moduleEventName) { 3142 instance.on(moduleEventName, module.on[moduleEventName]) 3143 }) 3144 } 3145 if (module.create) { 3146 module.create.bind(instance)(moduleParams) 3147 } 3148 }) 3149 } 3150 }; 3151 var eventsEmitter = { 3152 on: function on(events, handler, priority) { 3153 var self = this; 3154 if (typeof handler !== "function") { 3155 return self 3156 } 3157 var method = priority ? "unshift" : "push"; 3158 events.split(" ").forEach(function (event) { 3159 if (!self.eventsListeners[event]) { 3160 self.eventsListeners[event] = [] 3161 } 3162 self.eventsListeners[event][method](handler) 3163 }); 3164 return self 3165 }, once: function once(events, handler, priority) { 3166 var self = this; 3167 if (typeof handler !== "function") { 3168 return self 3169 } 3170 3171 function onceHandler() { 3172 self.off(events, onceHandler); 3173 if (onceHandler.__emitterProxy) { 3174 delete onceHandler.__emitterProxy 3175 } 3176 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 3177 args[_key] = arguments[_key] 3178 } 3179 handler.apply(self, args) 3180 } 3181 3182 onceHandler.__emitterProxy = handler; 3183 return self.on(events, onceHandler, priority) 3184 }, onAny: function onAny(handler, priority) { 3185 var self = this; 3186 if (typeof handler !== "function") { 3187 return self 3188 } 3189 var method = priority ? "unshift" : "push"; 3190 if (self.eventsAnyListeners.indexOf(handler) < 0) { 3191 self.eventsAnyListeners[method](handler) 3192 } 3193 return self 3194 }, offAny: function offAny(handler) { 3195 var self = this; 3196 if (!self.eventsAnyListeners) { 3197 return self 3198 } 3199 var index = self.eventsAnyListeners.indexOf(handler); 3200 if (index >= 0) { 3201 self.eventsAnyListeners.splice(index, 1) 3202 } 3203 return self 3204 }, off: function off(events, handler) { 3205 var self = this; 3206 if (!self.eventsListeners) { 3207 return self 3208 } 3209 events.split(" ").forEach(function (event) { 3210 if (typeof handler === "undefined") { 3211 self.eventsListeners[event] = [] 3212 } else { 3213 if (self.eventsListeners[event]) { 3214 self.eventsListeners[event].forEach(function (eventHandler, index) { 3215 if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { 3216 self.eventsListeners[event].splice(index, 1) 3217 } 3218 }) 3219 } 3220 } 3221 }); 3222 return self 3223 }, emit: function emit() { 3224 var self = this; 3225 if (!self.eventsListeners) { 3226 return self 3227 } 3228 var events; 3229 var data; 3230 var context; 3231 for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { 3232 args[_key2] = arguments[_key2] 3233 } 3234 if (typeof args[0] === "string" || Array.isArray(args[0])) { 3235 events = args[0]; 3236 data = args.slice(1, args.length); 3237 context = self 3238 } else { 3239 events = args[0].events; 3240 data = args[0].data;
3241 context = args[0].context || self 3242 } 3243 data.unshift(context); 3244 var eventsArray = Array.isArray(events) ? events : events.split(" "); 3245 eventsArray.forEach(function (event) { 3246 if (self.eventsAnyListeners && self.eventsAnyListeners.length) { 3247 self.eventsAnyListeners.forEach(function (eventHandler) { 3248 eventHandler.apply(context, [event].concat(data)) 3249 }) 3250 } 3251 if (self.eventsListeners && self.eventsListeners[event]) { 3252 var handlers = []; 3253 self.eventsListeners[event].forEach(function (eventHandler) { 3254 handlers.push(eventHandler) 3255 }); 3256 handlers.forEach(function (eventHandler) { 3257 eventHandler.apply(context, data) 3258 }) 3259 } 3260 }); 3261 return self 3262 } 3263 }; 3264 3265 function updateSize() { 3266 var swiper = this; 3267 var width; 3268 var height; 3269 var $el = swiper.$el; 3270 if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) { 3271 width = swiper.params.width 3272 } else { 3273 width = $el[0].clientWidth 3274 } 3275 if (typeof swiper.params.height !== "undefined" && swiper.params.height !== null) { 3276 height = swiper.params.height 3277 } else { 3278 height = $el[0].clientHeight 3279 } 3280 if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { 3281 return 3282 } 3283 width = width - parseInt($el.css("padding-left") || 0, 10) - parseInt($el.css("padding-right") || 0, 10); 3284 height = height - parseInt($el.css("padding-top") || 0, 10) - parseInt($el.css("padding-bottom") || 0, 10); 3285 if (Number.isNaN(width)) { 3286 width = 0 3287 } 3288 if (Number.isNaN(height)) { 3289 height = 0 3290 } 3291 extend$1(swiper, {width: width, height: height, size: swiper.isHorizontal() ? width : height}) 3292 } 3293 3294 function updateSlides() { 3295 var swiper = this; 3296 var window = getWindow(); 3297 var params = swiper.params; 3298 var $wrapperEl = swiper.$wrapperEl, swiperSize = swiper.size, rtl = swiper.rtlTranslate, 3299 wrongRTL = swiper.wrongRTL; 3300 var isVirtual = swiper.virtual && params.virtual.enabled; 3301 var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; 3302 var slides = $wrapperEl.children("." + swiper.params.slideClass); 3303 var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; 3304 var snapGrid = []; 3305 var slidesGrid = []; 3306 var slidesSizesGrid = []; 3307 3308 function slidesForMargin(slideEl, slideIndex) { 3309 if (!params.cssMode) { 3310 return true 3311 } 3312 if (slideIndex === slides.length - 1) { 3313 return false 3314 } 3315 return true 3316 } 3317 3318 var offsetBefore = params.slidesOffsetBefore; 3319 if (typeof offsetBefore === "function") { 3320 offsetBefore = params.slidesOffsetBefore.call(swiper) 3321 } 3322 var offsetAfter = params.slidesOffsetAfter; 3323 if (typeof offsetAfter === "function") { 3324 offsetAfter = params.slidesOffsetAfter.call(swiper) 3325 } 3326 var previousSnapGridLength = swiper.snapGrid.length; 3327 var previousSlidesGridLength = swiper.snapGrid.length; 3328 var spaceBetween = params.spaceBetween; 3329 var slidePosition = -offsetBefore; 3330 var prevSlideSize = 0; 3331 var index = 0; 3332 if (typeof swiperSize === "undefined") { 3333 return 3334 } 3335 if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) { 3336 spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize 3337 } 3338 swiper.virtualSize = -spaceBetween; 3339 if (rtl) { 3340 slides.css({marginLeft: "", marginTop: ""}) 3341 } else { 3342 slides.css({marginRight: "", marginBottom: ""}) 3343 }
3344 var slidesNumberEvenToRows; 3345 if (params.slidesPerColumn > 1) { 3346 if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) { 3347 slidesNumberEvenToRows = slidesLength 3348 } else { 3349 slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn 3350 } 3351 if (params.slidesPerView !== "auto" && params.slidesPerColumnFill === "row") { 3352 slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn) 3353 } 3354 } 3355 var slideSize; 3356 var slidesPerColumn = params.slidesPerColumn; 3357 var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn; 3358 var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn); 3359 for (var i = 0; i < slidesLength; i += 1) { 3360 slideSize = 0; 3361 var slide = slides.eq(i); 3362 if (params.slidesPerColumn > 1) { 3363 var newSlideOrderIndex = void 0; 3364 var column = void 0; 3365 var row = void 0; 3366 if (params.slidesPerColumnFill === "row" && params.slidesPerGroup > 1) { 3367 var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn)); 3368 var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex; 3369 var columnsInGroup = groupIndex === 0 ? params.slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup); 3370 row = Math.floor(slideIndexInGroup / columnsInGroup); 3371 column = slideIndexInGroup - row * columnsInGroup + groupIndex * params.slidesPerGroup; 3372 newSlideOrderIndex = column + row * slidesNumberEvenToRows / slidesPerColumn; 3373 slide.css({ 3374 "-webkit-box-ordinal-group": newSlideOrderIndex, 3375 "-moz-box-ordinal-group": newSlideOrderIndex, 3376 "-ms-flex-order": newSlideOrderIndex, 3377 "-webkit-order": newSlideOrderIndex, 3378 order: newSlideOrderIndex 3379 }) 3380 } else { 3381 if (params.slidesPerColumnFill === "column") { 3382 column = Math.floor(i / slidesPerColumn); 3383 row = i - column * slidesPerColumn; 3384 if (column > numFullColumns || column === numFullColumns && row === slidesPerColumn - 1) { 3385 row += 1; 3386 if (row >= slidesPerColumn) { 3387 row = 0; 3388 column += 1 3389 } 3390 } 3391 } else { 3392 row = Math.floor(i / slidesPerRow); 3393 column = i - row * slidesPerRow 3394 } 3395 } 3396 slide.css("margin-" + (swiper.isHorizontal() ? "top" : "left"), row !== 0 && params.spaceBetween && params.spaceBetween + "px") 3397 } 3398 if (slide.css("display") === "none") { 3399 continue 3400 } 3401 if (params.slidesPerView === "auto") { 3402 var slideStyles = window.getComputedStyle(slide[0], null); 3403 var currentTransform = slide[0].style.transform; 3404 var currentWebKitTransform = slide[0].style.webkitTransform; 3405 if (currentTransform) { 3406 slide[0].style.transform = "none" 3407 } 3408 if (currentWebKitTransform) { 3409 slide[0].style.webkitTransform = "none" 3410 } 3411 if (params.roundLengths) { 3412 slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true) 3413 } else { 3414 if (swiper.isHorizontal()) { 3415 var width = parseFloat(slideStyles.getPropertyValue("width") || 0); 3416 var paddingLeft = parseFloat(slideStyles.getPropertyValue("padding-left") || 0); 3417 var paddingRight = parseFloat(slideStyles.getPropertyValue("padding-right") || 0); 3418 var marginLeft = parseFloat(slideStyles.getPropertyValue("margin-left") || 0); 3419 var marginRight = parseFloat(slideStyles.getPropertyValue("margin-right") || 0); 3420 var boxSizing = slideStyles.getPropertyValue("box-sizing"); 3421 if (boxSizing && boxSizing === "border-box") { 3422 slideSize = width + marginLeft + marginRight 3423 } else { 3424 var _slide$ = slide[0], clientWidth = _slide$.clientWidth, 3425 offsetWidth = _slide$.offsetWidth; 3426 slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth) 3427 } 3428 } else { 3429 var height = parseFloat(slideStyles.getPropertyValue("height") || 0); 3430 var paddingTop = parseFloat(slideStyles.getPropertyValue("padding-top") || 0); 3431 var paddingBottom = parseFloat(slideStyles.getPropertyValue("padding-bottom") || 0); 3432 var marginTop = parseFloat(slideStyles.getPropertyValue("margin-top") || 0); 3433 var marginBottom = parseFloat(slideStyles.getPropertyValue("margin-bottom") || 0); 3434 var _boxSizing = slideStyles.getPropertyValue("box-sizing"); 3435 if (_boxSizing && _boxSizing === "border-box") { 3436 slideSize = height + marginTop + marginBottom 3437 } else { 3438 var _slide$2 = slide[0], clientHeight = _slide$2.clientHeight, 3439 offsetHeight = _slide$2.offsetHeight; 3440 slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom + (offsetHeight - clientHeight) 3441 } 3442 } 3443 } 3444 if (currentTransform) { 3445 slide[0].style.transform = currentTransform 3446 } 3447 if (currentWebKitTransform) { 3448 slide[0].style.webkitTransform = currentWebKitTransform 3449 } 3450 if (params.roundLengths) { 3451 slideSize = Math.floor(slideSize) 3452 } 3453 } else { 3454 slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; 3455 if (params.roundLengths) { 3456 slideSize = Math.floor(slideSize) 3457 } 3458 if (slides[i]) { 3459 if (swiper.isHorizontal()) { 3460 slides[i].style.width = slideSize + "px" 3461 } else { 3462 slides[i].style.height = slideSize + "px" 3463 } 3464 } 3465 } 3466 if (slides[i]) { 3467 slides[i].swiperSlideSize = slideSize 3468 } 3469 slidesSizesGrid.push(slideSize); 3470 if (params.centeredSlides) { 3471 slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; 3472 if (prevSlideSize === 0 && i !== 0) { 3473 slidePosition = slidePosition - swiperSize / 2 - spaceBetween 3474 } 3475 if (i === 0) { 3476 slidePosition = slidePosition - swiperSize / 2 - spaceBetween 3477 } 3478 if (Math.abs(slidePosition) < 1 / 1000) { 3479 slidePosition = 0 3480 } 3481 if (params.roundLengths) { 3482 slidePosition = Math.floor(slidePosition) 3483 } 3484 if (index % params.slidesPerGroup === 0) { 3485 snapGrid.push(slidePosition) 3486 } 3487 slidesGrid.push(slidePosition) 3488 } else { 3489 if (params.roundLengths) { 3490 slidePosition = Math.floor(slidePosition) 3491 } 3492 if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) { 3493 snapGrid.push(slidePosition) 3494 } 3495 slidesGrid.push(slidePosition); 3496 slidePosition = slidePosition + slideSize + spaceBetween 3497 } 3498 swiper.virtualSize += slideSize + spaceBetween; 3499 prevSlideSize = slideSize; 3500 index += 1 3501 } 3502 swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; 3503 var newSlidesGrid; 3504 if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) { 3505 $wrapperEl.css({width: swiper.virtualSize + params.spaceBetween + "px"}) 3506 } 3507 if (params.setWrapperSize) { 3508 if (swiper.isHorizontal()) { 3509 $wrapperEl.css({width: swiper.virtualSize + params.spaceBetween + "px"}) 3510 } else { 3511 $wrapperEl.css({height: swiper.virtualSize + params.spaceBetween + "px"}) 3512 } 3513 } 3514 if (params.slidesPerColumn > 1) { 3515 swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumber
3515EvenToRows; 3516 swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween; 3517 if (swiper.isHorizontal()) { 3518 $wrapperEl.css({width: swiper.virtualSize + params.spaceBetween + "px"}) 3519 } else { 3520 $wrapperEl.css({height: swiper.virtualSize + params.spaceBetween + "px"}) 3521 } 3522 if (params.centeredSlides) { 3523 newSlidesGrid = []; 3524 for (var _i = 0; _i < snapGrid.length; _i += 1) { 3525 var slidesGridItem = snapGrid[_i]; 3526 if (params.roundLengths) { 3527 slidesGridItem = Math.floor(slidesGridItem) 3528 } 3529 if (snapGrid[_i] < swiper.virtualSize + snapGrid[0]) { 3530 newSlidesGrid.push(slidesGridItem) 3531 } 3532 } 3533 snapGrid = newSlidesGrid 3534 } 3535 } 3536 if (!params.centeredSlides) { 3537 newSlidesGrid = []; 3538 for (var _i2 = 0; _i2 < snapGrid.length; _i2 += 1) { 3539 var _slidesGridItem = snapGrid[_i2]; 3540 if (params.roundLengths) { 3541 _slidesGridItem = Math.floor(_slidesGridItem) 3542 } 3543 if (snapGrid[_i2] <= swiper.virtualSize - swiperSize) { 3544 newSlidesGrid.push(_slidesGridItem) 3545 } 3546 } 3547 snapGrid = newSlidesGrid; 3548 if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { 3549 snapGrid.push(swiper.virtualSize - swiperSize) 3550 } 3551 } 3552 if (snapGrid.length === 0) { 3553 snapGrid = [0] 3554 } 3555 if (params.spaceBetween !== 0) { 3556 if (swiper.isHorizontal()) { 3557 if (rtl) { 3558 slides.filter(slidesForMargin).css({marginLeft: spaceBetween + "px"}) 3559 } else { 3560 slides.filter(slidesForMargin).css({marginRight: spaceBetween + "px"}) 3561 } 3562 } else { 3563 slides.filter(slidesForMargin).css({marginBottom: spaceBetween + "px"}) 3564 } 3565 } 3566 if (params.centeredSlides && params.centeredSlidesBounds) { 3567 var allSlidesSize = 0; 3568 slidesSizesGrid.forEach(function (slideSizeValue) { 3569 allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0) 3570 }); 3571 allSlidesSize -= params.spaceBetween; 3572 var maxSnap = allSlidesSize - swiperSize; 3573 snapGrid = snapGrid.map(function (snap) { 3574 if (snap < 0) { 3575 return -offsetBefore 3576 } 3577 if (snap > maxSnap) { 3578 return maxSnap + offsetAfter 3579 } 3580 return snap 3581 }) 3582 } 3583 if (params.centerInsufficientSlides) { 3584 var _allSlidesSize = 0; 3585 slidesSizesGrid.forEach(function (slideSizeValue) { 3586 _allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0) 3587 }); 3588 _allSlidesSize -= params.spaceBetween; 3589 if (_allSlidesSize < swiperSize) { 3590 var allSlidesOffset = (swiperSize - _allSlidesSize) / 2; 3591 snapGrid.forEach(function (snap, snapIndex) { 3592 snapGrid[snapIndex] = snap - allSlidesOffset 3593 }); 3594 slidesGrid.forEach(function (snap, snapIndex) { 3595 slidesGrid[snapIndex] = snap + allSlidesOffset 3596 }) 3597 } 3598 } 3599 extend$1(swiper, { 3600 slides: slides, 3601 snapGrid: snapGrid, 3602 slidesGrid: slidesGrid, 3603 slidesSizesGrid: slidesSizesGrid 3604 }); 3605 if (slidesLength !== previousSlidesLength) { 3606 swiper.emit("slidesLengthChange") 3607 } 3608 if (snapGrid.length !== previousSnapGridLength) { 3609 if (swiper.params.watchOverflow) { 3610 swiper.checkOverflow() 3611 } 3612 swiper.emit("snapGridLengthChange") 3613 } 3614 if (slidesGrid.length !== previousSlidesGridLength) { 3615 swiper.emit("slidesGridLengthChange") 3616 } 3617 if (params.watchSlidesProgress || params.watchSlidesVisibility) { 3618 swiper.updateSlidesOffset() 3619 } 3620 } 3621 3622 function updateAutoHeight(speed) { 3623 var swiper = this; 3624 var activeSlides = []; 3625 var newHeight = 0; 3626 var i; 3627 if (typeof speed === "number") { 3628 swiper.setTransition(speed) 3629 } else { 3630 if (speed === true) { 3631 swiper.setTransition(swiper.params.speed) 3632 } 3633 } 3634 if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) { 3635 if (swiper.params.centeredSlides) { 3636 swiper.visibleSlides.each(function (slide) { 3637 activeSlides.push(slide) 3638 }) 3639 } else { 3640 for (i = 0;
3640 i < Math.ceil(swiper.params.slidesPerView); i += 1) { 3641 var index = swiper.activeIndex + i; 3642 if (index > swiper.slides.length) { 3643 break 3644 } 3645 activeSlides.push(swiper.slides.eq(index)[0]) 3646 } 3647 } 3648 } else { 3649 activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]) 3650 } 3651 for (i = 0; i < activeSlides.length; i += 1) { 3652 if (typeof activeSlides[i] !== "undefined") { 3653 var height = activeSlides[i].offsetHeight; 3654 newHeight = height > newHeight ? height : newHeight 3655 } 3656 } 3657 if (newHeight) { 3658 swiper.$wrapperEl.css("height", newHeight + "px") 3659 } 3660 } 3661 3662 function updateSlidesOffset() { 3663 var swiper = this; 3664 var slides = swiper.slides; 3665 for (var i = 0; i < slides.length; i += 1) { 3666 slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop 3667 } 3668 } 3669 3670 function updateSlidesProgress(translate) { 3671 if (translate === void 0) { 3672 translate = this && this.translate || 0 3673 } 3674 var swiper = this; 3675 var params = swiper.params; 3676 var slides = swiper.slides, rtl = swiper.rtlTranslate; 3677 if (slides.length === 0) { 3678 return 3679 } 3680 if (typeof slides[0].swiperSlideOffset === "undefined") { 3681 swiper.updateSlidesOffset() 3682 } 3683 var offsetCenter = -translate; 3684 if (rtl) { 3685 offsetCenter = translate 3686 } 3687 slides.removeClass(params.slideVisibleClass); 3688 swiper.visibleSlidesIndexes = []; 3689 swiper.visibleSlides = []; 3690 for (var i = 0; i < slides.length; i += 1) { 3691 var slide = slides[i]; 3692 var slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slide.swiperSlideOffset) / (slide.swiperSlideSize + params.spaceBetween); 3693 if (params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) { 3694 var slideBefore = -(offsetCenter - slide.swiperSlideOffset); 3695 var slideAfter = slideBefore + swiper.slidesSizesGrid[i]; 3696 var isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; 3697 if (isVisible) { 3698 swiper.visibleSlides.push(slide); 3699 swiper.visibleSlidesIndexes.push(i); 3700 slides.eq(i).addClass(params.slideVisibleClass) 3701 } 3702 } 3703 slide.progress = rtl ? -slideProgress : slideProgress 3704 } 3705 swiper.visibleSlides = $(swiper.visibleSlides) 3706 } 3707 3708 function updateProgress(translate) { 3709 var swiper = this; 3710 if (typeof translate === "undefined") { 3711 var multiplier = swiper.rtlTranslate ? -1 : 1; 3712 translate = swiper && swiper.translate && swiper.translate * multiplier || 0 3713 } 3714 var params = swiper.params; 3715 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 3716 var progress = swiper.progress, isBeginning = swiper.isBeginning, isEnd = swiper.isEnd; 3717 var wasBeginning = isBeginning; 3718 var wasEnd = isEnd; 3719 if (translatesDiff === 0) { 3720 progress = 0; 3721 isBeginning = true; 3722 isEnd = true 3723 } else { 3724 progress = (translate - swiper.minTranslate()) / translatesDiff; 3725 isBeginning = progress <= 0; 3726 isEnd = progress >= 1 3727 } 3728 extend$1(swiper, {progress: progress, isBeginning: isBeginning, isEnd: isEnd}); 3729 if (params.watchSlidesProgress || params.watchSlidesVisibility || params.centeredSlides && params.autoHeight) { 3730 swiper.updateSlidesProgress(translate) 3731 } 3732 if (isBeginning && !wasBeginning) { 3733 swiper.emit("reachBeginning toEdge") 3734 } 3735 if (isEnd && !wasEnd) { 3736 swiper.emit("reachEnd toEdge") 3737 } 3738 if (wasBeginning && !isBeginning || wasEnd && !isEnd) { 3739 swiper.emit("fromEdge") 3740 } 3741 swiper.emit("progress", progress) 3742 } 3743 3744 function updateSlidesClasses() { 3745 var swiper = this; 3746 var slides = swiper.slides, params = swiper.params, $wrapperEl = swiper.$wrapperEl, 3747 activeIndex = swiper.activeIndex, realIndex = swiper.realIndex; 3748 var isVirtual = swiper.virtual && params.virtual.enabled; 3749 slides.removeClass(params.slideActiveClass + " " + params.slideNextClass + " " + params.slidePrevClass + " " + params.slideDuplicateActiveClass + " " + params.slideDuplicateNextClass + " " + params.slideDuplicatePrevClass); 3750 var activeSlide; 3751 if (isVirtual) { 3752 activeSlide = swiper.$wrapperEl.find("." + params.slideClass + '[data-swiper-slide-index="' + activeIndex + '"]') 3753 } else { 3754 activeSlide = slides.eq(activeIndex) 3755 } 3756 activeSlide.addClass(params.slideActiveClass); 3757 if (params.loop) { 3758 if (activeSlide.hasClass(params.slideDuplicateClass)) { 3759 $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass) 3760 } else { 3761 $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + realIndex + '"]').addClass(params.slideDuplicateActiveClass) 3762 } 3763 } 3764 var nextSlide = activeSlide.nextAll("." + params.slideClass).eq(0).addClass(params.slideNextClass); 3765 if (params.loop && nextSlide.length === 0) { 3766 nextSlide = slides.eq(0); 3767 nextSlide.addClass(params.slideNextClass) 3768 } 3769 var prevSlide = activeSlide.prevAll("." + params.slideClass).eq(0).addClass(params.slidePrevClass); 3770 if (params.loop && prevSlide.length === 0) { 3771 prevSlide = slides.eq(-1); 3772 prevSlide.addClass(params.slidePrevClass) 3773 } 3774 if (params.loop) { 3775 if (nextSlide.hasClass(params.slideDuplicateClass)) { 3776 $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + nextSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicateNextClass) 3777 } else { 3778 $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + nextSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicateNextClass) 3779 } 3780 if (prevSlide.hasClass(params.slideDuplicateClass)) { 3781 $wrapperEl.children("." + params.slideClass + ":not(." + params.slideDuplicateClass + ')[data-swiper-slide-index="' + prevSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicatePrevClass) 3782 } else { 3783 $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + '[data-swiper-slide-index="' + prevSlide.attr("data-swiper-slide-index") + '"]').addClass(params.slideDuplicatePrevClass) 3784 } 3785 } 3786 swiper.emitSlidesClasses() 3787 } 3788 3789 function updateActiveIndex(newActiveIndex) { 3790 var swiper = this; 3791 var translate = swiper.rtlTranslate ? swiper.translate : -swi
3791per.translate; 3792 var slidesGrid = swiper.slidesGrid, snapGrid = swiper.snapGrid, params = swiper.params, 3793 previousIndex = swiper.activeIndex, previousRealIndex = swiper.realIndex, 3794 previousSnapIndex = swiper.snapIndex; 3795 var activeIndex = newActiveIndex; 3796 var snapIndex; 3797 if (typeof activeIndex === "undefined") { 3798 for (var i = 0; i < slidesGrid.length; i += 1) { 3799 if (typeof slidesGrid[i + 1] !== "undefined") { 3800 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { 3801 activeIndex = i 3802 } else { 3803 if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { 3804 activeIndex = i + 1 3805 } 3806 } 3807 } else { 3808 if (translate >= slidesGrid[i]) { 3809 activeIndex = i 3810 } 3811 } 3812 } 3813 if (params.normalizeSlideIndex) { 3814 if (activeIndex < 0 || typeof activeIndex === "undefined") { 3815 activeIndex = 0 3816 } 3817 } 3818 } 3819 if (snapGrid.indexOf(translate) >= 0) { 3820 snapIndex = snapGrid.indexOf(translate) 3821 } else { 3822 var skip = Math.min(params.slidesPerGroupSkip, activeIndex); 3823 snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup) 3824 } 3825 if (snapIndex >= snapGrid.length) { 3826 snapIndex = snapGrid.length - 1 3827 } 3828 if (activeIndex === previousIndex) { 3829 if (snapIndex !== previousSnapIndex) { 3830 swiper.snapIndex = snapIndex; 3831 swiper.emit("snapIndexChange") 3832 } 3833 return 3834 } 3835 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr("data-swiper-slide-index") || activeIndex, 10); 3836 extend$1(swiper, { 3837 snapIndex: snapIndex, 3838 realIndex: realIndex, 3839 previousIndex: previousIndex, 3840 activeIndex: activeIndex 3841 }); 3842 swiper.emit("activeIndexChange"); 3843 swiper.emit("snapIndexChange"); 3844 if (previousRealIndex !== realIndex) { 3845 swiper.emit("realIndexChange") 3846 } 3847 if (swiper.initialized || swiper.params.runCallbacksOnInit) { 3848 swiper.emit("slideChange") 3849 } 3850 } 3851 3852 function updateClickedSlide(e) { 3853 var swiper = this; 3854 var params = swiper.params; 3855 var slide = $(e.target).closest("." + params.slideClass)[0]; 3856 var slideFound = false; 3857 if (slide) { 3858 for (var i = 0; i < swiper.slides.length; i += 1) { 3859 if (swiper.slides[i] === slide) { 3860 slideFound = true 3861 } 3862 } 3863 } 3864 if (slide && slideFound) { 3865 swiper.clickedSlide = slide; 3866 if (swiper.virtual && swiper.params.virtual.enabled) { 3867 swiper.clickedIndex = parseInt($(slide).attr("data-swiper-slide-index"), 10) 3868 } else { 3869 swiper.clickedIndex = $(slide).index() 3870 } 3871 } else { 3872 swiper.clickedSlide = undefined; 3873 swiper.clickedIndex = undefined; 3874 return 3875 } 3876 if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { 3877 swiper.slideToClickedSlide() 3878 } 3879 } 3880 3881 var update = { 3882 updateSize: updateSize, 3883 updateSlides: updateSlides, 3884 updateAutoHeight: updateAutoHeight, 3885 updateSlidesOffset: updateSlidesOffset, 3886 updateSlidesProgress: updateSlidesProgress, 3887 updateProgress: updateProgress, 3888 updateSlidesClasses: updateSlidesClasses, 3889 updateActiveIndex: updateActiveIndex, 3890 updateClickedSlide: updateClickedSlide 3891 }; 3892 3893 function getSwiperTranslate(axis) { 3894 if (axis === void 0) { 3895 axis = this.isHorizontal() ? "x" : "y" 3896 } 3897 var swiper = this; 3898 var params = swiper.params, rtl = swiper.rtlTranslate, translate = swiper.translate, 3899 $wrapperEl = swiper.$wrapperEl; 3900 if (params.virtualTranslate) { 3901 return rtl ? -translate : translate 3902 } 3903 if (params.cssMode) { 3904 return translate 3905 } 3906 var currentTranslate = getTranslate($wrapperEl[0], axis); 3907 if (rtl) { 3908 currentTranslate = -currentTranslate 3909 } 3910 return currentTranslate || 0 3911 } 3912 3913 function setTranslate(translate, byController) { 3914 var swiper = this; 3915 var rtl = swiper.rtlTranslate, params = swiper.params, $wrapperEl = swiper.$wrapperEl, 3916 wrapperEl = swiper.wrapperEl, progress = swiper.progress; 3917 var x = 0; 3918 var y = 0; 3919 var z = 0; 3920 if (swiper.isHorizontal()) { 3921 x = rtl ? -translate : translate 3922 } else { 3923 y = translate 3924 } 3925 if (params.roundLengths) { 3926 x = Math.floor(x); 3927 y = Math.floor(y) 3928 } 3929 if (params.cssMode) { 3930 wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y 3931 } else { 3932 if (!params.virtualTranslate) { 3933 $wrapperEl.transform("translate3d(" + x + "px, " + y + "px, " + z + "px)") 3934 } 3935 } 3936 swiper.previousTranslate = swiper.translate; 3937 swiper.translate = swiper.isHorizontal() ? x : y; 3938 var newProgress; 3939 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 3940 if (translatesDiff === 0) { 3941 newProgress = 0 3942 } else { 3943 newProgress = (translate - swiper.minTranslate()) / translatesDiff 3944 } 3945 if (newProgress !== progress) { 3946 swiper.updateProgress(translate) 3947 } 3948 swiper.emit("setTranslate", swiper.translate, byController) 3949 } 3950 3951 function minTranslate() { 3952 return -this.snapGrid[0] 3953 } 3954 3955 function maxTranslate() { 3956 return -this.snapGrid[this.snapGrid.length - 1] 3957 } 3958 3959 function translateTo(translate, speed, runCallbacks, translateBounds, internal) { 3960 if (translate === void 0) { 3961 translate = 0 3962 } 3963 if (speed === void 0) { 3964 speed = this.params.speed 3965 } 3966 if (runCallbacks === void 0) { 3967 runCallbacks = true 3968 } 3969 if (translateBounds === void 0) { 3970 translateBounds = true 3971 } 3972 var swiper = this; 3973 var params = swiper.params, wrapperEl = swiper.wrapperEl; 3974 if (swiper.animating && params.preventInteractionOnTransition) { 3975 return false 3976 } 3977 var minTranslate = swiper.minTranslate(); 3978 var maxTranslate = swiper.maxTranslate(); 3979 var newTranslate; 3980 if (translateBounds && translate > minTranslate) { 3981 newTranslate = minTranslate 3982 } else { 3983 if (translateBounds && translate < maxTranslate) { 3984 newTranslate = maxTranslate 3985 } else { 3986 newTranslate = translate 3987 } 3988 } 3989 swiper.updateProgress(newTranslate); 3990 if (params.cssMode) { 3991 var isH = swiper.isHorizontal(); 3992 if (speed === 0) { 3993 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate 3994 } else { 3995 if (wrapperEl.scrollTo) { 3996 var _wrapperEl$scrollTo; 3997 wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? "left" : "top"] = -newTranslate, _wrapperEl$scrollTo.behavior = "smooth", _wrapperEl$scrollTo)) 3998 } else { 3999 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate 4000 } 4001 } 4002 return true 4003 } 4004 if (speed === 0) { 4005 swiper.setTransition(0); 4006 swiper.setTranslate(newTranslate); 4007 if (runCallbacks) { 4008 swiper.emit("beforeTransitionStart", speed, internal); 4009 swiper.emit("transitionEnd") 4010 } 4011 } else { 4012 swiper.setTransition(speed); 4013 swiper.setTranslate(newTranslate); 4014 if (runCallbacks) { 4015 swiper.emit("beforeTransitionStart", speed, internal); 4016 swiper.emit("transitionStart") 4017 } 4018 if (!swiper.animating) { 4019 swiper.animating = true; 4020 if (!swiper.onTranslateToWrapperTransitionEnd) { 4021 swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { 4022 if (!swiper || swiper.destroyed) { 4023 return 4024 } 4025 if (e.target !== this) { 4026 return 4027 } 4028 swiper.$wrapperEl[0].removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); 4029 swiper.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper.onTranslateToWrapperTransitionEnd); 4030 swiper.onTranslateToWrapperTransitionEnd = null; 4031 delete swiper.onTranslateToWrapperTransitionEnd; 4032 if (runCallbacks) { 4033 swiper.emit("transitionEnd") 4034 } 4035 } 4036 } 4037 swiper.$wrapperEl[0].addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd); 4038 swiper.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper.onTranslateToWrapperTransitionEnd) 4039 } 4040 } 4041 return true 4042 } 4043 4044 var translate = { 4045 getTranslate: getSwiperTranslate, 4046 setTranslate: setTranslate, 4047 minTranslate: minTranslate, 4048 maxTranslate: maxTranslate, 4049 translateTo: translateTo 4050 }; 4051 4052 function setTransition(duration, byController) { 4053 var swiper = this; 4054 if (!swiper.params.cssMode) { 4055 swiper.$wrapperEl.transition(duration) 4056 } 4057 swiper.emit("setTransition", duration, byController) 4058 } 4059 4060 function transitionStart(runCallbacks, direction) { 4061 if (runCallbacks === void 0) { 4062 runCallbacks = true 4063 } 4064 var swiper = this; 4065 var activeIndex = swiper.activeIndex, params = swiper.params, previousIndex = swiper.previousIndex; 4066 if (params.cssMode) { 4067 return 4068 } 4069 if (params.autoHeight) { 4070 swiper.updateAutoHeight() 4071 } 4072 var dir = direction; 4073 if (!dir) { 4074 if (activeIndex > previousIndex) { 4075 dir = "next" 4076 } else { 4077 if (activeIndex < previousIndex) { 4078 dir = "prev" 4079 } else { 4080 dir = "reset" 4081 } 4082 } 4083 } 4084 swiper.emit("transitionStart"); 4085 if (runCallbacks && activeIndex !== previousIndex) { 4086 if (dir === "reset") { 4087 swiper.emit("slideResetTransitionStart"); 4088 return 4089 } 4090 swiper.emit("slideChangeTransitionStart"); 4091 if (dir === "next") { 4092 swiper.emit("slideNextTransitionStart") 4093 } else { 4094 swiper.emit("slidePrevTransitionStart") 4095 } 4096 } 4097 } 4098 4099 function transitionEnd$1(runCallbacks, direction) { 4100 if (runCallbacks === void 0) { 4101 runCallbacks = true 4102 } 4103 var swiper = this; 4104 var activeIndex = swiper.activeIndex, previousIndex = swiper.previousIndex, params = swiper.params; 4105 swiper.animating = false;
4106 if (params.cssMode) { 4107 return 4108 } 4109 swiper.setTransition(0); 4110 var dir = direction; 4111 if (!dir) { 4112 if (activeIndex > previousIndex) { 4113 dir = "next" 4114 } else { 4115 if (activeIndex < previousIndex) { 4116 dir = "prev" 4117 } else { 4118 dir = "reset" 4119 } 4120 } 4121 } 4122 swiper.emit("transitionEnd"); 4123 if (runCallbacks && activeIndex !== previousIndex) { 4124 if (dir === "reset") { 4125 swiper.emit("slideResetTransitionEnd"); 4126 return 4127 } 4128 swiper.emit("slideChangeTransitionEnd"); 4129 if (dir === "next") { 4130 swiper.emit("slideNextTransitionEnd") 4131 } else { 4132 swiper.emit("slidePrevTransitionEnd") 4133 } 4134 } 4135 } 4136 4137 var transition$1 = {setTransition: setTransition, transitionStart: transitionStart, transitionEnd: transitionEnd$1}; 4138 4139 function slideTo(index, speed, runCallbacks, internal) { 4140 if (index === void 0) { 4141 index = 0 4142 } 4143 if (speed === void 0) { 4144 speed = this.params.speed 4145 } 4146 if (runCallbacks === void 0) { 4147 runCallbacks = true 4148 } 4149 if (typeof index !== "number" && typeof index !== "string") { 4150 throw new Error("The 'index' argument cannot have type other than 'number' or 'string'. [" + typeof index + "] given.") 4151 } 4152 if (typeof index === "string") { 4153 var indexAsNumber = parseInt(index, 10); 4154 var isValidNumber = isFinite(indexAsNumber); 4155 if (!isValidNumber) { 4156 throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [" + index + "] given.") 4157 } 4158 index = indexAsNumber 4159 } 4160 var swiper = this; 4161 var slideIndex = index; 4162 if (slideIndex < 0) { 4163 slideIndex = 0 4164 } 4165 var params = swiper.params, snapGrid = swiper.snapGrid, slidesGrid = swiper.slidesGrid, 4166 previousIndex = swiper.previousIndex, activeIndex = swiper.activeIndex, rtl = swiper.rtlTranslate, 4167 wrapperEl = swiper.wrapperEl; 4168 if (swiper.animating && params.preventInteractionOnTransition) { 4169 return false 4170 } 4171 var skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); 4172 var snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); 4173 if (snapIndex >= snapGrid.length) { 4174 snapIndex = snapGrid.length - 1 4175 } 4176 if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) { 4177 swiper.emit("beforeSlideChangeStart") 4178 } 4179 var translate = -snapGrid[snapIndex]; 4180 swiper.updateProgress(translate); 4181 if (params.normalizeSlideIndex) { 4182 for (var i = 0; i < slidesGrid.length; i += 1) { 4183 if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) { 4184 slideIndex = i 4185 } 4186 } 4187 } 4188 if (swiper.initialized && slideIndex !== activeIndex) { 4189 if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) { 4190 return false 4191 } 4192 if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { 4193 if ((activeIndex || 0) !== slideIndex) { 4194 return false 4195 } 4196 } 4197 } 4198 var direction; 4199 if (slideIndex > activeIndex) { 4200 direction = "next" 4201 } else { 4202 if (slideIndex < activeIndex) { 4203 direction = "prev" 4204 } else { 4205 direction = "reset" 4206 } 4207 } 4208 if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { 4209 swiper.updateActiveIndex(slideIndex); 4210 if (params.autoHeight) { 4211 swiper.updateAutoHeight() 4212 } 4213 swiper.updateSlidesClasses(); 4214 if (params.effect !== "slide") { 4215 swiper.setTranslate(translate) 4216 } 4217 if (direction !== "reset") { 4218 swiper.transitionStart(runCallbacks, direction); 4219 swiper.transitionEnd(runCallbacks, direction) 4220 } 4221 return false 4222 } 4223 if (params.cssMode) { 4224 var isH = swiper.isHorizontal(); 4225 var t = -translate; 4226 if (rtl) { 4227 t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t 4228 } 4229 if (speed === 0) { 4230 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t 4231 } else { 4232 if (wrapperEl.scrollTo) { 4233 var _wrapperEl$scrollTo; 4234 wrapperEl.scrollTo((_wrapperEl$scrollTo = {}, _wrapperEl$scrollTo[isH ? "left" : "top"] = t, _wrapperEl$scrollTo.behavior = "smooth", _wrapperEl$scrollTo)) 4235 } else { 4236 wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t 4237 } 4238 } 4239 return true 4240 } 4241 if (speed === 0) { 4242 swiper.setTransition(0); 4243 swiper.setTranslate(translate); 4244 swiper.updateActiveIndex(slideIndex); 4245 swiper.updateSlidesClasses(); 4246 swiper.emit("beforeTransitionStart", speed, internal); 4247 swiper.transitionStart(runCallbacks, direction); 4248 swiper.transitionEnd(runCallbacks, direction) 4249 } else { 4250 swiper.setTransition(speed); 4251 swiper.setTranslate(translate); 4252 swiper.updateActiveIndex(slideIndex); 4253 swiper.updateSlidesClasses(); 4254 swiper.emit("beforeTransitionStart", speed, internal); 4255 swiper.transitionStart(runCallbacks, direction); 4256 if (!swiper.animating) { 4257 swiper.animating = true; 4258 if (!swiper.onSlideToWrapperTransitionEnd) { 4259 swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { 4260 if (!swiper || swiper.destroyed) { 4261 return 4262 } 4263 if (e.target !== this) { 4264 return 4265 } 4266 swiper.$wrapperEl[0].removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); 4267 swiper.$wrapperEl[0].removeEventListener("webkitTransitionEnd", swiper.onSlideToWrapperTransitionEnd); 4268 swiper.onSlideToWrapperTransitionEnd = null; 4269 delete swiper.onSlideToWrapperTransitionEnd; 4270 swiper.transitionEnd(runCallbacks, direction) 4271 } 4272 } 4273 swiper.$wrapperEl[0].addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd); 4274 swiper.$wrapperEl[0].addEventListener("webkitTransitionEnd", swiper.onSlideToWrapperTransitionEnd) 4275 } 4276 } 4277 return true 4278 } 4279 4280 function slideToLoop(index, speed, runCallbacks, internal) { 4281 if (index === void 0) { 4282 index = 0 4283 } 4284 if (speed === void 0) { 4285 speed = this.params.speed 4286 } 4287 if (runCallbacks === void 0) { 4288 runCallbacks = true 4289 } 4290 var swiper = this; 4291 var newIndex = index; 4292 if (swiper.params.loop) { 4293 newIndex += swiper.loopedSlides 4294 } 4295 return swiper.slideTo(newIndex, speed, runCallbacks, internal) 4296 } 4297 4298 function slideNext(speed, runCallbacks, internal) { 4299 if (speed === void 0) { 4300 speed = this.params.speed 4301 } 4302 if (runCallbacks === void 0) { 4303 runCallbacks = true 4304 } 4305 var swiper = this; 4306 var params = swiper.params, animating = swiper.animating; 4307 var increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup; 4308 if (params.loop) { 4309 if (animating && params.loopPreventsSlide) { 4310 return false 4311 } 4312 swiper.loopFix(); 4313 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft 4314 } 4315 return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal) 4316 } 4317 4318 function slidePrev(speed, runCallbacks, internal) { 4319 if (speed === void 0) { 4320 speed = this.params.speed 4321 } 4322 if (runCallbacks === void 0) { 4323 runCallbacks = true 4324 } 4325 var swiper = this; 4326 var params = swiper.params, animating = swiper.animating, snapGrid = swiper.snapGrid, 4327 slidesGrid = swiper.slidesGrid, rtlTranslate = swiper.rtlTranslate; 4328 if (params.loop) { 4329 if (animating && params.loopPreventsSlide) { 4330 return false 4331 } 4332 swiper.loopFix(); 4333 swiper._clientLeft = swiper.$wrapperEl[0].clientLeft 4334 }
4335 var translate = rtlTranslate ? swiper.translate : -swiper.translate; 4336 4337 function normalize(val) { 4338 if (val < 0) { 4339 return -Math.floor(Math.abs(val)) 4340 } 4341 return Math.floor(val) 4342 } 4343 4344 var normalizedTranslate = normalize(translate); 4345 var normalizedSnapGrid = snapGrid.map(function (val) { 4346 return normalize(val) 4347 }); 4348 var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)]; 4349 var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; 4350 if (typeof prevSnap === "undefined" && params.cssMode) { 4351 snapGrid.forEach(function (snap) { 4352 if (!prevSnap && normalizedTranslate >= snap) { 4353 prevSnap = snap 4354 } 4355 }) 4356 } 4357 var prevIndex; 4358 if (typeof prevSnap !== "undefined") { 4359 prevIndex = slidesGrid.indexOf(prevSnap); 4360 if (prevIndex < 0) { 4361 prevIndex = swiper.activeIndex - 1 4362 } 4363 } 4364 return swiper.slideTo(prevIndex, speed, runCallbacks, internal) 4365 } 4366 4367 function slideReset(speed, runCallbacks, internal) { 4368 if (speed === void 0) { 4369 speed = this.params.speed 4370 } 4371 if (runCallbacks === void 0) { 4372 runCallbacks = true 4373 } 4374 var swiper = this; 4375 return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal) 4376 } 4377 4378 function slideToClosest(speed, runCallbacks, internal, threshold) { 4379 if (speed === void 0) { 4380 speed = this.params.speed 4381 } 4382 if (runCallbacks === void 0) { 4383 runCallbacks = true 4384 } 4385 if (threshold === void 0) { 4386 threshold = 0.5 4387 } 4388 var swiper = this; 4389 var index = swiper.activeIndex; 4390 var skip = Math.min(swiper.params.slidesPerGroupSkip, index); 4391 var snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); 4392 var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; 4393 if (translate >= swiper.snapGrid[snapIndex]) { 4394 var currentSnap = swiper.snapGrid[snapIndex]; 4395 var nextSnap = swiper.snapGrid[snapIndex + 1]; 4396 if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { 4397 index += swiper.params.slidesPerGroup 4398 } 4399 } else { 4400 var prevSnap = swiper.snapGrid[snapIndex - 1]; 4401 var _currentSnap = swiper.snapGrid[snapIndex]; 4402 if (translate - prevSnap <= (_currentSnap - prevSnap) * threshold) { 4403 index -= swiper.params.slidesPerGroup 4404 } 4405 } 4406 index = Math.max(index, 0); 4407 index = Math.min(index, swiper.slidesGrid.length - 1); 4408 return swiper.slideTo(index, speed, runCallbacks, internal) 4409 } 4410 4411 function slideToClickedSlide() { 4412 var swiper = this; 4413 var params = swiper.params, $wrapperEl = swiper.$wrapperEl; 4414 var slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView; 4415 var slideToIndex = swiper.clickedIndex; 4416 var realIndex; 4417 if (params.loop) { 4418 if (swiper.animating) { 4419 return 4420 } 4421 realIndex = parseInt($(swiper.clickedSlide).attr("data-swiper-slide-index"), 10); 4422 if (params.centeredSlides) { 4423 if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { 4424 swiper.loopFix(); 4425 slideToIndex = $wrapperEl.children("." + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ")").eq(0).index(); 4426 nextTick(function () { 4427 swiper.slideTo(slideToIndex) 4428 }) 4429 } else { 4430 swiper.slideTo(slideToIndex) 4431 } 4432 } else { 4433 if (slideToIndex > swiper.slides.length - slidesPerView) { 4434 swiper.loopFix(); 4435 slideToIndex = $wrapperEl.children("." + params.slideClass + '[data-swiper-slide-index="' + realIndex + '"]:not(.' + params.slideDuplicateClass + ")").eq(0).index(); 4436 nextTick(function () { 4437 swiper.slideTo(slideToIndex) 4438 }) 4439 } else { 4440 swiper.slideTo(slideToIndex) 4441 } 4442 } 4443 } else { 4444 swiper.slideTo(slideToIndex) 4445 } 4446 } 4447 4448 var slide = { 4449 slideTo: slideTo, 4450 slideToLoop: slideToLoop, 4451 slideNext: slideNext, 4452 slidePrev: slidePrev, 4453 slideReset: slideReset, 4454 slideToClosest: slideToClosest, 4455 slideToClickedSlide: slideToClickedSlide 4456 }; 4457 4458 function loopCreate() { 4459 var swiper = this; 4460 var document = getDocument(); 4461 var params = swiper.params, $wrapperEl = swiper.$wrapperEl; 4462 $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass).remove(); 4463 var slides = $wrapperEl.children("." + params.slideClass); 4464 if (params.loopFillGroupWithBlank) { 4465 var blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup; 4466 if (blankSlidesNum !== params.slidesPerGroup) { 4467 for (var i = 0; i < blankSlidesNum; i += 1) { 4468 var blankNode = $(document.createElement("div")).addClass(params.slideClass + " " + params.slideBlankClass); 4469 $wrapperEl.append(blankNode) 4470 } 4471 slides = $wrapperEl.children("." + params.slideClass) 4472 } 4473 } 4474 if (params.slidesPerView === "auto" && !params.loopedSlides) { 4475 params.loopedSlides = slides.length 4476 } 4477 swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10)); 4478 swiper.loopedSlides += params.loopAdditionalSlides; 4479 if (swiper.loopedSlides > slides.length) { 4480 swiper.loopedSlides = slides.length 4481 } 4482 var prependSlides = []; 4483 var appendSlides = []; 4484 slides.each(function (el, index) { 4485 var slide = $(el); 4486 if (index < swiper.loopedSlides) { 4487 appendSlides.push(el) 4488 } 4489 if (index < slides.length && index >= slides.length - swiper.loopedSlides) { 4490 prependSlides.push(el) 4491 } 4492 slide.attr("data-swiper-slide-index", index) 4493 }); 4494 for (var _i = 0; _i < appendSlides.length; _i += 1) { 4495 $wrapperEl.append($(appendSlides[_i].cloneNode(true)).addClass(params.slideDuplicateClass)) 4496 } 4497 for (var _i2 = prependSlides.length - 1; _i2 >= 0; _i2 -= 1) { 4498 $wrapperEl.prepend($(prependSlides[_i2].cloneNode(true)).addClass(params.slideDuplicateClass)) 4499 } 4500 } 4501 4502 function loopFix() { 4503 var swiper = this; 4504 swiper.emit("beforeLoopFix"); 4505 var activeIndex = swiper.activeIndex, slides = swiper.slides, loopedSlides = swiper.loopedSlides, 4506 allowSlidePrev = swiper.allowSlidePrev, allowSlideNext = swiper.allowSlideNext, snapGrid = swiper.snapGrid, 4507 rtl = swiper.rtlTranslate; 4508 var newIndex; 4509 swiper.allowSlidePrev = true; 4510 swiper.allowSlideNext = true;
4511 var snapTranslate = -snapGrid[activeIndex]; 4512 var diff = snapTranslate - swiper.getTranslate(); 4513 if (activeIndex < loopedSlides) { 4514 newIndex = slides.length - loopedSlides * 3 + activeIndex; 4515 newIndex += loopedSlides; 4516 var slideChanged = swiper.slideTo(newIndex, 0, false, true); 4517 if (slideChanged && diff !== 0) { 4518 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff) 4519 } 4520 } else { 4521 if (activeIndex >= slides.length - loopedSlides) { 4522 newIndex = -slides.length + activeIndex + loopedSlides; 4523 newIndex += loopedSlides; 4524 var _slideChanged = swiper.slideTo(newIndex, 0, false, true); 4525 if (_slideChanged && diff !== 0) { 4526 swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff) 4527 } 4528 } 4529 } 4530 swiper.allowSlidePrev = allowSlidePrev; 4531 swiper.allowSlideNext = allowSlideNext; 4532 swiper.emit("loopFix") 4533 } 4534 4535 function loopDestroy() { 4536 var swiper = this; 4537 var $wrapperEl = swiper.$wrapperEl, params = swiper.params, slides = swiper.slides; 4538 $wrapperEl.children("." + params.slideClass + "." + params.slideDuplicateClass + ",." + params.slideClass + "." + params.slideBlankClass).remove(); 4539 slides.removeAttr("data-swiper-slide-index") 4540 } 4541 4542 var loop = {loopCreate: loopCreate, loopFix: loopFix, loopDestroy: loopDestroy}; 4543 4544 function setGrabCursor(moving) { 4545 var swiper = this; 4546 if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 4547 return 4548 } 4549 var el = swiper.el; 4550 el.style.cursor = "move"; 4551 el.style.cursor = moving ? "-webkit-grabbing" : "-webkit-grab"; 4552 el.style.cursor = moving ? "-moz-grabbin" : "-moz-grab"; 4553 el.style.cursor = moving ? "grabbing" : "grab" 4554 } 4555 4556 function unsetGrabCursor() { 4557 var swiper = this; 4558 if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { 4559 return 4560 } 4561 swiper.el.style.cursor = "" 4562 } 4563 4564 var grabCursor = {setGrabCursor: setGrabCursor, unsetGrabCursor: unsetGrabCursor}; 4565 4566 function appendSlide(slides) { 4567 var swiper = this; 4568 var $wrapperEl = swiper.$wrapperEl, params = swiper.params; 4569 if (params.loop) { 4570 swiper.loopDestroy() 4571 } 4572 if (typeof slides === "object" && "length" in slides) { 4573 for (var i = 0; i < slides.length; i += 1) { 4574 if (slides[i]) { 4575 $wrapperEl.append(slides[i]) 4576 } 4577 } 4578 } else { 4579 $wrapperEl.append(slides) 4580 } 4581 if (params.loop) { 4582 swiper.loopCreate() 4583 } 4584 if (!(params.observer && swiper.support.observer)) { 4585 swiper.update() 4586 } 4587 } 4588 4589 function prependSlide(slides) { 4590 var swiper = this; 4591 var params = swiper.params, $wrapperEl = swiper.$wrapperEl, activeIndex = swiper.activeIndex; 4592 if (params.loop) { 4593 swiper.loopDestroy() 4594 } 4595 var newActiveIndex = activeIndex + 1; 4596 if (typeof slides === "object" && "length" in slides) { 4597 for (var i = 0; i < slides.length; i += 1) { 4598 if (slides[i]) { 4599 $wrapperEl.prepend(slides[i]) 4600 } 4601 } 4602 newActiveIndex = activeIndex + slides.length 4603 } else { 4604 $wrapperEl.prepend(slides) 4605 } 4606 if (params.loop) { 4607 swiper.loopCreate() 4608 } 4609 if (!(params.observer && swiper.support.observer)) { 4610 swiper.update() 4611 } 4612 swiper.slideTo(newActiveIndex, 0, false) 4613 } 4614 4615 function addSlide(index, slides) { 4616 var swiper = this; 4617 var $wrapperEl = swiper.$wrapperEl, params = swiper.params, activeIndex = swiper.activeIndex; 4618 var activeIndexBuffer = activeIndex; 4619 if (params.loop) { 4620 activeIndexBuffer -= swiper.loopedSlides; 4621 swiper.loopDestroy(); 4622 swiper.slides = $wrapperEl.children("." + params.slideClass) 4623 } 4624 var baseLength = swiper.slides.length; 4625 if (index <= 0) { 4626 swiper.prependSlide(slides); 4627 return 4628 } 4629 if (index >= baseLength) { 4630 swiper.appendSlide(slides); 4631 return 4632 } 4633 var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; 4634 var slidesBuffer = []; 4635 for (var i = baseLength - 1; i >= index; i -= 1) { 4636 var currentSlide = swiper.slides.eq(i); 4637 currentSlide.remove(); 4638 slidesBuffer.unshift(currentSlide) 4639 } 4640 if (typeof slides === "object" && "length" in slides) { 4641 for (var _i = 0; _i < slides.length; _i += 1) { 4642 if (slides[_i]) { 4643 $wrapperEl.append(slides[_i]) 4644 } 4645 } 4646 newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer 4647 } else { 4648 $wrapperEl.append(slides) 4649 } 4650 for (var _i2 = 0; _i2 < slidesBuffer.length; _i2 += 1) { 4651 $wrapperEl.append(slidesBuffer[_i2]) 4652 } 4653 if (params.loop) { 4654 swiper.loopCreate() 4655 } 4656 if (!(params.observer && swiper.support.observer)) {
4657 swiper.update() 4658 } 4659 if (params.loop) { 4660 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false) 4661 } else { 4662 swiper.slideTo(newActiveIndex, 0, false) 4663 } 4664 } 4665 4666 function removeSlide(slidesIndexes) { 4667 var swiper = this; 4668 var params = swiper.params, $wrapperEl = swiper.$wrapperEl, activeIndex = swiper.activeIndex; 4669 var activeIndexBuffer = activeIndex; 4670 if (params.loop) { 4671 activeIndexBuffer -= swiper.loopedSlides; 4672 swiper.loopDestroy(); 4673 swiper.slides = $wrapperEl.children("." + params.slideClass) 4674 } 4675 var newActiveIndex = activeIndexBuffer; 4676 var indexToRemove; 4677 if (typeof slidesIndexes === "object" && "length" in slidesIndexes) { 4678 for (var i = 0; i < slidesIndexes.length; i += 1) { 4679 indexToRemove = slidesIndexes[i]; 4680 if (swiper.slides[indexToRemove]) { 4681 swiper.slides.eq(indexToRemove).remove() 4682 } 4683 if (indexToRemove < newActiveIndex) { 4684 newActiveIndex -= 1 4685 } 4686 } 4687 newActiveIndex = Math.max(newActiveIndex, 0) 4688 } else { 4689 indexToRemove = slidesIndexes; 4690 if (swiper.slides[indexToRemove]) { 4691 swiper.slides.eq(indexToRemove).remove() 4692 } 4693 if (indexToRemove < newActiveIndex) { 4694 newActiveIndex -= 1 4695 } 4696 newActiveIndex = Math.max(newActiveIndex, 0) 4697 } 4698 if (params.loop) { 4699 swiper.loopCreate() 4700 } 4701 if (!(params.observer && swiper.support.observer)) { 4702 swiper.update() 4703 } 4704 if (params.loop) { 4705 swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false) 4706 } else { 4707 swiper.slideTo(newActiveIndex, 0, false) 4708 } 4709 } 4710 4711 function removeAllSlides() { 4712 var swiper = this; 4713 var slidesIndexes = []; 4714 for (var i = 0; i < swiper.slides.length; i += 1) { 4715 slidesIndexes.push(i) 4716 } 4717 swiper.removeSlide(slidesIndexes) 4718 } 4719 4720 var manipulation = { 4721 appendSlide: appendSlide, 4722 prependSlide: prependSlide, 4723 addSlide: addSlide, 4724 removeSlide: removeSlide, 4725 removeAllSlides: removeAllSlides 4726 }; 4727 4728 function onTouchStart(event) { 4729 var swiper = this; 4730 var document = getDocument(); 4731 var window = getWindow(); 4732 var data = swiper.touchEventsData; 4733 var params = swiper.params, touches = swiper.touches; 4734 if (swiper.animating && params.preventInteractionOnTransition) { 4735 return 4736 } 4737 var e = event; 4738 if (e.originalEvent) { 4739 e = e.originalEvent 4740 } 4741 var $targetEl = $(e.target); 4742 if (params.touchEventsTarget === "wrapper") { 4743 if (!$targetEl.closest(swiper.wrapperEl).length) { 4744 return 4745 } 4746 } 4747 data.isTouchEvent = e.type === "touchstart"; 4748 if (!data.isTouchEvent && "which" in e && e.which === 3) { 4749 return 4750 } 4751 if (!data.isTouchEvent && "button" in e && e.button > 0) { 4752 return 4753 } 4754 if (data.isTouched && data.isMoved) { 4755 return 4756 } 4757 var swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ""; 4758 if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) { 4759 $targetEl = $(event.path[0]) 4760 } 4761 if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : "." + params.noSwipingClass)[0]) { 4762 swiper.allowClick = true; 4763 return 4764 } 4765 if (params.swipeHandler) { 4766 if (!$targetEl.closest(params.swipeHandler)[0]) { 4767 return 4768 } 4769 } 4770 touches.currentX = e.type === "touchstart" ? e.targetTouches[0].pageX : e.pageX; 4771 touches.currentY = e.type === "touchstart" ? e.targetTouches[0].pageY : e.pageY; 4772 var startX = touches.currentX; 4773 var startY = touches.currentY; 4774 var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection; 4775 var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold; 4776 if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { 4777 return 4778 } 4779 extend$1(data, { 4780 isTouched: true, 4781 isMoved: false, 4782 allowTouchCallbacks: true, 4783 isScrolling: undefined, 4784 startMoving: undefined 4785 }); 4786 touches.startX = startX; 4787 touches.startY = startY;
4788 data.touchStartTime = now(); 4789 swiper.allowClick = true; 4790 swiper.updateSize(); 4791 swiper.swipeDirection = undefined; 4792 if (params.threshold > 0) { 4793 data.allowThresholdMove = false 4794 } 4795 if (e.type !== "touchstart") { 4796 var preventDefault = true; 4797 if ($targetEl.is(data.formElements)) { 4798 preventDefault = false 4799 } 4800 if (document.activeElement && $(document.activeElement).is(data.formElements) && document.activeElement !== $targetEl[0]) { 4801 document.activeElement.blur() 4802 } 4803 var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; 4804 if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) { 4805 e.preventDefault() 4806 } 4807 } 4808 swiper.emit("touchStart", e) 4809 } 4810 4811 function onTouchMove(event) { 4812 var document = getDocument(); 4813 var swiper = this; 4814 var data = swiper.touchEventsData; 4815 var params = swiper.params, touches = swiper.touches, rtl = swiper.rtlTranslate; 4816 var e = event; 4817 if (e.originalEvent) { 4818 e = e.originalEvent 4819 } 4820 if (!data.isTouched) { 4821 if (data.startMoving && data.isScrolling) { 4822 swiper.emit("touchMoveOpposite", e) 4823 } 4824 return 4825 } 4826 if (data.isTouchEvent && e.type !== "touchmove") { 4827 return 4828 } 4829 var targetTouch = e.type === "touchmove" && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]); 4830 var pageX = e.type === "touchmove" ? targetTouch.pageX : e.pageX; 4831 var pageY = e.type === "touchmove" ? targetTouch.pageY : e.pageY; 4832 if (e.preventedByNestedSwiper) { 4833 touches.startX = pageX; 4834 touches.startY = pageY; 4835 return 4836 } 4837 if (!swiper.allowTouchMove) { 4838 swiper.allowClick = false; 4839 if (data.isTouched) { 4840 extend$1(touches, {startX: pageX, startY: pageY, currentX: pageX, currentY: pageY}); 4841 data.touchStartTime = now() 4842 } 4843 return 4844 } 4845 if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) { 4846 if (swiper.isVertical()) { 4847 if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { 4848 data.isTouched = false; 4849 data.isMoved = false; 4850 return 4851 } 4852 } else { 4853 if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { 4854 return 4855 } 4856 } 4857 } 4858 if (data.isTouchEvent && document.activeElement) { 4859 if (e.target === document.activeElement && $(e.target).is(data.formElements)) { 4860 data.isMoved = true; 4861 swiper.allowClick = false; 4862 return 4863 } 4864 } 4865 if (data.allowTouchCallbacks) { 4866 swiper.emit("touchMove", e) 4867 } 4868 if (e.targetTouches && e.targetTouches.length > 1) { 4869 return 4870 } 4871 touches.currentX = pageX; 4872 touches.currentY = pageY; 4873 var diffX = touches.currentX - touches.startX; 4874 var diffY = touches.currentY - touches.startY; 4875 if (swiper.params.threshold && Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) < swiper.params.threshold) { 4876 return 4877 } 4878 if (typeof data.isScrolling === "undefined") { 4879 var touchAngle; 4880 if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { 4881 data.isScrolling = false 4882 } else { 4883 if (diffX * diffX + diffY * diffY >= 25) { 4884 touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; 4885 data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle 4886 } 4887 } 4888 } 4889 if (data.isScrolling) { 4890 swiper.emit("touchMoveOpposite", e) 4891 } 4892 if (typeof data.startMoving === "undefined") { 4893 if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { 4894 data.startMoving = true 4895 } 4896 } 4897 if (data.isScrolling) { 4898 data.isTouched = false;
4899 return 4900 } 4901 if (!data.startMoving) { 4902 return 4903 } 4904 swiper.allowClick = false; 4905 if (!params.cssMode && e.cancelable) { 4906 e.preventDefault() 4907 } 4908 if (params.touchMoveStopPropagation && !params.nested) { 4909 e.stopPropagation() 4910 } 4911 if (!data.isMoved) { 4912 if (params.loop) { 4913 swiper.loopFix() 4914 } 4915 data.startTranslate = swiper.getTranslate(); 4916 swiper.setTransition(0); 4917 if (swiper.animating) { 4918 swiper.$wrapperEl.trigger("webkitTransitionEnd transitionend") 4919 } 4920 data.allowMomentumBounce = false; 4921 if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 4922 swiper.setGrabCursor(true) 4923 } 4924 swiper.emit("sliderFirstMove", e) 4925 } 4926 swiper.emit("sliderMove", e); 4927 data.isMoved = true; 4928 var diff = swiper.isHorizontal() ? diffX : diffY; 4929 touches.diff = diff; 4930 diff *= params.touchRatio; 4931 if (rtl) { 4932 diff = -diff 4933 } 4934 swiper.swipeDirection = diff > 0 ? "prev" : "next"; 4935 data.currentTranslate = diff + data.startTranslate; 4936 var disableParentSwiper = true; 4937 var resistanceRatio = params.resistanceRatio; 4938 if (params.touchReleaseOnEdges) { 4939 resistanceRatio = 0 4940 } 4941 if (diff > 0 && data.currentTranslate > swiper.minTranslate()) { 4942 disableParentSwiper = false;
4943 if (params.resistance) { 4944 data.currentTranslate = swiper.minTranslate() - 1 + Math.pow(-swiper.minTranslate() + data.startTranslate + diff, resistanceRatio) 4945 } 4946 } else { 4947 if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) { 4948 disableParentSwiper = false; 4949 if (params.resistance) { 4950 data.currentTranslate = swiper.maxTranslate() + 1 - Math.pow(swiper.maxTranslate() - data.startTranslate - diff, resistanceRatio) 4951 } 4952 } 4953 } 4954 if (disableParentSwiper) { 4955 e.preventedByNestedSwiper = true 4956 } 4957 if (!swiper.allowSlideNext && swiper.swipeDirection === "next" && data.currentTranslate < data.startTranslate) { 4958 data.currentTranslate = data.startTranslate 4959 } 4960 if (!swiper.allowSlidePrev && swiper.swipeDirection === "prev" && data.currentTranslate > data.startTranslate) { 4961 data.currentTranslate = data.startTranslate 4962 } 4963 if (params.threshold > 0) { 4964 if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { 4965 if (!data.allowThresholdMove) { 4966 data.allowThresholdMove = true; 4967 touches.startX = touches.currentX; 4968 touches.startY = touches.currentY; 4969 data.currentTranslate = data.startTranslate; 4970 touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; 4971 return 4972 } 4973 } else { 4974 data.currentTranslate = data.startTranslate; 4975 return 4976 } 4977 } 4978 if (!params.followFinger || params.cssMode) { 4979 return 4980 } 4981 if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) { 4982 swiper.updateActiveIndex(); 4983 swiper.updateSlidesClasses() 4984 } 4985 if (params.freeMode) { 4986 if (data.velocities.length === 0) { 4987 data.velocities.push({ 4988 position: touches[swiper.isHorizontal() ? "startX" : "startY"], 4989 time: data.touchStartTime 4990 }) 4991 } 4992 data.velocities.push({position: touches[swiper.isHorizontal() ? "currentX" : "currentY"], time: now()}) 4993 } 4994 swiper.updateProgress(data.currentTranslate); 4995 swiper.setTranslate(data.currentTranslate) 4996 } 4997 4998 function onTouchEnd(event) { 4999 var swiper = this; 5000 var data = swiper.touchEventsData; 5001 var params = swiper.params, touches = swiper.touches, rtl = swiper.rtlTranslate, $wrapperEl = swiper.$wrapperEl, 5002 slidesGrid = swiper.slidesGrid, snapGrid = swiper.snapGrid; 5003 var e = event; 5004 if (e.originalEvent) { 5005 e = e.originalEvent 5006 } 5007 if (data.allowTouchCallbacks) { 5008 swiper.emit("touchEnd", e) 5009 } 5010 data.allowTouchCallbacks = false; 5011 if (!data.isTouched) { 5012 if (data.isMoved && params.grabCursor) { 5013 swiper.setGrabCursor(false) 5014 } 5015 data.isMoved = false; 5016 data.startMoving = false; 5017 return 5018 } 5019 if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { 5020 swiper.setGrabCursor(false) 5021 } 5022 var touchEndTime = now(); 5023 var timeDiff = touchEndTime - data.touchStartTime; 5024 if (swiper.allowClick) { 5025 swiper.updateClickedSlide(e); 5026 swiper.emit("tap click", e); 5027 if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { 5028 swiper.emit("doubleTap doubleClick", e) 5029 } 5030 } 5031 data.lastClickTime = now(); 5032 nextTick(function () { 5033 if (!swiper.destroyed) { 5034 swiper.allowClick = true 5035 } 5036 }); 5037 if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) { 5038 data.isTouched = false;
5039 data.isMoved = false; 5040 data.startMoving = false; 5041 return 5042 } 5043 data.isTouched = false; 5044 data.isMoved = false; 5045 data.startMoving = false; 5046 var currentPos; 5047 if (params.followFinger) { 5048 currentPos = rtl ? swiper.translate : -swiper.translate 5049 } else { 5050 currentPos = -data.currentTranslate 5051 } 5052 if (params.cssMode) { 5053 return 5054 } 5055 if (params.freeMode) { 5056 if (currentPos < -swiper.minTranslate()) { 5057 swiper.slideTo(swiper.activeIndex); 5058 return 5059 } 5060 if (currentPos > -swiper.maxTranslate()) { 5061 if (swiper.slides.length < snapGrid.length) { 5062 swiper.slideTo(snapGrid.length - 1) 5063 } else { 5064 swiper.slideTo(swiper.slides.length - 1) 5065 } 5066 return 5067 } 5068 if (params.freeModeMomentum) { 5069 if (data.velocities.length > 1) { 5070 var lastMoveEvent = data.velocities.pop(); 5071 var velocityEvent = data.velocities.pop(); 5072 var distance = lastMoveEvent.position - velocityEvent.position; 5073 var time = lastMoveEvent.time - velocityEvent.time; 5074 swiper.velocity = distance / time; 5075 swiper.velocity /= 2; 5076 if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) { 5077 swiper.velocity = 0 5078 } 5079 if (time > 150 || now() - lastMoveEvent.time > 300) { 5080 swiper.velocity = 0 5081 } 5082 } else { 5083 swiper.velocity = 0 5084 } 5085 swiper.velocity *= params.freeModeMomentumVelocityRatio; 5086 data.velocities.length = 0; 5087 var momentumDuration = 1000 * params.freeModeMomentumRatio; 5088 var momentumDistance = swiper.velocity * momentumDuration; 5089 var newPosition = swiper.translate + momentumDistance; 5090 if (rtl) { 5091 newPosition = -newPosition 5092 } 5093 var doBounce = false; 5094 var afterBouncePosition; 5095 var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio; 5096 var needsLoopFix; 5097 if (newPosition < swiper.maxTranslate()) { 5098 if (params.freeModeMomentumBounce) { 5099 if (newPosition + swiper.maxTranslate() < -bounceAmount) { 5100 newPosition = swiper.maxTranslate() - bounceAmount 5101 } 5102 afterBouncePosition = swiper.maxTranslate(); 5103 doBounce = true; 5104 data.allowMomentumBounce = true 5105 } else { 5106 newPosition = swiper.maxTranslate() 5107 } 5108 if (params.loop && params.centeredSlides) { 5109 needsLoopFix = true 5110 } 5111 } else { 5112 if (newPosition > swiper.minTranslate()) { 5113 if (params.freeModeMomentumBounce) { 5114 if (newPosition - swiper.minTranslate() > bounceAmount) { 5115 newPosition = swiper.minTranslate() + bounceAmount 5116 } 5117 afterBouncePosition = swiper.minTranslate(); 5118 doBounce = true; 5119 data.allowMomentumBounce = true 5120 } else { 5121 newPosition = swiper.minTranslate() 5122 } 5123 if (params.loop && params.centeredSlides) { 5124 needsLoopFix = true 5125 } 5126 } else { 5127 if (params.freeModeSticky) { 5128 var nextSlide; 5129 for (var j = 0; j < snapGrid.length; j += 1) {
5130 if (snapGrid[j] > -newPosition) { 5131 nextSlide = j; 5132 break 5133 } 5134 } 5135 if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === "next") { 5136 newPosition = snapGrid[nextSlide] 5137 } else { 5138 newPosition = snapGrid[nextSlide - 1] 5139 } 5140 newPosition = -newPosition 5141 } 5142 } 5143 } 5144 if (needsLoopFix) { 5145 swiper.once("transitionEnd", function () { 5146 swiper.loopFix() 5147 }) 5148 } 5149 if (swiper.velocity !== 0) { 5150 if (rtl) { 5151 momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity) 5152 } else { 5153 momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity) 5154 } 5155 if (params.freeModeSticky) { 5156 var moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); 5157 var currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; 5158 if (moveDistance < currentSlideSize) { 5159 momentumDuration = params.speed 5160 } else { 5161 if (moveDistance < 2 * currentSlideSize) { 5162 momentumDuration = params.speed * 1.5 5163 } else { 5164 momentumDuration = params.speed * 2.5 5165 } 5166 } 5167 } 5168 } else { 5169 if (params.freeModeSticky) { 5170 swiper.slideToClosest(); 5171 return 5172 } 5173 } 5174 if (params.freeModeMomentumBounce && doBounce) { 5175 swiper.updateProgress(afterBouncePosition); 5176 swiper.setTransition(momentumDuration); 5177 swiper.setTranslate(newPosition); 5178 swiper.transitionStart(true, swiper.swipeDirection); 5179 swiper.animating = true; 5180 $wrapperEl.transitionEnd(function () { 5181 if (!swiper || swiper.destroyed || !data.allowMomentumBounce) { 5182 return 5183 } 5184 swiper.emit("momentumBounce"); 5185 swiper.setTransition(params.speed); 5186 setTimeout(function () { 5187 swiper.setTranslate(afterBouncePosition); 5188 $wrapperEl.transitionEnd(function () { 5189 if (!swiper || swiper.destroyed) { 5190 return 5191 } 5192 swiper.transitionEnd() 5193 }) 5194 }, 0) 5195 }) 5196 } else { 5197 if (swiper.velocity) { 5198 swiper.updateProgress(newPosition); 5199 swiper.setTransition(momentumDuration); 5200 swiper.setTranslate(newPosition); 5201 swiper.transitionStart(true, swiper.swipeDirection); 5202 if (!swiper.animating) { 5203 swiper.animating = true; 5204 $wrapperEl.transitionEnd(function () { 5205 if (!swiper || swiper.destroyed) { 5206 return 5207 } 5208 swiper.transitionEnd() 5209 }) 5210 } 5211 } else { 5212 swiper.updateProgress(newPosition) 5213 } 5214 } 5215 swiper.updateActiveIndex(); 5216 swiper.updateSlidesClasses() 5217 } else { 5218 if (params.freeModeSticky) { 5219 swiper.slideToClosest(); 5220 return 5221 } 5222 } 5223 if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) { 5224 swiper.updateProgress(); 5225 swiper.updateActiveIndex(); 5226 swiper.updateSlidesClasses() 5227 } 5228 return 5229 } 5230 var stopIndex = 0; 5231 var groupSize = swiper.slidesSizesGrid[0]; 5232 for (var i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { 5233 var _increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 5234 if (typeof slidesGrid[i + _increment] !== "undefined") { 5235 if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + _increment]) { 5236 stopIndex = i; 5237 groupSize = slidesGrid[i + _increment] - slidesGrid[i] 5238 } 5239 } else { 5240 if (currentPos >= slidesGrid[i]) { 5241 stopIndex = i; 5242 groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2] 5243 } 5244 } 5245 } 5246 var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; 5247 var increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; 5248 if (timeDiff > params.longSwipesMs) { 5249 if (!params.longSwipes) { 5250 swiper.slideTo(swiper.activeIndex); 5251 return 5252 } 5253 if (swiper.swipeDirection === "next") { 5254 if (ratio >= params.longSwipesRatio) { 5255 swiper.slideTo(stopIndex + increment) 5256 } else { 5257 swiper.slideTo(stopIndex) 5258 } 5259 } 5260 if (swiper.swipeDirection === "prev") { 5261 if (ratio > 1 - params.longSwipesRatio) { 5262 swiper.slideTo(stopIndex + increment) 5263 } else { 5264 swiper.slideTo(stopIndex) 5265 } 5266 } 5267 } else { 5268 if (!params.shortSwipes) { 5269 swiper.slideTo(swiper.activeIndex); 5270 return 5271 } 5272 var isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); 5273 if (!isNavButtonTarget) { 5274 if (swiper.swipeDirection === "next") { 5275 swiper.slideTo(stopIndex + increment) 5276 } 5277 if (swiper.swipeDirection === "prev") { 5278 swiper.slideTo(stopIndex) 5279 } 5280 } else { 5281 if (e.target === swiper.navigation.nextEl) { 5282 swiper.slideTo(stopIndex + increment) 5283 } else { 5284 swiper.slideTo(stopIndex) 5285 } 5286 } 5287 } 5288 } 5289 5290 function onResize() { 5291 var swiper = this; 5292 var params = swiper.params, el = swiper.el; 5293 if (el && el.offsetWidth === 0) { 5294 return 5295 } 5296 if (params.breakpoints) { 5297 swiper.setBreakpoint() 5298 } 5299 var allowSlideNext = swiper.allowSlideNext, allowSlidePrev = swiper.allowSlidePrev, snapGrid = swiper.snapGrid; 5300 swiper.allowSlideNext = true; 5301 swiper.allowSlidePrev = true; 5302 swiper.updateSize(); 5303 swiper.updateSlides(); 5304 swiper.updateSlidesClasses(); 5305 if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) { 5306 swiper.slideTo(swiper.slides.length - 1, 0, false, true) 5307 } else { 5308 swiper.slideTo(swiper.activeIndex, 0, false, true) 5309 } 5310 if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { 5311 swiper.autoplay.run() 5312 } 5313 swiper.allowSlidePrev = allowSlidePrev; 5314 swiper.allowSlideNext = allowSlideNext; 5315 if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { 5316 swiper.checkOverflow() 5317 } 5318 } 5319 5320 function onClick(e) { 5321 var swiper = this; 5322 if (!swiper.allowClick) { 5323 if (swiper.params.preventClicks) { 5324 e.preventDefault() 5325 } 5326 if (swiper.params.preventClicksPropagation && swiper.animating) { 5327 e.stopPropagation(); 5328 e.stopImmediatePropagation() 5329 } 5330 } 5331 } 5332 5333 function onScroll() { 5334 var swiper = this; 5335 var wrapperEl = swiper.wrapperEl, rtlTranslate = swiper.rtlTranslate; 5336 swiper.previousTranslate = swiper.translate; 5337 if (swiper.isHorizontal()) { 5338 if (rtlTranslate) { 5339 swiper.translate = wrapperEl.scrollWidth - wrapperEl.offsetWidth - wrapperEl.scrollLeft 5340 } else { 5341 swiper.translate = -wrapperEl.scrollLeft 5342 } 5343 } else { 5344 swiper.translate = -wrapperEl.scrollTop 5345 } 5346 if (swiper.translate === -0) { 5347 swiper.translate = 0 5348 } 5349 swiper.updateActiveIndex(); 5350 swiper.updateSlidesClasses(); 5351 var newProgress; 5352 var translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); 5353 if (translatesDiff === 0) { 5354 newProgress = 0 5355 } else { 5356 newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff 5357 } 5358 if (newProgress !== swiper.progress) { 5359 swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate) 5360 } 5361 swiper.emit("setTranslate", swiper.translate, false) 5362 } 5363 5364 var dummyEventAttached = false;
5365 5366 function dummyEventListener() { 5367 } 5368 5369 function attachEvents() { 5370 var swiper = this; 5371 var document = getDocument(); 5372 var params = swiper.params, touchEvents = swiper.touchEvents, el = swiper.el, wrapperEl = swiper.wrapperEl, 5373 device = swiper.device, support = swiper.support; 5374 swiper.onTouchStart = onTouchStart.bind(swiper); 5375 swiper.onTouchMove = onTouchMove.bind(swiper); 5376 swiper.onTouchEnd = onTouchEnd.bind(swiper); 5377 if (params.cssMode) { 5378 swiper.onScroll = onScroll.bind(swiper) 5379 } 5380 swiper.onClick = onClick.bind(swiper); 5381 var capture = !!params.nested; 5382 if (!support.touch && support.pointerEvents) { 5383 el.addEventListener(touchEvents.start, swiper.onTouchStart, false); 5384 document.addEventListener(touchEvents.move, swiper.onTouchMove, capture); 5385 document.addEventListener(touchEvents.end, swiper.onTouchEnd, false) 5386 } else { 5387 if (support.touch) { 5388 var passiveListener = touchEvents.start === "touchstart" && support.passiveListener && params.passiveListeners ? { 5389 passive: true, 5390 capture: false 5391 } : false; 5392 el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 5393 el.addEventListener(touchEvents.move, swiper.onTouchMove, support.passiveListener ? { 5394 passive: false, 5395 capture: capture 5396 } : capture); 5397 el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 5398 if (touchEvents.cancel) { 5399 el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener) 5400 } 5401 if (!dummyEventAttached) { 5402 document.addEventListener("touchstart", dummyEventListener); 5403 dummyEventAttached = true 5404 } 5405 } 5406 if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) { 5407 el.addEventListener("mousedown", swiper.onTouchStart, false); 5408 document.addEventListener("mousemove", swiper.onTouchMove, capture); 5409 document.addEventListener("mouseup", swiper.onTouchEnd, false) 5410 } 5411 } 5412 if (params.preventClicks || params.preventClicksPropagation) { 5413 el.addEventListener("click", swiper.onClick, true) 5414 } 5415 if (params.cssMode) { 5416 wrapperEl.addEventListener("scroll", swiper.onScroll) 5417 } 5418 if (params.updateOnWindowResize) { 5419 swiper.on(device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize, true) 5420 } else { 5421 swiper.on("observerUpdate", onResize, true) 5422 } 5423 } 5424 5425 function detachEvents() { 5426 var swiper = this; 5427 var document = getDocument(); 5428 var params = swiper.params, touchEvents = swiper.touchEvents, el = swiper.el, wrapperEl = swiper.wrapperEl, 5429 device = swiper.device, support = swiper.support; 5430 var capture = !!params.nested; 5431 if (!support.touch && support.pointerEvents) { 5432 el.removeEventListener(touchEvents.start, swiper.onTouchStart, false); 5433 document.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 5434 document.removeEventListener(touchEvents.end, swiper.onTouchEnd, false) 5435 } else { 5436 if (support.touch) { 5437 var passiveListener = touchEvents.start === "onTouchStart" && support.passiveListener && params.passiveListeners ? { 5438 passive: true, 5439 capture: false 5440 } : false; 5441 el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener); 5442 el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture); 5443 el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener); 5444 if (touchEvents.cancel) { 5445 el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener) 5446 } 5447 } 5448 if (params.simulateTouch && !device.ios && !device.android || params.simulateTouch && !support.touch && device.ios) { 5449 el.removeEventListener("mousedown", swiper.onTouchStart, false); 5450 document.removeEventListener("mousemove", swiper.onTouchMove, capture); 5451 document.removeEventListener("mouseup", swiper.onTouchEnd, false) 5452 } 5453 } 5454 if (params.preventClicks || params.preventClicksPropagation) { 5455 el.removeEventListener("click", swiper.onClick, true) 5456 } 5457 if (params.cssMode) { 5458 wrapperEl.removeEventListener("scroll", swiper.onScroll) 5459 } 5460 swiper.off(device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize) 5461 } 5462 5463 var events = {attachEvents: attachEvents, detachEvents: detachEvents}; 5464 5465 function setBreakpoint() { 5466 var swiper = this; 5467 var activeIndex = swiper.activeIndex, initialized = swiper.initialized, 5468 _swiper$loopedSlides = swiper.loopedSlides, 5469 loopedSlides = _swiper$loopedSlides === void 0 ? 0 : _swiper$loopedSlides, params = swiper.params, 5470 $el = swiper.$el; 5471 var breakpoints = params.breakpoints; 5472 if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) { 5473 return 5474 }
5475 var breakpoint = swiper.getBreakpoint(breakpoints); 5476 if (breakpoint && swiper.currentBreakpoint !== breakpoint) { 5477 var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; 5478 if (breakpointOnlyParams) { 5479 ["slidesPerView", "spaceBetween", "slidesPerGroup", "slidesPerGroupSkip", "slidesPerColumn"].forEach(function (param) { 5480 var paramValue = breakpointOnlyParams[param]; 5481 if (typeof paramValue === "undefined") { 5482 return 5483 } 5484 if (param === "slidesPerView" && (paramValue === "AUTO" || paramValue === "auto")) { 5485 breakpointOnlyParams[param] = "auto" 5486 } else { 5487 if (param === "slidesPerView") { 5488 breakpointOnlyParams[param] = parseFloat(paramValue) 5489 } else { 5490 breakpointOnlyParams[param] = parseInt(paramValue, 10) 5491 } 5492 } 5493 }) 5494 } 5495 var breakpointParams = breakpointOnlyParams || swiper.originalParams; 5496 var wasMultiRow = params.slidesPerColumn > 1; 5497 var isMultiRow = breakpointParams.slidesPerColumn > 1; 5498 if (wasMultiRow && !isMultiRow) { 5499 $el.removeClass(params.containerModifierClass + "multirow " + params.containerModifierClass + "multirow-column"); 5500 swiper.emitContainerClasses() 5501 } else { 5502 if (!wasMultiRow && isMultiRow) { 5503 $el.addClass(params.containerModifierClass + "multirow"); 5504 if (breakpointParams.slidesPerColumnFill === "column") { 5505 $el.addClass(params.containerModifierClass + "multirow-column") 5506 } 5507 swiper.emitContainerClasses() 5508 } 5509 } 5510 var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; 5511 var needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); 5512 if (directionChanged && initialized) { 5513 swiper.changeDirection() 5514 } 5515 extend$1(swiper.params, breakpointParams); 5516 extend$1(swiper, { 5517 allowTouchMove: swiper.params.allowTouchMove, 5518 allowSlideNext: swiper.params.allowSlideNext, 5519 allowSlidePrev: swiper.params.allowSlidePrev 5520 }); 5521 swiper.currentBreakpoint = breakpoint; 5522 swiper.emit("_beforeBreakpoint", breakpointParams); 5523 if (needsReLoop && initialized) { 5524 swiper.loopDestroy(); 5525 swiper.loopCreate(); 5526 swiper.updateSlides(); 5527 swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false) 5528 } 5529 swiper.emit("breakpoint", breakpointParams) 5530 } 5531 } 5532 5533 function getBreakpoints(breakpoints) { 5534 var window = getWindow(); 5535 if (!breakpoints) { 5536 return undefined 5537 } 5538 var breakpoint = false; 5539 var points = Object.keys(breakpoints).map(function (point) { 5540 if (typeof point === "string" && point.indexOf("@") === 0) { 5541 var minRatio = parseFloat(point.substr(1)); 5542 var value = window.innerHeight * minRatio; 5543 return {value: value, point: point} 5544 } 5545 return {value: point, point: point} 5546 }); 5547 points.sort(function (a, b) { 5548 return parseInt(a.value, 10) - parseInt(b.value, 10) 5549 }); 5550 for (var i = 0; i < points.length; i += 1) { 5551 var _points$i = points[i], point = _points$i.point, value = _points$i.value; 5552 if (value <= window.innerWidth) { 5553 breakpoint = point 5554 } 5555 } 5556 return breakpoint || "max" 5557 } 5558 5559 var breakpoints = {setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoints}; 5560 5561 function addClasses() { 5562 var swiper = this; 5563 var classNames = swiper.classNames, params = swiper.params, rtl = swiper.rtl, $el = swiper.$el, 5564 device = swiper.device; 5565 var suffixes = []; 5566 suffixes.push("initialized"); 5567 suffixes.push(params.direction); 5568 if (params.freeMode) { 5569 suffixes.push("free-mode") 5570 } 5571 if (params.autoHeight) { 5572 suffixes.push("autoheight") 5573 } 5574 if (rtl) { 5575 suffixes.push("rtl") 5576 } 5577 if (params.slidesPerColumn > 1) { 5578 suffixes.push("multirow"); 5579 if (params.slidesPerColumnFill === "column") { 5580 suffixes.push("multirow-column") 5581 } 5582 } 5583 if (device.android) { 5584 suffixes.push("android") 5585 } 5586 if (device.ios) { 5587 suffixes.push("ios") 5588 } 5589 if (params.cssMode) { 5590 suffixes.push("css-mode") 5591 }
5592 suffixes.forEach(function (suffix) { 5593 classNames.push(params.containerModifierClass + suffix) 5594 }); 5595 $el.addClass(classNames.join(" ")); 5596 swiper.emitContainerClasses() 5597 } 5598 5599 function removeClasses() { 5600 var swiper = this; 5601 var $el = swiper.$el, classNames = swiper.classNames; 5602 $el.removeClass(classNames.join(" ")); 5603 swiper.emitContainerClasses() 5604 } 5605 5606 var classes = {addClasses: addClasses, removeClasses: removeClasses}; 5607 5608 function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) { 5609 var window = getWindow(); 5610 var image; 5611 5612 function onReady() { 5613 if (callback) { 5614 callback() 5615 } 5616 } 5617 5618 var isPicture = $(imageEl).parent("picture")[0]; 5619 if (!isPicture && (!imageEl.complete || !checkForComplete)) { 5620 if (src) { 5621 image = new window.Image(); 5622 image.onload = onReady; 5623 image.onerror = onReady; 5624 if (sizes) { 5625 image.sizes = sizes 5626 } 5627 if (srcset) { 5628 image.srcset = srcset 5629 } 5630 if (src) { 5631 image.src = src 5632 } 5633 } else { 5634 onReady() 5635 } 5636 } else { 5637 onReady() 5638 } 5639 } 5640 5641 function preloadImages() { 5642 var swiper = this; 5643 swiper.imagesToLoad = swiper.$el.find("img"); 5644 5645 function onReady() { 5646 if (typeof swiper === "undefined" || swiper === null || !swiper || swiper.destroyed) { 5647 return 5648 } 5649 if (swiper.imagesLoaded !== undefined) { 5650 swiper.imagesLoaded += 1 5651 } 5652 if (swiper.imagesLoaded === swiper.imagesToLoad.length) { 5653 if (swiper.params.updateOnImagesReady) { 5654 swiper.update() 5655 } 5656 swiper.emit("imagesReady") 5657 } 5658 } 5659 5660 for (var i = 0; i < swiper.imagesToLoad.length; i += 1) { 5661 var imageEl = swiper.imagesToLoad[i]; 5662 swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute("src"), imageEl.srcset || imageEl.getAttribute("srcset"), imageEl.sizes || imageEl.getAttribute("sizes"), true, onReady) 5663 } 5664 } 5665 5666 var images = {loadImage: loadImage, preloadImages: preloadImages}; 5667 5668 function checkOverflow() { 5669 var swiper = this; 5670 var params = swiper.params; 5671 var wasLocked = swiper.isLocked; 5672 var lastSlidePosition = swiper.slides.length > 0 && params.slidesOffsetBefore + params.spaceBetween * (swiper.slides.length - 1) + swiper.slides[0].offsetWidth * swiper.slides.length; 5673 if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) { 5674 swiper.isLocked = lastSlidePosition <= swiper.size 5675 } else { 5676 swiper.isLocked = swiper.snapGrid.length === 1 5677 } 5678 swiper.allowSlideNext = !swiper.isLocked; 5679 swiper.allowSlidePrev = !swiper.isLocked; 5680 if (wasLocked !== swiper.isLocked) { 5681 swiper.emit(swiper.isLocked ? "lock" : "unlock") 5682 } 5683 if (wasLocked && wasLocked !== swiper.isLocked) { 5684 swiper.isEnd = false; 5685 if (swiper.navigation) { 5686 swiper.navigation.update() 5687 } 5688 } 5689 } 5690 5691 var checkOverflow$1 = {checkOverflow: checkOverflow}; 5692 var defaults = { 5693 init: true, 5694 direction: "horizontal", 5695 touchEventsTarget: "container", 5696 initialSlide: 0, 5697 speed: 300, 5698 cssMode: false, 5699 updateOnWindowResize: true, 5700 nested: false, 5701 width: null, 5702 height: null, 5703 preventInteractionOnTransition: false, 5704 userAgent: null, 5705 url: null, 5706 edgeSwipeDetection: false, 5707 edgeSwipeThreshold: 20, 5708 freeMode: false, 5709 freeModeMomentum: true, 5710 freeModeMomentumRatio: 1, 5711 freeModeMomentumBounce: true, 5712 freeModeMomentumBounceRatio: 1, 5713 freeModeMomentumVelocityRatio: 1,
5714 freeModeSticky: false, 5715 freeModeMinimumVelocity: 0.02, 5716 autoHeight: false, 5717 setWrapperSize: false, 5718 virtualTranslate: false, 5719 effect: "slide", 5720 breakpoints: undefined, 5721 spaceBetween: 0, 5722 slidesPerView: 1, 5723 slidesPerColumn: 1, 5724 slidesPerColumnFill: "column", 5725 slidesPerGroup: 1, 5726 slidesPerGroupSkip: 0, 5727 centeredSlides: false, 5728 centeredSlidesBounds: false, 5729 slidesOffsetBefore: 0, 5730 slidesOffsetAfter: 0, 5731 normalizeSlideIndex: true, 5732 centerInsufficientSlides: false, 5733 watchOverflow: false, 5734 roundLengths: false, 5735 touchRatio: 1, 5736 touchAngle: 45, 5737 simulateTouch: true, 5738 shortSwipes: true, 5739 longSwipes: true, 5740 longSwipesRatio: 0.5, 5741 longSwipesMs: 300, 5742 followFinger: true, 5743 allowTouchMove: true, 5744 threshold: 0, 5745 touchMoveStopPropagation: false, 5746 touchStartPreventDefault: true, 5747 touchStartForcePreventDefault: false, 5748 touchReleaseOnEdges: false, 5749 uniqueNavElements: true, 5750 resistance: true, 5751 resistanceRatio: 0.85, 5752 watchSlidesProgress: false, 5753 watchSlidesVisibility: false, 5754 grabCursor: false, 5755 preventClicks: true, 5756 preventClicksPropagation: true, 5757 slideToClickedSlide: false, 5758 preloadImages: true, 5759 updateOnImagesReady: true, 5760 loop: false, 5761 loopAdditionalSlides: 0, 5762 loopedSlides: null, 5763 loopFillGroupWithBlank: false, 5764 loopPreventsSlide: true, 5765 allowSlidePrev: true, 5766 allowSlideNext: true, 5767 swipeHandler: null, 5768 noSwiping: true, 5769 noSwipingClass: "swiper-no-swiping", 5770 noSwipingSelector: null, 5771 passiveListeners: true, 5772 containerModifierClass: "swiper-container-", 5773 slideClass: "swiper-slide", 5774 slideBlankClass: "swiper-slide-invisible-blank", 5775 slideActiveClass: "swiper-slide-active", 5776 slideDuplicateActiveClass: "swiper-slide-duplicate-active", 5777 slideVisibleClass: "swiper-slide-visible", 5778 slideDuplicateClass: "swiper-slide-duplicate", 5779 slideNextClass: "swiper-slide-next", 5780 slideDuplicateNextClass: "swiper-slide-duplicate-next", 5781 slidePrevClass: "swiper-slide-prev", 5782 slideDuplicatePrevClass: "swiper-slide-duplicate-prev", 5783 wrapperClass: "swiper-wrapper", 5784 runCallbacksOnInit: true, 5785 _emitClasses: false 5786 }; 5787 var prototypes = { 5788 modular: modular, 5789 eventsEmitter: eventsEmitter, 5790 update: update, 5791 translate: translate, 5792 transition: transition$1, 5793 slide: slide, 5794 loop: loop, 5795 grabCursor: grabCursor, 5796 manipulation: manipulation, 5797 events: events, 5798 breakpoints: breakpoints, 5799 checkOverflow: checkOverflow$1, 5800 classes: classes, 5801 images: images 5802 }; 5803 var extendedDefaults = {}; 5804 var Swiper = function () { 5805 function Swiper() { 5806 var el; 5807 var params; 5808 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 5809 args[_key] = arguments[_key] 5810 } 5811 if (args.length === 1 && args[0].constructor && args[0].constructor === Object) { 5812 params = args[0] 5813 } else { 5814 el = args[0]; 5815 params = args[1] 5816 } 5817 if (!params) { 5818 params = {} 5819 } 5820 params = extend$1({}, params); 5821 if (el && !params.el) { 5822 params.el = el 5823 } 5824 var swiper = this;
5825 swiper.support = getSupport(); 5826 swiper.device = getDevice({userAgent: params.userAgent}); 5827 swiper.browser = getBrowser(); 5828 swiper.eventsListeners = {}; 5829 swiper.eventsAnyListeners = []; 5830 if (typeof swiper.modules === "undefined") { 5831 swiper.modules = {} 5832 } 5833 Object.keys(swiper.modules).forEach(function (moduleName) { 5834 var module = swiper.modules[moduleName]; 5835 if (module.params) { 5836 var moduleParamName = Object.keys(module.params)[0]; 5837 var moduleParams = module.params[moduleParamName]; 5838 if (typeof moduleParams !== "object" || moduleParams === null) { 5839 return 5840 } 5841 if (!(moduleParamName in params && "enabled" in moduleParams)) { 5842 return 5843 } 5844 if (params[moduleParamName] === true) { 5845 params[moduleParamName] = {enabled: true} 5846 } 5847 if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) { 5848 params[moduleParamName].enabled = true 5849 } 5850 if (!params[moduleParamName]) { 5851 params[moduleParamName] = {enabled: false} 5852 } 5853 } 5854 }); 5855 var swiperParams = extend$1({}, defaults); 5856 swiper.useParams(swiperParams); 5857 swiper.params = extend$1({}, swiperParams, extendedDefaults, params); 5858 swiper.originalParams = extend$1({}, swiper.params); 5859 swiper.passedParams = extend$1({}, params); 5860 if (swiper.params && swiper.params.on) {
5861 Object.keys(swiper.params.on).forEach(function (eventName) { 5862 swiper.on(eventName, swiper.params.on[eventName]) 5863 }) 5864 } 5865 if (swiper.params && swiper.params.onAny) { 5866 swiper.onAny(swiper.params.onAny) 5867 } 5868 swiper.$ = $; 5869 var $el = $(swiper.params.el); 5870 el = $el[0]; 5871 if (!el) { 5872 return undefined 5873 } 5874 if ($el.length > 1) { 5875 var swipers = []; 5876 $el.each(function (containerEl) { 5877 var newParams = extend$1({}, params, {el: containerEl}); 5878 swipers.push(new Swiper(newParams)) 5879 }); 5880 return swipers 5881 } 5882 el.swiper = swiper; 5883 var $wrapperEl; 5884 if (el && el.shadowRoot && el.shadowRoot.querySelector) { 5885 $wrapperEl = $(el.shadowRoot.querySelector("." + swiper.params.wrapperClass)); 5886 $wrapperEl.children = function (options) { 5887 return $el.children(options) 5888 } 5889 } else { 5890 $wrapperEl = $el.children("." + swiper.params.wrapperClass) 5891 } 5892 extend$1(swiper, { 5893 $el: $el, 5894 el: el, 5895 $wrapperEl: $wrapperEl, 5896 wrapperEl: $wrapperEl[0], 5897 classNames: [], 5898 slides: $(), 5899 slidesGrid: [], 5900 snapGrid: [], 5901 slidesSizesGrid: [], 5902 isHorizontal: function isHorizontal() { 5903 return swiper.params.direction === "horizontal" 5904 }, 5905 isVertical: function isVertical() { 5906 return swiper.params.direction === "vertical" 5907 }, 5908 rtl: el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl", 5909 rtlTranslate: swiper.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || $el.css("direction") === "rtl"), 5910 wrongRTL: $wrapperEl.css("display") === "-webkit-box", 5911 activeIndex: 0, 5912 realIndex: 0, 5913 isBeginning: true, 5914 isEnd: false, 5915 translate: 0, 5916 previousTranslate: 0, 5917 progress: 0, 5918 velocity: 0, 5919 animating: false, 5920 allowSlideNext: swiper.params.allowSlideNext, 5921 allowSlidePrev: swiper.params.allowSlidePrev, 5922 touchEvents: function touchEvents() { 5923 var touch = ["touchstart", "touchmove", "touchend", "touchcancel"]; 5924 var desktop = ["mousedown", "mousemove", "mouseup"]; 5925 if (swiper.support.pointerEvents) { 5926 desktop = ["pointerdown", "pointermove", "pointerup"] 5927 } 5928 swiper.touchEventsTouch = {start: touch[0], move: touch[1], end: touch[2], cancel: touch[3]}; 5929 swiper.touchEventsDesktop = {start: desktop[0], move: desktop[1], end: desktop[2]}; 5930 return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop 5931 }(), 5932 touchEventsData: { 5933 isTouched: undefined, 5934 isMoved: undefined, 5935 allowTouchCallbacks: undefined, 5936 touchStartTime: undefined, 5937 isScrolling: undefined, 5938 currentTranslate: undefined, 5939 startTranslate: undefined, 5940 allowThresholdMove: undefined, 5941 formElements: "input, select, option, textarea, button, video, label", 5942 lastClickTime: now(), 5943 clickTimeout: undefined, 5944 velocities: [], 5945 allowMomentumBounce: undefined, 5946 isTouchEvent: undefined, 5947 startMoving: undefined 5948 }, 5949 allowClick: true, 5950 allowTouchMove: swiper.params.allowTouchMove, 5951 touches: {startX: 0, startY: 0, currentX: 0, currentY: 0, diff: 0}, 5952 imagesToLoad: [], 5953 imagesLoaded: 0 5954 }); 5955 swiper.useModules(); 5956 swiper.emit("_swiper"); 5957 if (swiper.params.init) { 5958 swiper.init() 5959 } 5960 return swiper 5961 } 5962 5963 var _proto = Swiper.prototype; 5964 _proto.emitContainerClasses = function emitContainerClasses() { 5965 var swiper = this; 5966 if (!swiper.params._emitClasses || !swiper.el) { 5967 return 5968 } 5969 var classes = swiper.el.className.split(" ").filter(function (className) { 5970 return className.indexOf("swiper-container") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0 5971 }); 5972 swiper.emit("_containerClasses", classes.join(" ")) 5973 };
5974 _proto.getSlideClasses = function getSlideClasses(slideEl) { 5975 var swiper = this; 5976 return slideEl.className.split(" ").filter(function (className) { 5977 return className.indexOf("swiper-slide") === 0 || className.indexOf(swiper.params.slideClass) === 0 5978 }).join(" ") 5979 }; 5980 _proto.emitSlidesClasses = function emitSlidesClasses() { 5981 var swiper = this; 5982 if (!swiper.params._emitClasses || !swiper.el) { 5983 return 5984 } 5985 swiper.slides.each(function (slideEl) { 5986 var classNames = swiper.getSlideClasses(slideEl); 5987 swiper.emit("_slideClass", slideEl, classNames) 5988 }) 5989 }; 5990 _proto.slidesPerViewDynamic = function slidesPerViewDynamic() { 5991 var swiper = this; 5992 var params = swiper.params, slides = swiper.slides, slidesGrid = swiper.slidesGrid, 5993 swiperSize = swiper.size, activeIndex = swiper.activeIndex; 5994 var spv = 1; 5995 if (params.centeredSlides) { 5996 var slideSize = slides[activeIndex].swiperSlideSize; 5997 var breakLoop; 5998 for (var i = activeIndex + 1; i < slides.length; i += 1) { 5999 if (slides[i] && !breakLoop) { 6000 slideSize += slides[i].swiperSlideSize; 6001 spv += 1; 6002 if (slideSize > swiperSize) { 6003 breakLoop = true 6004 } 6005 } 6006 } 6007 for (var _i = activeIndex - 1; _i >= 0; _i -= 1) { 6008 if (slides[_i] && !breakLoop) { 6009 slideSize += slides[_i].swiperSlideSize; 6010 spv += 1; 6011 if (slideSize > swiperSize) { 6012 breakLoop = true 6013 } 6014 } 6015 } 6016 } else { 6017 for (var _i2 = activeIndex + 1; _i2 < slides.length; _i2 += 1) { 6018 if (slidesGrid[_i2] - slidesGrid[activeIndex] < swiperSize) { 6019 spv += 1 6020 } 6021 } 6022 } 6023 return spv 6024 }; 6025 _proto.update = function update() { 6026 var swiper = this; 6027 if (!swiper || swiper.destroyed) { 6028 return 6029 } 6030 var snapGrid = swiper.snapGrid, params = swiper.params; 6031 if (params.breakpoints) { 6032 swiper.setBreakpoint() 6033 } 6034 swiper.updateSize(); 6035 swiper.updateSlides(); 6036 swiper.updateProgress(); 6037 swiper.updateSlidesClasses(); 6038 6039 function setTranslate() { 6040 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; 6041 var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); 6042 swiper.setTranslate(newTranslate); 6043 swiper.updateActiveIndex(); 6044 swiper.updateSlidesClasses() 6045 } 6046 6047 var translated; 6048 if (swiper.params.freeMode) { 6049 setTranslate(); 6050 if (swiper.params.autoHeight) { 6051 swiper.updateAutoHeight() 6052 } 6053 } else { 6054 if ((swiper.params.slidesPerView === "auto" || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) { 6055 translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true) 6056 } else { 6057 translated = swiper.slideTo(swiper.activeIndex, 0, false, true) 6058 } 6059 if (!translated) { 6060 setTranslate() 6061 } 6062 } 6063 if (params.watchOverflow && snapGrid !== swiper.snapGrid) { 6064 swiper.checkOverflow() 6065 } 6066 swiper.emit("update") 6067 }; 6068 _proto.changeDirection = function changeDirection(newDirection, needUpdate) { 6069 if (needUpdate === void 0) { 6070 needUpdate = true 6071 } 6072 var swiper = this; 6073 var currentDirection = swiper.params.direction; 6074 if (!newDirection) { 6075 newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal" 6076 } 6077 if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") { 6078 return swiper 6079 } 6080 swiper.$el.removeClass("" + swiper.params.containerModifierClass + currentDirection).addClass("" + swiper.params.containerModifierClass + newDirection); 6081 swiper.emitContainerClasses(); 6082 swiper.params.direction = newDirection; 6083 swiper.slides.each(function (slideEl) { 6084 if (newDirection === "vertical") { 6085 slideEl.style.width = "" 6086 } else { 6087 slideEl.style.height = "" 6088 } 6089 }); 6090 swiper.emit("changeDirection"); 6091 if (needUpdate) {
6092 swiper.update() 6093 } 6094 return swiper 6095 }; 6096 _proto.init = function init() { 6097 var swiper = this; 6098 if (swiper.initialized) { 6099 return 6100 } 6101 swiper.emit("beforeInit"); 6102 if (swiper.params.breakpoints) { 6103 swiper.setBreakpoint() 6104 } 6105 swiper.addClasses(); 6106 if (swiper.params.loop) { 6107 swiper.loopCreate() 6108 } 6109 swiper.updateSize(); 6110 swiper.updateSlides(); 6111 if (swiper.params.watchOverflow) { 6112 swiper.checkOverflow() 6113 } 6114 if (swiper.params.grabCursor) { 6115 swiper.setGrabCursor() 6116 } 6117 if (swiper.params.preloadImages) { 6118 swiper.preloadImages() 6119 } 6120 if (swiper.params.loop) { 6121 swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit) 6122 } else { 6123 swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit) 6124 } 6125 swiper.attachEvents(); 6126 swiper.initialized = true; 6127 swiper.emit("init"); 6128 swiper.emit("afterInit") 6129 }; 6130 _proto.destroy = function destroy(deleteInstance, cleanStyles) { 6131 if (deleteInstance === void 0) { 6132 deleteInstance = true 6133 } 6134 if (cleanStyles === void 0) { 6135 cleanStyles = true 6136 } 6137 var swiper = this; 6138 var params = swiper.params, $el = swiper.$el, $wrapperEl = swiper.$wrapperEl, slides = swiper.slides; 6139 if (typeof swiper.params === "undefined" || swiper.destroyed) { 6140 return null 6141 } 6142 swiper.emit("beforeDestroy"); 6143 swiper.initialized = false; 6144 swiper.detachEvents(); 6145 if (params.loop) { 6146 swiper.loopDestroy() 6147 } 6148 if (cleanStyles) { 6149 swiper.removeClasses(); 6150 $el.removeAttr("style"); 6151 $wrapperEl.removeAttr("style"); 6152 if (slides && slides.length) { 6153 slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index") 6154 } 6155 } 6156 swiper.emit("destroy"); 6157 Object.keys(swiper.eventsListeners).forEach(function (eventName) { 6158 swiper.off(eventName) 6159 }); 6160 if (deleteInstance !== false) { 6161 swiper.$el[0].swiper = null; 6162 deleteProps(swiper) 6163 } 6164 swiper.destroyed = true; 6165 return null 6166 }; 6167 Swiper.extendDefaults = function extendDefaults(newDefaults) { 6168 extend$1(extendedDefaults, newDefaults) 6169 }; 6170 Swiper.installModule = function installModule(module) { 6171 if (!Swiper.prototype.modules) { 6172 Swiper.prototype.modules = {} 6173 } 6174 var name = module.name || Object.keys(Swiper.prototype.modules).length + "_" + now(); 6175 Swiper.prototype.modules[name] = module 6176 }; 6177 Swiper.use = function use(module) { 6178 if (Array.isArray(module)) { 6179 module.forEach(function (m) { 6180 return Swiper.installModule(m) 6181 }); 6182 return Swiper 6183 } 6184 Swiper.installModule(module); 6185 return Swiper 6186 }; 6187 _createClass(Swiper, null, [{ 6188 key: "extendedDefaults", get: function get() { 6189 return extendedDefaults 6190 } 6191 }, { 6192 key: "defaults", get: function get() { 6193 return defaults 6194 } 6195 }]); 6196 return Swiper 6197 }(); 6198 Object.keys(prototypes).forEach(function (prototypeGroup) { 6199 Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) { 6200 Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod] 6201 }) 6202 }); 6203 Swiper.use([Resize, Observer$1]); 6204 var Navigation = {
6205 update: function update() { 6206 var swiper = this; 6207 var params = swiper.params.navigation; 6208 if (swiper.params.loop) { 6209 return 6210 } 6211 var _swiper$navigation = swiper.navigation, $nextEl = _swiper$navigation.$nextEl, 6212 $prevEl = _swiper$navigation.$prevEl; 6213 if ($prevEl && $prevEl.length > 0) { 6214 if (swiper.isBeginning) { 6215 $prevEl.addClass(params.disabledClass) 6216 } else { 6217 $prevEl.removeClass(params.disabledClass) 6218 } 6219 $prevEl[swiper.params.watchOverflow && swiper.isLocked ? "addClass" : "removeClass"](params.lockClass) 6220 } 6221 if ($nextEl && $nextEl.length > 0) { 6222 if (swiper.isEnd) { 6223 $nextEl.addClass(params.disabledClass) 6224 } else { 6225 $nextEl.removeClass(params.disabledClass) 6226 } 6227 $nextEl[swiper.params.watchOverflow && swiper.isLocked ? "addClass" : "removeClass"](params.lockClass) 6228 } 6229 }, onPrevClick: function onPrevClick(e) { 6230 var swiper = this; 6231 e.preventDefault(); 6232 if (swiper.isBeginning && !swiper.params.loop) { 6233 return 6234 } 6235 swiper.slidePrev() 6236 }, onNextClick: function onNextClick(e) { 6237 var swiper = this; 6238 e.preventDefault(); 6239 if (swiper.isEnd && !swiper.params.loop) { 6240 return 6241 } 6242 swiper.slideNext() 6243 }, init: function init() { 6244 var swiper = this; 6245 var params = swiper.params.navigation; 6246 if (!(params.nextEl || params.prevEl)) { 6247 return 6248 } 6249 var $nextEl; 6250 var $prevEl; 6251 if (params.nextEl) { 6252 $nextEl = $(params.nextEl); 6253 if (swiper.params.uniqueNavElements && typeof params.nextEl === "string" && $nextEl.length > 1 && swiper.$el.find(params.nextEl).length === 1) { 6254 $nextEl = swiper.$el.find(params.nextEl) 6255 } 6256 } 6257 if (params.prevEl) { 6258 $prevEl = $(params.prevEl); 6259 if (swiper.params.uniqueNavElements && typeof params.prevEl === "string" && $prevEl.length > 1 && swiper.$el.find(params.prevEl).length === 1) { 6260 $prevEl = swiper.$el.find(params.prevEl) 6261 } 6262 } 6263 if ($nextEl && $nextEl.length > 0) { 6264 $nextEl.on("click", swiper.navigation.onNextClick) 6265 } 6266 if ($prevEl && $prevEl.length > 0) { 6267 $prevEl.on("click", swiper.navigation.onPrevClick) 6268 } 6269 extend$1(swiper.navigation, { 6270 $nextEl: $nextEl, 6271 nextEl: $nextEl && $nextEl[0], 6272 $prevEl: $prevEl, 6273 prevEl: $prevEl && $prevEl[0] 6274 }) 6275 }, destroy: function destroy() { 6276 var swiper = this; 6277 var _swiper$navigation2 = swiper.navigation, $nextEl = _swiper$navigation2.$nextEl, 6278 $prevEl = _swiper$navigation2.$prevEl; 6279 if ($nextEl && $nextEl.length) { 6280 $nextEl.off("click", swiper.navigation.onNextClick); 6281 $nextEl.removeClass(swiper.params.navigation.disabledClass) 6282 } 6283 if ($prevEl && $prevEl.length) { 6284 $prevEl.off("click", swiper.navigation.onPrevClick); 6285 $prevEl.removeClass(swiper.params.navigation.disabledClass) 6286 } 6287 } 6288 }; 6289 var Navigation$1 = { 6290 name: "navigation", 6291 params: { 6292 navigation: { 6293 nextEl: null, 6294 prevEl: null, 6295 hideOnClick: false, 6296 disabledClass: "swiper-button-disabled", 6297 hiddenClass: "swiper-button-hidden", 6298 lockClass: "swiper-button-lock" 6299 } 6300 }, 6301 create: function create() { 6302 var swiper = this; 6303 bindModuleMethods(swiper, {navigation: _extends({}, Navigation)}) 6304 }, 6305 on: { 6306 init: function init(swiper) { 6307 swiper.navigation.init(); 6308 swiper.navigation.update() 6309 }, toEdge: function toEdge(swiper) { 6310 swiper.navigation.update() 6311 }
6311, fromEdge: function fromEdge(swiper) { 6312 swiper.navigation.update() 6313 }, destroy: function destroy(swiper) { 6314 swiper.navigation.destroy() 6315 }, click: function click(swiper, e) { 6316 var _swiper$navigation3 = swiper.navigation, $nextEl = _swiper$navigation3.$nextEl, 6317 $prevEl = _swiper$navigation3.$prevEl; 6318 if (swiper.params.navigation.hideOnClick && !$(e.target).is($prevEl) && !$(e.target).is($nextEl)) { 6319 var isHidden; 6320 if ($nextEl) { 6321 isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass) 6322 } else { 6323 if ($prevEl) { 6324 isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass) 6325 } 6326 } 6327 if (isHidden === true) { 6328 swiper.emit("navigationShow") 6329 } else { 6330 swiper.emit("navigationHide") 6331 } 6332 if ($nextEl) { 6333 $nextEl.toggleClass(swiper.params.navigation.hiddenClass) 6334 } 6335 if ($prevEl) { 6336 $prevEl.toggleClass(swiper.params.navigation.hiddenClass) 6337 } 6338 } 6339 } 6340 } 6341 }; 6342 var Pagination = { 6343 update: function update() { 6344 var swiper = this; 6345 var rtl = swiper.rtl; 6346 var params = swiper.params.pagination; 6347 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { 6348 return 6349 } 6350 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 6351 var $el = swiper.pagination.$el; 6352 var current; 6353 var total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 6354 if (swiper.params.loop) { 6355 current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup); 6356 if (current > slidesLength - 1 - swiper.loopedSlides * 2) { 6357 current -= slidesLength - swiper.loopedSlides * 2 6358 } 6359 if (current > total - 1) { 6360 current -= total 6361 } 6362 if (current < 0 && swiper.params.paginationType !== "bullets") { 6363 current = total + current 6364 } 6365 } else { 6366 if (typeof swiper.snapIndex !== "undefined") { 6367 current = swiper.snapIndex 6368 } else { 6369 current = swiper.activeIndex || 0 6370 } 6371 } 6372 if (params.type === "bullets" && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { 6373 var bullets = swiper.pagination.bullets; 6374 var firstIndex; 6375 var lastIndex; 6376 var midIndex; 6377 if (params.dynamicBullets) { 6378 swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? "outerWidth" : "outerHeight"](true); 6379 $el.css(swiper.isHorizontal() ? "width" : "height", swiper.pagination.bulletSize * (params.dynamicMainBullets + 4) + "px"); 6380 if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) { 6381 swiper.pagination.dynamicBulletIndex += current - swiper.previousIndex; 6382 if (swiper.pagination.dynamicBulletIndex > params.dynamicMainBullets - 1) { 6383 swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1 6384 } else { 6385 if (swiper.pagination.dynamicBulletIndex < 0) { 6386 swiper.pagination.dynamicBulletIndex = 0 6387 } 6388 } 6389 } 6390 firstIndex = current - swiper.pagination.dynamicBulletIndex; 6391 lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); 6392 midIndex = (lastIndex + firstIndex) / 2 6393 } 6394 bullets.removeClass(params.bulletActiveClass + " " + params.bulletActiveClass + "-next " + params.bulletActiveClass + "-next-next " + params.bulletActiveClass + "-prev " + params.bulletActiveClass + "-prev-prev " + params.bulletActiveClass + "-main"); 6395 if ($el.length > 1) { 6396 bullets.each(function (bullet) { 6397 var $bullet = $(bullet); 6398 var bulletIndex = $bullet.index(); 6399 if (bulletIndex === current) { 6400 $bullet.addClass(params.bulletActiveClass) 6401 } 6402 if (params.dynamicBullets) { 6403 if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { 6404 $bullet.addClass(params.bulletActiveClass + "-main") 6405 } 6406 if (bulletIndex === firstIndex) { 6407 $bullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev") 6408 } 6409 if (bulletIndex === lastIndex) { 6410 $bullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next") 6411 } 6412 } 6413 }) 6414 } else { 6415 var $bullet = bullets.eq(current); 6416 var bulletIndex = $bullet.index(); 6417 $bullet.addClass(params.bulletActiveClass); 6418 if (params.dynamicBullets) { 6419 var $firstDisplayedBullet = bullets.eq(firstIndex); 6420 var $lastDisplayedBullet = bullets.eq(lastIndex); 6421 for (var i = firstIndex; i <= lastIndex; i += 1) { 6422 bullets.eq(i).addClass(params.bulletActiveClass + "-main") 6423 } 6424 if (swiper.params.loop) { 6425 if (bulletIndex >= bullets.length - params.dynamicMainBullets) { 6426 for (var _i = params.dynamicMainBullets; _i >= 0; _i -= 1) { 6427 bullets.eq(bullets.length - _i).addClass(params.bulletActiveClass + "-main") 6428 } 6429 bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(params.bulletActiveClass + "-prev") 6430 } else { 6431 $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev"); 6432 $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next") 6433 } 6434 } else { 6435 $firstDisplayedBullet.prev().addClass(params.bulletActiveClass + "-prev").prev().addClass(params.bulletActiveClass + "-prev-prev"); 6436 $lastDisplayedBullet.next().addClass(params.bulletActiveClass + "-next").next().addClass(params.bulletActiveClass + "-next-next") 6437 } 6438 } 6439 } 6440 if (params.dynamicBullets) { 6441 var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); 6442 var bulletsOffset = (swiper.pagination.bulletSize * dynamicBulletsLength - swiper.pagination.bulletSize) / 2 - midIndex * swiper.pagination.bulletSize; 6443 var offsetProp = rtl ? "right" : "left"; 6444 bullets.css(swiper.isHorizontal() ? offsetProp : "top", bulletsOffset + "px") 6445 } 6446 } 6447 if (params.type === "fraction") { 6448 $el.find("." + params.currentClass).text(params.formatFractionCurrent(current + 1)); 6449 $el.find("." + params.totalClass).text(params.formatFractionTotal(total)) 6450 } 6451 if (params.type === "progressbar") { 6452 var progressbarDirection; 6453 if (params.progressbarOpposite) { 6454 progressbarDirection = swiper.isHorizontal() ? "vertical" : "horizontal" 6455 } else { 6456 progressbarDirection = swiper.isHorizontal() ? "horizontal" : "vertical" 6457 } 6458 var scale = (current + 1) / total; 6459 var scaleX = 1; 6460 var scaleY = 1; 6461 if (progressbarDirection === "horizontal") { 6462 scaleX = scale 6463 } else { 6464 scaleY = scale 6465 } 6466 $el.find("." + params.progressbarFillClass).transform("translate3d(0,
64660,0) scaleX(" + scaleX + ") scaleY(" + scaleY + ")").transition(swiper.params.speed) 6467 } 6468 if (params.type === "custom" && params.renderCustom) { 6469 $el.html(params.renderCustom(swiper, current + 1, total)); 6470 swiper.emit("paginationRender", $el[0]) 6471 } else { 6472 swiper.emit("paginationUpdate", $el[0]) 6473 } 6474 $el[swiper.params.watchOverflow && swiper.isLocked ? "addClass" : "removeClass"](params.lockClass) 6475 }, render: function render() { 6476 var swiper = this; 6477 var params = swiper.params.pagination; 6478 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { 6479 return 6480 } 6481 var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; 6482 var $el = swiper.pagination.$el; 6483 var paginationHTML = ""; 6484 if (params.type === "bullets") { 6485 var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length; 6486 for (var i = 0; i < numberOfBullets; i += 1) { 6487 if (params.renderBullet) { 6488 paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass) 6489 } else { 6490 paginationHTML += "<" + params.bulletElement + ' class="' + params.bulletClass + '"></' + params.bulletElement + ">" 6491 } 6492 } 6493 $el.html(paginationHTML); 6494 swiper.pagination.bullets = $el.find("." + params.bulletClass.replace(/ /g, ".")) 6495 } 6496 if (params.type === "fraction") { 6497 if (params.renderFraction) { 6498 paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass) 6499 } else { 6500 paginationHTML = '<span class="' + params.currentClass + '"></span> / ' + ('<span class="' + params.totalClass + '"></span>') 6501 } 6502 $el.html(paginationHTML) 6503 } 6504 if (params.type === "progressbar") { 6505 if (params.renderProgressbar) { 6506 paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass) 6507 } else { 6508 paginationHTML = '<span class="' + params.progressbarFillClass + '"></span>' 6509 } 6510 $el.html(paginationHTML) 6511 } 6512 if (params.type !== "custom") { 6513 swiper.emit("paginationRender", swiper.pagination.$el[0]) 6514 } 6515 }, init: function init() { 6516 var swiper = this; 6517 var params = swiper.params.pagination; 6518 if (!params.el) { 6519 return 6520 } 6521 var $el = $(params.el); 6522 if ($el.length === 0) { 6523 return 6524 } 6525 if (swiper.params.uniqueNavElements && typeof params.el === "string" && $el.length > 1) { 6526 $el = swiper.$el.find(params.el) 6527 } 6528 if (params.type === "bullets" && params.clickable) { 6529 $el.addClass(params.clickableClass) 6530 } 6531 $el.addClass(params.modifierClass + params.type); 6532 if (params.type === "bullets" && params.dynamicBullets) { 6533 $el.addClass("" + params.modifierClass + params.type + "-dynamic"); 6534 swiper.pagination.dynamicBulletIndex = 0; 6535 if (params.dynamicMainBullets < 1) { 6536 params.dynamicMainBullets = 1 6537 } 6538 } 6539 if (params.type === "progressbar" && params.progressbarOpposite) { 6540 $el.addClass(params.progressbarOppositeClass) 6541 } 6542 if (params.clickable) { 6543 $el.on("click", "." + params.bulletClass.replace(/ /g, "."), function onClick(e) { 6544 e.preventDefault(); 6545 var index = $(this).index() * swiper.params.slidesPerGroup; 6546 if (swiper.params.loop) { 6547 index += swiper.loopedSlides 6548 } 6549 swiper.slideTo(index) 6550 }) 6551 } 6552 extend$1(swiper.pagination, {$el: $el, el: $el[0]}) 6553 }, destroy: function destroy() { 6554 var swiper = this; 6555 var params = swiper.params.pagination; 6556 if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { 6557 return 6558 } 6559 var $el = swiper.pagination.$el; 6560 $el.removeClass(params.hiddenClass); 6561 $el.removeClass(params.modifierClass + params.type); 6562 if (swiper.pagination.bullets) { 6563 swiper.pagination.bullets.removeClass(params.bulletActiveClass) 6564 } 6565 if (params.clickable) { 6566 $el.off("click", "." + params.bulletClass.replace(/ /g, ".")) 6567 } 6568 } 6569 }; 6570 var Pagination$1 = { 6571 name: "pagination", 6572 params: { 6573 pagination: { 6574 el: null, 6575 bulletElement: "span", 6576 clickable: false, 6577 hideOnClick: false, 6578 renderBullet: null, 6579 renderProgressbar: null, 6580 renderFraction: null, 6581 renderCustom: null, 6582 progressbarOpposite: false, 6583 type: "bullets", 6584 dynamicBullets: false, 6585 dynamicMainBullets: 1, 6586 formatFractionCurrent: function formatFractionCurrent(number) { 6587 return number 6588 }, 6589 formatFractionTotal: function formatFractionTotal(number) { 6590 return number 6591 }, 6592 bulletClass: "tint-swiper-pagination-bullet", 6593 bulletActiveClass: "tint-swiper-pagination-bullet-active", 6594 modifierClass: "tint-swiper-pagination-", 6595 currentClass: "tint-swiper-pagination-current", 6596 totalClass: "tint-swiper-pagination-total", 6597 hiddenClass: "tint-swiper-pagination-hidden", 6598 progressbarFillClass: "tint-swiper-pagination-progressbar-fill", 6599 progressbarOppositeClass: "tint-swiper-pagination-progressbar-opposite", 6600 clickableClass: "tint-swiper-pagination-clickable", 6601 lockClass: "tint-swiper-pagination-lock" 6602 } 6603 }, 6604 create: function create() { 6605 var swiper = this; 6606 bindModuleMethods(swiper, {pagination: _extends({dynamicBulletIndex: 0}, Pagination)}) 6607 }, 6608 on: { 6609 init: function init(swiper) { 6610 swiper.pagination.init(); 6611 swiper.pagination.render(); 6612 swiper.pagination.update() 6613 }, activeIndexChange: function activeIndexChange(swiper) { 6614 if (swiper.params.loop) { 6615 swiper.pagination.update() 6616 } else { 6617 if (typeof swiper.snapIndex === "undefined") { 6618 swiper.pagination.update() 6619 } 6620 } 6621 }, snapIndexChange: function snapIndexChange(swiper) { 6622 if (!swiper.params.loop) { 6623 swiper.pagination.update() 6624 } 6625 }, slidesLengthChange: function slidesLengthChange(swiper) { 6626 if (swiper.params.loop) { 6627 swiper.pagination.render(); 6628 swiper.pagination.update() 6629 } 6630 }, snapGridLengthChange: function snapGridLengthChange(swiper) { 6631 if (!swiper.params.loop) { 6632 swiper.pagination.render(); 6633 swiper.pagination.update() 6634 } 6635 }, destroy: function destroy(swiper) { 6636 swiper.pagination.destroy() 6637 }, click: function click(swiper, e) { 6638 if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && swiper.pagination.$el.length > 0 && !$(e.target).hasClass(swiper.params.pagination.bulletClass)) { 6639 var isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass); 6640 if (isHidden === true) { 6641 swiper.emit("paginationShow") 6642 } else { 6643 swiper.emit("paginationHide") 6644 } 6645 swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass) 6646 } 6647 } 6648 } 6649 }; 6650 var components = [Navigation$1, Pagination$1]; 6651 Swiper.use(components); 6652 return Swiper 6653}))); 6654if (window.jQuery || window.Zepto) { 6655 (function (a) { 6656 a.fn.TintSwipe = function (c) { 6657 return this.each(function () { 6658 a(this).data("TintSwipe", new TintSwipe(a(this)[0], c)) 6659 }) 6660 } 6661 })(window.jQuery || window.Zepto) 6662} 6663!function (a, d) { 6664 function f(ak, ab, ah) { 6665 ak || (ak = "div"); 6666 var an, ag, aa, U = a(ab.container), am = U.offset() || {left: 0, top: 0}, 6667 aj = [U.width() || 0, U.height() || 0], 6668 T = {x: [am.left, am.left + aj[0]], y: [am.top, am.top + aj[1]], w: [0, aj[0]], h: [0, aj[1]]}; 6669 for (an in T) { 6670 T.hasOwnProperty(an) && (aa = c.exec(ab[an]), aa && (ag = T[an], ab[an] = (ag[1] - ag[0]) * aa[1] / 100 + ag[0])) 6671 } 6672 ab.sameX === !1 && ab.checkHoriz === !1 && (ab.sameX = !ab.checkHoriz), ab.sameY === !1 && ab.checkVert === !1 && (ab.sameY = !ab.checkVert); 6673 var ad = U.find(ak), al = [], Z = !!ab.furthest, ac = !ab.sameX, J = !ab.sameY, Q = !!ab.onlyX, K = !!ab.onlyY, 6674 ai = Z ? 0 : 1 / 0, ae = parseFloat(ab.x) || 0, N = parseFloat(ab.y) || 0, t = parseFloat(ae + ab.w) || ae, 6675 q = parseFloat(N + ab.h) || N, R = parseFloat(ab.tolerance) || 0, C = !!a.fn.each2, L = Math.min, 6676 G = Math.max; 6677 !ab.includeSelf && ah && (ad = ad.not(ah)), 0 > R && (R = 0), ad[C ? "each2" : "each"](function (ar, S) { 6678 var F, ap, av, ao, M = C ? S : a(this), y = M.offset(), at = y.left, aq = y.top, x = M.outerWidth(), 6679 X = M.outerHeight(), Y = at + x, w = aq + X, v = G(at, ae), p = L(Y, t), m = G(aq, N), k = L(w, q), 6680 au = p >= v, H = k >= m; 6681 (ac && J || !ac && !J && au && H || ac && H || J && au || ac && Q || J && K) && (F = au ? 0 : v - p, ap = H ? 0 : m - k, av = Q || K ? Q ? F : ap : au || H ? G(F, ap) : Math.sqrt(F * F + ap * ap), ao = Z ? av >= ai - R : ai + R >= av, ao && (ai = Z ? G(ai, av) : L(ai, av), al.push({ 6682 node: this, 6683 dist: av 6684 }))) 6685 }); 6686 var af, I, E, D, B = al.length, A = []; 6687 if (B) {
6688 for (Z ? (af = ai - R, I = ai) : (af = ai, I = ai + R), E = 0; B > E; E++) { 6689 D = al[E], D.dist >= af && D.dist <= I && A.push(D.node) 6690 } 6691 } 6692 return A 6693 } 6694 6695 var c = /^([\d.]+)%$/; 6696 a.each(["nearest", "furthest", "touching"], function (k, j) { 6697 var i = { 6698 x: 0, 6699 y: 0, 6700 w: 0, 6701 h: 0, 6702 tolerance: 1, 6703 container: document, 6704 furthest: "furthest" == j, 6705 includeSelf: !1, 6706 sameX: "touching" === j, 6707 sameY: "touching" === j, 6708 onlyX: !1, 6709 onlyY: !1 6710 }; 6711 a[j] = function (n, m, l) { 6712 if (!n || n.x === d || n.y === d) { 6713 return a([]) 6714 } 6715 var p = a.extend({}, i, n, l || {}); 6716 return a(f(m, p)) 6717 }, a.fn[j] = function (p, n) { 6718 if (!this.length) { 6719 return this.pushStack([]) 6720 } 6721 var m; 6722 if (p && a.isPlainObject(p)) { 6723 return m = a.extend({}, i, p, n || {}), this.pushStack(f(this, m)) 6724 } 6725 var l = this.offset(), q = {x: l.left, y: l.top, w: this.outerWidth(), h: this.outerHeight()}; 6726 return m = a.extend({}, i, q, n || {}), this.pushStack(f(p, m, this)) 6727 } 6728 }) 6729}(jQuery); 6730(function (a) { 6731 a.fn.extend({ 6732 everyTime: function (d, f, h, i, c) { 6733 return this.each(function () { 6734 a.timer.add(this, d, f, h, i, c) 6735 }) 6736 }, oneTime: function (c, d, f) { 6737 return this.each(function () { 6738 a.timer.add(this, c, d, f, 1) 6739 }) 6740 }, stopTime: function (c, d) { 6741 return this.each(function () { 6742 a.timer.remove(this, c, d) 6743 }) 6744 } 6745 }); 6746 a.extend({ 6747 timer: { 6748 guid: 1, 6749 global: {}, 6750 regex: /^([0-9]+)\s*(.*s)?$/, 6751 powers: {ms: 1, cs: 10, ds: 100, s: 1000, das: 10000, hs: 100000, ks: 1000000}, 6752 timeParse: function (f) { 6753 if (f == undefined || f == null) { 6754 return null 6755 } 6756 var c = this.regex.exec(a.trim(f.toString())); 6757 if (c[2]) { 6758 var d = parseInt(c[1], 10); 6759 var h = this.powers[c[2]] || 1; 6760 return d * h 6761 } else { 6762 return f 6763 } 6764 }, 6765 add: function (i, f, h, k, l, d) { 6766 var c = 0; 6767 if (a.isFunction(h)) { 6768 if (!l) { 6769 l = k 6770 } 6771 k = h; 6772 h = f 6773 } 6774 f = a.timer.timeParse(f); 6775 if (typeof f != "number" || isNaN(f) || f <= 0) { 6776 return 6777 } 6778 if (l && l.constructor != Number) { 6779 d = !!l; 6780 l = 0 6781 } 6782 l = l || 0; 6783 d = d || false; 6784 if (!i.$timers) { 6785 i.$timers = {} 6786 } 6787 if (!i.$timers[h]) { 6788 i.$timers[h] = {} 6789 } 6790 k.$timerID = k.$timerID || this.guid++; 6791 var j = function () { 6792 if (d && this.inProgress) { 6793 return 6794 } 6795 this.inProgress = true; 6796 if ((++c > l && l !== 0) || k.call(i, c) === false) { 6797 a.timer.remove(i, h, k) 6798 } 6799 this.inProgress = false 6800 }; 6801 j.$timerID = k.$timerID; 6802 if (!i.$timers[h][k.$timerID]) { 6803 i.$timers[h][k.$timerID] = window.setInterval(j, f) 6804 } 6805 if (!this.global[h]) { 6806 this.global[h] = [] 6807 } 6808 this.global[h].push(i) 6809 }, 6810 remove: function (f, d, h) { 6811 var i = f.$timers, c; 6812 if (i) { 6813 if (!d) { 6814 for (d in i) { 6815 this.remove(f, d, h) 6816 } 6817 } else { 6818 if (i[d]) { 6819 if (h) { 6820 if (h.$timerID) { 6821 window.clearInterval(i[d][h.$timerID]); 6822 delete i[d][h.$timerID] 6823 } 6824 } else { 6825 for (var h in i[d]) { 6826 window.clearInterval(i[d][h]); 6827 delete i[d][h] 6828 } 6829 } 6830 for (c in i[d]) { 6831 break 6832 } 6833 if (!c) { 6834 c = null; 6835 delete i[d] 6836 } 6837 } 6838 } 6839 for (c in i) { 6840 break 6841 } 6842 if (!c) { 6843 f.$timers = null 6844 } 6845 } 6846 } 6847 } 6848 }); 6849 window.obTintBlurer = { 6850 bind: function () { 6851 a("body").on("click touchstart dragstart", function (d) { 6852 var f = d.target; 6853 var c = ""; 6854 if ((Parent = a(f).parents("[data-blurer-parent]:first")).length) { 6855 c = Parent.find("[data-blurer]").attr("data-blurer") 6856 } 6857 a("[data-blurer][data-blurer!='" + c + "']").each(function () { 6858 var h = a(this); 6859 if (a(this).attr("data-blurer-target") == "parent") { 6860 h = a(this).parents("[data-blurer-parent]:first") 6861 } 6862 switch (a(this).attr("data-blurer-type")) { 6863 case ("fadeOut"): 6864 case ("fadeIn"): 6865 h.fadeOut(); 6866 break; 6867 case ("active"): 6868 case ("disactive"): 6869 h.removeClass("tint-active"); 6870 h.removeClass("active"); 6871 h.removeClass("hovered"); 6872 h.removeClass("selected"); 6873 h.removeClass("opened"); 6874 break; 6875 case ("add_class"): 6876 h.addClass(a(this).attr("data-blurer-toggle-class")); 6877 break; 6878 default: 6879 h.hide().parents("[data-blurer-parent]:first").removeClass("active"); 6880 break 6881 } 6882 }) 6883 }); 6884 a("body").keypress(function (c) { 6885 if (c.keyCode == 27) { 6886 a("body").click() 6887 } 6888 }); 6889 a.fn.blurerFadeToggle = function (c) { 6890 var d = a(this).find("[data-blurer]"); 6891 sBlurer = d.attr("data-blurer"); 6892 d.removeAttr("data-blurer"); 6893 a(this).fadeToggle(function () { 6894 d.attr("data-blurer", sBlurer) 6895 }) 6896 }; 6897 a.fn.blurerFadeIn = function (c) { 6898 var d = a(this).find("[data-blurer]"); 6899 sBlurer = d.attr("data-blurer"); 6900 d.removeAttr("data-blurer"); 6901 a(this).fadeIn(function () { 6902 d.attr("data-blurer", sBlurer) 6903 }) 6904 } 6905 }, init: (function () { 6906 a(function () { 6907 obTintBlurer.bind() 6908 }) 6909 })() 6910 }; 6911 tintTooltip = function () { 6912 this._init = function (d, c) { 6913 var h = {tooltipElement: a(d), tooltipSide: "top", fix: false}, f = a.extend(h, c); 6914 f.tooltipElement.each(function (l) { 6915 if (f.fix == false) { 6916 var n = a(this).actual("outerHeight", {absolute: true}), 6917 j = a(this).parent(".tint-tooltip-wrapper").actual("outerHeight", {absolute: true}), 6918 m = a(this).actual("outerWidth", {absolute: true}), 6919 k = a(this).parent(".tint-tooltip-wrapper").actual("outerWidth", {absolute: true}); 6920 if (f.tooltipSide == "left") { 6921 a(this).addClass("tint-tooltip-left").css({top: -(n / 2 - j / 2)}) 6922 } else { 6923 if (f.tooltipSide == "right") { 6924 a(this).addClass("tint-tooltip-right").
6924css({top: -(n / 2 - j / 2)}) 6925 } else { 6926 if (f.tooltipSide == "top") { 6927 a(this).addClass("tint-tooltip-top").css({left: -((m - k) / 2)}) 6928 } else { 6929 if (f.tooltipSide == "bottom") { 6930 a(this).addClass("tint-tooltip-bottom").css({left: -((m - k) / 2)}) 6931 } 6932 } 6933 } 6934 } 6935 } else { 6936 a(document).mousemove(function (i) { 6937 f.tooltipElement.css({top: i.clientY + 10, left: i.clientX + 10}) 6938 }) 6939 } 6940 }) 6941 } 6942 }; 6943 a.fn.tintTooltip = function (c) { 6944 return this.each(function () { 6945 a(this).data("tint-tooltip", new tintTooltip()._init(this, c)) 6946 }) 6947 }; 6948 6949})(jQuery);
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.