framework7 7.0.8 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/components/panel/panel-class.js +11 -2
  2. package/components/panel/panel.lazy.js +1 -1
  3. package/components/photo-browser/photo-browser-class.js +1 -0
  4. package/components/photo-browser/photo-browser.d.ts +2 -0
  5. package/components/photo-browser/photo-browser.js +1 -0
  6. package/components/photo-browser/photo-browser.lazy.js +1 -1
  7. package/components/skeleton/skeleton.less +1 -1
  8. package/components/smart-select/smart-select-class.js +18 -4
  9. package/components/smart-select/smart-select.d.ts +2 -1
  10. package/components/smart-select/smart-select.js +1 -0
  11. package/components/smart-select/smart-select.lazy.js +1 -1
  12. package/components/swiper/swiper-rtl.css +1 -1
  13. package/components/swiper/swiper.css +1 -1
  14. package/components/swiper/swiper.lazy.js +1 -1
  15. package/components/swiper/swiper.less +1 -1
  16. package/framework7-bundle-rtl.css +640 -5
  17. package/framework7-bundle-rtl.min.css +3 -3
  18. package/framework7-bundle.css +640 -5
  19. package/framework7-bundle.esm.js +2 -2
  20. package/framework7-bundle.js +386 -127
  21. package/framework7-bundle.js.map +1 -1
  22. package/framework7-bundle.less +2 -2
  23. package/framework7-bundle.min.css +3 -3
  24. package/framework7-bundle.min.js +3 -3
  25. package/framework7-bundle.min.js.map +1 -1
  26. package/framework7-lite-bundle.esm.js +2 -2
  27. package/framework7-lite.esm.js +2 -2
  28. package/framework7-lite.js +26 -0
  29. package/framework7-rtl.css +2 -2
  30. package/framework7-rtl.min.css +2 -2
  31. package/framework7.css +2 -2
  32. package/framework7.esm.js +2 -2
  33. package/framework7.js +45 -32
  34. package/framework7.js.map +1 -1
  35. package/framework7.less +2 -2
  36. package/framework7.min.css +2 -2
  37. package/framework7.min.js +3 -3
  38. package/framework7.min.js.map +1 -1
  39. package/less/plugin.js +18 -0
  40. package/modules/router/back.js +1 -0
  41. package/modules/router/navigate.js +7 -2
  42. package/modules/router/router.d.ts +1 -1
  43. package/package.json +5 -8
  44. package/postinstall.js +0 -3
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Framework7 7.0.8
2
+ * Framework7 7.1.0
3
3
  * Full featured mobile HTML framework for building iOS & Android apps
4
4
  * https://framework7.io/
5
5
  *
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Released under the MIT License
9
9
  *
10
- * Released on: September 14, 2022
10
+ * Released on: December 16, 2022
11
11
  */
12
12
 
13
13
  (function (global, factory) {
@@ -4687,7 +4687,7 @@
4687
4687
  break;
4688
4688
  }
4689
4689
 
4690
- if (!name) throw new TypeError("Missing parameter name at " + i);
4690
+ if (!name) throw new TypeError("Missing parameter name at ".concat(i));
4691
4691
  tokens.push({
4692
4692
  type: "NAME",
4693
4693
  index: i,
@@ -4703,7 +4703,7 @@
4703
4703
  var j = i + 1;
4704
4704
 
4705
4705
  if (str[j] === "?") {
4706
- throw new TypeError("Pattern cannot start with \"?\" at " + j);
4706
+ throw new TypeError("Pattern cannot start with \"?\" at ".concat(j));
4707
4707
  }
4708
4708
 
4709
4709
  while (j < str.length) {
@@ -4723,15 +4723,15 @@
4723
4723
  count++;
4724
4724
 
4725
4725
  if (str[j + 1] !== "?") {
4726
- throw new TypeError("Capturing groups are not allowed at " + j);
4726
+ throw new TypeError("Capturing groups are not allowed at ".concat(j));
4727
4727
  }
4728
4728
  }
4729
4729
 
4730
4730
  pattern += str[j++];
4731
4731
  }
4732
4732
 
4733
- if (count) throw new TypeError("Unbalanced pattern at " + i);
4734
- if (!pattern) throw new TypeError("Missing pattern at " + i);
4733
+ if (count) throw new TypeError("Unbalanced pattern at ".concat(i));
4734
+ if (!pattern) throw new TypeError("Missing pattern at ".concat(i));
4735
4735
  tokens.push({
4736
4736
  type: "PATTERN",
4737
4737
  index: i,
@@ -4768,7 +4768,7 @@
4768
4768
  var tokens = lexer(str);
4769
4769
  var _a = options.prefixes,
4770
4770
  prefixes = _a === void 0 ? "./" : _a;
4771
- var defaultPattern = "[^" + escapeString(options.delimiter || "/#?") + "]+?";
4771
+ var defaultPattern = "[^".concat(escapeString(options.delimiter || "/#?"), "]+?");
4772
4772
  var result = [];
4773
4773
  var key = 0;
4774
4774
  var i = 0;
@@ -4784,12 +4784,12 @@
4784
4784
  var _a = tokens[i],
4785
4785
  nextType = _a.type,
4786
4786
  index = _a.index;
4787
- throw new TypeError("Unexpected " + nextType + " at " + index + ", expected " + type);
4787
+ throw new TypeError("Unexpected ".concat(nextType, " at ").concat(index, ", expected ").concat(type));
4788
4788
  };
4789
4789
 
4790
4790
  var consumeText = function () {
4791
4791
  var result = "";
4792
- var value; // tslint:disable-next-line
4792
+ var value;
4793
4793
 
4794
4794
  while (value = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR")) {
4795
4795
  result += value;
@@ -4887,7 +4887,7 @@
4887
4887
 
4888
4888
  var matches = tokens.map(function (token) {
4889
4889
  if (typeof token === "object") {
4890
- return new RegExp("^(?:" + token.pattern + ")$", reFlags);
4890
+ return new RegExp("^(?:".concat(token.pattern, ")$"), reFlags);
4891
4891
  }
4892
4892
  });
4893
4893
  return function (data) {
@@ -4907,19 +4907,19 @@
4907
4907
 
4908
4908
  if (Array.isArray(value)) {
4909
4909
  if (!repeat) {
4910
- throw new TypeError("Expected \"" + token.name + "\" to not repeat, but got an array");
4910
+ throw new TypeError("Expected \"".concat(token.name, "\" to not repeat, but got an array"));
4911
4911
  }
4912
4912
 
4913
4913
  if (value.length === 0) {
4914
4914
  if (optional) continue;
4915
- throw new TypeError("Expected \"" + token.name + "\" to not be empty");
4915
+ throw new TypeError("Expected \"".concat(token.name, "\" to not be empty"));
4916
4916
  }
4917
4917
 
4918
4918
  for (var j = 0; j < value.length; j++) {
4919
4919
  var segment = encode(value[j], token);
4920
4920
 
4921
4921
  if (validate && !matches[i].test(segment)) {
4922
- throw new TypeError("Expected all \"" + token.name + "\" to match \"" + token.pattern + "\", but got \"" + segment + "\"");
4922
+ throw new TypeError("Expected all \"".concat(token.name, "\" to match \"").concat(token.pattern, "\", but got \"").concat(segment, "\""));
4923
4923
  }
4924
4924
 
4925
4925
  path += token.prefix + segment + token.suffix;
@@ -4932,7 +4932,7 @@
4932
4932
  var segment = encode(String(value), token);
4933
4933
 
4934
4934
  if (validate && !matches[i].test(segment)) {
4935
- throw new TypeError("Expected \"" + token.name + "\" to match \"" + token.pattern + "\", but got \"" + segment + "\"");
4935
+ throw new TypeError("Expected \"".concat(token.name, "\" to match \"").concat(token.pattern, "\", but got \"").concat(segment, "\""));
4936
4936
  }
4937
4937
 
4938
4938
  path += token.prefix + segment + token.suffix;
@@ -4941,7 +4941,7 @@
4941
4941
 
4942
4942
  if (optional) continue;
4943
4943
  var typeOfMessage = repeat ? "an array" : "a string";
4944
- throw new TypeError("Expected \"" + token.name + "\" to be " + typeOfMessage);
4944
+ throw new TypeError("Expected \"".concat(token.name, "\" to be ").concat(typeOfMessage));
4945
4945
  }
4946
4946
 
4947
4947
  return path;
@@ -4977,7 +4977,6 @@
4977
4977
  var params = Object.create(null);
4978
4978
 
4979
4979
  var _loop_1 = function (i) {
4980
- // tslint:disable-next-line
4981
4980
  if (m[i] === undefined) return "continue";
4982
4981
  var key = keys[i - 1];
4983
4982
 
@@ -5050,7 +5049,7 @@
5050
5049
  var parts = paths.map(function (path) {
5051
5050
  return pathToRegexp(path, keys, options).source;
5052
5051
  });
5053
- return new RegExp("(?:" + parts.join("|") + ")", flags(options));
5052
+ return new RegExp("(?:".concat(parts.join("|"), ")"), flags(options));
5054
5053
  }
5055
5054
  /**
5056
5055
  * Create a path regexp from string input.
@@ -5079,9 +5078,13 @@
5079
5078
  _d = options.encode,
5080
5079
  encode = _d === void 0 ? function (x) {
5081
5080
  return x;
5082
- } : _d;
5083
- var endsWith = "[" + escapeString(options.endsWith || "") + "]|$";
5084
- var delimiter = "[" + escapeString(options.delimiter || "/#?") + "]";
5081
+ } : _d,
5082
+ _e = options.delimiter,
5083
+ delimiter = _e === void 0 ? "/#?" : _e,
5084
+ _f = options.endsWith,
5085
+ endsWith = _f === void 0 ? "" : _f;
5086
+ var endsWithRe = "[".concat(escapeString(endsWith), "]|$");
5087
+ var delimiterRe = "[".concat(escapeString(delimiter), "]");
5085
5088
  var route = start ? "^" : ""; // Iterate over the tokens and create our regexp string.
5086
5089
 
5087
5090
  for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
@@ -5099,33 +5102,36 @@
5099
5102
  if (prefix || suffix) {
5100
5103
  if (token.modifier === "+" || token.modifier === "*") {
5101
5104
  var mod = token.modifier === "*" ? "?" : "";
5102
- route += "(?:" + prefix + "((?:" + token.pattern + ")(?:" + suffix + prefix + "(?:" + token.pattern + "))*)" + suffix + ")" + mod;
5105
+ route += "(?:".concat(prefix, "((?:").concat(token.pattern, ")(?:").concat(suffix).concat(prefix, "(?:").concat(token.pattern, "))*)").concat(suffix, ")").concat(mod);
5103
5106
  } else {
5104
- route += "(?:" + prefix + "(" + token.pattern + ")" + suffix + ")" + token.modifier;
5107
+ route += "(?:".concat(prefix, "(").concat(token.pattern, ")").concat(suffix, ")").concat(token.modifier);
5105
5108
  }
5106
5109
  } else {
5107
- route += "(" + token.pattern + ")" + token.modifier;
5110
+ if (token.modifier === "+" || token.modifier === "*") {
5111
+ route += "((?:".concat(token.pattern, ")").concat(token.modifier, ")");
5112
+ } else {
5113
+ route += "(".concat(token.pattern, ")").concat(token.modifier);
5114
+ }
5108
5115
  }
5109
5116
  } else {
5110
- route += "(?:" + prefix + suffix + ")" + token.modifier;
5117
+ route += "(?:".concat(prefix).concat(suffix, ")").concat(token.modifier);
5111
5118
  }
5112
5119
  }
5113
5120
  }
5114
5121
 
5115
5122
  if (end) {
5116
- if (!strict) route += delimiter + "?";
5117
- route += !options.endsWith ? "$" : "(?=" + endsWith + ")";
5123
+ if (!strict) route += "".concat(delimiterRe, "?");
5124
+ route += !options.endsWith ? "$" : "(?=".concat(endsWithRe, ")");
5118
5125
  } else {
5119
5126
  var endToken = tokens[tokens.length - 1];
5120
- var isEndDelimited = typeof endToken === "string" ? delimiter.indexOf(endToken[endToken.length - 1]) > -1 : // tslint:disable-next-line
5121
- endToken === undefined;
5127
+ var isEndDelimited = typeof endToken === "string" ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1 : endToken === undefined;
5122
5128
 
5123
5129
  if (!strict) {
5124
- route += "(?:" + delimiter + "(?=" + endsWith + "))?";
5130
+ route += "(?:".concat(delimiterRe, "(?=").concat(endsWithRe, "))?");
5125
5131
  }
5126
5132
 
5127
5133
  if (!isEndDelimited) {
5128
- route += "(?=" + delimiter + "|" + endsWith + ")";
5134
+ route += "(?=".concat(delimiterRe, "|").concat(endsWithRe, ")");
5129
5135
  }
5130
5136
  }
5131
5137
 
@@ -6184,12 +6190,17 @@
6184
6190
  }
6185
6191
  }
6186
6192
 
6187
- function refreshPage() {
6193
+ function refreshPage(props) {
6194
+ if (props === void 0) {
6195
+ props = {};
6196
+ }
6197
+
6188
6198
  const router = this;
6189
6199
  appRouterCheck(router, 'refreshPage');
6190
6200
  return router.navigate(router.currentRoute.url, {
6191
6201
  ignoreCache: true,
6192
- reloadCurrent: true
6202
+ reloadCurrent: true,
6203
+ props
6193
6204
  });
6194
6205
  }
6195
6206
 
@@ -8134,6 +8145,7 @@
8134
8145
  } = params;
8135
8146
 
8136
8147
  if (options.route.url && router.url === options.route.url && !(options.reloadCurrent || options.reloadPrevious) && !router.params.allowDuplicateUrls) {
8148
+ router.allowPageChange = true;
8137
8149
  return false;
8138
8150
  }
8139
8151
 
@@ -21036,7 +21048,9 @@
21036
21048
  modifyHtmlClasses = true;
21037
21049
  }
21038
21050
 
21039
- const panel = this;
21051
+ const panel = this; // eslint-disable-next-line
21052
+
21053
+ panel._openTimeStamp = new Date().getTime();
21040
21054
  const app = panel.app;
21041
21055
  panel.opened = true;
21042
21056
  app.panel.allowOpen = false;
@@ -21256,7 +21270,14 @@
21256
21270
  $viewEl.add($containerEl.children('.page-content, .tabs'));
21257
21271
  }
21258
21272
 
21259
- const transitionEndTarget = effect === 'reveal' ? $viewEl : $el;
21273
+ const transitionEndTarget = effect === 'reveal' ? $viewEl : $el; // eslint-disable-next-line
21274
+
21275
+ const openTimeDiff = new Date().getTime() - panel._openTimeStamp;
21276
+
21277
+ if (openTimeDiff < 16) {
21278
+ // eslint-disable-next-line
21279
+ animate = false;
21280
+ }
21260
21281
 
21261
21282
  function transitionEnd() {
21262
21283
  if ($el.hasClass('panel-out')) {
@@ -24895,7 +24916,7 @@
24895
24916
  ss.$selectEl.trigger('change');
24896
24917
 
24897
24918
  if (ss.params.setValueText) {
24898
- ss.$valueEl.text(ss.formatValueText(optionText));
24919
+ ss.formatValueTextContent(optionText);
24899
24920
  }
24900
24921
 
24901
24922
  if (ss.params.closeOnSelect && ss.inputType === 'radio') {
@@ -24957,7 +24978,7 @@
24957
24978
  }
24958
24979
 
24959
24980
  if (ss.params.setValueText) {
24960
- ss.$valueEl.text(ss.formatValueText(optionText));
24981
+ ss.formatValueTextContent(optionText);
24961
24982
  }
24962
24983
 
24963
24984
  ss.$selectEl.trigger('change');
@@ -24968,7 +24989,7 @@
24968
24989
  const ss = this;
24969
24990
 
24970
24991
  if (ss.params.setValueText) {
24971
- ss.$valueEl.text(ss.formatValueText([]));
24992
+ ss.formatValueTextContent([]);
24972
24993
  }
24973
24994
 
24974
24995
  ss.$selectEl.find('option').each(optionEl => {
@@ -25028,6 +25049,17 @@
25028
25049
  }
25029
25050
  }
25030
25051
 
25052
+ formatValueTextContent(values) {
25053
+ const ss = this;
25054
+ const valueFormatted = ss.formatValueText(values);
25055
+
25056
+ if (valueFormatted.includes('<') && valueFormatted.includes('>')) {
25057
+ ss.$valueEl.html(valueFormatted);
25058
+ } else {
25059
+ ss.$valueEl.text(valueFormatted);
25060
+ }
25061
+ }
25062
+
25031
25063
  formatValueText(values) {
25032
25064
  const ss = this;
25033
25065
  let textValue;
@@ -25068,7 +25100,7 @@
25068
25100
  }
25069
25101
 
25070
25102
  if (ss.params.setValueText) {
25071
- ss.$valueEl.text(ss.formatValueText(valueArray));
25103
+ ss.formatValueTextContent(valueArray);
25072
25104
  }
25073
25105
  }
25074
25106
 
@@ -25559,6 +25591,7 @@
25559
25591
  content: popupHtml,
25560
25592
  push: ss.params.popupPush,
25561
25593
  swipeToClose: ss.params.popupSwipeToClose,
25594
+ closeByBackdropClick: ss.params.closeByBackdropClick,
25562
25595
  on: {
25563
25596
  popupOpen(popup) {
25564
25597
  ss.onOpen('popup', popup.el);
@@ -25606,6 +25639,7 @@
25606
25639
  closeByOutsideClick: true,
25607
25640
  push: ss.params.sheetPush,
25608
25641
  swipeToClose: ss.params.sheetSwipeToClose,
25642
+ closeByBackdropClick: ss.params.closeByBackdropClick,
25609
25643
  on: {
25610
25644
  sheetOpen(sheet) {
25611
25645
  ss.onOpen('sheet', sheet.el);
@@ -25649,6 +25683,7 @@
25649
25683
  const popoverParams = {
25650
25684
  content: popoverHtml,
25651
25685
  targetEl: ss.$el,
25686
+ closeByBackdropClick: ss.params.closeByBackdropClick,
25652
25687
  on: {
25653
25688
  popoverOpen(popover) {
25654
25689
  ss.onOpen('popover', popover.el);
@@ -25768,6 +25803,7 @@
25768
25803
  pageBackLinkText: 'Back',
25769
25804
  popupCloseLinkText: 'Close',
25770
25805
  popupTabletFullscreen: false,
25806
+ closeByBackdropClick: true,
25771
25807
  sheetCloseLinkText: 'Done',
25772
25808
  searchbar: false,
25773
25809
  searchbarPlaceholder: 'Search',
@@ -35715,7 +35751,7 @@
35715
35751
 
35716
35752
  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {
35717
35753
  if (swiper.params.centeredSlides) {
35718
- swiper.visibleSlides.each(slide => {
35754
+ (swiper.visibleSlides || $$1([])).each(slide => {
35719
35755
  activeSlides.push(slide);
35720
35756
  });
35721
35757
  } else {
@@ -36380,14 +36416,7 @@
36380
36416
  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
36381
36417
  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
36382
36418
  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
36383
-
36384
- if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {
36385
- swiper.emit('beforeSlideChangeStart');
36386
- }
36387
-
36388
- const translate = -snapGrid[snapIndex]; // Update progress
36389
-
36390
- swiper.updateProgress(translate); // Normalize slideIndex
36419
+ const translate = -snapGrid[snapIndex]; // Normalize slideIndex
36391
36420
 
36392
36421
  if (params.normalizeSlideIndex) {
36393
36422
  for (let i = 0; i < slidesGrid.length; i += 1) {
@@ -36418,6 +36447,12 @@
36418
36447
  }
36419
36448
  }
36420
36449
 
36450
+ if (slideIndex !== (previousIndex || 0) && runCallbacks) {
36451
+ swiper.emit('beforeSlideChangeStart');
36452
+ } // Update progress
36453
+
36454
+
36455
+ swiper.updateProgress(translate);
36421
36456
  let direction;
36422
36457
  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index
36423
36458
 
@@ -36525,6 +36560,29 @@
36525
36560
  runCallbacks = true;
36526
36561
  }
36527
36562
 
36563
+ if (typeof index === 'string') {
36564
+ /**
36565
+ * The `index` argument converted from `string` to `number`.
36566
+ * @type {number}
36567
+ */
36568
+ const indexAsNumber = parseInt(index, 10);
36569
+ /**
36570
+ * Determines whether the `index` argument is a valid `number`
36571
+ * after being converted from the `string` type.
36572
+ * @type {boolean}
36573
+ */
36574
+
36575
+ const isValidNumber = isFinite(indexAsNumber);
36576
+
36577
+ if (!isValidNumber) {
36578
+ throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);
36579
+ } // Knowing that the converted `index` is a valid number,
36580
+ // we can update the original argument's value.
36581
+
36582
+
36583
+ index = indexAsNumber;
36584
+ }
36585
+
36528
36586
  const swiper = this;
36529
36587
  let newIndex = index;
36530
36588
 
@@ -36783,7 +36841,7 @@
36783
36841
  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));
36784
36842
  swiper.loopedSlides += params.loopAdditionalSlides;
36785
36843
 
36786
- if (swiper.loopedSlides > slides.length) {
36844
+ if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {
36787
36845
  swiper.loopedSlides = slides.length;
36788
36846
  }
36789
36847
 
@@ -36791,18 +36849,15 @@
36791
36849
  const appendSlides = [];
36792
36850
  slides.each((el, index) => {
36793
36851
  const slide = $$1(el);
36794
-
36795
- if (index < swiper.loopedSlides) {
36796
- appendSlides.push(el);
36797
- }
36798
-
36799
- if (index < slides.length && index >= slides.length - swiper.loopedSlides) {
36800
- prependSlides.push(el);
36801
- }
36802
-
36803
36852
  slide.attr('data-swiper-slide-index', index);
36804
36853
  });
36805
36854
 
36855
+ for (let i = 0; i < swiper.loopedSlides; i += 1) {
36856
+ const index = i - Math.floor(i / slides.length) * slides.length;
36857
+ appendSlides.push(slides.eq(index)[0]);
36858
+ prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);
36859
+ }
36860
+
36806
36861
  for (let i = 0; i < appendSlides.length; i += 1) {
36807
36862
  $selector.append($$1(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));
36808
36863
  }
@@ -36903,6 +36958,11 @@
36903
36958
  if (!el || el === getDocument() || el === getWindow()) return null;
36904
36959
  if (el.assignedSlot) el = el.assignedSlot;
36905
36960
  const found = el.closest(selector);
36961
+
36962
+ if (!found && !el.getRootNode) {
36963
+ return null;
36964
+ }
36965
+
36906
36966
  return found || __closestFrom(el.getRootNode().host);
36907
36967
  }
36908
36968
 
@@ -36942,16 +37002,18 @@
36942
37002
  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;
36943
37003
  if (data.isTouched && data.isMoved) return; // change target el for shadow root component
36944
37004
 
36945
- const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';
37005
+ const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line
37006
+
37007
+ const eventPath = event.composedPath ? event.composedPath() : event.path;
36946
37008
 
36947
- if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {
36948
- $targetEl = $$1(event.path[0]);
37009
+ if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
37010
+ $targetEl = $$1(eventPath[0]);
36949
37011
  }
36950
37012
 
36951
37013
  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
36952
37014
  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element
36953
37015
 
36954
- if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {
37016
+ if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {
36955
37017
  swiper.allowClick = true;
36956
37018
  return;
36957
37019
  }
@@ -37622,8 +37684,21 @@
37622
37684
  }
37623
37685
 
37624
37686
  swiper.emitContainerClasses();
37625
- }
37687
+ } // Toggle navigation, pagination, scrollbar
37688
+
37626
37689
 
37690
+ ['navigation', 'pagination', 'scrollbar'].forEach(prop => {
37691
+ const wasModuleEnabled = params[prop] && params[prop].enabled;
37692
+ const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
37693
+
37694
+ if (wasModuleEnabled && !isModuleEnabled) {
37695
+ swiper[prop].disable();
37696
+ }
37697
+
37698
+ if (!wasModuleEnabled && isModuleEnabled) {
37699
+ swiper[prop].enable();
37700
+ }
37701
+ });
37627
37702
  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
37628
37703
  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
37629
37704
 
@@ -37966,6 +38041,7 @@
37966
38041
  loop: false,
37967
38042
  loopAdditionalSlides: 0,
37968
38043
  loopedSlides: null,
38044
+ loopedSlidesLimit: true,
37969
38045
  loopFillGroupWithBlank: false,
37970
38046
  loopPreventsSlide: true,
37971
38047
  // rewind
@@ -38086,7 +38162,8 @@
38086
38162
  el: containerEl
38087
38163
  });
38088
38164
  swipers.push(new Swiper$1(newParams));
38089
- });
38165
+ }); // eslint-disable-next-line no-constructor-return
38166
+
38090
38167
  return swipers;
38091
38168
  } // Swiper Instance
38092
38169
 
@@ -38229,6 +38306,7 @@
38229
38306
  if (swiper.params.init) {
38230
38307
  swiper.init();
38231
38308
  } // Return app instance
38309
+ // eslint-disable-next-line no-constructor-return
38232
38310
 
38233
38311
 
38234
38312
  return swiper;
@@ -38449,6 +38527,23 @@
38449
38527
  return swiper;
38450
38528
  }
38451
38529
 
38530
+ changeLanguageDirection(direction) {
38531
+ const swiper = this;
38532
+ if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;
38533
+ swiper.rtl = direction === 'rtl';
38534
+ swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;
38535
+
38536
+ if (swiper.rtl) {
38537
+ swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);
38538
+ swiper.el.dir = 'rtl';
38539
+ } else {
38540
+ swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);
38541
+ swiper.el.dir = 'ltr';
38542
+ }
38543
+
38544
+ swiper.update();
38545
+ }
38546
+
38452
38547
  mount(el) {
38453
38548
  const swiper = this;
38454
38549
  if (swiper.mounted) return true; // Find el
@@ -38475,6 +38570,10 @@
38475
38570
  return res;
38476
38571
  }
38477
38572
 
38573
+ if (!$el.children) {
38574
+ return $$1($el).children(getWrapperSelector());
38575
+ }
38576
+
38478
38577
  return $el.children(getWrapperSelector());
38479
38578
  }; // Find Wrapper
38480
38579
 
@@ -39542,7 +39641,8 @@
39542
39641
  hideOnClick: false,
39543
39642
  disabledClass: 'swiper-button-disabled',
39544
39643
  hiddenClass: 'swiper-button-hidden',
39545
- lockClass: 'swiper-button-lock'
39644
+ lockClass: 'swiper-button-lock',
39645
+ navigationDisabledClass: 'swiper-navigation-disabled'
39546
39646
  }
39547
39647
  });
39548
39648
  swiper.navigation = {
@@ -39594,12 +39694,14 @@
39594
39694
  e.preventDefault();
39595
39695
  if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
39596
39696
  swiper.slidePrev();
39697
+ emit('navigationPrev');
39597
39698
  }
39598
39699
 
39599
39700
  function onNextClick(e) {
39600
39701
  e.preventDefault();
39601
39702
  if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
39602
39703
  swiper.slideNext();
39704
+ emit('navigationNext');
39603
39705
  }
39604
39706
 
39605
39707
  function init() {
@@ -39651,8 +39753,13 @@
39651
39753
  }
39652
39754
 
39653
39755
  on('init', () => {
39654
- init();
39655
- update();
39756
+ if (swiper.params.navigation.enabled === false) {
39757
+ // eslint-disable-next-line
39758
+ disable();
39759
+ } else {
39760
+ init();
39761
+ update();
39762
+ }
39656
39763
  });
39657
39764
  on('toEdge fromEdge lock unlock', () => {
39658
39765
  update();
@@ -39706,7 +39813,21 @@
39706
39813
  }
39707
39814
  }
39708
39815
  });
39816
+
39817
+ const enable = () => {
39818
+ swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);
39819
+ init();
39820
+ update();
39821
+ };
39822
+
39823
+ const disable = () => {
39824
+ swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);
39825
+ destroy();
39826
+ };
39827
+
39709
39828
  Object.assign(swiper.navigation, {
39829
+ enable,
39830
+ disable,
39710
39831
  update,
39711
39832
  init,
39712
39833
  destroy
@@ -39758,7 +39879,8 @@
39758
39879
  clickableClass: `${pfx}-clickable`,
39759
39880
  lockClass: `${pfx}-lock`,
39760
39881
  horizontalClass: `${pfx}-horizontal`,
39761
- verticalClass: `${pfx}-vertical`
39882
+ verticalClass: `${pfx}-vertical`,
39883
+ paginationDisabledClass: `${pfx}-disabled`
39762
39884
  }
39763
39885
  });
39764
39886
  swiper.pagination = {
@@ -40061,9 +40183,14 @@
40061
40183
  }
40062
40184
 
40063
40185
  on('init', () => {
40064
- init();
40065
- render();
40066
- update();
40186
+ if (swiper.params.pagination.enabled === false) {
40187
+ // eslint-disable-next-line
40188
+ disable();
40189
+ } else {
40190
+ init();
40191
+ render();
40192
+ update();
40193
+ }
40067
40194
  });
40068
40195
  on('activeIndexChange', () => {
40069
40196
  if (swiper.params.loop) {
@@ -40110,7 +40237,7 @@
40110
40237
  $el
40111
40238
  } = swiper.pagination;
40112
40239
 
40113
- if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$$1(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
40240
+ if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$$1(targetEl).hasClass(swiper.params.pagination.bulletClass)) {
40114
40241
  if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;
40115
40242
  const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);
40116
40243
 
@@ -40123,7 +40250,32 @@
40123
40250
  $el.toggleClass(swiper.params.pagination.hiddenClass);
40124
40251
  }
40125
40252
  });
40253
+
40254
+ const enable = () => {
40255
+ swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
40256
+
40257
+ if (swiper.pagination.$el) {
40258
+ swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);
40259
+ }
40260
+
40261
+ init();
40262
+ render();
40263
+ update();
40264
+ };
40265
+
40266
+ const disable = () => {
40267
+ swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);
40268
+
40269
+ if (swiper.pagination.$el) {
40270
+ swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);
40271
+ }
40272
+
40273
+ destroy();
40274
+ };
40275
+
40126
40276
  Object.assign(swiper.pagination, {
40277
+ enable,
40278
+ disable,
40127
40279
  render,
40128
40280
  update,
40129
40281
  init,
@@ -40154,7 +40306,10 @@
40154
40306
  draggable: false,
40155
40307
  snapOnRelease: true,
40156
40308
  lockClass: 'swiper-scrollbar-lock',
40157
- dragClass: 'swiper-scrollbar-drag'
40309
+ dragClass: 'swiper-scrollbar-drag',
40310
+ scrollbarDisabledClass: 'swiper-scrollbar-disabled',
40311
+ horizontalClass: `swiper-scrollbar-horizontal`,
40312
+ verticalClass: `swiper-scrollbar-vertical`
40158
40313
  }
40159
40314
  });
40160
40315
  swiper.scrollbar = {
@@ -40380,6 +40535,7 @@
40380
40535
  support
40381
40536
  } = swiper;
40382
40537
  const $el = scrollbar.$el;
40538
+ if (!$el) return;
40383
40539
  const target = $el[0];
40384
40540
  const activeListener = support.passiveListener && params.passiveListeners ? {
40385
40541
  passive: false,
@@ -40404,12 +40560,12 @@
40404
40560
  }
40405
40561
 
40406
40562
  function enableDraggable() {
40407
- if (!swiper.params.scrollbar.el) return;
40563
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
40408
40564
  events('on');
40409
40565
  }
40410
40566
 
40411
40567
  function disableDraggable() {
40412
- if (!swiper.params.scrollbar.el) return;
40568
+ if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;
40413
40569
  events('off');
40414
40570
  }
40415
40571
 
@@ -40429,6 +40585,7 @@
40429
40585
  $el = $swiperEl.find(params.el);
40430
40586
  }
40431
40587
 
40588
+ $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
40432
40589
  let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);
40433
40590
 
40434
40591
  if ($dragEl.length === 0) {
@@ -40453,13 +40610,25 @@
40453
40610
  }
40454
40611
 
40455
40612
  function destroy() {
40613
+ const params = swiper.params.scrollbar;
40614
+ const $el = swiper.scrollbar.$el;
40615
+
40616
+ if ($el) {
40617
+ $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);
40618
+ }
40619
+
40456
40620
  disableDraggable();
40457
40621
  }
40458
40622
 
40459
40623
  on('init', () => {
40460
- init();
40461
- updateSize();
40462
- setTranslate();
40624
+ if (swiper.params.scrollbar.enabled === false) {
40625
+ // eslint-disable-next-line
40626
+ disable();
40627
+ } else {
40628
+ init();
40629
+ updateSize();
40630
+ setTranslate();
40631
+ }
40463
40632
  });
40464
40633
  on('update resize observerUpdate lock unlock', () => {
40465
40634
  updateSize();
@@ -40482,7 +40651,32 @@
40482
40651
  on('destroy', () => {
40483
40652
  destroy();
40484
40653
  });
40654
+
40655
+ const enable = () => {
40656
+ swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
40657
+
40658
+ if (swiper.scrollbar.$el) {
40659
+ swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);
40660
+ }
40661
+
40662
+ init();
40663
+ updateSize();
40664
+ setTranslate();
40665
+ };
40666
+
40667
+ const disable = () => {
40668
+ swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
40669
+
40670
+ if (swiper.scrollbar.$el) {
40671
+ swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);
40672
+ }
40673
+
40674
+ destroy();
40675
+ };
40676
+
40485
40677
  Object.assign(swiper.scrollbar, {
40678
+ enable,
40679
+ disable,
40486
40680
  updateSize,
40487
40681
  setTranslate,
40488
40682
  init,
@@ -41380,11 +41574,11 @@
41380
41574
  if (params.loadPrevNext) {
41381
41575
  if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {
41382
41576
  const amount = params.loadPrevNextAmount;
41383
- const spv = slidesPerView;
41577
+ const spv = Math.ceil(slidesPerView);
41384
41578
  const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);
41385
41579
  const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides
41386
41580
 
41387
- for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {
41581
+ for (let i = activeIndex + spv; i < maxIndex; i += 1) {
41388
41582
  if (slideExist(i)) loadInSlide(i);
41389
41583
  } // Prev Slides
41390
41584
 
@@ -41501,6 +41695,10 @@
41501
41695
  load();
41502
41696
  }
41503
41697
  });
41698
+ on('destroy', () => {
41699
+ if (!swiper.$el) return;
41700
+ swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);
41701
+ });
41504
41702
  Object.assign(swiper.lazy, {
41505
41703
  load,
41506
41704
  loadInSlide
@@ -41722,6 +41920,9 @@
41722
41920
  id: null
41723
41921
  }
41724
41922
  });
41923
+ swiper.a11y = {
41924
+ clicked: false
41925
+ };
41725
41926
  let liveRegion = null;
41726
41927
 
41727
41928
  function notify(message) {
@@ -41886,16 +42087,62 @@
41886
42087
  addElControls($el, wrapperId);
41887
42088
  };
41888
42089
 
42090
+ const handlePointerDown = () => {
42091
+ swiper.a11y.clicked = true;
42092
+ };
42093
+
42094
+ const handlePointerUp = () => {
42095
+ requestAnimationFrame(() => {
42096
+ requestAnimationFrame(() => {
42097
+ if (!swiper.destroyed) {
42098
+ swiper.a11y.clicked = false;
42099
+ }
42100
+ });
42101
+ });
42102
+ };
42103
+
41889
42104
  const handleFocus = e => {
42105
+ if (swiper.a11y.clicked) return;
41890
42106
  const slideEl = e.target.closest(`.${swiper.params.slideClass}`);
41891
42107
  if (!slideEl || !swiper.slides.includes(slideEl)) return;
41892
42108
  const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
41893
42109
  const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
41894
42110
  if (isActive || isVisible) return;
42111
+ if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
42112
+
42113
+ if (swiper.isHorizontal()) {
42114
+ swiper.el.scrollLeft = 0;
42115
+ } else {
42116
+ swiper.el.scrollTop = 0;
42117
+ }
42118
+
41895
42119
  swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
41896
42120
  };
41897
42121
 
41898
- function init() {
42122
+ const initSlides = () => {
42123
+ const params = swiper.params.a11y;
42124
+
42125
+ if (params.itemRoleDescriptionMessage) {
42126
+ addElRoleDescription($$1(swiper.slides), params.itemRoleDescriptionMessage);
42127
+ }
42128
+
42129
+ if (params.slideRole) {
42130
+ addElRole($$1(swiper.slides), params.slideRole);
42131
+ }
42132
+
42133
+ const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;
42134
+
42135
+ if (params.slideLabelMessage) {
42136
+ swiper.slides.each((slideEl, index) => {
42137
+ const $slideEl = $$1(slideEl);
42138
+ const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;
42139
+ const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
42140
+ addElLabel($slideEl, ariaLabelMessage);
42141
+ });
42142
+ }
42143
+ };
42144
+
42145
+ const init = () => {
41899
42146
  const params = swiper.params.a11y;
41900
42147
  swiper.$el.append(liveRegion); // Container
41901
42148
 
@@ -41916,18 +42163,7 @@
41916
42163
  addElId($wrapperEl, wrapperId);
41917
42164
  addElLive($wrapperEl, live); // Slide
41918
42165
 
41919
- if (params.itemRoleDescriptionMessage) {
41920
- addElRoleDescription($$1(swiper.slides), params.itemRoleDescriptionMessage);
41921
- }
41922
-
41923
- addElRole($$1(swiper.slides), params.slideRole);
41924
- const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;
41925
- swiper.slides.each((slideEl, index) => {
41926
- const $slideEl = $$1(slideEl);
41927
- const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;
41928
- const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
41929
- addElLabel($slideEl, ariaLabelMessage);
41930
- }); // Navigation
42166
+ initSlides(); // Navigation
41931
42167
 
41932
42168
  let $nextEl;
41933
42169
  let $prevEl;
@@ -41955,7 +42191,9 @@
41955
42191
 
41956
42192
 
41957
42193
  swiper.$el.on('focus', handleFocus, true);
41958
- }
42194
+ swiper.$el.on('pointerdown', handlePointerDown, true);
42195
+ swiper.$el.on('pointerup', handlePointerUp, true);
42196
+ };
41959
42197
 
41960
42198
  function destroy() {
41961
42199
  if (liveRegion && liveRegion.length > 0) liveRegion.remove();
@@ -41985,6 +42223,8 @@
41985
42223
 
41986
42224
 
41987
42225
  swiper.$el.off('focus', handleFocus, true);
42226
+ swiper.$el.off('pointerdown', handlePointerDown, true);
42227
+ swiper.$el.off('pointerup', handlePointerUp, true);
41988
42228
  }
41989
42229
 
41990
42230
  on('beforeInit', () => {
@@ -41994,6 +42234,10 @@
41994
42234
  if (!swiper.params.a11y.enabled) return;
41995
42235
  init();
41996
42236
  });
42237
+ on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {
42238
+ if (!swiper.params.a11y.enabled) return;
42239
+ initSlides();
42240
+ });
41997
42241
  on('fromEdge toEdge afterInit lock unlock', () => {
41998
42242
  if (!swiper.params.a11y.enabled) return;
41999
42243
  updateNavigation();
@@ -42019,7 +42263,8 @@
42019
42263
  enabled: false,
42020
42264
  root: '',
42021
42265
  replaceState: false,
42022
- key: 'slides'
42266
+ key: 'slides',
42267
+ keepQuery: false
42023
42268
  }
42024
42269
  });
42025
42270
  let initialized = false;
@@ -42071,6 +42316,10 @@
42071
42316
  value = `${key}/${value}`;
42072
42317
  }
42073
42318
 
42319
+ if (swiper.params.history.keepQuery) {
42320
+ value += location.search;
42321
+ }
42322
+
42074
42323
  const currentState = window.history.state;
42075
42324
 
42076
42325
  if (currentState && currentState.value === value) {
@@ -42106,7 +42355,7 @@
42106
42355
 
42107
42356
  const setHistoryPopState = () => {
42108
42357
  paths = getPathValues(swiper.params.url);
42109
- scrollToSlide(swiper.params.speed, swiper.paths.value, false);
42358
+ scrollToSlide(swiper.params.speed, paths.value, false);
42110
42359
  };
42111
42360
 
42112
42361
  const init = () => {
@@ -42281,6 +42530,12 @@
42281
42530
  });
42282
42531
 
42283
42532
  function run() {
42533
+ if (!swiper.size) {
42534
+ swiper.autoplay.running = false;
42535
+ swiper.autoplay.paused = false;
42536
+ return;
42537
+ }
42538
+
42284
42539
  const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);
42285
42540
  let delay = swiper.params.autoplay.delay;
42286
42541
 
@@ -42567,7 +42822,32 @@
42567
42822
  function update(initial) {
42568
42823
  const thumbsSwiper = swiper.thumbs.swiper;
42569
42824
  if (!thumbsSwiper || thumbsSwiper.destroyed) return;
42570
- const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;
42825
+ const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs
42826
+
42827
+ let thumbsToActivate = 1;
42828
+ const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
42829
+
42830
+ if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
42831
+ thumbsToActivate = swiper.params.slidesPerView;
42832
+ }
42833
+
42834
+ if (!swiper.params.thumbs.multipleActiveThumbs) {
42835
+ thumbsToActivate = 1;
42836
+ }
42837
+
42838
+ thumbsToActivate = Math.floor(thumbsToActivate);
42839
+ thumbsSwiper.slides.removeClass(thumbActiveClass);
42840
+
42841
+ if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
42842
+ for (let i = 0; i < thumbsToActivate; i += 1) {
42843
+ thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
42844
+ }
42845
+ } else {
42846
+ for (let i = 0; i < thumbsToActivate; i += 1) {
42847
+ thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
42848
+ }
42849
+ }
42850
+
42571
42851
  const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;
42572
42852
  const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;
42573
42853
 
@@ -42622,31 +42902,6 @@
42622
42902
 
42623
42903
  thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);
42624
42904
  }
42625
- } // Activate thumbs
42626
-
42627
-
42628
- let thumbsToActivate = 1;
42629
- const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;
42630
-
42631
- if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {
42632
- thumbsToActivate = swiper.params.slidesPerView;
42633
- }
42634
-
42635
- if (!swiper.params.thumbs.multipleActiveThumbs) {
42636
- thumbsToActivate = 1;
42637
- }
42638
-
42639
- thumbsToActivate = Math.floor(thumbsToActivate);
42640
- thumbsSwiper.slides.removeClass(thumbActiveClass);
42641
-
42642
- if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {
42643
- for (let i = 0; i < thumbsToActivate; i += 1) {
42644
- thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index="${swiper.realIndex + i}"]`).addClass(thumbActiveClass);
42645
- }
42646
- } else {
42647
- for (let i = 0; i < thumbsToActivate; i += 1) {
42648
- thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);
42649
- }
42650
42905
  }
42651
42906
  }
42652
42907
 
@@ -44029,7 +44284,9 @@
44029
44284
  cardsEffect: {
44030
44285
  slideShadows: true,
44031
44286
  transformEl: null,
44032
- rotate: true
44287
+ rotate: true,
44288
+ perSlideRotate: 2,
44289
+ perSlideOffset: 8
44033
44290
  }
44034
44291
  });
44035
44292
 
@@ -44063,8 +44320,8 @@
44063
44320
  let tY = 0;
44064
44321
  const tZ = -100 * Math.abs(progress);
44065
44322
  let scale = 1;
44066
- let rotate = -2 * progress;
44067
- let tXAdd = 8 - Math.abs(progress) * 0.75;
44323
+ let rotate = -params.perSlideRotate * progress;
44324
+ let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;
44068
44325
  const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;
44069
44326
  const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;
44070
44327
  const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;
@@ -44145,7 +44402,7 @@
44145
44402
  }
44146
44403
 
44147
44404
  /**
44148
- * Swiper 8.1.4
44405
+ * Swiper 8.4.5
44149
44406
  * Most modern mobile touch slider and framework with hardware accelerated transitions
44150
44407
  * https://swiperjs.com
44151
44408
  *
@@ -44153,7 +44410,7 @@
44153
44410
  *
44154
44411
  * Released under the MIT License
44155
44412
  *
44156
- * Released on: April 24, 2022
44413
+ * Released on: November 21, 2022
44157
44414
  */
44158
44415
 
44159
44416
  const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Lazy, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];
@@ -44980,6 +45237,7 @@
44980
45237
  const popupParams = {
44981
45238
  content: popupHtml,
44982
45239
  push: pb.params.popupPush,
45240
+ closeByBackdropClick: pb.params.closeByBackdropClick,
44983
45241
  on: {
44984
45242
  popupOpen(popup) {
44985
45243
  pb.onOpen('popup', popup.el);
@@ -45149,6 +45407,7 @@
45149
45407
  url: 'photos/',
45150
45408
  routableModals: false,
45151
45409
  virtualSlides: true,
45410
+ closeByBackdropClick: true,
45152
45411
  renderNavbar: undefined,
45153
45412
  renderToolbar: undefined,
45154
45413
  renderCaption: undefined,